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

Установка и настройка модуля Личный кабинет
Перед установкой модуля Личный кабинет необходимо произвести установку и настройку модуля Nemesida WAF API и СУБД PostgreSQL.

Ниже представлено краткое руководство по введению в эксплуатацию локальной версии Личный кабинет на серверах под управлением ОС Linux. Для установки модуля необходимо выполнить следующие действия:

1. Установите Nginx:

DebianUbuntuCentOS
Подключите репозиторий Nginx:

Debian 10
# echo "deb http://nginx.org/packages/debian/ buster nginx" > /etc/apt/sources.list.d/nginx.list
# wget -O- https://nginx.org/packages/keys/nginx_signing.key | apt-key add -
Debian 11
# echo "deb http://nginx.org/packages/debian/ bullseye nginx" > /etc/apt/sources.list.d/nginx.list
# wget -O- https://nginx.org/packages/keys/nginx_signing.key | apt-key add -

Установите Nginx:

# apt update && apt upgrade
# apt install nginx
Подключите репозиторий Nginx:

Ubuntu 20.04
# echo "deb http://nginx.org/packages/ubuntu/ focal nginx" > /etc/apt/sources.list.d/nginx.list
# wget -O- https://nginx.org/packages/keys/nginx_signing.key | apt-key add -
Ubuntu 22.04
# echo "deb http://nginx.org/packages/ubuntu/ jammy nginx" > /etc/apt/sources.list.d/nginx.list
# curl -s https://nginx.org/packages/keys/nginx_signing.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg 

Установите Nginx:

# apt update && apt upgrade
# apt install nginx
Настройте политику SELinux или деактивируйте ее командой:

# 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
CentOS 8 Stream
Установите пакет:

# dnf install dnf-utils

Добавьте репозиторий Nginx, приведя файл /etc/yum.repos.d/nginx.repo к виду:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Установите пакеты:

# dnf update
# dnf install nginx
CentOS 9 Stream
Установите пакет:

# dnf install dnf-utils

Добавьте репозиторий Nginx, приведя файл /etc/yum.repos.d/nginx.repo к виду:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Установите пакеты:

# dnf update
# dnf install nginx

2. Установите модуль:

DebianUbuntuCentOSDockerVirtual Appliance
# apt install apt-transport-https gnupg2
Debian 10
Подключите репозиторий Nemesida WAF:

# echo "deb https://nemesida-security.com/repo/nw/debian buster non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# wget -O- https://nemesida-security.com/repo/nw/gpg.key | apt-key add -
Debian 11
Подключите репозиторий Nemesida WAF:

# echo "deb https://nemesida-security.com/repo/nw/debian buster non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# wget -O- https://nemesida-security.com/repo/nw/gpg.key | apt-key add -

Установите пакеты:

# apt update && apt upgrade
# apt install python3 python3-venv python3-dev python3-reportbug python3-pip memcached libmemcached-dev postgresql-server-dev-all gettext libpcre3-dev
# apt install nwaf-cabinet

Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
wheel uwsgi psycopg2-binary certifi chardet django-debug-toolbar django guppy3 jsonref netaddr pillow pymemcache pympler python-memcached python-pcre pytz pyyaml reportlab requests schedule six sqlparse

# apt install apt-transport-https gnupg2
Ubuntu 20.04
Подключите репозиторий:

# echo "deb [arch=amd64] https://nemesida-security.com/repo/nw/ubuntu focal non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# wget -O- https://nemesida-security.com/repo/nw/gpg.key | apt-key add -

Установите пакеты:

# apt update && apt upgrade
# apt install python3.8 python3.8-venv build-essential python3.8-dev python3-reportbug python3-pip memcached libmemcached-dev libpq-dev gettext libpcre3-dev
Ubuntu 22.04
Подключите репозиторий:

# echo "deb [arch=amd64] https://nemesida-security.com/repo/nw/ubuntu jammy non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# curl -s https://nemesida-security.com/repo/nw/gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import

Установите пакеты:

# apt update && apt upgrade
# apt install python3.10 python3.10-venv build-essential python3.10-dev python3-reportbug python3-pip memcached libmemcached-dev libpq-dev gettext libpcre3-dev
# apt install nwaf-cabinet

Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
wheel uwsgi psycopg2-binary certifi chardet django-debug-toolbar django guppy3 jsonref netaddr pillow pymemcache pympler python-memcached python-pcre pytz pyyaml reportlab requests schedule six sqlparse

1. Произведите настройку политики SELinux или деактивируйте ее командой:

# 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
CentOS 8 Stream
Подключите дополнительные репозитории и установите модуль:

