Запуск Docker‑образа на основе NGINX¶
Обзор образа¶
Нода Вебмониторэкс на основе NGINX может быть установлена в виде Docker‑контейнера. Контейнер является "толстым" и содержит все подсистемы ноды.
Функциональность ноды Вебмониторэкс, установленной в виде Docker‑контейнера, полностью идентична функциональности других вариантов установки.
Если вы используете несколько нод Вебмониторэкс
Все ноды Вебмониторэкс, установленные в вашей инфраструктуре, должны иметь одинаковые версии.
Перед установкой дополнительной ноды убедитесь, что ее версия совпадает с версией уже установленных модулей. Если версии модулей устарели или начинают устаревать (3.6
и ниже), рекомендуем обновить все модули до последней версии.
Чтобы получить текущую версию, выполните команду в контейнере:
apt list wallarm-node
Требования¶
-
Доступ к аккаунту с ролью Деплой или Администратор и отключенная двухфакторная аутентификация в Консоли управления Вебмониторэкс
-
Доступ виртуальной машины к Вебмониторэкс API по адресу
api.wallarm.ru:444
. Убедитесь, что доступ не ограничен файерволом
Варианты запуска контейнера¶
При запуске в Docker‑контейнер необходимо передать параметры ноды Вебмониторэкс одним из способов:
-
Через доступные переменные окружения. В контейнер передаются базовые настройки ноды, большинство доступных директив не могут быть переданы через переменные окружения.
-
В примонтированном конфигурационном файле. В контейнер могут быть переданы все доступные директивы ноды.
Запуск контейнера с переменными окружения¶
Вы можете передать в контейнер следующие базовые настройки Вебмониторэкс через опцию -e
:
Переменная окружения | Описание | Обязательная? |
---|---|---|
DEPLOY_USER | Email для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. | Да |
DEPLOY_PASSWORD | Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. | Да |
NGINX_BACKEND | Домен или IP‑адрес ресурса, который необходимо защитить с помощью Вебмониторэкс. | Да |
WALLARM_API_HOST | Адрес Вебмониторэкс API. Должен быть api.wallarm.ru .По умолчанию: api.wallarm.com . | Нет |
WALLARM_MODE | Режим работы ноды Вебмониторэкс:
monitoring . | Нет |
TARANTOOL_MEMORY_GB | Размер оперативной памяти для Tarantool в гигабайтах. Значение может быть целым или дробным (разделитель целой и дробной части — точка). По умолчанию: 0.2 гигабайта. | Нет |
WALLARM_ACL_ENABLE | Включает блокировку IP‑адресов с настройками по умолчанию. Принимает значения:
false .Чтобы включить блокировку IP‑адресов с другими настройками, необходимо определить соответствующие директивы NGINX и запустить контейнер с примонтированным конфигурационным файлом. Значения Начиная с образа WAF‑ноды 2.16.0-8, значения переменной | Нет |
DEPLOY_FORCE | Заменяет существующую ноду Вебмониторэкс на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
false .Ноде Вебмониторэкс присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с нодой Вебмониторэкс (например, с новой версией образа). Если в этом случае значение переменной равно false , процесс создания ноды завершится с ошибкой. | Нет |
Для запуска образа используйте команду:
docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e NGINX_BACKEND='example.com' -e WALLARM_API_HOST='api.wallarm.ru' -p 80:80 wallarm/node:2.18.1-5
Команда выполнит следующие действия:
-
Автоматически создаст ноду в Вычислительном кластере Вебмониторэкс. Созданный элемент отобразится в Консоли управления → Ноды.
-
Создаст файл
default
с минимальными настройками NGINX в директории контейнера/etc/nginx/sites-enabled
. -
Создаст файлы с параметрами для доступа к Вычислительному кластеру Вебмониторэкс в директории контейнера
/etc/wallarm
:node.yaml
с UUID ноды Вебмониторэкс и секретным ключомlicense.key
с лицензионным ключом Вебмониторэкс
-
Защитит ресурс
http://NGINX_BACKEND:80
Запуск контейнера с примонтированным конфигурационным файлом¶
Вы можете примонтировать в контейнер готовый конфигурационный файл через опцию -v
. Файл должен содержать следующие настройки:
Открыть пример примонтированного файла с минимальными настройками
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
#listen 443 ssl;
server_name localhost;
#ssl_certificate cert.pem;
#ssl_certificate_key cert.key;
root /usr/share/nginx/html;
index index.html index.htm;
wallarm_mode monitoring;
# wallarm_instance 1;
# wallarm_acl default;
location / {
proxy_pass http://example.com;
include proxy_params;
}
}
Для запуска образа:
-
Передайте в контейнер обязательные переменные окружения через опцию
-e
:Переменная окружения Описание Обязательная? DEPLOY_USER
Email для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. Да DEPLOY_PASSWORD
Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. Да WALLARM_API_HOST
Адрес Вебмониторэкс API. Должен быть api.wallarm.ru
.
По умолчанию:api.wallarm.com
.Нет DEPLOY_FORCE
Заменяет существующую ноду Вебмониторэкс на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения: true
, чтобы заменить нодуfalse
, чтобы отключить замену ноды
false
.
Ноде Вебмониторэкс присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с нодой Вебмониторэкс (например, с новой версией образа). Если в этом случае значение переменной равноfalse
, процесс создания ноды завершится с ошибкой.Нет -
Примонтируйте директорию с файлом
default
в директорию контейнера/etc/nginx/sites-enabled
через опцию-v
.docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e WALLARM_API_HOST='api.wallarm.ru' -v /configs/default:/etc/nginx/sites-enabled/default -p 80:80 wallarm/node:2.18.1-5
Команда выполнит следующие действия:
-
Автоматически создаст ноду в Вычислительном кластере Вебмониторэкс. Созданный элемент отобразится в Консоли управления → Ноды.
-
Примонтирует файл
default
в директорию контейнера/etc/nginx/sites-enabled
. -
Создаст файлы с параметрами для доступа к Вычислительному кластеру Вебмониторэкс в директории контейнера
/etc/wallarm
:node.yaml
с UUID ноды Вебмониторэкс и секретным ключомlicense.key
с лицензионным ключом Вебмониторэкс
-
Защитит ресурс
http://example.com
Монтирование других конфигурационных файлов
Директории контейнера, которые использует NGINX:
/etc/nginx/conf.d
— общие настройки/etc/nginx/sites-enabled
— настройки виртуальных хостов/var/www/html
— статические файлы
Вы можете примонтировать необходимые конфигурационные файлы в перечисленные директории. Директивы ноды описываются в файле контейнера /etc/nginx/sites-enabled/default
.
Настройка логирования¶
Логирование по умолчанию включено. Логи пишутся в следующие директории:
-
/var/log/nginx
— логи NGINX -
/var/log/wallarm
— логи подсистем Вебмониторэкс
Для настройки расширенного логирования используйте инструкцию.
По умолчанию логи ротируются раз в сутки. Изменение параметров ротации через переменные окружения не предусмотрено. Настройка ротации происходит через конфигурационные файлы в /etc/logrotate.d/
.
Настройка мониторинга¶
Внутри контейнера установлены Nagios‑совместимые скрипты для мониторинга ноды Вебмониторэкс. Подробнее в разделе Мониторинг ноды Вебмониторэкс.
Пример вызова скриптов:
docker exec -it <WALLARM_NODE_CONTAINER_ID> /usr/lib/nagios/plugins/check_wallarm_tarantool_timeframe -w 1800 -c 900
docker exec -it <WALLARM_NODE_CONTAINER_ID> /usr/lib/nagios/plugins/check_wallarm_export_delay -w 120 -c 300
<WALLARM_NODE_CONTAINER_ID>
— ID Docker‑контейнера с нодой Вебмониторэкс. Чтобы получить ID, выполните командуdocker ps
и скопируйте необходимое значение.
Тестирование работы Вебмониторэкс¶
-
Отправьте тестовый запрос с атаками SQLI и XSS на адрес защищенного ресурса:
curl http://localhost/?id='or+1=1--a-<script>prompt(1)</script>'
-
Перейдите в Консоль управления Вебмониторэкс → секция События и убедитесь, что атаки появились в списке.
Частые настройки¶
Примонтированный конфигурационный файл должен описывать настройки ноды Вебмониторэкс через доступные директивы. Ниже приведен набор настроек, которые часто применяются к ноде с помощью директив:
-
Добавление адресов сканера Вебмониторэкс в белый список для режима фильтрации
block
-
Ограничение времени обработки единичного запроса в директиве
wallarm_process_time_limit
-
Ограничение времени ожидания ответа сервера в директиве NGINX
proxy_read_timeout
-
Ограничение максимального размера запроса в директиве NGINX
client_max_body_size