Руководство по установке, настройке и эксплуатации модуля Nemesida WAF API, предназначенного для приема информации об атаках и выявленных уязвимостях.

Доменное имя example.com вместе с поддоменами в руководстве используется в качестве примера.

Установка и настройка модуля Nemesida WAF API
Локальная версия Nemesida WAF API предназначена для передачи информации о заблокированных запросах от модулей Nemesida WAF в локальную базу данных, которая может быть использована для интеграции локальными сервисами визуализации, такими как Личный кабинет Nemesida WAF, размещенный на стороне клиента. Такая схема взаимодействия позволяет не передавать данные об атаках за пределы инфраструктуры клиента. Ниже представлено краткое руководство по введению в эксплуатацию локальной версии Nemesida WAF API на серверах под управлением ОС Linux.

Для установки локальной версии Nemesida WAF API необходимо выполнить следующие действия:

1. Разрешите обращения к https://nemesida-security.com.
2. Выполните установку модуля:

DebianUbuntuCentOS 7
# apt install apt-transport-https
Debian 9
# echo "deb https://repository.pentestit.ru/nw/debian stretch non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
Debian 10
# echo "deb https://repository.pentestit.ru/nw/debian buster non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# wget -O- https://repository.pentestit.ru/nw/gpg.key | apt-key add -
# apt update && apt upgrade
# apt install python3-pip python3-dev python3-venv postgresql-server-dev-all nginx
# apt install nwaf-api

Установка niginx будет производится автоматически с созданием виртуального хоста в каталоге /etc/nginx/conf.d/. По завершении установки переименуйте конфигурационный файл виртуального хоста nwaf-api.conf.disabledв nwaf-api.conf и перезапустите nginx.

В целях безопасности рекомендуется разрешить обращения к Nemesida WAF API только с адресов серверов Nemesida WAF, Nemesida AI и Nemesida WAF Scanner.

Произведите установку и настройку СУБД 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;\""

Создайте БД, пользователя и пароль для подключения модуля Личный кабинет Nemesida WAF:

# 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;\""
# apt install apt-transport-https
16.04
Подключите репозиторий:

# echo "deb [arch=amd64] https://repository.pentestit.ru/nw/ubuntu xenial non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# wget -O- https://repository.pentestit.ru/nw/gpg.key | apt-key add -

Подключите репозиторий Python 3.6:

# apt install software-properties-common
# add-apt-repository ppa:deadsnakes/ppa

Произведите установку пакетов:

# apt update && apt upgrade
# apt install python3.6-dev python3.6-venv nginx postgresql-server-dev-all
# curl https://bootstrap.pypa.io/get-pip.py | python3.6
18.04
Подключите репозиторий и произведите установку пакетов:

# echo "deb [arch=amd64] https://repository.pentestit.ru/nw/ubuntu bionic non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# wget -O- https://repository.pentestit.ru/nw/gpg.key | apt-key add -
# apt update && apt upgrade
# apt install python3-pip python3-dev python3-venv nginx postgresql-server-dev-all
 # apt install nwaf-api

Установка niginx будет производится автоматически с созданием виртуального хоста в каталоге /etc/nginx/conf.d/. По завершении установки переименуйте конфигурационный файл виртуального хоста nwaf-api.conf.disabledв nwaf-api.conf и перезапустите nginx.

В целях безопасности рекомендуется разрешить обращения к Nemesida WAF API только с адресов серверов Nemesida WAF, Nemesida AI и Nemesida WAF Scanner.

Произведите установку и настройку СУБД 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;\""

Создайте БД, пользователя и пароль для подключения модуля Личный кабинет Nemesida WAF:

# 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;\""

Подключите репозитории и установите необходимые зависимости:

# rpm -Uvh https://repository.pentestit.ru/nw/centos/nwaf-release-centos-7-1-6.noarch.rpm
# rpm -Uvh https://yum.postgresql.org/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm
# rpm -Uvh https://nginx.org/packages/rhel/7/noarch/RPMS/nginx-release-rhel-7-0.el7.ngx.noarch.rpm
# yum install python36 python36-pip python36-devel nginx postgresql11-devel gcc
# yum install nwaf-api

Установка nginx будет производиться автоматически с созданием виртуального хоста в каталоге /etc/nginx/conf.d/. По завершении установки переименуйте конфигурационный файл виртуального хоста nwaf-api.conf.disabled в nwaf-api.conf и перезапустите nginx.

