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

Отдельная установка модуля постаналитики

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

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

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

В зависимости от архитектуры системы, модуль NGINX-Вебмониторэкс и модуль постаналитики могут быть установлены на один сервер или на разные серверы.

Данная инструкция описывает способ установки модуля постаналитики на отдельный сервер.

Требования

  • Модуль NGINX-Вебмониторэкс, установленный для NGINX stable из репозитория NGINX, NGINX из репозитория Debian/CentOS или NGINX Plus

  • Доступ к аккаунту с ролью Администратор или Деплой и отключенной двухфакторной аутентификацией в Консоли управления Вебмониторэкс

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

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

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

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

  • Доступ к хранилищу Яндекс S3 (https://storage.yandexcloud.net), чтобы обеспечить корректную блокировку IP‑адресов, зарегистрированных в странах, регионах или дата-центрах из белого, черного и серого списков IP

    Необходимо обеспечить доступ к https://storage.yandexcloud.net или нескольким диапазонам IP‑адресов: диапазон 1 и диапазон 2.

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

Установка

1. Добавьте репозитории Вебмониторэкс

Модуль постаналитики, как и другие модули Вебмониторэкс, устанавливается и обновляется из репозиториев Вебмониторэкс. Для добавления репозиториев используйте команды для вашей платформы:

sudo apt install dirmngr
curl -fsSL https://repo.webmonitorx.ru/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.webmonitorx.ru/debian/wallarm-node stretch/3.6/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
sudo apt install dirmngr
curl -fsSL https://repo.webmonitorx.ru/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.webmonitorx.ru/debian/wallarm-node stretch/3.6/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sh -c "echo 'deb http://repo.webmonitorx.ru/debian/wallarm-node stretch-backports/3.6/' | sudo tee --append /etc/apt/sources.list.d/wallarm.list"
# for correct Вебмониторэкс node operation, uncomment the following line in /etc/apt/sources.list`:
# deb http://deb.debian.org/debian stretch-backports main contrib non-free
sudo apt update
sudo apt install dirmngr
curl -fsSL https://repo.webmonitorx.ru/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.webmonitorx.ru/debian/wallarm-node buster/3.6/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
sudo apt install dirmngr
curl -fsSL https://repo.webmonitorx.ru/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.webmonitorx.ru/debian/wallarm-node bullseye/3.6/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
curl -fsSL https://repo.webmonitorx.ru/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.webmonitorx.ru/ubuntu/wallarm-node bionic/3.6/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
curl -fsSL https://repo.webmonitorx.ru/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.webmonitorx.ru/ubuntu/wallarm-node focal/3.6/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
sudo yum install -y epel-release
sudo rpm -i https://repo.webmonitorx.ru/centos/wallarm-node/6/3.6/x86_64/Packages/wallarm-node-repo-1-6.el6.noarch.rpm
sudo yum install -y epel-release
sudo rpm -i https://repo.webmonitorx.ru/centos/wallarm-node/7/3.6/x86_64/Packages/wallarm-node-repo-1-6.el7.noarch.rpm
sudo yum install -y epel-release
sudo rpm -i https://repo.webmonitorx.ru/centos/wallarm-node/8/3.6/x86_64/Packages/wallarm-node-repo-1-6.el8.noarch.rpm

2. Установите пакеты для модуля постаналитики

Для модуля постаналитики и хранилища Tarantool необходимо установить группу пакетов wallarm-node-tarantool из репозитория Вебмониторэкс:

sudo apt install --no-install-recommends wallarm-node-tarantool
sudo apt install --no-install-recommends wallarm-node-tarantool
sudo yum install wallarm-node-tarantool
sudo yum install wallarm-node-tarantool

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

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

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

  1. Убедитесь, что роль вашего пользователя в Консоли управления Вебмониторэкс — Администратор или Деплой и для пользователя отключена двухфакторная аутентификация.

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

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

  2. В системе с установленными пакетами модуля постаналитики запустите скрипт addnode:

    sudo /usr/share/wallarm-common/addnode -H api.wallarm.ru --no-sync
    
  3. Введите email и пароль от вашего аккаунта Вебмониторэкс.

  4. Введите имя ноды для модуля постаналитики или нажмите Enter, чтобы использовать имя, сгенерированное автоматически.

    Вы сможете изменить заданное имя позже в Консоли управления Вебмониторэкс → Ноды.

  5. Перейдите в Консоль управления Вебмониторэкс → секция Ноды и убедитесь, что в списке появилась созданная нода.

4. Обновите конфигурацию модуля постаналитики

Конфигурационный файл для модуля постаналитики расположен по пути:

  • /etc/default/wallarm-tarantool для операционных систем Debian и Ubuntu

  • /etc/sysconfig/wallarm-tarantool для операционных систем CentOS

Чтобы открыть файл для редактирования, используйте команду:

sudo vim /etc/default/wallarm-tarantool
sudo vim /etc/default/wallarm-tarantool
sudo vim /etc/sysconfig/wallarm-tarantool
sudo vim /etc/sysconfig/wallarm-tarantool

Оперативная память

Модуль постаналитики использует находящееся в памяти хранилище Tarantool. Рекомендуемое количество памяти для Tarantool в боевой среде: 75% от общей памяти виртуальной машины. Для тестирования ноды вы можете выделить меньшее количество памяти (например, 25% от общего объема).

Размер памяти для Tarantool необходимо передать в ГБ в директиве SLAB_ALLOC_ARENA в конфигурационном файле /etc/default/wallarm-tarantool или /etc/sysconfig/wallarm-tarantool. Значение может быть целым или дробным (разделитель целой и дробной части — точка). Например:

SLAB_ALLOC_ARENA=0.5
SLAB_ALLOC_ARENA=24

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

Адрес сервера постаналитики

Чтобы настроить адрес сервера постаналитики, необходимо:

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

    sudo vim /etc/default/wallarm-tarantool
    
    sudo vim /etc/default/wallarm-tarantool
    
    sudo vim /etc/sysconfig/wallarm-tarantool
    
    sudo vim /etc/sysconfig/wallarm-tarantool
    
  2. Снять комментарии с переменных HOST и PORT и указать следующие значения для переменных:

    # address and port for bind
    HOST='0.0.0.0'
    PORT=3313
    
  3. Если конфигурационный файл Tarantool настроен принимать соединения на адресах, отличных от 0.0.0.0 или 127.0.0.1, указать эти адреса в конфигурационном файле /etc/wallarm/node.yaml:

    hostname: <name of the Вебмониторэкс postanalytics node>
    uuid: <UUID of postanalytics node>
    secret: <secret key of postanalytics node>
    tarantool:
        host: '<IP address of Tarantool>'
        port: 3313
    
  4. Указать адрес отдельного сервера постаналитики на сервере с установленными пакетами NGINX‑Вебмониторэкс, как описано в инструкции для подходящей формы установки:

5. Перезапустите сервисы Вебмониторэкс

Чтобы применить заданные настройки к модулю постаналитики и к модулю NGINX‑Вебмониторэкс, необходимо:

  1. Перезапустить сервис wallarm-tarantool на сервере с модулем постаналитики:

    sudo systemctl restart wallarm-tarantool
    
    sudo systemctl restart wallarm-tarantool
    
    sudo systemctl restart wallarm-tarantool
    
    sudo systemctl restart wallarm-tarantool
    
  2. Перезапустить сервис NGINX на сервере с модулем NGINX‑Вебмониторэкс:

    sudo systemctl restart nginx
    
    sudo service nginx restart
    
    sudo systemctl restart nginx
    
    sudo systemctl restart nginx
    

6. Проверьте взаимодействие модуля NGINX‑Вебмониторэкс и модуля постаналитики

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

curl http://localhost/?id='or+1=1--a-<script>prompt(1)</script>'

Если модуль NGINX‑Вебмониторэкс и модуль постаналитики настроены корректно, атака выгрузится в Вычислительный кластер Вебмониторэкс и отобразится в Консоли управления Вебмониторэкс → секция События:

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

Если атака не выгрузилась в Вычислительный кластер, проверьте наличие ошибок в работе сервисов:

  • Убедитесь, что сервис модуля постаналитики wallarm-tarantool находится в статусе active

    sudo systemctl status wallarm-tarantool
    

    Статус wallarm-tarantool

  • Проанализируйте логи модуля постаналитики

    sudo cat /var/log/wallarm/tarantool.log
    

    Если в логах есть запись, подобная SystemError binary: failed to bind: Cannot assign requested address, убедитесь, что сервер принимает соединение по указанному адресу и порту.

  • На сервере с модулем NGINX‑Вебмониторэкс проанализируйте логи NGINX:

    sudo cat /var/log/nginx/error.log
    

    Если в логах есть запись, подобная [error] wallarm: <address> connect() failed, убедитесь, что на сервере с модулем NGINX‑Вебмониторэкс указан верный адрес сервера с модулем постаналитики и сервер с модулем постаналитики принимает соединение по указанному адресу и порту.

  • На сервере с модулем NGINX‑Вебмониторэкс: выполните команду для получения статистики по обработанным запросам и убедитесь, что значение tnt_errors равно 0

    curl http://127.0.0.8/wallarm-status
    

    Описание всех параметров, которые возвращает сервис статистики →

Защита модуля постаналитики

Защита постаналитики

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

  • Информации об обработанных запросах
  • Возможности выполнения произвольного Lua-кода и команд операционной системы

Обратите внимание, что если модуль постаналитики устанавливается на одном сервере с модулем NGINX‑Вебмониторэкс, то такого риска нет, так как модуль постаналитики подключается к порту 3313.

Настройки файервола для отдельно установленного модуля постаналитики:

  • Разрешите прохождение HTTPS‑трафика к API-серверу Вебмониторэкс api.wallarm.ru:444 в обоих направлениях, чтобы модуль постаналитики мог взаимодействовать с этим сервером.
  • Ограничьте доступ к порту 3313 Tarantool по протоколам TCP и UDP, разрешив соединения только с IP‑адресов нод Вебмониторэкс.

Устранение проблем Tarantool

Частые проблемы в работе Tarantool и способы их устранения