Руководство по установке, настройке и эксплуатации модуля Nemesida WAF API, предназначенного для:
- приема информации об атаках и выявленных уязвимостях;
- получения статистики об атаках и централизованного сбора и обработки журналов всех компонентов Немезида ВАФ;
- управления настройками Немезида ВАФ и веб-сервера Nginx.
Доменное имя
api.example.com
используется в качестве примера обозначения сервера с установленным модулем Nemesida WAF API.
Для установки Nemesida WAF API необходимо выполнить следующие действия:
1. Установите и настройте СУБД PostgreSQL:
# apt install postgresql
Создайте БД, пользователя и пароль для подключения модуля Nemesida WAF API:
# su - postgres -c "psql -c \"CREATE DATABASE waf;\"" # su - postgres -c "psql -c \"CREATE ROLE nw_api PASSWORD 'YOUR_PASSWORD';\"" # su - postgres -c "psql -c \"GRANT ALL ON DATABASE waf to nw_api;\"" # su - postgres -c "psql -c \"ALTER ROLE nw_api WITH LOGIN;\""
Создайте БД, пользователя и пароль для подключения модуля Личный кабинет:
# su - postgres -c "psql -c \"CREATE DATABASE cabinet;\"" # su - postgres -c "psql -c \"CREATE ROLE nw_cabinet PASSWORD 'YOUR_PASSWORD';\"" # su - postgres -c "psql -c \"GRANT ALL ON DATABASE cabinet to nw_cabinet;\"" # su - postgres -c "psql -c \"ALTER ROLE nw_cabinet WITH LOGIN;\""
# setenforce 0
после чего приведите файл /etc/selinux/config
к виду:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
Создайте БД, пользователя и пароль для подключения модуля Nemesida WAF API:
# su - postgres -c "psql -c \"CREATE DATABASE waf;\"" # su - postgres -c "psql -c \"CREATE ROLE nw_api PASSWORD 'YOUR_PASSWORD';\"" # su - postgres -c "psql -c \"GRANT ALL ON DATABASE waf to nw_api;\"" # su - postgres -c "psql -c \"ALTER ROLE nw_api WITH LOGIN;\""
Создайте БД, пользователя и пароль для подключения модуля Личный кабинет:
# su - postgres -c "psql -c \"CREATE DATABASE cabinet;\"" # su - postgres -c "psql -c \"CREATE ROLE nw_cabinet PASSWORD 'YOUR_PASSWORD';\"" # su - postgres -c "psql -c \"GRANT ALL ON DATABASE cabinet to nw_cabinet;\"" # su - postgres -c "psql -c \"ALTER ROLE nw_cabinet WITH LOGIN;\""
Если БД используется на отдельном сервере, то необходимо предоставить доступ к ней для модулей Nemesida WAF API, Личный кабинет и Nemesida WAF Scanner. Для этого необходимо внести изменения в файл конфигурации PostgreSQL pg_hba.conf
.
Пример:
# IPv4 local connections: host all all 0.0.0.0/0 md5
2. Установите модуль:
Перед установкой модуля обязательно проверьте доступ к созданной БД, произведя подключение к ней командой:
psql -h <server_ip> -U nw_api waf
. При подключении введите пароль пользователяnw_api
.
# apt install apt-transport-https gnupg2 curl
# apt install nwaf-api
Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
flask func-timeout netaddr psycopg2-binary pymemcache pyopenssl cryptography python-decouple requests validators pandas
# apt install apt-transport-https gnupg2 curl
# apt install nwaf-api
Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
flask func-timeout netaddr psycopg2-binary pymemcache pyopenssl cryptography python-decouple requests validators pandas
# setenforce 0
после чего приведите файл /etc/selinux/config
к виду:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
# dnf install nwaf-api
Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
flask func-timeout netaddr psycopg2-binary pymemcache pyopenssl cryptography python-decouple requests validators pandas
3. Разрешите обращения:
При локальном развертывании БД:
— к внешним ресурсам;
— к серверу Memcached 127.0.0.1:11211
;
— к серверу с СУБД PostgreSQL 127.0.0.1:5432
.
При развертывании БД на отдельном сервере:
— к внешним ресурсам;
— к серверу Memcached 127.0.0.1:11211
;
— к серверу с СУБД PostgreSQL <server_ip>:5432
.
4. Создайте структуру базы данных:
# cat /var/www/nw-api/api.sql | su postgres -c "psql waf"
5. Внесите необходимые изменения в файл /var/www/nw-api/settings.py
для подключения к СУБД PostgreSQL.
6. Активируйте виртуальный хост:
# mv /etc/nginx/conf.d/nwaf-api.conf.disabled /etc/nginx/conf.d/nwaf-api.conf # nginx -t && service nginx reload
7. Перезапустите сервис и проверьте работу модуля:
# systemctl restart nw-api rldscupd
Сервис rldscupd
предназначен для получения дополнительных данных о событиях (описание аномалий, GeoIP-данные и т.д.).
Информация об ошибках в работе Nemesida WAF API содержится в журналах регистрации событий модуля /var/log/uwsgi/nw-api/*.log
.
В целях безопасности рекомендуется разрешить обращения к Nemesida WAF API только с доверенных IP-адресов.
1. На сервере с установленным динамическим модулем внесите изменения в конфигурационный файл /etc/nginx/nwaf/conf/global/nwaf.conf
, приведя параметры к виду:
nwaf_api_proxy http://proxy.example.com:3128; nwaf_sys_proxy http://proxy.example.com:3128; nwaf_api_conf host=http://api.example.com:8080/nw-api/;
где api.example.com:8080/nw-api/
— адрес и порт сервера, на котором установлен модуль Nemesida WAF API, а http://proxy.example.com:3128
— адрес прокси-сервера для обращения к Nemesida WAF API.
2. На сервере с установленным модулем Nemesida AI MLC внесите изменения в конфигурационный файл /opt/mlc/mlc.conf
, приведя параметры к виду:
api_uri = http://api.example.com:8080/nw-api/ api_proxy = http://proxy.example.com:3128
3. На сервере с установленным модулем Nemesida WAF Scanner внесите изменения в конфигурационный файл /opt/nws/main.conf
, приведя параметры к виду:
api_host = http://api.example.com:8080/nw-api/ api_proxy = http://proxy.example.com:3128
4. После внесения изменений необходимо перезапустить сервисы или перезагрузить сервер.
🔗 Общие сведения
Используя вызовы API, можно управлять настройками Немезида ВАФ:
- настройками динамического модуля;
- настройками Nemesida AI MLC;
- поведенческими моделями;
- синхронизацией между серверами настроек динамического модуля и Nemesida AI MLC;
- правилами исключения сигнатур и расширенными правилами блокировки.
Управление настройками осуществляется с помощью специально составленных запросов. Каждый запрос должен содержать лицензионный ключ установленной копии Немезида ВАФ.
🔗 Настройка динамического модуля
Позволяет управлять настройками динамического модуля. Поддерживает следующие команды управления:
Для управления доступны следующие параметры:
🔗 Управление списком заблокированных IP-адресов
Функционал позволяет создавать списки для блокировки запросов на основе IP-адреса источника запроса.
🔗 Управление списком автоматически заблокированных IP-адресов
Функционал позволяет управлять списком автоматически заблокированных IP-адресов для всех фильтрующих нод.
🔗 Настройка Nemesida AI MLC
Позволяет управлять настройками модуля Nemesida AI MLC. Поддерживает следующие команды управления:
Для управления доступны следующие параметры:
🔗 Правила исключения сигнатур
Позволяет настроить правила исключения сигнатур. Поддерживает следующие команды управления:
🔗 Расширенные правила блокировки запросов
Механизм расширенных правил блокирования запросов позволяет при составлении персональных правил использовать дополнительные условия для более точного результата. Например, можно составить правило, по которому запрос будет заблокирован если:
- соответствует географическому местоположению на основе IP-адреса (определение страны по IP-адресу атакующего);
- происходит обращение на определенный домен или URL;
- содержит определенный заголовок (например,
User-Agent
,Cookie
,Referer
и т.д.) и/или содержимое этих заголовков.
Для более точного результата параметры можно комбинировать между собой. В таком случае правило сработает только в случае соответствия всех условий.
Поддерживает следующие команды управления:
🔗 Управление поведенческими моделями
Некорректное обучение поведенческих моделей или значительные изменения в веб-приложении могут привести ко множеству ложных срабатываний. Для повышения точности определения атак рекомендуется выполнять переобучение моделей раз в неделю. Команды ниже позволяют производить действия над моделями.
🔗 Глобальные настройки Nginx
Секция позволяет задать глобальные настройки Nginx, которые будут располагаться в /etc/nginx/nwaf/conf/global/nginx/nginx.conf
. Поддерживает следующие команды управления:
Для управления доступны следующие параметры:
🔗 Настройка виртуального хоста
Параметр
name
— имя конфигурации, которое будет располагаться в/etc/nginx/nwaf/conf/global/nginx/%name%.conf
.
Секция предназначена для настройки файла виртуального хоста. Поддерживает следующие команды управления:
Для управления доступны следующие параметры:
🔗 Настройка балансировки нагрузки
Параметр
name
— имя конфигурации с параметрами балансировки нагрузки, который будет располагаться в/etc/nginx/nwaf/conf/global/nginx/%name%.conf
.
Секция предназначена для настройки параметров балансировки нагрузки. Поддерживает следующие команды управления:
Для управления доступны следующие параметры:
🔗 Настройка SSL-сертификатов
Параметр
name
— имя конфигурации для SSL-сертификатов и их приватных ключей, которые будут располагаться в/etc/nginx/nwaf/conf/global/nginx/ssl/certs/%name%.crt
и/etc/nginx/nwaf/conf/global/nginx/ssl/private/%name%.key
.
Секция предназначена для настройки параметров SSL-сертификатов и их приватных ключей. Поддерживает следующие команды управления:
Для управления доступны следующие параметры:
🔗 Настройка DHParam
Параметр
name
— имя конфигурации с параметрами DHParam, который будет располагаться в/etc/nginx/nwaf/conf/global/nginx/ssl/dhparam/%name%.pem
.
Секция предназначена для настройки параметра DHParam. Поддерживает следующие команды управления:
Для управления доступны следующие параметры:
Доступно только для тарифа Enterprise.
Функционал предназначен для централизованного приема, хранения и обработки журналов всех компонентов Немезида ВАФ.
Функционал позволяет получить информацию о заблокированных запросах, включая статистику за период.