Установка динамического модуля Вебмониторэкс для NGINX Stable из репозитория NGINX¶
Инструкция описывает подключение ноды Вебмониторэкс как динамического модуля к бесплатной версии NGINX stable, установленной из репозитория NGINX.
Если вы используете несколько нод Вебмониторэкс
Все ноды Вебмониторэкс, установленные в вашей инфраструктуре, должны иметь одинаковые версии. Аналогично для модулей постаналитики, установленных на отдельных серверах.
Требования¶
-
Доступ к аккаунту с ролью Администратор МЭ в Консоли управления Вебмониторэкс
-
SELinux, отключенный или настроенный по инструкции
-
Выполнение команд от имени суперпользователя (например,
root) -
Для обработки запросов и постаналитики на разных серверах: модуль постаналитики, установленный на отдельный сервер по [инструкции][install-postanalytics-instr]
-
Возможность обращаться к
https://repo.webmonitorx.ruи для загрузки пакетов. Убедитесь, что доступ не ограничен настройками файервола -
Доступ к
https://api.webmonitorx.ruдля работы с Вычислительным кластером Вебмониторэкс. Если доступ к Вебмониторэкс API возможен только через прокси‑сервер, используйте инструкцию для настройки - Установленный текстовый редактор vim, nano или другой. В инструкции используется редактор vim
Варианты установки¶
Обработка запросов в модуле Вебмониторэкс делится на две фазы:
-
Первичная обработка в модуле NGINX-Вебмониторэкс (нодой Вебмониторэкс). Не требует большого объема оперативной памяти, может быть размещена на текущих frontend-серверах без изменения требований.
-
Статистический анализ обработанных запросов в модуле постаналитики. Требует значительного объема памяти, что может потребовать внесения изменений в конфигурацию существующих серверов либо выполнение постаналитики на другом сервере.
В зависимости от архитектуры системы, модуль NGINX-Вебмониторэкс и модуль постаналитики могут быть установлены на один сервер или на разные серверы.
Команды установки для разных вариантов описаны в соответствующих шагах.
Установка¶
1. Установите NGINX stable и зависимости¶
Возможны следующие способы установки NGINX stable из репозитория NGINX:
-
Установка из готового пакета
sudo apt -y update && \ sudo apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring && \ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null && \ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list && \ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ | sudo tee /etc/apt/preferences.d/99nginx && \ sudo apt -y update && \ sudo apt install nginxsudo yum install yum-utils && \ echo -e "[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true" | sudo tee /etc/yum.repos.d/nginx.repo && \ sudo yum install nginx -
Компиляция и установка с аналогичными опциями из исходного кода из ветки
stableрепозитория NGINX
Более подробная информация об установке доступна в официальной документации NGINX.
2. Добавьте репозитории Вебмониторэкс¶
Модули Вебмониторэкс устанавливаются и обновляются из репозиториев Вебмониторэкс. Для добавления репозиториев используйте команды для вашей платформы.
curl -fsSL https://repo.webmonitorx.ru/wmx.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/wmx-archive-keyring.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/wmx-archive-keyring.gpg] https://repo.webmonitorx.ru/ubuntu/webmonitorx-node `lsb_release -cs`/5.0/" | sudo tee /etc/apt/sources.list.d/wmx.list
sudo apt update
echo -e "[webmonitorx-node_5.0]
name=Webmonitorx Node - 5.0
baseurl=https://repo.webmonitorx.ru/centos/webmonitorx-node/9/5.0/\$basearch
enabled=1
gpgcheck=0
repo_gpgcheck=1
gpgkey=https://repo.webmonitorx.ru/wmx.gpg" | sudo tee /etc/yum.repos.d/webmonitorx-node.repo
3. Установите пакеты Вебмониторэкс¶
Обработка запросов и постаналитика на одном сервере¶
Для обработки запросов и проведения статистического анализа на одном сервере, необходимо установить следующие группы пакетов:
-
nginx-module-wnodeдля модуля NGINX-Вебмониторэкс -
wnodeдля модуля постаналитики, хранилища Tarantool и дополнительных пакетов NGINX-Вебмониторэкс
sudo apt install --no-install-recommends wnode nginx-module-wnode
sudo yum install wnode nginx-module-wnode
Обработка запросов и постаналитика на разных серверах¶
Для обработки запросов и проведения статистического анализа на разных серверах достаточно установить только wnode.
bash sudo apt install --no-install-recommends wnode
sudo yum install wnode
4. Подключите модуль Вебмониторэкс для обработки запросов¶
-
Откройте файл
/etc/nginx/nginx.conf:sudo vim /etc/nginx/nginx.conf -
Проверьте, что в файле есть строка
include /etc/nginx/conf.d/*;. Если такой строки нет, найдите строкуinclude /etc/nginx/conf.d/*.confи замените наinclude /etc/nginx/conf.d/*;. -
Добавьте следующую директиву
load_moduleпод директивойworker_processes auto:load_module modules/ngx_http_wnode_module.so;Пример файла с добавленной директивой:
user nginx; worker_processes auto; load_module modules/ngx_http_wnode_module.so; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; -
Скопируйте конфигурационные файлы для настройки системы:
sudo cp /usr/share/doc/nginx-module-wnode/examples/*.conf /etc/nginx/conf.d/
5. Подключите ноду к Вычислительному кластеру Вебмониторэкс¶
Если модуль постаналитики установлен на отдельный сервер
Если модули первичной обработки трафика и постаналитики установлены на разные серверы, рекомендуется регистрировать такие модули в Вычислительном кластере по одному токену ноды. Для каждого модуля в Консоли управления будет отображаться отдельный инстанс ноды. Например:
При [установке модуля постаналитики][install-postanalytics-instr] вы уже создали ноду Вебмониторэкс. Для установки следующих модулей ноды:
- [Подготовьте][install-postanalytics-instr-3] токен ноды, созданной при установке модуля постаналитики.
- Перейдите к выполнению шага 4 из списка ниже.
В процессе работы нода Вебмониторэкс взаимодействует с Вычислительным кластером Вебмониторэкс. Чтобы подключить ноду к Вычислительному кластеру, выполните следующие действия:
-
Убедитесь, что роль вашего пользователя в Консоли управления Вебмониторэкс — Администратор МЭ.
Для этого перейдите к списку пользователей в Консоли управления и проверьте столбец Роль:
-
Перейдите в Консоль управления → Ноды и создайте ноду.
-
Скопируйте сгенерированный токен.
-
В системе с установленной нодой запустите скрипт
register-node:sudo -u wallarm /opt/wallarm/usr/share/wallarm-common/register-node -t <WALLARM_API_TOKEN> -H api.webmonitorx.ru<WALLARM_API_TOKEN>— скопированный токен.- Вы можете добавить параметр
-n <HOST_NAME>, чтобы задать уникальное имя экземпляру ноды. Итоговое имя экземпляра будет иметь формат:HOST_NAME_NodeUUID.
Если модуль постаналитики установлен на отдельный сервер:
- Вы можете добавить параметр
--postanalytic-only, чтобы нода работала в режиме отдельно постаналитики - Вы можете добавить параметр
--filtering-only, чтобы нода работала в режиме фильтрующего узла
Если модуль постаналитики установлен на отдельный сервер
Если модуль постаналитики установлен на отдельный сервер, рекомендуется использовать токен ноды, созданной при [отдельной установке модуля постаналитики][install-postanalytics-instr].
6. Обновите конфигурацию модулей Вебмониторэкс¶
Основные конфигурационные файлы NGINX и ноды Вебмониторэкс расположены в директориях:
-
/etc/nginx/conf.d/default.confс настройками NGINX -
/etc/nginx/conf.d/wallarm.confс глобальными настройками ноды ВебмониторэксФайл используется для настроек, которые применяются ко всем доменам. Чтобы применить разные настройки к отдельным группам доменов, используйте файл
default.confили создайте новые файлы конфигурации для каждой группы доменов (например,example.com.confиtest.com.conf). Более подробная информация о конфигурационных файлах NGINX доступна в официальной документации NGINX. -
/etc/nginx/conf.d/wallarm-status.confс настройками мониторинга ноды. Описание конфигурации доступно по ссылке -
/opt/wallarm/env.listс настройками хранилища Tarantool
Режим фильтрации запросов¶
По умолчанию нода находится в режиме off и не анализирует входящие запросы. Чтобы включить анализ входящих запросов, выполните следующие шаги:
-
Откройте файл
/etc/nginx/conf.d/default.conf:sudo vim /etc/nginx/conf.d/default.conf -
Добавьте в блок
http,serverилиlocationстрокуwallarm_mode monitoring;.
Пример файла /etc/nginx/conf.d/default.conf
server {
# порт, для которого фильтруется трафик
listen 80;
# домен, для которого фильтруется трафик
server_name localhost;
# режим работы ноды Вебмониторэкс
wallarm_mode monitoring;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
В режиме monitoring нода Вебмониторэкс анализирует все входящие запросы, но не блокирует их, если обнаружит признаки атаки. Мы рекомендуем использовать ноду в режиме monitoring в течение нескольких дней после установки и затем переключить в режим block. Изучить рекомендации по настройке режима фильтрации запросов →
Оперативная память¶
Модуль постаналитики на отдельном сервере
Если модуль постаналитики установлен на отдельный сервер, пропустите этот шаг. Настройка постаналитики была выполнена во время отдельной установки.
Нода Вебмониторэкс использует находящееся в памяти хранилище Tarantool. В боевой среде мы рекомендуем выделять для Tarantool 75% от общей памяти виртуальной машины. Для тестирования ноды вы можете выделить меньшее количество памяти (например, 25% от общего объема).
Чтобы настроить объем памяти для Tarantool:
-
Откройте для редактирования конфигурационный файл Tarantool:
sudo vim /opt/wallarm/env.list -
Укажите размер выделенной памяти в директиве
SLAB_ALLOC_ARENAв ГБ. Значение может быть целым или дробным (разделитель целой и дробной части – точка).Например:
SLAB_ALLOC_ARENA=0.5SLAB_ALLOC_ARENA=24Подробные рекомендации по выделению памяти для Tarantool описаны в инструкции.
-
Чтобы применить изменения, перезапустите Tarantool:
sudo systemctl restart wallarm
Адрес отдельного сервера постаналитики¶
NGINX-Вебмониторэкс и модуль постаналитики на одном сервере
Если модули NGINX-Вебмониторэкс и постаналитики установлены на одном сервере, пропустите этот шаг.
Добавьте в /etc/nginx/conf.d/wallarm.conf адреса серверов постаналитики:
upstream wallarm_tarantool {
server <ip1>:3313 max_fails=0 fail_timeout=0 max_conns=1;
server <ip2>:3313 max_fails=0 fail_timeout=0 max_conns=1;
keepalive 2;
}
# omitted
wallarm_tarantool_upstream wallarm_tarantool;
-
Значение
max_connsдолжно быть указано для каждого сервера, чтобы предотвратить создание лишних соединений. -
Значение
keepaliveдолжно быть не меньше, чем количество серверов Tarantool. -
По умолчанию строка
# wallarm_tarantool_upstream wallarm_tarantool;закомментирована – необходимо удалить#.
Другие настройки¶
Чтобы обновить другие настройки NGINX и модулей Вебмониторэкс, используйте документацию NGINX и список доступных директив Вебмониторэкс.
7. Перезапустите NGINX¶
sudo systemctl restart nginx wallarm
Обратите внимание
Для корректной работы необходимо добавить IP-адрес ноды в белый список доступа по IP
8. Протестируйте работу Вебмониторэкс¶
-
Отправьте тестовый запрос с атакой Path Traversal на адрес защищенного ресурса:
curl http://localhost/etc/passwd -
Перейдите в Консоль управления Вебмониторэкс → раздел События и убедитесь, что атака появилась в списке.
Настройка¶
Динамический модуль Вебмониторэкс со стандартными настройками установлен на NGINX. Чтобы кастомизировать настройки Вебмониторэкс, используйте доступные директивы.
Частые настройки:
-
Использование балансировщика или прокси‑сервера перед нодой Вебмониторэкс
-
Ограничение времени обработки единичного запроса в директиве
wallarm_process_time_limit -
Ограничение времени ожидания ответа сервера в директиве NGINX
proxy_read_timeout -
Ограничение максимального размера запроса в директиве NGINX
client_max_body_size



