Установка динамического модуля для NGINX из репозитория Debian/CentOS¶
Инструкция описывает подключение ноды Вебмониторэкс как динамического модуля к бесплатной версии NGINX, установленной из репозитория Debian/CentOS.
Если вы используете несколько нод Вебмониторэкс
Все ноды Вебмониторэкс, установленные в вашей инфраструктуре, должны иметь одинаковые версии. Аналогично для модулей постаналитики, установленных на отдельных серверах.
Перед установкой дополнительной ноды убедитесь, что ее версия совпадает с версией уже установленных модулей. Если версии модулей устарели или начинают устаревать (3.6
и ниже), рекомендуем обновить все модули до последней версии.
Чтобы получить версию ноды и модуля постаналитики, установленных на одном сервере:
apt list wallarm-node
yum list wallarm-node
Чтобы получить версию ноды и модуля постаналитики, установленных на разных серверах:
# выполните на сервере с нодой
apt list wallarm-node-nginx
# выполните на сервере с модулем постаналитики
apt list wallarm-node-tarantool
# выполните на сервере с нодой
yum list wallarm-node-nginx
# выполните на сервере с модулем постаналитики
yum list wallarm-node-tarantool
Требования¶
-
Доступ к аккаунту с ролью Администратор или Деплой и отключенной двухфакторной аутентификацией в Консоли управления Вебмониторэкс
-
SELinux, отключенный или настроенный по инструкции
-
Выполнение команд от имени суперпользователя (например,
root
) -
Для обработки запросов и постаналитики на разных серверах: модуль постаналитики, установленный на отдельный сервер по инструкции
-
Возможность обращаться к
https://repo.webmonitorx.ru
для загрузки пакетов. Убедитесь, что доступ не ограничен настройками файервола -
Доступ к
https://api.wallarm.ru:444
для работы с Вычислительным кластером Вебмониторэкс. Если доступ к Вебмониторэкс API возможен только через прокси‑сервер, используйте инструкцию для настройки - Установленный текстовый редактор vim, nano или другой. В инструкции используется редактор vim
Варианты установки¶
Обработка запросов в модуле Вебмониторэкс делится на две фазы:
-
Первичная обработка в модуле NGINX-Вебмониторэкс (нодой Вебмониторэкс). Не требует большого объема оперативной памяти, может быть размещена на текущих frontend-серверах без изменения требований.
-
Статистический анализ обработанных запросов в модуле постаналитики. Требует значительного объема памяти, что может потребовать внесения изменений в конфигурацию существующих серверов либо выполнение постаналитики на другом сервере.
В зависимости от архитектуры системы, модуль NGINX-Вебмониторэкс и модуль постаналитики могут быть установлены на один сервер или на разные серверы.
Команды установки для разных вариантов описаны в соответствующих шагах.
Установка¶
1. Добавьте репозитории Debian/CentOS¶
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/2.18/' | 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/2.18/' | sudo tee /etc/apt/sources.list.d/wallarm.list"
sh -c "echo 'deb http://repo.webmonitorx.ru/debian/wallarm-node stretch-backports/2.18/' | sudo tee --append /etc/apt/sources.list.d/wallarm.list"
# для корректной работы снимите комментарий со следующей строки в файле /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/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.webmonitorx.ru/centos/wallarm-node/7/2.18/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/2.18/x86_64/Packages/wallarm-node-repo-1-6.el8.noarch.rpm
2. Установите NGINX с пакетами Вебмониторэкс¶
Обработка запросов и постаналитика на одном сервере¶
Команда выполняет установку следующих пакетов:
-
nginx
для NGINX -
libnginx-mod-http-wallarm
илиnginx-mod-http-wallarm
для модуля NGINX-Вебмониторэкс -
wallarm-node
для модуля постаналитики, хранилища Tarantool и дополнительных пакетов NGINX-Вебмониторэкс
sudo apt install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm
sudo apt install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm -t stretch-backports
sudo apt install --no-install-recommends nginx wallarm-node libnginx-mod-http-wallarm
sudo yum install nginx wallarm-node nginx-mod-http-wallarm
sudo yum install nginx wallarm-node nginx-mod-http-wallarm
Обработка запросов и постаналитика на разных серверах¶
Для обработки запросов и проведения статистического анализа на разных серверах, необходимо установить следующие группы пакетов:
-
wallarm-node-tarantool
на отдельный сервер для модуля постаналитики и хранилища Tarantool по инструкции -
wallarm-node-nginx
иlibnginx-mod-http-wallarm
/nginx-mod-http-wallarm
для модуля NGINX-Вебмониторэкс
Команда выполняет установку пакетов для NGINX и для модуля NGINX-Вебмониторэкс:
sudo apt install --no-install-recommends nginx wallarm-node-nginx libnginx-mod-http-wallarm
sudo apt install --no-install-recommends nginx wallarm-node-nginx libnginx-mod-http-wallarm -t stretch-backports
sudo apt install --no-install-recommends nginx wallarm-node-nginx libnginx-mod-http-wallarm
sudo yum install nginx wallarm-node-nginx nginx-mod-http-wallarm
sudo yum install nginx wallarm-node-nginx nginx-mod-http-wallarm
3. Подключите модуль Вебмониторэкс для обработки запросов¶
Скопируйте конфигурационные файлы для настройки системы:
sudo cp /usr/share/doc/libnginx-mod-http-wallarm/examples/*conf /etc/nginx/conf.d/
sudo cp /usr/share/doc/nginx-mod-http-wallarm/examples/*conf /etc/nginx/conf.d/
4. Подключите ноду к Вычислительному кластеру Вебмониторэкс¶
В процессе работы нода Вебмониторэкс взаимодействует с Вычислительным кластером Вебмониторэкс. Чтобы подключить ноду к Вычислительному кластеру, выполните следующие действия:
-
Убедитесь, что роль вашего пользователя в Консоли управления Вебмониторэкс — Администратор или Деплой и для пользователя отключена двухфакторная аутентификация.
Для этого перейдите к списку пользователей в Консоли управления и проверьте столбцы Роль и Auth:
-
В системе с установленной нодой запустите скрипт
addnode
:sudo /usr/share/wallarm-common/addnode -H api.wallarm.ru
-
Введите email и пароль от вашего аккаунта Вебмониторэкс.
-
Введите имя ноды или нажмите Enter, чтобы использовать имя, сгенерированное автоматически.
Вы сможете изменить заданное имя позже в Консоли управления Вебмониторэкс → Ноды.
-
Перейдите в Консоль управления Вебмониторэкс → секция Ноды и убедитесь, что в списке появилась созданная нода.
5. Обновите конфигурацию модулей Вебмониторэкс¶
Основные конфигурационные файлы 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
с настройками мониторинга ноды. Описание конфигурации доступно по ссылке -
/etc/default/wallarm-tarantool
или/etc/sysconfig/wallarm-tarantool
с настройками хранилища 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 /etc/default/wallarm-tarantool
sudo vim /etc/sysconfig/wallarm-tarantool
-
Укажите размер выделенной памяти в директиве
SLAB_ALLOC_ARENA
в ГБ. Значение может быть целым или дробным (разделитель целой и дробной части — точка).Например:
SLAB_ALLOC_ARENA=0.5
SLAB_ALLOC_ARENA=24
Подробные рекомендации по выделению памяти для Tarantool описаны в инструкции.
-
Чтобы применить изменения, перезапустите Tarantool:
sudo systemctl restart wallarm-tarantool
Адрес отдельного сервера постаналитики¶
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 и список доступных директив Вебмониторэкс.
6. Перезапустите NGINX¶
Предоставление пользователю прав root
Если вы запускаете NGINX под пользователем, который не имеет прав root
, добавьте пользователя в группу wallarm
при помощи следующей команды:
usermod -aG wallarm <user_name>
где <user_name>
— это имя пользователя, который не имеет прав root
.
sudo systemctl restart nginx
sudo systemctl restart nginx
7. Протестируйте работу Вебмониторэкс¶
-
Отправьте тестовый запрос с атаками SQLI и XSS на адрес защищенного ресурса:
curl http://localhost/?id='or+1=1--a-<script>prompt(1)</script>'
-
Перейдите в Консоль управления Вебмониторэкс → секция События и убедитесь, что атаки появились в списке.
Настройка¶
Динамический модуль Вебмониторэкс со стандартными настройками установлен на NGINX из репозитория Debian/CentOS. Чтобы кастомизировать настройки Вебмониторэкс, используйте доступные директивы.
Частые настройки:
-
Использование балансировщика или прокси‑сервера перед нодой Вебмониторэкс
-
Добавление адресов сканера Вебмониторэкс в белый список для режима фильтрации
block
-
Ограничение времени обработки единичного запроса в директиве
wallarm_process_time_limit
-
Ограничение времени ожидания ответа сервера в директиве NGINX
proxy_read_timeout
-
Ограничение максимального размера запроса в директиве NGINX
client_max_body_size