Перейти к содержанию

Установка динамического модуля Вебмониторэкс для NGINX Stable из репозитория NGINX

Инструкция описывает подключение ноды Вебмониторэкс как динамического модуля к бесплатной версии NGINX stable, установленной из репозитория NGINX.

Если вы используете несколько нод Вебмониторэкс

Все ноды Вебмониторэкс, установленные в вашей инфраструктуре, должны иметь одинаковые версии. Аналогично для модулей постаналитики, установленных на отдельных серверах.

Требования

  • Доступ к аккаунту с ролью Администратор МЭ в Консоли управления Вебмониторэкс

  • SELinux, отключенный или настроенный по инструкции

  • Выполнение команд от имени суперпользователя (например, root)

  • Для обработки запросов и постаналитики на разных серверах: модуль постаналитики, установленный на отдельный сервер по [инструкции][install-postanalytics-instr]

  • Возможность обращаться к https://repo.webmonitorx.ru и для загрузки пакетов. Убедитесь, что доступ не ограничен настройками файервола

  • Доступ к https://api.webmonitorx.ru для работы с Вычислительным кластером Вебмониторэкс. Если доступ к Вебмониторэкс API возможен только через прокси‑сервер, используйте инструкцию для настройки

  • Установленный текстовый редактор vim, nano или другой. В инструкции используется редактор vim

Варианты установки

Обработка запросов в модуле Вебмониторэкс делится на две фазы:

  1. Первичная обработка в модуле NGINX-Вебмониторэкс (нодой Вебмониторэкс). Не требует большого объема оперативной памяти, может быть размещена на текущих frontend-серверах без изменения требований.

  2. Статистический анализ обработанных запросов в модуле постаналитики. Требует значительного объема памяти, что может потребовать внесения изменений в конфигурацию существующих серверов либо выполнение постаналитики на другом сервере.

В зависимости от архитектуры системы, модуль 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 nginx
    
    sudo 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. Подключите модуль Вебмониторэкс для обработки запросов

  1. Откройте файл /etc/nginx/nginx.conf:

    sudo vim /etc/nginx/nginx.conf
    
  2. Проверьте, что в файле есть строка include /etc/nginx/conf.d/*;. Если такой строки нет, найдите строку include /etc/nginx/conf.d/*.conf и замените на include /etc/nginx/conf.d/*;.

  3. Добавьте следующую директиву 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;
    
  4. Скопируйте конфигурационные файлы для настройки системы:

    sudo cp /usr/share/doc/nginx-module-wnode/examples/*.conf /etc/nginx/conf.d/
    

5. Подключите ноду к Вычислительному кластеру Вебмониторэкс

Если модуль постаналитики установлен на отдельный сервер

Если модули первичной обработки трафика и постаналитики установлены на разные серверы, рекомендуется регистрировать такие модули в Вычислительном кластере по одному токену ноды. Для каждого модуля в Консоли управления будет отображаться отдельный инстанс ноды. Например:

Node with several instances

При [установке модуля постаналитики][install-postanalytics-instr] вы уже создали ноду Вебмониторэкс. Для установки следующих модулей ноды:

  1. [Подготовьте][install-postanalytics-instr-3] токен ноды, созданной при установке модуля постаналитики.
  2. Перейдите к выполнению шага 4 из списка ниже.

В процессе работы нода Вебмониторэкс взаимодействует с Вычислительным кластером Вебмониторэкс. Чтобы подключить ноду к Вычислительному кластеру, выполните следующие действия:

  1. Убедитесь, что роль вашего пользователя в Консоли управления Вебмониторэкс — Администратор МЭ.

    Для этого перейдите к списку пользователей в Консоли управления и проверьте столбец Роль:

    Список пользователей в консоли Вебмониторэкс

  2. Перейдите в Консоль управления → Ноды и создайте ноду.

    Создание ноды Вебмониторэкс

  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 и не анализирует входящие запросы. Чтобы включить анализ входящих запросов, выполните следующие шаги:

  1. Откройте файл /etc/nginx/conf.d/default.conf:

    sudo vim /etc/nginx/conf.d/default.conf
    
  2. Добавьте в блок 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:

  1. Откройте для редактирования конфигурационный файл Tarantool:

    sudo vim /opt/wallarm/env.list
    
  2. Укажите размер выделенной памяти в директиве SLAB_ALLOC_ARENA в ГБ. Значение может быть целым или дробным (разделитель целой и дробной части – точка).

    Например:

    SLAB_ALLOC_ARENA=0.5
    
    SLAB_ALLOC_ARENA=24
    

    Подробные рекомендации по выделению памяти для Tarantool описаны в инструкции.

  3. Чтобы применить изменения, перезапустите 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. Протестируйте работу Вебмониторэкс

  1. Отправьте тестовый запрос с атакой Path Traversal на адрес защищенного ресурса:

    curl http://localhost/etc/passwd
    
  2. Перейдите в Консоль управления Вебмониторэкс → раздел События и убедитесь, что атака появилась в списке.

    Атаки в интерфейсе

Настройка

Динамический модуль Вебмониторэкс со стандартными настройками установлен на NGINX. Чтобы кастомизировать настройки Вебмониторэкс, используйте доступные директивы.

Частые настройки: