Отдельная установка модуля постаналитики¶
Обработка запросов в Валарм WAF делится на две фазы:
-
Первичная обработка в модуле NGINX-Wallarm. Не требует большого объема оперативной памяти, может быть размещена на текущих frontend-серверах без изменения требований.
-
Статистический анализ обработанных запросов в модуле постаналитики. Требует значительного объема памяти, что может потребовать внесения изменений в конфигурацию существующих серверов либо выполнение постаналитики на другом сервере.
В зависимости от архитектуры системы, модуль NGINX-Wallarm и модуль постаналитики могут быть установлены на один сервер или на разные серверы.
Данная инструкция описывает способ установки модуля постаналитики на отдельный сервер.
Требования¶
-
Модуль NGINX-Wallarm, установленный для NGINX stable из репозитория NGINX, NGINX из репозитория Debian/CentOS или NGINX Plus
-
Доступ к аккаунту с ролью Администратор или Деплой и отключенной двухфакторной аутентификацией в Консоли управления Валарм для RU‑облака или EU‑облака
-
SELinux, отключенный или настроенный по инструкции
-
Выполнение команд от имени суперпользователя (например,
root
) -
Возможность обращаться к
https://repo.wallarm.com
для загрузки пакетов. Убедитесь, что доступ не ограничен настройками файервола -
Доступ к
https://api.wallarm.com:444
для работы с EU‑облаком Валарм или кhttps://api.wallarm.ru:444
для работы с RU‑облаком Валарм. Если доступ к Валарм API возможен только через прокси‑сервер, используйте инструкцию для настройки - Установленный текстовый редактор vim, nano или другой. В инструкции используется редактор vim
Установка¶
1. Добавьте репозитории Валарм WAF¶
Модуль постаналитики, как и другие модули Валарм WAF, устанавливается и обновляется из репозиториев Валарм. Для добавления репозиториев используйте команды для вашей платформы:
sudo apt install dirmngr
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node stretch/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
sudo apt install dirmngr
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/debian/wallarm-node buster/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node xenial/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node bionic/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
curl -fsSL https://repo.wallarm.com/wallarm.gpg | sudo apt-key add -
sh -c "echo 'deb http://repo.wallarm.com/ubuntu/wallarm-node focal/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sudo apt update
sudo yum install -y epel-release
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/7/2.18/x86_64/Packages/wallarm-node-repo-1-5.el7.noarch.rpm
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/7/2.18/x86_64/Packages/wallarm-node-repo-1-5.el7.noarch.rpm
sudo yum install -y epel-release
sudo rpm -i https://repo.wallarm.com/centos/wallarm-node/8/2.18/x86_64/Packages/wallarm-node-repo-1-5.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
3. Подключите модуль постаналитики к Облаку Валарм¶
В процессе работы модуль постаналитики взаимодействует с Облаком Валарм. Чтобы обеспечить взаимодействие с Облаком, необходимо создать отдельную WAF‑ноду для модуля постаналитики. WAF‑нода будет получать правила обработки трафика из Облака и выгружать данные об атаках в Облако.
Чтобы создать WAF‑ноду и подключить модуль постаналитики к Облаку, выполните следующие действия:
-
Убедитесь, что роль вашего пользователя в Консоли управления Валарм — Администратор или Деплой и для пользователя отключена двухфакторная аутентификация.
Для этого перейдите к списку пользователей в RU‑облаке или EU‑облаке и проверьте столбцы Роль и Auth:
-
В системе с установленными пакетами модуля постаналитики запустите скрипт
addnode
:sudo /usr/share/wallarm-common/addnode --no-sync
sudo /usr/share/wallarm-common/addnode -H api.wallarm.ru --no-sync
-
Введите email и пароль от вашего аккаунта Валарм.
-
Введите название WAF‑ноды для модуля постаналитики или нажмите Enter, чтобы использовать название, сгенерированное автоматически.
-
Перейдите в Консоль управления Валарм → секция Ноды для RU‑облака или EU‑облака и убедитесь, что в списке появилась созданная WAF‑нода.
4. Обновите конфигурацию модуля постаналитики¶
Конфигурационный файл для модуля постаналитики расположен по пути:
-
/etc/default/wallarm-tarantool
для операционных систем Debian и Ubuntu -
/etc/sysconfig/wallarm-tarantool
для операционных систем CentOS и Amazon Linux 2
Чтобы открыть файл для редактирования, используйте команду:
sudo vim /etc/default/wallarm-tarantool
sudo vim /etc/default/wallarm-tarantool
sudo vim /etc/sysconfig/wallarm-tarantool
Оперативная память¶
Модуль постаналитики использует находящееся в памяти хранилище Tarantool. Рекомендуемое количество памяти для Tarantool: 75% от общей памяти виртуальной машины.
Размер памяти для Tarantool необходимо передать в ГБ в директиве SLAB_ALLOC_ARENA
в конфигурационном файле wallarm-tarantool
. Значение может быть целым или дробным (разделитель целой и дробной части — точка). Например, 24 ГБ:
SLAB_ALLOC_ARENA=24
Подробные рекомендации по выделению памяти для Tarantool описаны в инструкции.
Адрес сервера постаналитики¶
Чтобы настроить адрес сервера постаналитики, необходимо:
-
Снять комментарии с переменных
HOST
иPORT
в конфигурационном файлеwallarm-tarantool
и указать следующие значения для переменных:# address and port for bind HOST='0.0.0.0' PORT=3313
-
Если конфигурационный файл Tarantool настроен принимать соединения на адресах, отличных от
0.0.0.0
или127.0.0.1
, указать эти адреса в конфигурационном файле/etc/wallarm/node.yaml
:hostname: <name of postanalytics WAF node> uuid: <UUID of postanalytics WAF node> secret: <secret key of postanalytics WAF node> tarantool: host: '<IP address of Tarantool>' port: 3313
-
Указать адрес отдельного сервера постаналитики на сервере с установленными пакетами NGINX‑Wallarm, как описано в инструкции для подходящей формы установки:
5. Перезапустите сервисы Валарм WAF¶
Чтобы применить заданные настройки к модулю постаналитики и к модулю NGINX‑Wallarm, необходимо:
-
Перезапустить сервис
wallarm-tarantool
на сервере с модулем постаналитики:sudo systemctl restart wallarm-tarantool
sudo systemctl restart wallarm-tarantool
sudo systemctl restart wallarm-tarantool
-
Перезапустить сервис NGINX на сервере с модулем NGINX‑Wallarm:
sudo systemctl restart nginx
sudo service nginx restart
sudo systemctl restart nginx
6. Проверьте взаимодействие модуля NGINX‑Wallarm и модуля постаналитики¶
Чтобы проверить взаимодействие модулей Валарм WAF, установленных на разных серверах, вы можете отправить на адрес защищаемого приложения тестовую атаку:
curl http://localhost/?id='or+1=1--a-<script>prompt(1)</script>'
Если модуль NGINX‑Wallarm и модуль постаналитики настроены корректно, атака выгрузится в Облако Валарм и отобразится в Консоли управления Валарм → секция События:
Если атака не выгрузилась в Облако, проверьте наличие ошибок в работе сервисов:
-
Убедитесь, что сервис модуля постаналитики
wallarm-tarantool
находится в статусеactive
sudo systemctl status wallarm-tarantool
-
Проанализируйте логи модуля постаналитики
sudo cat /var/log/wallarm/tarantool.log
Если в логах есть запись, подобная
SystemError binary: failed to bind: Cannot assign requested address
, убедитесь, что сервер принимает соединение по указанному адресу и порту. -
На сервере с модулем NGINX‑Wallarm проанализируйте логи NGINX:
sudo cat /var/log/nginx/error.log
Если в логах есть запись, подобная
[error] wallarm: <address> connect() failed
, убедитесь, что на сервере с модулем NGINX‑Wallarm указан верный адрес сервера с модулем постаналитики и сервер с модулем постаналитики принимает соединение по указанному адресу и порту. -
На сервере с модулем NGINX‑Wallarm: выполните команду для получения статистики по обработанным запросам и убедитесь, что значение
tnt_errors
равно 0curl http://127.0.0.8/wallarm-status
Описание всех параметров, которые возвращает сервис статистики →
Защита модуля постаналитики¶
Защита постаналитики
Мы настоятельно рекомендуем защитить установленный модуль постаналитики файерволом. В противном случае есть риск несанкционированного подключения к сервису, что может привести к получению:
- информации об обработанных запросах
- возможности выполнения произвольного Lua-кода и команд операционной системы
Обратите внимание, что если модуль постаналитики устанавливается на одном сервере с модулем NGINX‑Wallarm, то такого риска нет, так как модуль постаналитики подключается к порту 3313.
Настройки файервола для отдельно установленного модуля постаналитики:
- Разрешите прохождение HTTPS‑трафика к API-серверам Валарм (
api.wallarm.com:444
для EU‑облака илиapi.wallarm.ru:444
для RU‑облака) в обоих направлениях, чтобы модуль постаналитики мог взаимодействовать с этими серверами. - Ограничьте доступ к порту
3313
Tarantool по протоколам TCP и UDP, разрешив соединения только с IP‑адресов WAF‑нод Валарм.