# rpm -Uvh https://nemesida-security.com/repo/nw/centos/nwaf-release-centos-8-1-6.noarch.rpm
# dnf update
# dnf install python39 python39-pip python39-devel gcc memcached postgresql-devel gettext pcre-devel
# dnf install nwaf-cabinet

Для корректной работы модуля Личный кабинет необходимо проверить секцию server в файле nginx.conf и если она не используется — удалить для избежания перенаправлений на страницу, указанную в ней.

CentOS 9 Stream
Подключите дополнительные репозитории и установите модуль:

# rpm -Uvh https://nemesida-security.com/repo/nw/centos/nwaf-release-centos-9-1-6.noarch.rpm
# dnf update
# dnf install python3 python3-pip python3-devel gcc memcached postgresql-devel gettext pcre-devel
# dnf install nwaf-cabinet

Для корректной работы модуля Личный кабинет необходимо проверить секцию server в файле nginx.conf и если она не используется — удалить для избежания перенаправлений на страницу, указанную в ней.

Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
wheel uwsgi psycopg2-binary certifi chardet django-debug-toolbar django guppy3 jsonref netaddr pillow pymemcache pympler python-memcached python-pcre pytz pyyaml reportlab requests schedule six sqlparse

Информация об использовании Nemesida WAF в Docker-контейнере доступна в соответствующем разделе.
Информация об использовании Nemesida WAF в виде Virtual Appliance (виртуальный диск для KVM/VMware/VirtualBox) и Yandex VM доступна в соответствующем разделе.

3. Внесите необходимые изменения в файл /var/www/app/cabinet/settings.py.

Параметры settings.py
Параметр
Описание
ALLOWED_HOSTS
Параметры для обеспечения безопасности «Django». Укажите FQDN-значение («example.com») или IP-адрес сервера, по которому доступен модуль.

HTTP_PROXY_CONF
Адрес прокси-сервера (опционально).

Пример:
HTTP_PROXY_CONF = 'http://proxy.example.com:3128'


DB_NAME_CABINET
DB_USER_CABINET
DB_PASS_CABINET
DB_HOST_CABINET
DB_PORT_CABINET
Параметры для подключения к БД модуля Личный кабинет.

DB_NAME_CONF
DB_USER_CONF
DB_PASS_CONF
DB_HOST_CONF
DB_PORT_CONF
Параметры для подключения к БД модуля Nemesida WAF API.

MEMCACHED_HOST
MEMCACHED_PORT
Параметры для подключения к серверу Memcached.

API_URI
Адрес Nemesida WAF API. Если параметр не задан или отсутствует, то функционал «Настройки WAF» (WS) и «OpenAPI» (OA) будет недоступен.

Пример:
API_URI = 'http://api.example.com:8080'

4. Разрешите обращения:
При локальном развертывании БД:
— к серверу Memcached 127.0.0.1:11211;
— к серверу с СУБД PostgreSQL 127.0.0.1:5432;
— к серверу с Nemesida WAF API 127.0.0.1:8080.
При развертывании БД на отдельном сервере:
— к серверу Memcached 127.0.0.1:11211;
— к серверу с СУБД PostgreSQL <server_ip>:5432;
— к серверу с Nemesida WAF API 127.0.0.1:8080.

5. В настройках межсетевого экрана разрешите обращения к 80 порту (задан по умолчанию в файле /etc/nginx/conf.d/cabinet.conf).

6. Выполните миграцию и создайте администратора:

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

7. Активируйте виртуальный хост:

# mv /etc/nginx/conf.d/cabinet.conf.disabled /etc/nginx/conf.d/cabinet.conf
# nginx -t && service nginx reload

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

# systemctl status cabinet cabinet_ipinfo cabinet_attack_notification cabinet_cleaning_db

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

Эксплуатация Личного кабинета
В Личном кабинете Nemesida WAF, доступном по адресу YOUR_SERVER/waf/personal/, содержится информация о работе основных (Nemesida WAF, Nemesida WAF Scanner, Nemesida WAF AI) и вспомогательных модулей Nemesida WAF.

Таблица и графики атак

На странице Summaryпредставлена вся сводная информация об аномальных запросах к защищаемому веб-приложению: атаки, связанные с попыткой поиска или эксплуатации уязвимостей, атаки перебора паролей, а также попытки передать вредоносный код (в зависимости от режима работы модулей Nemesida WAF).

Таблица Все атаки отображает количественные показатели аномальных запросов за определенный период времени и по их категориям.

График Интенсивность атак отображает интенсивность и динамику в разрезе заданного периода и выбранных категорий атак.

Диаграммы Последние 24 ч. и Топ по IP отображают Топ-10 доменов, которые подверглись атакам и Топ-10 IP-адресов, с которых приходили аномальные запросы.

