Nginx - HTTP-сервер и обратный прокси-сервер
os-nginx - HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения.
Полная документация по nginx, включая описание параметров, доступна по адресу http://nginx.org/ru/docs
Установка
Пройдите в раздел Система -> Прошивка -> Обновления. На вкладке Плагины нажмите на кнопку + напротив плагина os-nginx для его установки.
Настройка функционала
Настройка функционала осуществляется в разделе Службы -> Nginx.
В секции Конфигурация на закладке Основные настройки установите флаг Включает nginx и нажмите Применить.
В меню Глобальные параметры HTTP можно выставить значения количество процессов nginx, количество подключений к серверу, время активности клиента, размер хэш-таблиц.
В меню Настройки GUI можно выставить ограничение удаленного доступа к веб-интерфейсу nginx.
Балансировка нагрузки
Рассмотрим на примере настройку балансировки между двумя веб-серверами zabbix1 (192.168.1.32) и zabbix2 (192.168.1.34).
На вкладке Вышестоящий в подменю выбираем Вышестоящий сервер
Добавляем новый сервер иконкой +
Указываем IP-адрес сервера zabbix1, порт, приоритет (сервер с большим приоритетом получит больше запросов).
Аналогично добавляем второй сервер zabbix2.
В результате на вкладке Вышестоящий получим две записи
В подменю Вышестоящий создаем группу из серверов zabbix1 и zabbix2.
Данные настойки будут использоваться в последующих примерах.
На вкладке HTTP(s) выбираем подпункт Местоположение
Местоположение определяет, как Nginx будет отвечать на запросы к ресурсам сервера. В нашем случае мы хотим передать запрос ранее созданному апстриму. Если мы хотим сопоставить все, мы используем «/» без специального сопоставления.
Данные настойки будут использоваться в последующих примерах.
На последнем этапе создаем веб-сервер на вкладке HTTP(s) подпункт Сервер HTTP Заполните поле «Имя сервера», порт HTTP и HTTPS, на которых TING будет принимать входящие запросы и выберите ранее созданное местоположение. Если вы хотите использовать поддержку TLS, вам необходимо добавить сертификат.
На вкладке Основные настройки нажмите кнопку Применить
Для проверки заходим по адресу http:/ /имя_или_ip-адрес_ting:8080 должна открыться страница нашего веб-сервера Zabbix
В меню Службы: Nginx: Traffic Statistic можно посмотреть статистику по распределению запросов между серверами
Настройка аутентификации
Открываем меню Учетные данные на вкладке HTTP(s), добавляем пользователя, нажав на иконку +
Вводим логин и пароль, нажимаем Сохранить.
Далее создаем группу пользователей в меню Список пользователей на вкладке HTTP(s) Вводим имя группы и выбираем пользователя.
В меню Местоположение на вкладке HTTP(s) редактируем созданную ранее запись
На вкладке Основные настройки нажимаем Применить
Для проверки заходим по адресу http:/ /имя_или_ip-адрес_ting:8080 должно появиться окно аутентификации, вводим имя пользователя usr-www, пароль и попадаем на станицу нашего веб-сервера Zabbix
Список управления доступом (ACL) на основе IP
Данный параметр позволяет запретить/разрешить доступ к нашим серверам Zabbix1 и Zabbix2 по IP-адресу (сети)
В меню Службы: Nginx: Конфигурация: Доступ: IP ACLs добавляем новый ACL с помощью иконки +
В поле Записи ACL задаем IP-адрес или сеть и выбираем разрешить (Allow) или запретить (Deny) доступ с этого IP-адреса (сети) к нашему веб-серверу.
Параметр Действие по умолчанию задает разрешен или запрещен доступ с IP-адреса (сети), которые не входят в список Записи ACL
В примере на рисунке мы разрешаем доступ с локальной сети 192.168.1.0/24, с остальных сетей доступ запрещен.
В меню Местоположение на вкладке HTTP(s) включаем ACL
Нажимаем Сохранить и на вкладке Основные настройки нажимаем Применить
Межсетевой экран для веб-приложений (WAF)
Nginx позволяет использовать WAF (модуль NAXSI), для защиты веб-приложений. NAXSI оценивает каждый веб-запрос к серверу с помощью правил. Если оценка превышает пороговое значение, то данный запрос блокируется.
Открываем меню HTTP(s): Политика Naxsi WAF При первом запуске модуль предложит скачать основные правила из репозитория NAXSI
Нажимаем кнопку Сохранение
В появившемся окне нажимаем кнопку Принять и скачать
В меню Правило Naxsi WAF появится список правил, которые можно разбить по типам атак: XSS, SQL-инъекции, CSRF-атаки, Remote File Inclusion и Local File Inclusion.
Правила группируются в политики, которые после загрузки находятся в меню Политика Naxsi WAF
Политика определяет, какое действие будет выполнено в случае, если оценка совпадет или будет больше/меньше заданного значения.
Примечание
Для создания собственных правил и политик настоятельно рекомендуется изучить документацию по NAXSI https://github.com/nbs-system/naxsi
В меню Местоположение на вкладке HTTP(s) включаем WAF
Параметр Режим обучения означает, что ничего блокироваться не будет, только логироваться.
Следующие два параметра определяют, при какой оценке будут блокироваться запросы с помощью универсального обнаружения.
В парметр Пользовательская политика безопасности отмечаем галочкой необходимые нам политики (на рисунке выбраны все политики)
Нажимаем Сохранить и на вкладке Основные настройки нажимаем Применить
Для проверки добавим к запросу http:/ /имя_или_ip-адрес_ting:8080/hosts.php строку вида ?a=select&b=union&c=from
http:/ /имя_или_ip-адрес_ting:8080/hosts.php?a=select&b=union&c=from
В результате мы получим сообщение об ошибке Запрос отклонен по причинам безопасности. В случае, если включен параметр Режим обучения, то в меню Службы: Nginx: Журналы на вкладке HTTP Error Logs будет сообщение об ошибке.
Заголовки HTTP
Заголовки HTTP позволяют клиенту и серверу отправлять дополнительную информацию с HTTP запросом или ответом. Nginx может переопределять заголовки веб-сервера. Для этого необходимо в меню HTTP(S): Заголовки безопасности добавить новую политику и выбрать необходимые параметры. Более полную информацию об HTTP-заголовках можно узнать по адресу https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
Далее в меню HTTP(S): Сервер HTTP в параметре Заголовок безопасности необходимо выбрать созданный выше заголовок безопасности.
TCP и UDP проксирование
Помимо HTTP, nginx может обрабатывать TCP и UDP-трафик.
В качестве примера настроим проброс TCP по порту 3389 (RDP) через nginx к терминальному серверу в локальной сети.
В меню Службы: Nginx: Конфигурация: Вышестоящий: Вышестоящий сервер добавим новую запись с нашим терминальным сервером (192.168.1.2)
В меню Вышестоящий добавляем новую группу. В параметре Записи серверов выбираем созданный терминальный сервер.
В меню Поток данных: потоковые сервера создаем новую запись. Указываем Порт прослушивания и Вышестоящие серверы.
В меню Основные настройки нажимаем Применить
Для проверки запустим со стороны WAN удаленный рабочий стол (mstsc) и в строке Компьютер укажем IP-адрес или доменное имя нашего TING. В результе мы подключимся к терминальному серверу по RDP.