Запуск Docker‑образа на основе Envoy¶
Обзор образа¶
Инструкция описывает шаги для запуска Docker‑образа WAF на основе Envoy 1.15.0. Образ содержит все системы, необходимые для корректной работы WAF:
-
Сервисы прокси-сервера Envoy с встроенным модулем WAF
-
Модули Tarantool для постаналитики
-
Другие сервисы и скрипты
Модуль Валарм WAF реализован в виде HTTP‑фильтра Envoy для проксирования запросов.
Поддерживаемые параметры конфигурации
Большинство директив для настройки WAF‑ноды на основе NGINX не поддерживаются при настройке WAF‑ноды на основе Envoy. Список параметров для настройки WAF‑ноды на основе Envoy →
Требования¶
-
Доступ к аккаунту с ролью Деплой или Администратор и отключенная двухфакторная аутентификация в Консоли управления Валарм для 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 . | Нет |
WALLARM_MODE | Режим работы WAF‑ноды:
monitoring . | Нет |
TARANTOOL_MEMORY_GB | Размер оперативной памяти для Tarantool в гигабайтах. Значение может быть целым или дробным (разделитель целой и дробной части — точка). По умолчанию: 0.2 гигабайта. | Нет |
WALLARM_ACL_ENABLE | Включает блокировку IP‑адресов с настройками по умолчанию. По умолчанию: false .Чтобы включить блокировку IP‑адресов с другими настройками, необходимо определить соответствующие параметры и запустить контейнер с примонтированным конфигурационным файлом. | Нет |
Для запуска образа используйте команду:
docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -e TARANTOOL_MEMORY_GB=16 -p 80:80 wallarm/envoy:2.16.0-1
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' -e TARANTOOL_MEMORY_GB=16 -p 80:80 wallarm/envoy:2.16.0-1
Команда выполнит следующие действия:
-
Автоматически создаст WAF‑ноду в Облаке Валарм. Созданный элемент отобразится в Консоли управления → Ноды.
-
Создаст файл
envoy.yaml
с минимальными настройками Envoy в директории контейнера/etc/envoy
. -
Создаст файлы с параметрами для доступа к Облаку Валарм в директории контейнера
/etc/wallarm
:node.yaml
с UUID WAF‑ноды и секретным ключомlicense.key
с лицензионным ключом Валарм
-
Защитит ресурс
http://ENVOY_BACKEND:80
Запуск контейнера с примонтированным конфигурационным файлом¶
Вы можете примонтировать в контейнер готовый файл envoy.yaml
через опцию -v
. Файл должен содержать следующие настройки:
-
Тонкую настройку WAF‑ноды по инструкции
-
Настройку Envoy по инструкции Envoy
Для запуска образа:
-
Передайте в контейнер обязательные переменные окружения через опцию
-e
:Переменная окружения Описание Обязательность DEPLOY_USER
Email для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да DEPLOY_PASSWORD
Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да WALLARM_API_HOST
Адрес Валарм API: api.wallarm.com
для EU‑облакаapi.wallarm.ru
для RU‑облака
api.wallarm.com
.Нет -
Примонтируйте директорию с файлом
envoy.yaml
в директорию контейнера/etc/envoy
через опцию-v
.docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -e TARANTOOL_MEMORY_GB=16 -v /configs/envoy.yaml:/etc/envoy/envoy.yaml -p 80:80 wallarm/envoy:2.16.0-1
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' -e TARANTOOL_MEMORY_GB=16 -v /configs/envoy.yaml:/etc/envoy/envoy.yaml -p 80:80 wallarm/envoy:2.16.0-1
Команда выполнит следующие действия:
-
Автоматически создаст WAF‑ноду в Облаке Валарм. Созданный элемент отобразится в Консоли управления → Ноды.
-
Примонтирует файл
envoy.yaml
в директорию контейнера/etc/envoy
. -
Создаст файлы с параметрами для доступа к Облаку Валарм в директории контейнера
/etc/wallarm
:node.yaml
с UUID WAF‑ноды и секретным ключомlicense.key
с лицензионным ключом Валарм
-
Защитит ресурс
http://ENVOY_BACKEND:80
Настройка ротации логов (опционально)¶
Ротация лог‑файлов настроена и включена по умолчанию. При необходимости вы можете изменить настройки ротации в директории /etc/logrotate.d
контейнера с WAF‑нодой.
Тестирование работы Валарм WAF¶
-
Отправьте тестовый запрос с атаками SQLI и XSS на адрес защищенного ресурса:
curl http://localhost/?id='or+1=1--a-<script>prompt(1)</script>'
Если WAF‑нода работает в режиме
block
, запрос будет заблокирован с ответом403 blocked by wallarm filter
. -
Перейдите в Консоль управления Валарм → секция События для EU‑облака или для RU‑облака и убедитесь, что атаки появились в списке.