Информация о количественных показателях, интенсивности и динамики аномальных запросов поступающих в определенный период

Топ-15 IP-адресов, с которых приходили аномальные запросы

Статистика за 24 ч.

На странице Attacks в качестве индикатора применения поведенческих моделей используются следующие пиктограммы:

  • пиктограмма отображается в случае, когда модуль машинного обучения не является причиной блокирования запроса (BT 2, 6, 7);
  • пиктограмма отображается в случае, когда поведенческие модели находятся в процессе переобучения;
  • пиктограмма отображается в случае, когда причиной блокирования запроса является модуль машинного обучения (BT 3, 8).

Более подробная информация о причинах блокирования запросов модулем Nemesida WAF доступна в соответствующем разделе.

При клике на иконку отображается список событий.



Информация об атаках в виде группированного списка


Область поиска и выбор событий за определенный период доступны в верхней части страницы. На страницах Summary и Attack производить поиск можно как в обычном режиме (полнотекстовый поиск без указания специальных параметров), так и в расширенном, используя следующие директивы:

Фильтры расширенного поиска
  • h — виртуальный хост, доменное имя;
  • t — тип атаки (SQLi, XSS, LFI, MLA, ClamAV, BF, DDoS, MLC и т. д.);
  • ip — IP-адрес атакующего;
  • bt — идентификатор блокировки;
  • waf_id — идентификатор WAF ID;
  • group_id — идентификатор группы запросов, определенных Nemesida AI MLC как brute-force или DDoS-атака;
  • rule — идентификатор сигнатуры;
  • mz — зона выявления аномалии (URL, ARGS, BODY, HEADERS, Cookie и т. д.);
  • urlURL-адрес;
  • vuln — фильтр применяется без параметров и предназначен для отображения запросов, в которых была выявлена уязвимость при использовании функционала recheck. Поддерживается использование логического оператора «!» для исключения вывода информации о потенциальных атаках. Например, !vuln;
  • possible — фильтр применяется без параметров и предназначен для отображения потенциальных атак BT 7 (атаки методом перебора), BT 9 (флуд) и BT 10 (DDoS), которые не были достоверно определены как атаки. Поддерживается использование логического оператора «!» для исключения вывода информации о потенциальных атаках. Например, !possible.

Для ограничения вывода информации в поле поиска доступны логические операторы «!» (исключение) и «and» (объединение).

Примеры возможных запросов

Запрос выведет информацию по атакам, в которых при использовании функционала recheck была выявлена уязвимость

vuln

Запрос выведет информацию по атакам, имеющим тип brute-force

t:bf

Запрос выведет информацию по атакам, имеющим тип DDoS-атака

t:ddos

Запрос выведет информацию по атакам с идентификатором блокировки BT 1

bt:1

Запрос выведет информацию по запросам с идентификатором dd8636c32d177c0c74416c19429a8c4d

waf_id:dd8636c32d177c0c74416c19429a8c4d

Запрос выведет информацию по атакам с указанным значением Request ID

group_id:dd8636c32d177c0c74416c19429a8c4d

Запрос выведет информацию по атакам с номером правила 1022

rule:1022

Запрос выведет информацию по аномалиям, выявленным в зоне Cookie

mz:сookie

Запрос выведет информацию по атакам, URL которых содержит index.php

url:index.php

Запрос выведет информацию о потенциальных атаках на домен example.com

h:example.com and possible

Запрос выведет информацию по атакам на домен example.com с любого IP-адреса, кроме 1.2.3.4

h:example.com and !ip:1.2.3.4

Запрос выведет информацию по атакам на домены 1.example.com и 2.example.com, кроме атак, определенных сигнатурным анализом как SQL-инъекции

h:1.example.com and h:2.example.com and !t:SQLi

Запрос выведет информацию по атакам, определенным сигнатурным анализом как SQL-инъекции, на домен example.com с IP-адресов 1.2.3.4 и 4.3.2.1

h:example.com and t:SQLi and ip:1.2.3.4 and ip:4.3.2.1

Для запросов, заблокированных сигнатурным методом, доступно поле Rule ID, при клике на которое во всплывающем окне отобразятся:

  • информация о составе сигнатуры;
  • правило исключения (WL) для добавления в конфигурационный файл Nemesida WAF.

Информация о сигнатуре

Информация об атаках методом перебора

При клике на кнопку null появится интерфейс создания правила исключения (WL) на основе сигнатуры, по которой был заблокирован запрос, используя веб-интерфейс Личного кабинета Nemesida WAF. Правило исключения будет отображаться в разделе управления правилами при переходе на страницу «Настройки WAF» (страница ).

Более подробная информация о сигнатурах и правилах исключения доступна в соответствующем разделе руководства.

