Установка с использованием Docker (образ на основе NGINX)

Фильтрующий узел на основе NGINX (далее в этом документе — «фильтрующий узел») может быть установлен в виде Docker-контейнера. Контейнер является «толстым» и содержит все подсистемы фильтрующего узла.

Функциональность фильтрующего узла, установленного в виде Docker-контейнера, полностью идентична функциональности других вариантов установки.

Для установки фильтрующего узла в виде Docker-контейнера вам потребуется выполнить следующие действия:

  1. Развернуть фильтрующий узел.
  2. Подключить фильтрующий узел к облаку Валарм.
  3. Настроить модуль NGINX-Wallarm.
  4. Настроить ротацию логов.
  5. Настроить мониторинг.

1. Разверните фильтрующий узел

Выполните команду:

# docker run -d -e DEPLOY_USER="deploy@example.com" -e DEPLOY_PASSWORD="very_secret" -e NGINX_BACKEND=example.com -e TARANTOOL_MEMORY_GB=memvalue -p 80:80 wallarm/node

Где:

  • example.com — защищаемый ресурс.
  • deploy@example.com — логин для доступа к https://my.wallarm.com.
  • very_secret — пароль для доступа к https://my.wallarm.com.
  • memvalue – размер выделяемой памяти для Tarantool.

В результате выполнения команды:

  • на порте 80 будет доступен защищаемый ресурс.
  • в облаке https://my.wallarm.com будет зарегистрирован новый фильтрующий узел; он будет отображаться в соответствующем разделе настроек веб-интерфейса.

Для тонкой настройки вы можете разместить дополнительные конфигурационные файлы внутри контейнера.

2. Подключите фильтрующий узел к облаку Валарм

Фильтрующий узел взаимодействует с облаком, находящемся на удаленном сервере.

Варианты подключения фильтрующего узла к облаку:

  • Автоматическая регистрация.
  • Использование заранее известных реквизитов.
  • Использование готового конфигурационного файла.

Автоматическая регистрация

Передайте переменные окружения DEPLOY_USER, DEPLOY_PASSWORD c реквизитами доступа к https://my.wallarm.com.

В результате при первом запуске контейнер автоматически зарегистрируется в облаке.

Если контейнер с таким именем уже существует, команда завершится с ошибкой.

Чтобы избежать этого, используйте переменную окружения DEPLOY_FORCE=true.

# docker run -d -e DEPLOY_USER="deploy@example.com" -e DEPLOY_PASSWORD="very_secret" -e NGINX_BACKEND=[ IP address ] wallarm/node

Использование заранее известных реквизитов

Для доступа к облаку фильтрующий узел использует uuid и secret, которые можно передать в переменных окружения NODE_UUID и NODE_SECRET.

# docker run -d -e "NODE_UUID=00000000-0000-0000-0000-000000000000" -e NODE_SECRET="0000000000000000000000000000000000000000000000000000000000000000" -e NGINX_BACKEND=93.184.216.34 wallarm/node

Использование готового конфигурационного файла

Если у вас уже есть готовый конфигурационный файл node.yaml, передайте его внутрь контейнера при помощи «внешнего тома»:

# docker run -d -v /path/to/node.yaml:/etc/wallarm/node.yaml -e NGINX_BACKEND=93.184.216.34 wallarm/node

3. Настройте модуль NGINX-Wallarm

Настройка фильтрующего узла осуществляется через конфигурационный файл NGINX.

Контейнер позволяет использовать упрощенный режим настройки через переменные окружения, который включается при передаче переменой окружения NGINX_BACKEND.

Упрощенный режим

  • NGINX_BACKEND — адрес бэкенда, на который необходимо передавать все входящие запросы. Если адрес не содержит префикса http:// или https://, то по умолчанию будет использован http://. Подробнее в документации на proxy_pass.

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

    Без прописанной переменной NGINX_BACKEND Валарм не будет включен автоматически. Для включения вам необходимо прописать wallarm_mode monitoring. Подробнее в описании параметра wallarm_mode в Тонкая настройка конфигурации Валарм.

  • WALLARM_MODE: режим работы модуля NGINX-Wallarm. Подробнее в описании параметра wallarm_mode в Тонкая настройка конфигурации Валарм.

