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

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

Обзор образа

Инструкция описывает шаги для запуска Docker‑образа WAF на основе Envoy 1.15.0. Образ содержит все системы, необходимые для корректной работы WAF:

  • Сервисы прокси-сервера Envoy с встроенным модулем WAF

  • Модули Tarantool для постаналитики

  • Другие сервисы и скрипты

Модуль Валарм WAF реализован в виде HTTP‑фильтра Envoy для проксирования запросов.

Поддерживаемые параметры конфигурации

Большинство директив для настройки WAF‑ноды на основе NGINX не поддерживаются при настройке WAF‑ноды на основе Envoy. Список параметров для настройки WAF‑ноды на основе Envoy →

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

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

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

yum list wallarm-node
  • Если установлена версия 3.2.x, используйте текущую инструкцию.
  • Если установлена версия 3.0.x, обновите все образы до последней версии. Мы рекомендуем обновить модули, так как в последней версии добавлена настройка доступа к приложениям по IP‑адресам и упрощена логика работы режимов фильтрации трафика.
  • Если установлена версия 2.18.x или ниже, обновите все образы до последней версии. Поддержка установленных версий скоро будет прекращена или уже прекращена.

Более подробная информация о поддержке версий доступна в политике версионирования 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 Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
ENVOY_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 ENVOY_BACKEND='example.com' -p 80:80 wallarm/envoy:3.2.0-2
docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -e WALLARM_API_HOST='api.wallarm.ru' -p 80:80 wallarm/envoy:3.2.0-2

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

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

  • Создаст файл envoy.yaml с минимальными настройками Envoy в директории контейнера /etc/envoy.

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

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

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

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

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

  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. Примонтируйте директорию с файлом envoy.yaml в директорию контейнера /etc/envoy через опцию -v.

    docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -v /configs/envoy.yaml:/etc/envoy/envoy.yaml -p 80:80 wallarm/envoy:3.2.0-2
    
    docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -e WALLARM_API_HOST='api.wallarm.ru' -v /configs/envoy.yaml:/etc/envoy/envoy.yaml -p 80:80 wallarm/envoy:3.2.0-2
    

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

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

  • Примонтирует файл envoy.yaml в директорию контейнера /etc/envoy.

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

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

Настройка ротации логов (опционально)

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

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

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

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

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