Функционал Recheck

Помимо основного функционала, Nemesida WAF Scanner позволяет выполнять повторную отправку содержимого заблокированного запроса и/или различные вариации на защищаемое веб-приложение. Пользователи, входящие в группу «Администраторы», могут выполнить такую проверку с помощью кнопки null, которая становится доступной при выключенной группировке для выявленных атак типа XSS, SQLI, LFI, RFI, имеющих BT 1 или 2. После того как пользователь нажмет на кнопку null, на ее месте отобразится статус проверки. В случае обнаружения уязвимости информация будет доступна в разделе «Scanner» в Личном кабинете. Администратор может исключить запрос, нажав на null, после чего информация о данном запросе будет доступна в панели администратора во вкладке «Scanner». Для использования функционала Recheck необходимо настроить секцию [recheck] в файле /opt/nws/main.conf.

Использование Recheck может привести к выполнению произвольного кода из запроса на стороне веб-приложения. Применяйте функционал только если полностью уверены в своих действиях.

Возможные значения:

  • Подтверждение — проверка выполняется;
  • null — обнаружена уязвимость;
  • null — уязвимость не обнаружена;
  • null — произошла ошибка при обработке запроса сканером уязвимостей.

Информация о дополнительных проверках на уязвимости

Функционал Unlock Request

Пользователь личного кабинета, который считает блокировку запроса ошибочной, может направить заявку на ее разблокировку администратору нажатием кнопки null. Для всех остальных пользователей возможность отправить запрос на разблокировку блокируется, а при наведении на кнопку отобразится информация:

  • кем был отправлен запрос на разблокировку;
  • комментарий пользователя;
  • решение администратора.

На почту администратору будет направлено письмо с описанием заявки. Список всех заявок находится во вкладке null. Запрос можно разблокировать или оставить заблокированным. Для разблокировки запроса администратору необходимо или вручную создать соответствующее правило для Nemesida WAF, или автоматически, нажав кнопку , после чего пользователь получит уведомление на электронную почту.

Форма отправки заявки на разблокировку

Составление правила исключения в панели администратора

Результаты работы сканера уязвимостей

Информация о работе модуля Nemesida WAF Scanner доступна во вкладке . Администратор может исключить запрос, нажав на null, после чего информация о запросе будет доступна в панели администратора во вкладке «Scanner». В дальнейшем аналогичные запросы не будут отображаться на этой вкладке.

Статистика работы сканера уязвимостей

Производить поиск по событиям можно как в обычном режиме (без указания специальных параметров), так и в расширенном, используя следующие директивы:

Фильтры расширенного поиска
  • h — виртуальный хост, доменное имя;
  • t — тип уязвимости (SQLi, XSS, LFI и т. д.);
  • u — тестируемый URL;
  • p — уязвимый параметр.
Для ограничения вывода информации в поле поиска доступны логические операторы «!» (исключение) и «and» (объединение).

Примеры возможных запросов
Запрос выведет информацию об уязвимостях, обнаруженных для домена example.com
h:example.com
Запрос выведет информацию об уязвимостях, имеющих любой тип, кроме SQLi
!t:SQLi
Запрос выведет информацию об уязвимостях, обнаруженных для тестируемого URL /search.php
u:/search.php
Запрос выведет информацию об уязвимостях, обнаруженных в параметре id
p:id
Запрос выведет информацию об уязвимостях, имеющих тип SQL-инъекции для любого домена, кроме example.com
!h:example.com and t:SQLi

Формирование детального отчета в формате PDF и CSV

При переходе на вкладку и будет сформирован детальный отчет о работе Nemesida WAF и его компонентов. Отчет возможно сформировать в формате PDF и CSV.

Управление настройками Nemesida WAF

На странице доступен веб-интерфейс локального управления настройками Nemesida WAF. Для использования функционала необходимо выполнение нескольких условий:

  • добавлен лицензионный ключ с тарифом Enterprise в настройках пользователя;
  • функционал активирован администратором;
  • указан адрес подключения к Nemesida WAF API в параметре API_URI (файл /var/www/app/cabinet/settings.py).

Локальное управление настройками означает, что все настройки, задаваемые при использовании Личного кабинета Nemesida WAF, хранятся локально, не передаются за пределы сетевого периметра и не зависят от доступности сервера nemesida-security.com. Доступно только для тарифа Enterprise.

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

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

Для завершения настройки этого модуля достаточно задать условие временной автоматической блокировки IP-адреса (бана). Использование параметра позволит функционалу выявления DDoS-атак, атак методом перебора и флуда блокировать источник атаки.

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

Например, мы добавили условие блокировки запросов отдельно для домена example.com и условия блокировки для всех остальных доменов:

