Руководство по использованию Nemesida WAF в виде Virtual Appliance (виртуальный диск для KVM/VMware/VirtualBox) и виртуальной машины Yandex Cloud.

Все образы созданы на основе дистрибутива Debian 11. Перед использованием продуктов необходимо выполнить обновление компонентов виртуальной машины:

# apt update && apt upgrade -y

Virtual Appliance

Динамический модуль Nemesida WAF

Образ предназначен для фильтрации поступающих на сервер Nginx HTTP/HTTP(s)-запросов и содержит следующие компоненты:

  • Nginx последний версии (Stable);
  • Динамический модуль Nemesida WAF;
  • Агент машинного обучения Nemesida AI MLA.

Для развертывания необходимо выполнить следующие действия:
1. Создайте виртуальную машину, используя образ виртуального диска с динамическим модулем Nemesida WAF;
2. Выполните базовую настройку модулей Nemesida WAF:

  • в файле /etc/nginx/nwaf/conf/global/nwaf.conf:
    • nwaf_license_key — лицензионный ключ Nemesida WAF;
    • nwaf_sys_proxy — адрес прокси-сервера (если используется);
    • nwaf_api_proxy — адрес прокси-сервера (если используется) для обращения к Nemesida WAF API и Nemesida WAF Signtest;
    • nwaf_api_conf — адрес сервера Nemesida WAF API для отправки информации о выявленных аномалиях;
    • rmq_host — параметры соединения с сервисом RabbitMQ на сервере с Nemesida WAF.
  • в файле /etc/nginx/nwaf/mla.conf:
    • st_enable — активировать передачу спорных запросов в Nemesida WAF Signtest для последующей обработки;
    • st_uri — адрес сервера Nemesida WAF Signtest для обработки результатов работы Nemesida AI.

3. После внесения изменений перезапустите сервисы:

# systemctl restart nginx mla_main nwaf_update

4. Создайте пользователя сервиса RabbitMQ для удаленного подключения модуля Nemesida AI MLC:

# rabbitmqctl add_user USER PASSWORD
# rabbitmqctl set_permissions -p / USER ".*" ".*" ".*"

где USER и PASSWORD — имя пользователя и пароль для подключения модуля Nemesida AI MLC.
5. Завершите настройку модуля, используя облачное веб-приложение.

Nemesida AI MLC

Образ предназначен для построения поведенческих моделей и выявления прочих аномалий (DDoS L7, атак методом перебора и т.д.). Содержит модуль машинного обучения Nemesida AI MLС.

Для развертывания необходимо выполнить следующие действия:
1. Создайте виртуальную машину, используя образ виртуального диска с модулем Nemesida AI MLC;
2. Выполните базовую настройку модуля Nemesida AI MLC в файле /opt/mlc/mlc.conf:

  • nwaf_license_key — лицензионный ключ Nemesida WAF;
  • api_uri — адрес Nemesida WAF API для отправки информации о статусе обучения моделей и информации о выявленных аномалиях;
  • rmq_host — параметры соединения с сервисом RabbitMQ на сервере с Nemesida WAF. Допускается использования нескольких значений через пробел;
  • sys_proxy — адрес прокси-сервера (если используется);
  • api_proxy — адрес прокси-сервера (если используется) для обращения к Nemesida WAF API и Nemesida WAF Signtest;
  • st_enable — активировать передачу спорных запросов в Nemesida WAF Signtest для последующей обработки;
  • st_uri — адрес сервера Nemesida WAF Signtest для обработки результатов работы Nemesida AI.

3. После внесения изменений перезапустите сервис:

# systemctl restart mlc_main

4. Завершите настройку модуля, используя облачное веб-приложение.

Nemesida WAF WEB

Образ предназначен для настройки взаимодействия компонентов между собой, визуализации информации об атаках и управления обучением модуля Nemesida AI. Cодержит следующие компоненты:

  • Nginx последний версии (Stable);
  • Nemesida WAF API;
  • Личный кабинет Nemesida WAF;
  • Nemesida WAF Signtest.

Для развертывания необходимо выполнить следующие действия:
1. Создайте виртуальную машину, используя образ виртуального диска с модулями Nemesida WAF API, Личный кабинет и Nemesida WAF Signtest;
2. Для безопасности веб-приложений выполните скрипты:

# /opt/scripts/regen_secret.sh
# /opt/scripts/regen_databases_password.sh

3. Создайте пользователя для авторизации в личном кабинете:

# /opt/scripts/create_superuser_cabinet.sh

4. Создайте пользователя для авторизации в Nemesida WAF Signtest:

# /opt/scripts/create_superuser_signtest.sh

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

Модули личный кабинет и Nemesida WAF Signtest используют 80 порт в качестве порта по умолчанию. Для корректной работы модулей необходимо настроить файлы виртуальных хостов для них.

6. Перезапустите сервисы:

# systemctl restart nw-api cabinet cabinet_ipinfo cabinet_rule_update cabinet_attack_nottification cabinet_vts cabinet_cleaning_db signtest_ipinfo signtest_rlupd signtest_web signtest_api

Виртуальная машина Yandex Cloud

Динамический модуль Nemesida WAF
Образ предназначен для фильтрации поступающих на сервер Nginx HTTP/HTTP(s)-запросов и содержит следующие компоненты:

  • Nginx последний версии (Stable);
  • Динамический модуль Nemesida WAF;
  • Агент машинного обучения Nemesida AI MLA.

Для развертывания необходимо выполнить следующие действия:
1. Создайте виртуальную машину с динамическим модулем Nemesida WAF;
2. Выполните базовую настройку модулей Nemesida WAF:

  • в файле /etc/nginx/nwaf/conf/global/nwaf.conf:
    • nwaf_license_key — лицензионный ключ Nemesida WAF;
    • nwaf_sys_proxy — адрес прокси-сервера (если используется);
    • nwaf_api_proxy — адрес прокси-сервера (если используется) для обращения к Nemesida WAF API и Nemesida WAF Signtest;
    • nwaf_api_conf — адрес сервера Nemesida WAF API для отправки информации о выявленных аномалиях;
    • nwaf_rmq — параметры соединения с локальным сервисом RabbitMQ на сервере с Nemesida WAF.
  • в файле /etc/nginx/nwaf/mla.conf:
    • st_enable — активировать передачу спорных запросов в Nemesida WAF Signtest для последующей обработки;
    • st_uri — адрес сервера Nemesida WAF Signtest для обработки результатов работы Nemesida AI.

Запросы, поступающие в динамический модуль Nemesida WAF, отправляются на хранение в локальный сервис RabbitMQ, откуда их забирает для последующей обработки модуль Nemesida AI MLC. Процесс получения данных модулем Nemesida AI MLC рекомендуется выполнять с использованием защищенного соединения.

Для этого внесите изменения в конфигурационный файл /etc/nginx/nginx.conf или /etc/rabbitmq/rabbitmq.conf на каждой виртуальной машине с установленным динамическим модулем.

Пример конфигурации для nginx.conf:

...
stream {
        server {
                listen 5673 ssl;
                proxy_pass 127.0.0.1:5672;
                ssl_certificate /etc/nginx/SSL/crt/example.ru.crt;
                ssl_certificate_key /etc/nginx/SSL/private/example.ru.key;
       }
}
...

где параметр listen 5673 ssl; — порт, который будет использован при защищенном соединении.

В целях безопасности рекомендуется разрешить доступ к серверам c динамическим модулем только с IP-адресов виртуальных машин, где установлен модуль Nemesida AI MLC, а используемые для защищенного соединения сертификаты должны быть доверенными для них.

3. После внесения изменений перезапустите сервисы:

# systemctl restart nginx mla_main nwaf_update

4. Создайте пользователя сервиса RabbitMQ для удаленного подключения модуля Nemesida AI MLC:

# rabbitmqctl add_user USER PASSWORD
# rabbitmqctl set_permissions -p / USER ".*" ".*" ".*"

где USER и PASSWORD — имя пользователя и пароль для подключения модуля Nemesida AI MLC.
5. Завершите настройку модуля, используя облачное веб-приложение.

Nemesida AI MLC
Образ предназначен для построения поведенческих моделей и выявления прочих аномалий (DDoS L7, атак методом перебора и т.д.). Содержит модуль машинного обучения Nemesida AI MLС.

Для развертывания необходимо выполнить следующие действия:
1. Создайте виртуальную машину с модулем Nemesida AI MLC;
2. Выполните базовую настройку модуля Nemesida AI MLC в файле /opt/mlc/mlc.conf:

  • nwaf_license_key — лицензионный ключ Nemesida WAF;
  • api_uri — адрес Nemesida WAF API для отправки информации о статусе обучения моделей и информации о выявленных аномалиях;
  • rmq_host — параметры соединения с сервисом RabbitMQ на сервере с Nemesida WAF. Допускается использование нескольких значений через пробел;
  • sys_proxy — адрес прокси-сервера (если используется);
  • api_proxy — адрес прокси-сервера (если используется) для обращения к Nemesida WAF API и Nemesida WAF Signtest;
  • st_enable — активировать передачу спорных запросов в Nemesida WAF Signtest для последующей обработки;
  • st_uri — адрес сервера Nemesida WAF Signtest для обработки результатов работы Nemesida AI.

Для параметра rmq_host рекомендуется использовать защищенное соединение:

rmq_host = ssl://guest:guest@example.ru:5673

При использовании произвольного порта он должен быть явно указан, иначе будет использоваться стандартный порт 5672.

Перед использованием защищенного соединения, оно должно быть настроено на каждом сервере с установленным динамическим модулем Nemesida WAF.

Если защищенное соединение не требуется, то его можно не указывать:

rmq_host = guest:guest@example.ru

3. После внесения изменений перезапустите сервис:

# systemctl restart mlc_main

4. Завершите настройку модуля, используя облачное веб-приложение.

Nemesida WAF WEB

Образ предназначен для настройки взаимодействия компонентов между собой, визуализации информации об атаках и управления обучением модуля Nemesida AI. Cодержит следующие компоненты:

  • Nginx последний версии (Stable);
  • Nemesida WAF API;
  • Личный кабинет Nemesida WAF;
  • Nemesida WAF Signtest.

Для развертывания необходимо выполнить следующие действия:
1. Создайте виртуальную машину с модулями Nemesida WAF API, Личный кабинет и Nemesida WAF Signtest;
2. Создайте пользователя для авторизации в личном кабинете:

# cd /var/www/app/ && . venv/bin/activate && python3 manage.py migrate && python3 manage.py createsuperuser && deactivate

3. Создайте пользователя для авторизации в Nemesida WAF Signtest:

# cd /var/www/signtest/app/ && . venv/bin/activate && python3 manage.py migrate && python3 manage.py createsuperuser && deactivate

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

Модули личный кабинет и Nemsida WAF Signtest используют 80 порт в качестве порта по умолчанию. Для корректной работы модулей необходимо настроить файлы виртуальных хостов для них.

5. Перезапустите сервисы:

# systemctl restart nw-api cabinet cabinet_ipinfo cabinet_rule_update cabinet_attack_nottification cabinet_vts cabinet_cleaning_db signtest_ipinfo signtest_rlupd signtest_web signtest_api