Перейти к содержанию

Запуск 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 Режим работы ноды Вебмониторэкс:
  • block, чтобы блокировать вредоносные запросы
  • monitoring, чтобы анализировать, но не блокировать запросы
  • off, чтобы не обрабатывать входящий трафик
По умолчанию: monitoring.
Нет
TARANTOOL_MEMORY_GB Размер оперативной памяти для Tarantool в гигабайтах. Значение может быть целым или дробным (разделитель целой и дробной части — точка). По умолчанию: 0.2 гигабайта. Нет
WALLARM_ACL_ENABLE Включает блокировку IP‑адресов с настройками по умолчанию. Принимает значения:
  • true, чтобы включить блокировку
  • false, чтобы отключить блокировку
По умолчанию (если переменная не указана явно): false.
Чтобы включить блокировку IP‑адресов с другими настройками, необходимо определить соответствующие директивы NGINX и запустить контейнер с примонтированным конфигурационным файлом.

Значения on / enabled / ok / yes

Начиная с образа WAF‑ноды 2.16.0-8, значения переменной on / enabled / ok / yes отключают блокировку по IP‑адресам. Мы рекомендуем использовать последнюю версию образа, указанную в данном документе, и передавать в переменной значение true или false.

Нет
DEPLOY_FORCE Заменяет существующую ноду Вебмониторэкс на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
  • true, чтобы заменить ноду
  • false, чтобы отключить замену ноды
По умолчанию (если переменная не указана явно): 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;
    }
}

Для запуска образа:

  1. Передайте в контейнер обязательные переменные окружения через опцию -e:

    Переменная окружения Описание Обязательная?
    DEPLOY_USER Email для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. Да
    DEPLOY_PASSWORD Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. Да
    WALLARM_API_HOST Адрес Вебмониторэкс API. Должен быть api.wallarm.ru.
    По умолчанию: api.wallarm.com.
    Нет
    DEPLOY_FORCE Заменяет существующую ноду Вебмониторэкс на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
    • true, чтобы заменить ноду
    • false, чтобы отключить замену ноды
    По умолчанию (если переменная не указана явно): false.
    Ноде Вебмониторэкс присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с нодой Вебмониторэкс (например, с новой версией образа). Если в этом случае значение переменной равно false, процесс создания ноды завершится с ошибкой.
    Нет
  2. Примонтируйте директорию с файлом 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 и скопируйте необходимое значение.

Тестирование работы Вебмониторэкс

  1. Отправьте тестовый запрос с атаками SQLI и XSS на адрес защищенного ресурса:

    curl http://localhost/?id='or+1=1--a-<script>prompt(1)</script>'
    
  2. Перейдите в Консоль управления Вебмониторэкс → секция События и убедитесь, что атаки появились в списке.

    Атаки в интерфейсе

Частые настройки

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