Для редактирования текущих настроек необходимо кликнуть на .

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

Nemesida AI MLC

При клике на открывается раздел управления настройками модуля машинного обучения Nemesida AI MLC.

Для активации дополнительных возможностей (выявление DDoS-атак, атак методом перебора и флуд) необходимо активировать соответствующие разделы.

Управление поведенческими моделями

Чтобы начать процесс построения поведенческих моделей необходимо добавить виртуальный хост, соответствующий домену защищаемого веб-приложения, например, example.com.

Поведенческие модели, обучение которых было завершено, отображаются в разделе «Поведенческие модели Nemesida AI». Рядом с названием каждой поведенческой модели присутствует индикатор состояния, где:

  • — выполняется переобучение поведенческой модели;
  • — обучение завершено, поведенческая модель применена к виртуальному хосту.

Для переобучения модели необходимо нажать кнопку и выбрать режим переобучения. Если переобучение модели должно выполняться в течение стандартного периода (4 дня), то для запуска процесса переобучения достаточно нажать кнопку .

Увеличение срока обучения поведенческих моделей Nemesida AI

Для корректного построения моделей требуется порядка 400.000-800.000 уникальных запросов. По умолчанию срок обучения составляет 4 дня. Для изменения периода обучения нажимаем и появится дополнительное поле, где необходимо указать период обучения в днях.

Дообучение моделей с использованием резервной копии обучающей выборки

Если во время обучения количество запросов было недостаточным, то можно его перезапустить и воспользоваться запросами из прошлой выборки. Для этого выполните следующие действия:

1. Остановите сервис Nemesida AI MLC:

# service mlc_main stop

2. Переместите файл /opt/mlc/ml/backup/[vhost].d_[timestamp], где [timestamp] — дата создания резервной копии обучающей выборки, созданной Nemesida AI MLC перед началом построения модели, в /opt/mlc/ml/[vhost].d. Например, для модели example.com:

# mv /opt/mlc/ml/backup/example.com.d_1613587613 /opt/mlc/ml/example.com.d

3. Запустите обучение.

4. Запустите сервис Nemesida AI MLC:

# service mlc_main start

Копирование поведенческой модели

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

Удаление поведенческой модели

В случае некорректного обучения поведенческих моделей или значительных изменений в веб-приложении, приводящих ко множеству ложных срабатываний, рекомендуется удалить модели. Для удаления модели необходимо выбрать нужную модель и нажать кнопку .

Управление правилами

Облачное веб-приложение позволяет создавать правила исключения сигнатур и расширенные правила блокировки запросов. Для перехода в раздел управления правилами необходимо перейти в раздел .

Правила исключения

Правило исключения предназначается для исключения обработки запроса с помощью правила. Подробная инструкция по созданию правил исключения доступна в соответствующем разделе.

Для создания правила необходимо кликнуть на кнопку

Редактирование правила происходит при клике на .

Расширенные правила блокировки запросов

Функционал расширенных правил блокировки запросов схож с функционалом создания персональных сигнатур. Он позволяет создавать правило блокирования запроса сочетанием различных параметров, но без поддержки регулярных выражений.

Механизм расширенных правил блокировки запросов позволяет при составлении персональных правил использовать дополнительные условия. Например, можно составить правило, по которому запрос будет заблокирован если:

  • соответствует географическому местоположению на основе IP-адреса (определение страны по IP-адресу атакующего);
  • происходит обращение на определенный домен или URL;
  • содержит определенный заголовок (например, User-Agent, Cookie, Referer и т.д.) и/или содержимое этих заголовков.

Для более точного результата параметры можно комбинировать между собой. В таком случае правило сработает только в случае соответствия всех условий.

В отличие от функционала создания персональных сигнатур, механизм расширенных блокировок запросов позволяет создавать правило сочетанием различных параметров, но без поддержки регулярных выражений.

Поддерживаемые параметры
Опции:

  • Активно — активировать/деактивировать правило. Правило можно активировать временно, для этого необходимо указать период (в часах), в течение которого правило будет активно с момента создания. По истечении времени правило будет деативировано до повторной активации с указанным периодом. Для активации постоянного правила необходимо очистить поле время действия;
  • Отправить в Nemesida WAF API — отправлять результат срабатывания правила в модуль Nemesida WAF API;
  • Не влиять на бан — если параметр не активен, то при срабатывании правила запрос будет заблокирован, но счетчик rate параметра nwaf_limit, необходимый для блокировки IP-адреса источника запросов, не будет увеличиваться;
  • Режим мониторинга — обработка правила в режиме LM (фиксируется срабатывание правила, но запрос не блокируется);