В целях безопасности рекомендуется разрешить обращения к Nemesida WAF API только с адресов серверов Nemesida WAF, Nemesida AI и Nemesida WAF Scanner.

Произведите установку и настройку СУБД PostgreSQL:

# yum install postgresql11-server
# /usr/pgsql-11/bin/postgresql-11-setup initdb
# sed -i "s|host    all             all             127.0.0.1/32            ident|host    all             all             127.0.0.1/32            md5|" /var/lib/pgsql/11/data/pg_hba.conf
# sed -i "s|host    all             all             ::1/128                 ident|host    all             all             ::1/128                 md5|" /var/lib/pgsql/11/data/pg_hba.conf
# systemctl start postgresql-11.service
# systemctl enable postgresql-11.service

Создайте БД, пользователя и пароль для подключения модуля 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;\""

Создайте БД, пользователя и пароль для подключения модуля Личный кабинет Nemesida WAF:

# 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;\""
3. Создайте структуру базы данных:

# cat /var/www/nw-api/api.sql | su postgres -c "psql waf"

Внесите необходимые изменения в файл /var/www/nw-api/settings.py для подключения к СУБД PostgreSQL, где:
DB_HOST — адрес СУБД;
DB_PASS — пароль пользователя nw_api, заданный в п.1, для подключения к СУБД;
PROXY — адрес прокси сервера (если используется) для подключения к nemesida-secuirty.com.

4. Перезагрузите сервер и проверьте работу модуля:

# systemctl status nw-api

Интеграция модуля Nemesida WAF API

Для интеграции локальной версии Nemesida WAF API с ПО Nemesida WAF выполните следующие действия:

1. На сервере с установленным модулем Nemesida WAF внесите изменения в конфигурационный файл /etc/nginx/nwaf/conf/global/nwaf.conf, приведя параметр к виду:

nwaf_api_conf host=http://nwaf-api.example.com:8080 ...

2. На сервере с установленным модулем Nemesida AI MLC внесите изменения в конфигурационный файл /opt/mlc/mlc.conf, приведя параметр к виду:

api_uri = http://nwaf-api.example.com:8080/nw-api/

3. После внесения изменений необходимо перезапустить сервисы или перезагрузить сервер.

nwaf-api.example.com:8080 — адрес и порт сервера, на котором установлен модуль Nemesida WAF API.

Описание структуры базы данных модуля Nemesida WAF API

Информация о событиях, поступающих в модуль Nemesida WAF API, размещается в базе данных waf в таблицах attack, ml и scan_report.

attack

Таблица attack предназначена для размещения в СУБД информации о выявленных аномалиях работы модулей Nemesida WAF и Nemesida AI.

Параметр Описание
timestamp Дата фиксации аномалии.
ip Адрес источника запроса.
rule_id Идентификатор правила, по которому производилась фиксация аномалии.
bt Цифровой идентификатор метода определения аномалий (сигнатурный анализ, машинное обучение и т.д.).
mz Зона возникновения аномалии (URL, Args, Body и т.д.).
method Тип HTTP-запроса (GET, POST и т.д.).
uri URI запроса.
ua
referer
cookie
Заголовки HTTP-запроса.
vhost Адрес виртуального хоста.
content Тело запроса или содержимое прочих заголовков (в зависимости от содержимого mz).
bot Зарезервированный параметр.
description Описание аномалии.
lm Параметр, определяющий попадает ли запрос под действие режиме LM.
waf_id Идентификатор модуля Nemesida WAF.
request_id Идентификатор запроса.
ml

Таблица ml предназначена для размещения в СУБД информации о статусе обучения модуля Nemesida AI.

Параметр Описание
waf_id Идентификатор модуля Nemesida WAF.
ml_status Статус работы модуля Nemesida AI (0 — не активен, 1 — активен).
ml_learning_progress Статус обучения модуля Nemesida AI в процентах.
vhost Виртуальный хост.
scan_report

Таблица scan_report предназначена для размещения в СУБД информации о статусе работы модуля Nemesida WAF Scanner.

Параметр Описание
id Идентификатор записи.
scan_date Дата сканирования.
content Уровень критичности обнаруженной уязвимости.
domain Виртуальный хост.
method Тип HTTP-запроса (GET, POST и т.д.).
param Аргументы запроса.
payload Содержание «полезной нагрузки» запроса.
type Тип обнаруженной уязвимости (SQLi, XSS и т.д.).
url URI запроса.
data Тело запроса (для POST-запросов).
waf_id Идентификатор модуля Nemesida WAF.