Установка Меганоды Вебмониторэкс¶
Меганода Вебмониторэкс – универсальный установщик, который предназначен для оптимизации и стандартизации процесса установки динамического модуля в различных средах. Установщик автоматически определяет версии вашей операционной системы и NGINX/Angie и устанавливает все необходимые зависимости.
По сравнению с отдельными пакетами Linux, предлагаемыми Вебмониторэкс для NGINX, NGINX Plus, NGINX c дистрибутивом и Angie, универсальный установщик упрощает процесс, автоматически выполняя следующие действия:
-
Проверка вашей ОС и версии NGINX/Angie/Angie PRO.
-
Подключение установленного модуля Вебмониторэкс к вашему NGINX/Angie/Angie PRO.
-
Подключение фильтрующей ноды к Вычислительному кластеру Вебмониторэкс с использованием предоставленного токена.
Сценарии использования¶
Среди всех поддерживаемых вариантов развертывания Вебмониторэкс это решение рекомендуется в следующих случаях:
-
Ваша инфраструктура основана на «голом железе» или виртуальных машинах без использования методов на основе контейнеров. Обычно этими настройками управляют с помощью инструментов «Инфраструктура как код» (IaC), таких как Ansible или SaltStack.
-
Ваши сервисы построены на базе NGINX/Angie. Вебмониторэкс может расширить свои функциональные возможности с помощью универсального установщика.
Требования¶
-
Доступ к аккаунту с ролью Администратор в Консоли управления Вебмониторэкс.
-
Выполнение команд от имени суперпользователя (например,
root
). -
Доступ к
https://meganode.webmonitorx.ru/
для загрузки универсального установщика Вебмониторэкс. Убедитесь, что доступ не заблокирован брандмауэром. -
Доступ к
https://api.wallarm.ru
иhttps://api.webmonitorx.ru
для работы с Вычислительным кластером Вебмониторэкс API. Если доступ Вебмониторэкс API возможен только через прокси-сервер, воспользуйтесь инструкцией для настройки. -
Для обработки запросов и постаналитики на разных серверах: модуль постаналитики, установленный на отдельный сервер по инструкции.
-
Доступ к хранилищу Яндекс S3 (
https://storage.yandexcloud.net
), чтобы обеспечить корректную блокировку IP‑адресов, зарегистрированных в странах, регионах или дата-центрах из белого, черного и серого списков IP.Необходимо обеспечить доступ к
https://storage.yandexcloud.net
или нескольким диапазонам IP‑адресов: диапазон 1 и диапазон 2. -
Установленный текстовый редактор vim, nano или другой.
Поддерживаемые операционные системы¶
- Debian 10, 11 и 12.x
- Ubuntu LTS 18.04, 20.04, 22.04
- CentOS 7, 8 Stream, 9 Stream
- Alma/Rocky Linux 9
- RHEL 8.x, 9.x
- Oracle Linux 8.x
- РЕД ОС
- Альт Сервер 10
- SuSe Linux
- Astra Linux
- Другие (список постоянно расширяется, вы можете связаться со службой поддержки Вебмониторэкс, чтобы проверить, есть ли в списке ваша ОС)
Варианты установки¶
Обработка запросов в модуле Вебмониторэкс делится на две фазы:
-
Первичная обработка в модуле NGINX-Вебмониторэкс (нодой Вебмониторэкс). Не требует большого объема оперативной памяти, может быть размещена на текущих frontend-серверах без изменения требований.
-
Статистический анализ обработанных запросов в модуле постаналитики. Требует значительного объема памяти, что может потребовать внесения изменений в конфигурацию существующих серверов либо выполнение постаналитики на другом сервере.
В зависимости от архитектуры системы, модуль NGINX-Вебмониторэкс и модуль постаналитики могут быть установлены на один сервер или на разные серверы.
Команды установки для разных вариантов описаны в соответствующих шагах.
Установка¶
1. Установите NGINX/Angie и зависимости¶
Установите последнюю версию NGINX или Angie:
-
NGINX
stable
— возможны следующие способы установки из репозитория NGINX:-
Установка из готового пакета
sudo apt install curl gnupg2 ca-certificates lsb-release echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add - sudo apt update sudo apt install nginx
sudo apt install curl gnupg2 ca-certificates lsb-release echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add - sudo apt update sudo apt install nginx
a. Если для CentOS 7.x у вас уже подключен репозиторий EPEL, отключите установку NGINX stable из репозитория EPEL. Для этого добавьте выражение
exclude=nginx*
в файл/etc/yum.repos.d/epel.repo
.Пример файла после добавления выражения
exclude=nginx*
:[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 exclude=nginx* [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source #baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1
b. Установите NGINX stable из официального репозитория:
echo -e '\n[nginx-stable] \nname=nginx stable repo \nbaseurl=http://nginx.org/packages/centos/$releasever/$basearch/ \ngpgcheck=1 \nenabled=1 \ngpgkey=https://nginx.org/keys/nginx_signing.key \nmodule_hotfixes=true' | sudo tee /etc/yum.repos.d/nginx.repo sudo yum install nginx
-
Компиляция и установка с аналогичными опциями из исходного кода из ветки
stable
репозитория NGINXУстановка NGINX stable на AlmaLinux, Rocky Linux, Oracle Linux 8.x, RedOS
Возможен только один вариант установки NGINX stable на AlmaLinux, Rocky Linux, Oracle Linux 8.x, RedOS — из исходного кода из репозитория NGINX.
Более подробная информация об установке доступна в официальной документации NGINX.
-
-
Distribution-Provided NGINX — для установки используйте следующие команды:
sudo apt-get update
sudo apt -y install --no-install-recommends nginx
sudo apt update
sudo apt -y install --no-install-recommends nginx
sudo yum -y update
sudo yum install -y nginx
sudo yum -y update
sudo yum install -y nginx
-
NGINX Plus — как установить, смотрите в документации NGINX.
-
Angie PRO — как установить, смотрите в документации Angie PRO.
-
Angie — как установить, смотрите в документации Angie.
2. Загрузите Меганоду Вебмониторэкс¶
Используйте следующие команды, чтобы загрузить Меганоду для вашей системы:
export WMX_NODE_RELEASE="4.6"
export WMX_NODE_REVISION="46"
export WMX_NODE_FULL="${WMX_NODE_RELEASE}.${WMX_NODE_REVISION}"
curl -O "https://meganode.webmonitorx.ru/${WMX_NODE_RELEASE}/wallarm-${WMX_NODE_FULL}.x86_64.sh"
3. Подготовьте токен Вебмониторэкс¶
Для установки ноды вам понадобится токен Вебмониторэкс соответствующего типа.
Чтобы подготовить токен:
- Откройте Консоль управления Вебмониторэкс → Ноды.
- Выполните одно из следующих действий:
- Перейдите в Консоль управления → Ноды, создайте ноду и скопируйте сгенерированный токен.
- Используйте существующую группу ноды — скопировать токен с помощью меню ноды → Копировать токен.
- Перейдите в Консоль управления → Ноды, создайте ноду и скопируйте сгенерированный токен.
- Откройте Консоль управления Вебмониторэкс → Настройки → API токены.
- Найдите или создайте API токен с ролью
Деплой
. - Скопируйте токен.
Установка с отдельным сервером постаналитики
- Запустите скрипт с параметром
filtering
:
sh "wallarm-${WMX_NODE_FULL}.x86_64.sh" -- -b -c RU -t "WALLARM_API_TOKEN" filtering
Или запустите скрипт
sudo sh ./wallarm-4.6.25.x86_64.sh filtering
без параметров и ответьте на вопросы скрипта. - В файл
/etc/nginx/conf.d/default.conf
добавьтеwallarm_mode block;
. -
В файле
/etc/nginx/conf.d/wallarm.conf
укажите IP-сервера постаналитики:upstream wallarm_tarantool { <server IP>:3313 max_fails=0 fail_timeout=0 max_conns=1; keepalive 1; } # omitted wallarm_tarantool_upstream wallarm_tarantool;
-
На сервере постаналитики запустите скрипт с параметром
postanalytics
:
sh "wallarm-${WMX_NODE_FULL}.x86_64.sh" -- -b -c RU -t "WALLARM_API_TOKEN" postanalytics
Или запустите скриптsudo sh ./wallarm-4.6.25.x86_64.sh postanalytics
без параметров и ответьте на вопросы скрипта. -
Перезапустите NGINX/Angie
sudo systemctl restart nginx sudo systemctl enable nginx sudo systemctl status nginx
sudo systemctl restart angie sudo systemctl enable angie sudo systemctl status angie
4. Запустите скрипт¶
Используйте токен ноды для запуска скрипта:
sudo sh "wallarm-${WMX_NODE_FULL}.x86_64.sh" -- -b -c RU -t "WALLARM_API_TOKEN"
Запуск через прокси:
sudo https_proxy=http://<ПРОКСИ_СЕРВЕР> sh "wallarm-4.6.46.x86_64.sh" -- -b -c RU -t "WALLARM_API_TOKEN"
Сохранение настроек выделенной памяти под Tarantool:
Чтобы при обновлении Вебмониторэкс сохранить настройки выделенной памяти под Tarantool, необходимо создать файл /etc/wallarm-override/env.list
.
-
Внутри файла укажите размер памяти в ГБ, создав атрибут
SLAB_ALLOC_ARENA
.
Значение может быть целым или дробным (разделитель целой и дробной части — точка).
Например:SLAB_ALLOC_ARENA=10.4
. -
Также в файле можно указать используемый proxy-сервер для обновления Меганоды и связи с вычислительным кластером, создав атрибут
https_proxy
.Пример файла env.list:
SLAB_ALLOC_ARENA=0.2 https_proxy=http://<адрес_прокси_сервера>
5. Включите ноду Вебмониторэкс для анализа трафика¶
По умолчанию развернутая нода Вебмониторэкс не анализирует входящий трафик.
В зависимости от выбранного подхода к развертыванию Вебмониторэкс (проксированный или зеркалированный) настройте Вебмониторэкс либо на прокси-трафик, либо на обработку зеркала трафика.
Выполните следующую настройку в файле конфигурации NGINX/Angie на устройстве с установленной нодой:
- Установите IP-адрес, на который Вебмониторэкс будет проксировать легитимный трафик. Это может быть IP-адрес экземпляра приложения, балансировщика нагрузки, DNS-имя и т. д., в зависимости от вашей архитектуры.
Для этого отредактируйте значениеproxy_pass
, например. Вебмониторэкс должен отправлять легитимные запросы на адресhttp://10.80.0.5
:
server {
listen 80;
listen [::]:80 ipv6only=on;
...
location / {
proxy_pass http://10.80.0.5;
...
}
}
- Чтобы нода Вебмониторэкс могла анализировать входящий трафик, установите директиву
wallarm_mode
на мониторинг:
server {
listen 80;
listen [::]:80 ipv6only=on;
wallarm_mode monitoring;
...
}
Режим мониторинга рекомендуется использовать для первого развертывания и тестирования решения. Вебмониторэкс также обеспечивает разные режимы блокировки.
Пример
http {
upstream backend {
server backend1.example.com; # Ваш бэкенд
}
server {
listen 443 ssl;
server_name ваш_домен.ru; # Замените "ваш_домен.ru" на ваш домен
wallarm_mode monitoring; # Режим работы Вебмониторэкс
ssl_certificate /путь/к/вашему/сертификату.crt;
ssl_certificate_key /путь/к/вашему/ключу.key;
location / {
proxy_pass https://backend; # Проксирование на конечный ресурс по HTTPS
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- Чтобы нода Вебмониторэкс принимала зеркалированный трафик, установите в
server
NGINX следующую конфигурацию:
wallarm_force server_addr $http_x_server_addr;
wallarm_force server_port $http_x_server_port;
# Change 222.222.222.22 to the address of the mirroring server
set_real_ip_from 222.222.222.22;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
wallarm_force response_status 0;
wallarm_force response_time 0;
wallarm_force response_size 0;
- Директивы
set_real_ip_from
иreal_ip_header
необходимы для того, чтобы Консоль управления Вебмониторэкс отображала IP-адреса злоумышленников. - Директивы
wallarm_force_response_*
необходимы для отключения анализа всех запросов, кроме копий, полученных из зеркалированного трафика.
- Чтобы нода Вебмониторэкс могла анализировать зеркалируемый трафик, установите директивы
wallarm_mode
дляmonitoring
:
server {
listen 80;
listen [::]:80 ipv6only=on;
wallarm_mode monitoring;
...
}
Поскольку вредоносные запросы невозможно заблокировать, единственный режим, который принимает Вебмониторэкс, — это мониторинг. Для встроенного развертывания также существуют режимы безопасной блокировки и блокировки, но даже если вы установите для директивы wallarm_mode значение, отличное от мониторинга, узел продолжает отслеживать трафик и записывать только вредоносный трафик (кроме выключенного режима).
6. Перезапустите NGINX/Angie¶
Используйте следующие команды для NGINX/Angie, чтобы перезапустить, активировать автостарт при перезагрузке сервера и проверить статус:
sudo systemctl restart nginx
sudo systemctl enable nginx
sudo systemctl status nginx
sudo systemctl restart angie
sudo systemctl enable angie
sudo systemctl status angie
Сервер NGINX/Angie должен корректно перезапуститься и находиться в состоянии active
.
7. Настройте отправку трафика на ноду Вебмониторэкс¶
Обновите цели вашего балансировщика нагрузки, чтобы отправлять трафик на ноду Вебмониторэкс. Подробную информацию см. в документации к вашему балансировщику нагрузки.
Настройте свой веб-сервер или прокси-сервер (например, NGINX) для зеркалирования входящего трафика на ноду Вебмониторэкс. Для получения подробной информации о настройке мы рекомендуем обратиться к документации вашего веб-сервера или прокси-сервера.
Проверка работы Меганоды¶
-
Отправьте тестовый запрос с атакой Path Traversal на адрес защищенного ресурса:
curl http://localhost/etc/passwd
-
Перейдите в Консоль управления Вебмониторэкс → раздел События и убедитесь, что атака появилась в списке.
Настройка¶
Динамический модуль Вебмониторэкс со стандартными настройками установлен на NGINX/Angie. Чтобы кастомизировать настройки Вебмониторэкс, используйте доступные директивы.
Частые настройки:
-
Использование балансировщика или прокси‑сервера перед нодой Вебмониторэкс
-
Ограничение времени обработки единичного запроса в директиве
wallarm_process_time_limit
-
Ограничение времени ожидания ответа сервера в директиве NGINX
proxy_read_timeout
-
Ограничение максимального размера запроса в директиве NGINX
client_max_body_size
Параметры запуска¶
Как только вы загрузите универсальный скрипт, вы сможете получить помощь по нему:
sudo sh ./wallarm-4.6.46.x86_64.sh -- -h
Что возвращает:
...
Usage: setup.sh [options]... [arguments]... [filtering/postanalytics]
OPTION DESCRIPTION
-b, --batch Batch mode, non-interactive installation.
-t, --token TOKEN Node token, only used in a batch mode.
-P, --port PORT Wallarm API pot, for example, 443.
--no-ssl Disable SSL for Wallarm API access.
--no-verify Disable SSL certificates verification.
-f, --force If there is a node with the same name, create a new instance.
--skip-registration Skip node registration process during installation.
--skip-nginx Skip nginx configuration process during installation.
--skip-systemd Skip systemd unit configuration process during installation.
-h, --help Show this help message.
--version Show script version.
Чтобы воспользоваться запуском без подсказок:
sudo sh ./wallarm-4.6.46.x86_64.sh -- -b
Обратите внимание:
-
Опция
--batch
включает пакетный (неинтерактивный) режим. В этом режиме, если вы не используете дополнительные параметры, нода устанавливается сразу после запуска скрипта, не требуя от пользователя дополнительного взаимодействия или ввода данных. Пакетный режим:- Требуется
--token
. - Позволяет изменять поведение скрипта с помощью дополнительных опций.
- Требуется
-
Переключатель
filtering/postanalytics
позволяет установить модуль постаналитики отдельно. Если переключатель не используется, то фильтрационная и постаналитическая часть устанавливаются целиком.
История версий Меганоды Вебмониторэкс →
Обновление пакетных версий ноды на Меганоду →