Условия:

  • Виртуальный хост — домен. Допускается использовать строгое соответствие и wildcard-значения: *, example.com, .example.com, *.example.com.;
  • URL — вхождение строки в содержимое зоны URL;
  • Страна — страна (для работы функционала определения географического местоположения на основе IP-адреса необходимо подключить файл с базой <GeoIP2 в /etc/nginx/nwaf/conf/global/nwaf.conf);
  • IP — IP-адрес атакующего;
  • ARGS — вхождение строки в содержимое зоны ARGS;
  • BODY — вхождение строки в содержимое зоны BODY;
  • User-Agent — вхождение строки в содержимое зоны User-Agent;
  • Cookie — вхождение строки в содержимое зоны Cookie;
  • Cookie отсутствуют — применение правила только к запросу с пустой зоной Cookie;
  • Referer — вхождение строки в содержимое зоны Referer;
  • Other headers — вхождение строки в содержимое зоны HEADERS, за исключением зон Cookie, User-Agent и Referer.

Создание правила

Для создания правила необходимо перейти во вкладку «Правила блокировки запроса (ERL)» и нажать . После выбора нужных опций необходимо добавить одно или несколько условий нажатием на .

Для всех параметров условий (кроме Cookie отсутствуют) допускается использовать несколько значений в одном блоке параметров, используя логические операторы условий «и», «или», «не» (доступно только для первого значения в блоке), «и не», «или не». Операторы не имеют приоритета.

Значения для параметров можно вводить списком, для этого необходимо использовать функцию «многострочный ввод». Введенные в поле значения будут объединяться между собой используемым для этого поля логическим оператором.

Для добавления нового условия выбираем его из списка и повторяем процесс.

Other headers

Параметры для блока «Other headers» используются в формате ключ/значение и взаимодействуют между собой по следующему принципу:

  • при наличии заголовка будет проверяться содержимое только этого заголовка;
  • при наличии заголовка без содержимого будет проверяться любое содержимое этого заголовка;
  • при наличии только содержимого заголовка будет проверяться указанное содержимое в любом заголовке.

Редактирование правила происходит при клике на .

Создание списка заблокированных IP-адресов

Позволяет создать список IP-адресов, обращения с которых будут заблокированы для определенных (или всех) доменов. Для создания списка достаточно указать IP-адрес(а) и домен, для которого необходимо блокировать обращения с этих адресов. При добавлении данных на странице отобразится таблица, в которой будут указаны следующие значения:

  • Домен — домен, для которого обращения с указанного IP-адреса будет заблокированы;
  • Количество — количество IP адресов, добавленных в список.


Сводная таблица доменов и количества добавленных IP-адресов

IP-адреса, добавленные без указания домена будут применяться ко всем доменам. Допускается использование IPv4/IPv6 адресов, в том числе использование CIDR (например, x.x.x.x/24) и диапазона IP-адресов.

Редактирование списка заблокированных IP-адресов

При нажатии на количество IP-адресов отобразится список всех добавленных для домена IP-адресов. При клике на IP-адрес он автоматически удалится из списка.


Список добавленных IP-адресов для домена example.com

IP-адреса отображаются в двух форматах:

  • — IP-адрес, добавленный для этого домена;
  • — IP-адрес, добавленный для всех доменов, включая текущий.

Поле для поиска предназначено для поиска интересующего IP-адреса. Если указать несколько IP-адресов через запятую можно удалить их, используя кнопку удаления.

OpenAPI
При переходе на вкладку пользователь получает возможность задавать схемы для запросов, поступающих на определенный URL-адрес. При несоответствии указанной спецификации запрос будет заблокирован со статусом BT 14. Для использования функционала необходимо выполнение нескольких условий:

  • добавлен лицензионный ключ с тарифом Business или Enterprise в настройках пользователя;
  • функционал активирован администратором;
  • указан адрес подключения к Nemesida WAF API в параметре API_URI (файл /var/www/app/cabinet/settings.py).

Для тарифа Business и Enterprise управление функционалом осуществляется локально (созданные схемы хранятся в локальной БД).

Добавление схемы

Чтобы добавить новую схему, необходимо нажать . В диалоговом окне требуется задать название схемы и загрузить файл схемы в форматах JSON или YML.


Добавление новой схемы

При клике на можно отредактировать схему — изменить ее название или структуру, загрузив новый JSON/YML файл.

При клике на происходит загрузка файла схемы на локальный компьютер.

Кнопка позволяет удалить схему. Для удаления из схемы отдельных элементов необходимо выбрать соответствующие элементы и нажать

После добавления схемы можно просматривать ее для каждого URL кликнув по нему.


Просмотр содержимого схемы

В случае необходимости отсортировать схемы по методу, необходимо выбрать соответствующий метод из предложенного списка

Настройка схемы

Вкладка позволяет выполнять добавление схемы для URL-адресов, которые генерируются модулем Nemesida AI MLC во время анализа запросов. Для запуска процесса анализа необходимо добавить виртуальные хосты в разделе настройки Nemesida AI MLC. Для объединения с уже существующими схемами можно выбрать несколько элементов (или все) и кликнуть на . После этого URL-адреса (пути) будут добавлены в существующую схему или создана новая, при ее отсутствии для виртуального хоста.


Добавление /abcd/ значений в схему example.com

При нажатии кнопки появится возможность удалить/исключить URL-адрес. В случае исключения URL-адрес не будет использоваться в дальнейшем при создании схемы.

Исключение URL

При клике на откроется список исключенных URL-адресов.

Настройка моделей
При переходе на вкладку пользователь получает возможность настраивать работу поведенческих моделей. Для использования функционала необходимо выполнение нескольких условий:

  • добавлен лицензионный ключ с тарифом Business или Enterprise в настройках пользователя;
  • функционал активирован администратором.

На главной странице отображаются события, полученные через Nemesida WAF API от модуля машинного обучения, следующего типа:

  • BT 11 — запрос определен сигнатурным методом как атака, но по решению модуля Nemesida AI был разблокирован;
  • BT 12 — запрос заблокирован модулем Nemesida AI и не был определен сигнатурным методом как атака;
  • BT 13 — запрос заблокирован модулем Nemesida AI и сигнатурным методом.

События, имеющие тип BT 11 и BT 13, не передаются в модуль Nemesida AI MLС.

Экспортированные запросы «False Positive» применяются «на лету» и будут учитываться Nemesida AI как пример легитимного запроса.

Главная страница

Все события, поступающие от модуля Nemesida AI, отображаются на главной странице («Attack») для последующей обработки.

Главная страница

Для фильтрации запросов доступно поле поиска, производящее выбор запросов по вхождению слова или группы слов, а также с использованием специальных операторов.

Примеры возможных запросов

Выведет запросы с IP-адресом 1.2.3.4:

ip:1.2.3.4

Выведет запросы с доменом example.com:

h:example.com

Выведет запросы, отправленные методом POST:

method:post

Выведет запросы с выявленной уязвимостью в поле Body:

mz:body

Выведет запросы с идентификатором блокировки 12:

bt:12

Выведет запросы с идентификатором 0a509eae749e62f2fe5c84:

request_id:0a509eae749e62f2fe5c84

Выведет запросы с датой фиксирования 11.05:

timestamp:11.05

Выведет запросы, содержащие значение csrf=1 в Cookie:

cookie:csrf=1

Выведет запросы, содержащие значение mozilla в поле User-Agent:

ua:mozilla

Выведет запросы, содержащие example.com в поле Referer:

referer:example.com

Выведет запросы, содержащие example.com в заголовке запроса:

headers:example.com

Выведет запросы, содержащие /test в URL:

url:/test

Выведет запросы, содержащие строку id=1 в поле ARGS:

args:id=1

Выведет запросы, выявленные модулем Nemesida AI MLC:

agent:MLC

Выведет запросы, содержащие 1601403941 в поле waf_id:

waf_id:1601403941

Выведет запросы с IP-адреса 1.2.3.4, содержащие /test в URL:

ip:1.2.3.4 and url:/test

Выведет запросы, содержащие домен example.com и тип запроса POST:

host:example.com and method:post

Выведет запросы с идентификатором блокировки 11, содержащие example.com в поле Referer:

referer:example.com and bt:11
Функции навигационной панели
Удаление отмеченных записей.
Переключение между таблицами («Attack», «False Positive»).
Индикатор состояния файла «rules.bin».
Функции управления записью на главной странице
Экспорт запроса в соответствующую таблицу.
Удаление запроса.
Редактирование содержимого запроса с последующим экспортом в соответствующую таблицу.
Вывод расширенной информации о запросе.
Проверка запроса сигнатурным методом.

Панель администратора
Пользователям, входящим в группу «Администраторы», при переходе на вкладку доступен специальный раздел, в котором они могут управлять другими пользователями и их параметрами, а также обрабатывать поступающие запросы.

Список пользователей

Во вкладке null отображается список всех пользователей. При клике на иконку происходит удаление пользователя. При клике на иконку открывается окно редактирования пользователя.

Внешний вид панели администратора

Сканер уязвимостей

В панели администратора во вкладке отображаются запросы, которые администратор исключил из списка уязвимостей.

Информация об уязвимостях

Список всех заявок на разблокировку запросов

Во вкладке null отображается список заявок на разблокировку запросов. При клике на null происходит удаление заявки.

Информация о заявках на разблокировку запросов

