Перейти к содержимому

Защита веб приложений с nginx

Частенько в процессе работы в IT возникает задача организовать защищенное быстрое функционирование того или иного веб приложения. У кого-то используются свои самописные приложения. У кого-то это сторонние готовые приложения. Но при этом приложения могут работать без аутентификации, либо при запуске использовать большой объем ОЗУ. Это, как правило, приложения на JAVA, Python и т.д., которые запускаются напрямую без использования веб сервера. В принципе, они конечно могут работать и таким образом. Но, в реальных продакшн условиях, это неэффективно с точки зрения компьютерных ресурсов. А также не секьюрно с точки зрения информационной безопасности. Во всех подобных случаях настоятельно советую использовать Nginx веб сервер как реверс прокси для Вашего приложения.

Основные преимущества такой конфигурации просты и очевидны. Во-первых, основная нагрузка по взаимодействию с клиентами перкладывается на профессиональный веб сервер. Nginx с этим делом справляется просто на УРА с минимальными затратами процессора и памяти. Во-вторых, возможность с легкостью устанавливать пароль для доступа к данному приложению. В организационной рабочей среде, приложение без пароля просто находка для хакера. Ну и в-третьих, быстрая настройка доступа через HTTPS протокол, что обеспечивает безопасность передачи данных по сети. Если у Вас публичный сервис, то Вы также можете настроить сертификат с помощью LetsEncrypt. Если сервис непубличный, то придется использовать свои самоподписанные сертификаты.

Настройка

На примере операционной системы Centos 7 покажем, как установить и настроить Nginx в качестве реверсивного прокси для нашего приложения. При этом наш фронтэнд будет отдавать данные через протокол HTTPS и аутентифицировать пользователей по своей базе.

Для начала произведем установку пакетов nginx httpd-tools.

После этого создадим файл, в котором будут храниться аутентификационные данные пользователей для доступа к нашему веб серверу. Это делается с помощью следующей команды.

В результате этого создастся файл .htpasswd с аутентификационными данными для пользователя admin. При необходимости добавляем в этот файл дополнительных пользователей с паролями. Все это реализуется командой htpasswd.

Теперь создадим самоподписанный SSL сертификат с помощью команды openssl. В случае использования реального публичного сертификата, читаем, как писал выше, статью про LetsEncrypt.

После того, как сертификат будет готов, переходим к конфигурационному файлу /etc/nginx/nginx.conf. Отредактируем его следующим образом в части раздела server.

В данном конкретном примере мы перенаправляем входящий https трафик на локальный хост 127.0.0.1 по 8080 TCP порту. При этом используем сгенерированный ранее самоподписанный сертификат. А также файл с паролями /etc/nginx/.htpasswd. После настройки конфигурационного файла, производим перезапуск nginx.

После проведенных манипуляций, получем веб приложение, которое работает зашифрованным по сети с помощью протокола HTTPS, использует аутентификацию. А также в качестве фронтенда задействует nginx.

Заключение

Статья описывает вопрос, который постоянно возникает в работе любого системного администратора. Nginx в качестве реверс прокси отлично и легко решает данную проблему. Раньше для этого я использовал сервер Apache. Но на текущий момент Nginx своей скоростью работы и имеющимся функционалом значительно опережает Apache. Вообщем, берем вышеописанную технику на вооружение и используем ее при возникающей необходимости.

Опубликовано вLinux

Ваш комментарий будет первым

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *