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

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

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

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

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

Известные ограничения

  • Не поддерживается блокировка по IP-адресу.
  • Изменение большинства директив Валарм недоступно через переменные окружения — директивы необходимо прописывать в конфигурационных файлах внутри контейнера.

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 or FQDN" wallarm/node

В случае успешной регистрации в директорию контейнера /etc/wallarm будут помещены файл лицензии license.key, файл с реквизитами доступа фильтрующего узла к облаку node.yaml и другие служебные файлы.

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

  • Значения uuid и secret (содержатся в файле /etc/wallarm/node.yaml).
  • Лицензионный ключ Валарм (содержится в файле /etc/wallarm/license.key).

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

  • либо значения uuid и secret через переменные среды окружения и файл лицензии license.key;
  • либо файлы node.yaml и license.key.

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

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

  • значения uuid и secret через соответствующие переменные среды окружения NODE_UUID и NODE_SECRET;
  • файл лицензии license.key с помощью монтирования директории.
# docker run -d -e "NODE_UUID=00000000-0000-0000-0000-000000000000" -e NODE_SECRET="0000000000000000000000000000000000000000000000000000000000000000" -v /path/to/license.key:/etc/wallarm/license.key -e NGINX_BACKEND=192.168.xxx.1 wallarm/node

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

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

  • файл с реквизитами доступа фильтрующего узла к облаку node.yaml;
  • файл лицензии license.key.
# docker run -d -v /path/to/node.yaml:/etc/wallarm/node.yaml -v /path/to/license.key:/etc/wallarm/license.key -e NGINX_BACKEND=192.168.xxx.1 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/ — логи подсистем Валарм.

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

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

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

По умолчанию логи ротируются раз в сутки. Изменение параметров ротации через переменные окружения не предусмотрено. Настройка ротации происходит через конфигурационные файлы в /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

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

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

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

Настройки по умолчанию

Только что установленный фильтрующий узел будет находиться в режиме блокировки (см. описание директивы wallarm_mode) в соответствии с настройками по умолчанию.

Это может привести к неработоспособности сканера Валарм. Если вы используете сканер, выполните дополнительные действия, чтобы он работал.

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

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

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

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

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

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

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

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

Сканер Валарм позволяет сканировать ресурсы вашей компании на уязвимости. Сканирование происходит с 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 ""