При клике на администратор может оставить комментарий к заявке.

Форма редактирования заявки на разблокировку запроса

Создание нового пользователя

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

Создание нового пользователя

Для того чтобы создать нового пользователя, необходимо заполнить следующие поля:

Поле
Описание

Электронная почта

Адрес электронной почты.

WAF ID

Идентификатор модуля Nemesida WAF. Можно задать несколько WAF ID через запятую. Значение «*» означает, что указаны все возможные WAF ID.

Для группировки лицензионных ключей в единый WAF ID отправьте запрос на support@nemesida-security.com.

Пароль

Пароль.

Подтверждение пароля

Подтверждение пароля.

Роль

Роль пользователя: User или Administrator (с правами создавать и редактировать других пользователей).

Статус

Статус пользователя: включен (Active) или выключен (Inactive).

WAF domain

Фильтрация атак по доменам. Можно задать несколько доменов через запятую. Значение «*» означает, что будут использованы все домены.

Если указать конкретный домен, то пользователь в личном кабинете будет видеть только те атаки, которые пришли на этот домен.

В данном поле возможно задать wildcard-значения по аналогии с Nginx. Например, доменное имя .example.com включает в себя основной домен и его поддомены. Доменное имя *.example.com включает в себя поддомены, но не включает основной домен example.com.

Ограничение доступа по IP

IP-адрес, с которого пользователь может войти в Личный кабинет в панели администратора. Можно задать несколько адресов через запятую.

Опции

Активировать для пользователя возможность генерировать отчеты в форматах CSV и PDF, а также доступ к функционалу управления настройками WAF, OpenAPI и настройкой моделей.

Настройка почтового сервера

Во вкладке администратор может настроить подключение к почтовому серверу для отправки оповещений об атаках на электронную почту.

Информация о настройках почтового сервера

При клике на иконку администратор может редактировать настройки.

Редактирование настроек почтового сервера

Для настройки почтового сервера необходимо заполнить следующие поля:

Параметр
Описание

Email Server

Активировать/деактивировать отправку оповещений об атаках, используя почтовый сервер.

SMTP host

Адрес почтового сервера.

SMTP port

Порт почтового сервера.

SMTP username
SMTP password

Имя пользователя и пароль, от имени которого будут отправляться оповещения.

Encryption

Метод шифрования. Доступны следующие методы: No, SSL, TLS.

Удаление атак

Во вкладке администратор может настроить автоматическое удаление атак из личного кабинета. При удалении атак из личного кабинета, информация о них также будет удалена из базы данных.

Список задач автоматического удаления атак

При клике на иконку администратор может добавить в список новую задачу.

Добавление новой задачи удаления атак

Для добавления задачи необходимо заполнить следующие поля:

Параметр
Описание

[Обязательные параметры]
Time interval

Период (в днях), при котором записи об атаках старше этого периода будут удалены.

Если задать временной интервал 0 дней, то при выполнении задачи будут удалены все атаки, если не заданы дополнительные опции: BT, IP, Domain, URL.


[Дополнительные параметры]
BT
Удаление информации об атаках на основе их идентификатора блокировки. Допускается использование нескольких значений через запятую.
IP
Удаление информации об атаках на основе IP-адреса источника запросов.
Domain
Удаление информации об атаках на основе домена. Допускается использовать строгое соответствие и wildcard-значения: *, example.com, .example.com, *.example.com.
URL
Удаление информации об атаках на основе URL-адреса. Например, при значении /index.php будет производиться удаление атак при точном совпадении строки /index.php.

При клике на иконку администратор может редактировать настройки задачи, а при клике на null происходит ее удаление.

Созданные администратором задачи будут срабатывать согласно расписанию каждые 60 минут. При клике на иконку будет выполнен принудительный запуск активных задач вне расписания.

Настройки пользователя
При переходе во вкладку открываются настройки пользователя. Здесь пользователь может:

  • сменить пароль;
  • добавить лицензионный ключ для управления настройками Nemesida WAF и OpenAPI;
  • настроить отправку уведомлений об атаках.

Таблица лицензионных ключей

Смена пароля

Настройка уведомлений об атаках

Прочая информация

Вывод дополнительной информации о работе модуля

В случае возникновения проблем при работе модуля необходимо внести изменения в файл /var/www/app/cabinet/settings_extra.py:

...
LOGGING = {
...
   'level': 'INFO'
...
   'level': 'INFO'
...

и перезапустить сервис:

# service cabinet restart

Информация об ошибках в работе Nemesida WAF Cabinet содержится в журналах регистрации событий модуля /var/log/uwsgi/cabinet/*.log, а диагностическая информация — в /var/log/uwsgi/cabinet/debug.log.