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

Запуск Docker‑образа на основе NGINX

Обзор образа

WAF‑нода на основе NGINX может быть установлена в виде Docker‑контейнера. Контейнер является «толстым» и содержит все подсистемы WAF‑ноды.

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

Если Валарм WAF уже развернут

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

Чтобы получить текущую версию, выполните команду в контейнере:

apt list wallarm-node

Более подробная информация о поддержке версий доступна в политике версионирования WAF‑ноды.

Требования

  • Доступ к аккаунту с ролью Деплой или Администратор и отключенная двухфакторная аутентификация в Консоли управления Валарм для RU‑облака или EU‑облака

  • Доступ виртуальной машины к Валарм API по адресу api.wallarm.com:444 для EU‑облака или api.wallarm.ru:444 для RU‑облака. Убедитесь, что доступ не ограничен файерволом

Варианты запуска контейнера

При запуске в Docker‑контейнер необходимо передать параметры WAF‑ноды одним из способов:

  • Через доступные переменные окружения. В контейнер передаются базовые настройки WAF‑ноды, большинство доступных директив не могут быть переданы через переменные окружения.

  • В примонтированном конфигурационном файле. В контейнер могут быть переданы все доступные директивы WAF‑ноды.

Запуск контейнера с переменными окружения

Вы можете передать в контейнер следующие базовые настройки WAF через опцию -e:

Переменная окружения Описание Обязательная?
DEPLOY_USER Email для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
DEPLOY_PASSWORD Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
NGINX_BACKEND Домен или IP‑адрес ресурса, который необходимо защитить с помощью WAF. Да
WALLARM_API_HOST Адрес Валарм API:
  • api.wallarm.com для EU‑облака
  • api.wallarm.ru для RU‑облака
По умолчанию: api.wallarm.com.
Нет
WALLARM_MODE Режим работы WAF‑ноды:
  • block, чтобы блокировать вредоносные запросы
  • safe_blocking, чтобы блокировать только те вредоносные запросы, которые отправлены с IP‑адресов из серого списка
  • monitoring, чтобы анализировать, но не блокировать запросы
  • off, чтобы не обрабатывать входящий трафик
По умолчанию: monitoring.
Подробное описание режимов работы
Нет
TARANTOOL_MEMORY_GB Размер оперативной памяти для Tarantool в гигабайтах. Значение может быть целым или дробным (разделитель целой и дробной части — точка). По умолчанию: 0.2 гигабайта. Нет
DEPLOY_FORCE Заменяет существующую WAF‑ноду на новую, если название WAF‑ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
  • true, чтобы заменить WAF‑ноду
  • false, чтобы отключить замену WAF‑ноды
По умолчанию (если переменная не указана явно): false.
WAF‑ноде Валарм присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с WAF‑нодой Валарм (например, с новой версией образа). Если в этом случае значение переменной равно false, процесс создания WAF‑ноды завершится с ошибкой.
Нет

Для запуска образа используйте команду:

docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e NGINX_BACKEND='example.com' -e TARANTOOL_MEMORY_GB=16 -p 80:80 wallarm/node:3.2.0-1
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' -e TARANTOOL_MEMORY_GB=16 -p 80:80 wallarm/node:3.2.0-1

Команда выполнит следующие действия:

  • Автоматически создаст WAF‑ноду в Облаке Валарм. Созданный элемент отобразится в Консоли управления → Ноды.

  • Создаст файл default с минимальными настройками NGINX в директории контейнера /etc/nginx/sites-enabled.

  • Создаст файлы с параметрами для доступа к Облаку Валарм в директории контейнера /etc/wallarm:

    • node.yaml с UUID WAF‑ноды и секретным ключом
    • 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;

    location / {
            proxy_pass http://example.com;
            include proxy_params;
    }
}

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

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

    Переменная окружения Описание Обязательная?
    DEPLOY_USER Email для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
    DEPLOY_PASSWORD Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
    WALLARM_API_HOST Адрес Валарм API:
    • api.wallarm.com для EU‑облака
    • api.wallarm.ru для RU‑облака
    По умолчанию: api.wallarm.com.
    Нет
    DEPLOY_FORCE Заменяет существующую WAF‑ноду на новую, если название WAF‑ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
    • true, чтобы заменить WAF‑ноду
    • false, чтобы отключить замену WAF‑ноды
    По умолчанию (если переменная не указана явно): false.
    WAF‑ноде Валарм присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с WAF‑нодой Валарм (например, с новой версией образа). Если в этом случае значение переменной равно false, процесс создания WAF‑ноды завершится с ошибкой.
    Нет
  2. Примонтируйте директорию с файлом default в директорию контейнера /etc/nginx/sites-enabled через опцию -v.

    docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -v /configs/default:/etc/nginx/sites-enabled/default -p 80:80 wallarm/node:3.2.0-1
    
    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:3.2.0-1
    

Команда выполнит следующие действия:

  • Автоматически создаст WAF‑ноду в Облаке Валарм. Созданный элемент отобразится в Консоли управления → Ноды.

  • Примонтирует файл default в директорию контейнера /etc/nginx/sites-enabled.

  • Создаст файлы с параметрами для доступа к Облаку Валарм в директории контейнера /etc/wallarm:

    • node.yaml с UUID WAF‑ноды и секретным ключом
    • license.key с лицензионным ключом Валарм
  • Защитит ресурс http://example.com

Монтирование других конфигурационных файлов

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

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

Вы можете примонтировать необходимые конфигурационные файлы в перечисленные директории. Директивы WAF‑ноды описываются в файле контейнера /etc/nginx/sites-enabled/default.

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

Логирование по умолчанию включено. Логи пишутся в следующие директории:

  • /var/log/nginx — логи NGINX

  • /var/log/wallarm — логи подсистем Валарм WAF

Для настройки расширенного логирования используйте инструкцию.

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

Настройка мониторинга

Внутри контейнера установлены Nagios‑совместимые скрипты для мониторинга WAF‑ноды. Подробнее в разделе Мониторинг WAF‑ноды.

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

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

Тестирование работы Валарм WAF

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

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

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

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

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