Запуск Docker‑образа на основе Angie¶
Обзор образа¶
Нода Вебмониторэкс на основе Angie может быть установлена в виде Docker‑контейнера. Контейнер является "толстым" и содержит все подсистемы ноды.
Функциональность ноды Вебмониторэкс, установленной в виде Docker‑контейнера, полностью идентична функциональности других вариантов установки.
Если вы используете несколько нод Вебмониторэкс
Все ноды Вебмониторэкс, установленные в вашей инфраструктуре, должны иметь одинаковые версии.
Перед установкой дополнительной ноды убедитесь, что ее версия совпадает с версией уже установленных модулей. Если версии модулей устарели или начинают устаревать (3.6
и ниже), рекомендуем обновить все модули до последней версии.
Чтобы получить текущую версию, выполните команду в контейнере:
apt list wallarm-node
Требования¶
-
Доступ к аккаунту с ролью Администратор в Консоли управления Вебмониторэкс
-
Доступ виртуальной машины к Вебмониторэкс API по адресу
api.wallarm.ru
. Убедитесь, что доступ не ограничен файерволом -
Доступ к репозиториям Вебмониторэкс
https://wmx-public.gitlab.yandexcloud.net:5050
Варианты запуска контейнера¶
При запуске в Docker‑контейнер необходимо передать параметры ноды Вебмониторэкс одним из способов:
-
Через доступные переменные окружения. В контейнер передаются базовые настройки ноды, большинство доступных директив не могут быть переданы через переменные окружения.
-
В примонтированном конфигурационном файле. В контейнер могут быть переданы все доступные директивы ноды.
Запуск контейнера с переменными окружения¶
Для запуска образа:
-
Перейдите в Консоль управления → Ноды и создайте ноду.
-
Скопируйте сгенерированный токен.
-
Запустите контейнер с созданной нодой:
$ docker run -it --rm \ --name angie-wmx \ --hostname angie-wmx \ -e "TARANTOOL_MEMORY_GB=0.3" \ -e "WALLARM_MODE=block" \ -e "NGINX_BACKEND=example.org" \ -e "WALLARM_API_HOST=api.wallarm.ru" \ -e "WALLARM_API_TOKEN=${NODE_TOKEN}" \ -p 80:80 \ wmx-public.gitlab.yandexcloud.net:5050/wmx-public/container-images/meganode:latest
Вы можете передать в контейнер следующие базовые настройки Вебмониторэкс через опцию -e
:
Переменная окружения | Описание | Обязательная? |
---|---|---|
WALLARM_API_TOKEN | Переменная, в которую может быть передано значение токена Ноды Вебмониторэкс или API-токена с ролью Деплой .Предыдущие переменные для настройки доступа к Вычислительному кластеру Вебмониторэкс Для деплоя ноды версии 3.6 и ниже использовались переменные | Да |
NGINX_BACKEND | Домен или IP‑адрес ресурса, который необходимо защитить с помощью Вебмониторэкс. | Да |
WALLARM_API_HOST | Адрес Вебмониторэкс API. Должен быть api.wallarm.ru . | Нет |
WALLARM_MODE | Режим работы ноды Вебмониторэкс:
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/angie/sites-enabled
. -
Создаст файлы с параметрами для доступа к Вычислительному кластеру Вебмониторэкс в директории контейнера
/etc/wallarm
:node.yaml
с UUID ноды Вебмониторэкс и секретным ключомprivate.key
с закрытым ключом Вебмониторэкс
-
Защитит ресурс
http://NGINX_BACKEND:80
Запуск контейнера с примонтированным конфигурационным файлом¶
Вы можете примонтировать в контейнер готовый конфигурационный файл через опцию -v
. Файл должен содержать следующие настройки:
Для запуска образа:
-
Перейдите в Консоль управления → Ноды и создайте ноду.
-
Скопируйте сгенерированный токен.
-
Запустите контейнер с созданной нодой:
docker run -d -e WALLARM_API_TOKEN='XXXXXXX' -e WALLARM_API_HOST='api.wallarm.ru' -v /configs/default:/etc/angie/sites-enabled/default -p 80:80 wmx-public.gitlab.yandexcloud.net:5050/wmx-public/container-images/meganode:latest "$@"
-
Через опции
-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/angie/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/angie/html; index index.html index.htm; wallarm_mode monitoring; # wallarm_application 1; location / { proxy_pass http://example.com; include proxy_params; } }
Монтирование других конфигурационных файлов
Директории контейнера, которые использует Angie:
/etc/angie/conf.d
— общие настройки/etc/angie/sites-enabled
— настройки виртуальных хостов/var/www/html
— статические файлы
Вы можете примонтировать необходимые конфигурационные файлы в перечисленные директории. Директивы ноды описываются в файле контейнера
/etc/angie/sites-enabled/default
.
-
Команда выполнит следующие действия:
-
Примонтирует файл
default
в директорию контейнера/etc/angie/sites-enabled
. -
Создаст файлы с параметрами для доступа к Вычислительному кластеру Вебмониторэкс в директории контейнера
/etc/wallarm
:node.yaml
с UUID ноды Вебмониторэкс и секретным ключомprivate.key
с закрытым ключом Вебмониторэкс
-
Защитит ресурс
http://example.com
Настройка логирования¶
Логирование по умолчанию включено. Логи пишутся в следующие директории:
-
/var/log/nginx
— логи Angie -
/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
и скопируйте необходимое значение.
Тестирование работы Вебмониторэкс¶
-
Отправьте тестовый запрос с атакой Path Traversal на адрес защищенного ресурса:
curl http://localhost/etc/passwd
-
Перейдите в Консоль управления Вебмониторэкс → раздел События и убедитесь, что атака появилась в списке.
Частые настройки¶
Примонтированный конфигурационный файл должен описывать настройки ноды Вебмониторэкс через доступные директивы. Ниже приведен набор настроек, которые часто применяются к ноде с помощью директив: