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

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

Обзор образа

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

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

Если вы используете несколько нод Валарм

Все ноды Валарм, установленные в вашей инфраструктуре, должны иметь одинаковые версии.

Перед установкой дополнительной ноды убедитесь, что ее версия совпадает с версией уже установленных модулей. Если версии модулей устарели или начинают устаревать (3.2 и ниже), рекомендуем обновить все модули до последней версии.

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

apt list wallarm-node

Требования

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

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

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

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

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

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

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

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

Переменная окружения Описание Обязательная?
DEPLOY_USER Email для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
DEPLOY_PASSWORD Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
NGINX_BACKEND Домен или IP‑адрес ресурса, который необходимо защитить с помощью Валарм. Да
WALLARM_API_HOST Адрес Валарм API:
  • api.wallarm.com для EU‑Облака
  • api.wallarm.ru для RU‑Облака
По умолчанию: api.wallarm.com.
Нет
WALLARM_MODE Режим работы ноды Валарм:
  • block, чтобы блокировать вредоносные запросы
  • safe_blocking, чтобы блокировать только те вредоносные запросы, которые отправлены с IP‑адресов из серого списка
  • monitoring, чтобы анализировать, но не блокировать запросы
  • off, чтобы не обрабатывать входящий трафик
По умолчанию: monitoring.
Подробное описание режимов работы
Нет
WALLARM_APPLICATION Уникальный идентификатор для обозначения защищенного приложения в Облаке Валарм. Значение может быть любым целым положительным числом, кроме 0.

По умолчанию (если переменная не указана явно): -1 (приложение default в Консоли управления → Настройки → Приложения).

Подробнее о настройке приложений →

Поддержка переменной WALLARM_APPLICATION

Переменная WALLARM_APPLICATION поддерживается, начиная с Docker‑образа версии 3.4.1-1.

Нет
TARANTOOL_MEMORY_GB Размер оперативной памяти для Tarantool в гигабайтах. Значение может быть целым или дробным (разделитель целой и дробной части — точка). По умолчанию: 0.2 гигабайта. Нет
DEPLOY_FORCE Заменяет существующую ноду Валарм на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
  • true, чтобы заменить ноду
  • false, чтобы отключить замену ноды
По умолчанию (если переменная не указана явно): false.
Ноде Валарм присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с нодой Валарм (например, с новой версией образа). Если в этом случае значение переменной равно false, процесс создания ноды завершится с ошибкой.
Нет
NGINX_PORT

Порт, который будет использовать NGINX внутри Docker-контейнера. Назначение кастомного порта позволяет избежать конфликта портов при использовании Docker-контейнера в качестве sidecar внутри pod'а Kubernetes кластера.

По умолчанию (если переменная не указана явно): 80.

Синтаксис: -e NGINX_PORT='443'.

Нет

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

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

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

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

  • Создаст файл 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_application 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 Заменяет существующую ноду Валарм на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
    • 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' -v /configs/default:/etc/nginx/sites-enabled/default -p 80:80 wallarm/node:3.6.2-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.6.2-1
    

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

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

  • Примонтирует файл 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. Перейдите в Консоль управления Валарм → секция События для EU‑Облака или для RU‑Облака и убедитесь, что атаки появились в списке.

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

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

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

К началу