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

Запуск 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‑облака. Убедитесь, что доступ не ограничен файерволом

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

Параметры WAF‑ноды могут быть переданы в Docker‑контейнер следующими способами:

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

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

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:2.16
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:2.16

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

  • Автоматически создаст 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;
    # 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.com для EU‑облака
    • api.wallarm.ru для RU‑облака
    По умолчанию: api.wallarm.com.
    Нет
  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:2.16
    
    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.16
    

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

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

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

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

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

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

Директории контейнера, которые использует 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>'
    

    Если WAF‑нода работает в режиме block, запрос будет заблокирован с ответом 403 Forbidden.

  2. Перейдите в Консоль управления Валарм → секция События для EU‑облака или для RU‑облака и убедитесь, что атаки появились в списке.

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

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

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