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

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

Обзор образа

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

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

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

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

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

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

apt list wallarm-node

Требования

  • Доступ к аккаунту с ролью Администратор в Консоли управления Вебмониторэкс

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

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

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

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

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

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

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

  1. Перейдите в Консоль управления → Ноды и создайте ноду.

    Создание ноды Вебмониторэкс

  2. Скопируйте сгенерированный токен.

  3. Запустите контейнер с созданной нодой:

    docker run -d -e WALLARM_API_TOKEN='XXXXXXX' -e NGINX_BACKEND='example.com' -e WALLARM_API_HOST='api.wallarm.ru' -p 80:80 wmx-public.gitlab.yandexcloud.net:5050/wmx-public/container-images/node:4.6
    

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

Переменная окружения Описание Обязательная?
WALLARM_API_TOKEN Переменная, в которую может быть передано значение токена Ноды Вебмониторэкс или API-токена с ролью Деплой.

Предыдущие переменные для настройки доступа к Вычислительному кластеру Вебмониторэкс

Для деплоя ноды версии 3.6 и ниже использовались переменные DEPLOY_USER и DEPLOY_PASSWORD. Начиная с версии 4.0, рекомендуется использовать WALLARM_API_TOKEN. Подробнее о миграции на новую версию

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

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

Подробнее о настройке приложений →
Нет
TARANTOOL_MEMORY_GB Размер оперативной памяти для Tarantool в гигабайтах. Значение может быть целым или дробным (разделитель целой и дробной части — точка). По умолчанию: 0.2 гигабайта. Нет
NGINX_PORT Порт, который будет использовать NGINX внутри Docker‑контейнера.

Начиная с Docker‑образа версии 4.0.2-1, порт сервиса wallarm-status, от которого collectd получает данные, обновляется автоматически в соответствии со значением NGINX_PORT.

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

Синтаксис: -e NGINX_PORT='443'.
Нет
DISABLE_IPV6 Если в переменной передано любое значение, кроме пустого, из конфигурационного файла NGINX будет удалена строка listen [::]:80 default_server ipv6only=on; и веб-сервер NGINX перестанет принимать IPv6-соединения.

Если переменная не передана явно или в ней передано пустое значение "", NGINX принимает и IPv6- и IPv4-соединения.
Нет

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

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

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

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

Запуск контейнера с примонтированным конфигурационным файлом

Вы можете примонтировать в контейнер готовый конфигурационный файл через опцию -v. Файл должен содержать следующие настройки:

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

  1. Перейдите в Консоль управления → Ноды и создайте ноду.

    Создание ноды Вебмониторэкс

  2. Скопируйте сгенерированный токен.

  3. Запустите контейнер с созданной нодой:

    docker run -d -e WALLARM_API_TOKEN='XXXXXXX' -e WALLARM_API_HOST='api.wallarm.ru' -v /configs/default:/etc/nginx/sites-enabled/default -p 80:80 wmx-public.gitlab.yandexcloud.net:5050/wmx-public/container-images/node:4.6
    
    • Через опции -e необходимо передать обязательные переменные окружения:

      Переменная окружения Описание Обязательная?
      WALLARM_API_TOKEN Переменная, в которую может быть передано значение токена Ноды Вебмониторэкс или API-токена с ролью Деплой.

      Предыдущие переменные для настройки доступа к Вычислительному кластеру Вебмониторэкс

      Для деплоя ноды версии 3.6 и ниже использовались переменные DEPLOY_USER и DEPLOY_PASSWORD. Начиная с версии 4.0, рекомендуется использовать WALLARM_API_TOKEN. Подробнее о миграции на новую версию

      Да
      WALLARM_API_HOST Адрес Вебмониторэкс API. Должен быть api.wallarm.ru.
      По умолчанию: api.wallarm.com.
      Нет
    • Через опцию -v директория с файлом default монтируется в директорию контейнера /etc/nginx/sites-enabled.

      Открыть пример примонтированного файла с минимальными настройками
      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;
          }
      }
      

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

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

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

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

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

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

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

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

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

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

  • /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. Отправьте тестовый запрос с атакой Path Traversal на адрес защищенного ресурса:

    curl http://localhost/etc/passwd
    
  2. Перейдите в Консоль управления Вебмониторэкс → раздел События и убедитесь, что атака появилась в списке.

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

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

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