Конфигурационные файлы

Директории, используемые NGINX:

  • /etc/nginx-wallarm/conf.d — общие настройки.
  • /etc/nginx-wallarm/sites-enabled — настройки виртуальных хостов.
  • /var/www/html — статические файлы.

4. Настройте ротацию логов

Логирование по умолчанию включено.

Логи пишутся в следующие директории:

  • /var/log/nginx-wallarm/ — логи NGINX.
  • /var/log/wallarm/ — логи подсистем Валарм.

По умолчанию логи ротируются раз в сутки. Изменение параметров ротации через переменные окружения не предусмотрено. Настройка ротации происходит через конфигурационные файлы в /etc/logrotate.d/.

5. Настройте мониторинг

Внутри контейнера установлены Nagios-совместимые скрипты для мониторинга фильтрующего узла. Подробнее в разделе Настройка мониторинга фильтрующего узла.

Пример вызова скриптов:

# docker exec -it wallarm-node /usr/lib/nagios-plugins/check_wallarm_tarantool_timeframe -w 1800 -c 900
# docker exec -it wallarm-node /usr/lib/nagios-plugins/check_wallarm_export_delay -w 120 -c 300

Развертывание завершено

На этом развертывание завершено.

Проверьте, что фильтрующий узел работает и пропускает через себя трафик. Подробнее в Проверка работоспособности фильтрующего узла.

Дополнительные настройки

После установки фильтрующий узел может потребовать дополнительной настройки.

Далее приводится несколько типовых настроек, которые вы можете выполнить, если это требуется.

Для получения информации о других доступных настройках, обратитесь к разделу «Настройка» руководства администратора.

Настройка отображения реального IP-адреса клиента

Если фильтрующий узел развернут за прокси-сервером или балансировщиком нагрузки, то при такой схеме развертывания без дополнительной настройки адрес источника на фильтрующем узле может совпадать с одним из IP-адресов прокси-сервера или балансировщика нагрузки, а не с IP-адресом клиента.

В этом случае, если вы хотите, чтобы на фильтрующий узел передавался IP-адрес клиента в качестве адреса источника, то требуется дополнительная настройка прокси-сервера или балансировщика.

Настройка расширенного логирования

Вы можете настроить логирование переменных фильтрующего узла с помощью NGINX. Это позволит проводить более быструю диагностику состояния фильтрующего узла, основываясь на содержимом лог-файла NGINX.

Добавление адресов сканера Валарм в белый список

Сканер Валарм позволяет сканировать ресурсы вашей компании на уязвимости. Сканирование происходит с IP-адресов из этих списков:

Если вы используете сканер Валарм, то для его корректной работы рекомендуется настроить на средствах защиты вашего периметра (файерволы, системы предотвращения вторжений и т. д.) белые списки, содержащие в себе IP-адреса сканера Валарм.

Ограничение времени обработки единичного запроса

Используйте директиву Валарм wallarm_process_time_limit, чтобы задать ограничение времени обработки единичного запроса фильтрующим узлом.

Если запрос обрабатывается за большее время, чем указано в директиве, то в лог-файл заносится информация об ошибке, а запрос помечается как атака overlimit_res.

Ограничение времени ожидания ответа сервера

Используйте директиву NGINX proxy_read_timeout, чтобы задать таймаут чтения ответа проксированного сервера.

Если за это время сервер ничего не передаст, то соединение будет закрыто.

Ограничение максимального размера запроса

Используйте директиву NGINX client_max_body_size, чтобы задать ограничение на максимальный размер тела запроса клиента.

В случае превышения этого ограничения NGINX вернет клиенту ответ с кодом 413 (Payload Too Large, также известный как Request Entity Too Large).

results matching ""

    No results matching ""