Деплой Docker‑образа ноды Вебмониторэкс в Яндекс.Облако¶
Данная инструкция содержит краткое руководство по деплою Docker‑образа ноды Вебмониторэкс (NGINX) с помощью облачной платформы Яндекс.Облако. Для деплоя Docker-образа используется сервис Yandex Container Solution.
Ограничение инструкции
В данной инструкции не описана конфигурация для балансировки нагрузки и автоматического масштабирования нод Вебмониторэкс. Чтобы выполнить конфигурацию самостоятельно, рекомендуем ознакомиться с документацией Яндекс.Облака.
Требования¶
-
Доступ к консоли управления Яндекс.Облаком
-
Платежный аккаунт на странице биллинга в статусе
ACTIVEилиTRIAL_ACTIVE -
Созданный каталог. По умолчанию создается каталог
default, для настройки нового каталога используйте инструкцию -
Для деплоя контейнера с настройкой ноды через переменные окружения: установленный и настроенный CLI для работы с Яндекс.Облаком
-
Доступ к аккаунту с ролью Деплой или Администратор и отключенная двухфакторная аутентификация в Консоли управления Вебмониторэкс
Способы конфигурации Docker-контейнера с нодой Вебмониторэкс¶
При деплое необходимо передать в Docker‑контейнер параметры ноды Вебмониторэкс одним из способов:
-
Через доступные переменные окружения. С помощью переменных окружения задаются базовые настройки ноды. Большинство доступных директив не могут быть переданы через переменные.
-
В примонтированном конфигурационном файле. С помощью конфигурационного файла можно выполнить полную настройку ноды, используя любые доступные директивы. При этом способе конфигурации параметры для подключения к Вычислительному кластеру Вебмониторэкс передаются в переменных окружения.
Деплой контейнера с настройкой ноды через переменные окружения¶
Для деплоя контейнера с настройками ноды, переданными только в переменных окружения, вы можете использовать консоль управления Яндекс.Облаком или CLI. В данной инструкции используется CLI.
-
Запишите данные от аккаунта Вебмониторэкс в локальные переменные окружения, чтобы передать чувствительные данные в Яндекс.Облако более безопасным образом:
export DEPLOY_USER='<DEPLOY_USER>' export DEPLOY_PASSWORD='<DEPLOY_PASSWORD>'<DEPLOY_USER>: email для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс.<DEPLOY_PASSWORD>: пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс.
-
Создайте инстанс с запущенным Docker-контейнером с помощью команды
yc compute instance create-with-container:yc compute instance create-with-container \ --name <INSTANCE_NAME> \ --zone=<DEPLOYMENT_ZONE> \ --public-ip \ --container-image=wallarm/node:3.6.2-1 \ --container-env=DEPLOY_USER=${DEPLOY_USER},DEPLOY_PASSWORD=${DEPLOY_PASSWORD},NGINX_BACKEND=<HOST_TO_PROTECT_WITH_WALLARM>,WALLARM_API_HOST=api.webmonitorx.ru--name: название инстанса, например:wallarm-node.--zone: зона, в которой будет запущен инстанс.--public-ip: флаг, указывающий, что необходимо создать публичный IP-адрес для инстанса, чтобы он принимал запросы из внешних ресурсов.--container-image: ссылка на Docker-образ с нодой Вебмониторэкс.-
--container-env: переменные окружения с настройками ноды Вебмониторэкс из таблицы ниже. Не рекомендуется передавать значения переменныхDEPLOY_USERиDEPLOY_PASSWORDв явном виде.Переменная окружения Описание Обязательная? DEPLOY_USEREmail для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. Да DEPLOY_PASSWORDПароль для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. Да NGINX_BACKENDДомен или IP‑адрес ресурса, который необходимо защитить с помощью Вебмониторэкс. Да WALLARM_API_HOSTАдрес Вебмониторэкс API. Должен быть api.webmonitorx.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'.Нет -
Описание всех параметров команды
yc compute instance create-with-containerприведено в документации Яндекс.Облака.
-
Перейдите в консоль управления Яндекс.Облаком → Compute Cloud → Virtual machines и убедитесь, что инстанс появился в списке.
Деплой контейнера с настройкой ноды через примонтированный файл¶
Для деплоя контейнера с настройками ноды Вебмониторэкс, переданными через переменные окружения и примонтированный конфигурационный файл, необходимо создать инстанс с конфигурационным файлом и запустить Docker-контейнер в этом же инстансе. Для этого вы можете использовать консоль управления Яндекс.Облаком или CLI. В данной инструкции используется консоль управления.
-
Создайте инстанс на основе образа любой операционной системы по инструкции. Пример настроек инстанса:
-
Подключитесь к инстансу по SSH, используя инструкцию Яндекс.Облака.
-
Установите в инстансе пакеты Docker по инструкции для подходящей ОС.
-
Запишите данные от аккаунта Вебмониторэкс в локальные переменные окружения инстанса:
export DEPLOY_USER='<DEPLOY_USER>' export DEPLOY_PASSWORD='<DEPLOY_PASSWORD>'<DEPLOY_USER>: email для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс.<DEPLOY_PASSWORD>: пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс.
-
Создайте в инстансе директорию с конфигурационным файлом
defaultс настройками ноды Вебмониторэкс (например, директориюconfigs). Пример файла с минимальными настройками: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; } }Набор директив, которые могут быть указаны в конфигурационном файле →
-
Запустите Docker-контейнер с нодой Вебмониторэкс с примонтированным конфигурационным файлом и переменными окружения.
docker run -d -e DEPLOY_USER=${DEPLOY_USER} -e DEPLOY_PASSWORD=${DEPLOY_PASSWORD} -e WALLARM_API_HOST='api.webmonitorx.ru' -v <INSTANCE_PATH_TO_CONFIG>:<DIRECTORY_FOR_MOUNTING> -p 80:80 wallarm/node:3.6.2-1<INSTANCE_PATH_TO_CONFIG>: путь до конфигурационного файла, созданного на предыдущем шаге. Например:configs.-
<DIRECTORY_FOR_MOUNTING>: директория контейнера, в которую монтируется конфигурационный файл. Конфигурационный файл может быть примонтирован в директории контейнера, которые использует NGINX:/etc/nginx/conf.d— общие настройки/etc/nginx/sites-enabled— настройки виртуальных хостов/var/www/html— статические файлы
Директивы ноды описываются в файле контейнера
/etc/nginx/sites-enabled/default. -
-p: порт, через который нода принимает запросы. Значение должно совпадать с портом инстанса. -
-e: переменные окружения из таблицы ниже.Переменная окружения Описание Обязательная? DEPLOY_USEREmail для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. Да DEPLOY_PASSWORDПароль для аккаунта пользователя Деплой или Администратор в Консоли управления Вебмониторэкс. Да WALLARM_API_HOSTАдрес Вебмониторэкс API. Должен быть api.webmonitorx.ru.
По умолчанию:api.wallarm.com.Нет DEPLOY_FORCEЗаменяет существующую ноду Вебмониторэкс на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения: true, чтобы заменить нодуfalse, чтобы отключить замену ноды
false.
Ноде Вебмониторэкс присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с нодой Вебмониторэкс (например, с новой версией образа). Если в этом случае значение переменной равноfalse, процесс создания ноды завершится с ошибкой.Нет
Тестирование работы ноды Вебмониторэкс¶
-
Перейдите в консоль управления Яндекс.Облаком → Compute Cloud → Virtual machines и скопируйте IP-адрес инстанса из столбца Public IPv4.
Если IP-адрес отсутствует, убедитесь, что инстанс находится в статусе Running.
-
Отправьте тестовый запрос с атаками SQLI и XSS на скопированный адрес:
curl http://<COPIED_IP>/?id='or+1=1--a-<script>prompt(1)</script>' -
Перейдите в Консоль управления Вебмониторэкс → секция События и убедитесь, что атаки появились в списке.
Чтобы посмотреть сообщения об ошибках запуска контейнера, необходимо подключиться к инстансу по SSH и проверить логи контейнера. Если инстанс недоступен, убедитесь, что в контейнер переданы корректные значения всех обязательных параметров ноды.


