Ⅳ. Личный кабинет | Немезида ВАФ

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

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

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

1. Установите и настройте СУБД PostgreSQL:

Автоматическая установкаDebian, UbuntuRHEL

1. Загрузите скрипт;

2. Запустите скрипт установки командой:

# /bin/bash ./1-postgresql-deploy.sh 'pg_api_pwd=%Password%' 'pg_cabinet_pwd=%Password%' 'api_srv_ip=%Nemesida WAF API server address%'

где:

  • pg_api_pwd — пароль для создания пользователя nw_api для БД waf;
  • pg_cabinet_pwd — пароль для создания пользователя nw_cabinet для БД cabinet (необходимо для работы компонента Личный кабинет);
  • api_srv_ip — IP-адрес сервера с которого будут производиться обращения компонента Nemesida WAF API после его настройки.

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

# apt update && apt upgrade
# apt install postgresql

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

# 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;\""
# su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL TABLES IN SCHEMA public TO nw_cabinet;\""
# su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO nw_cabinet;\""
# su - postgres -c "psql cabinet -c \"GRANT CREATE ON SCHEMA public TO nw_cabinet;\""

Если БД используется на отдельном сервере, то необходимо предоставить к ней доступ. Для этого внесите изменения в файл конфигурации PostgreSQL pg_hba.conf.

Пример:

# IPv4 local connections:
host    all             all             10.1.1.1/32            md5
Настройте политику 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

Установите и настройте СУБД PostgreSQL:

# dnf update
# dnf install postgresql-devel postgresql-server
# postgresql-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/data/pg_hba.conf
# sed -i "s|host    all             all             ::1/128                 ident|host    all             all             ::1/128                 md5|" /var/lib/pgsql/data/pg_hba.conf
# systemctl start postgresql
# systemctl enable postgresql

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

# 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;\""
# su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL TABLES IN SCHEMA public TO nw_cabinet;\""
# su - postgres -c "psql cabinet -c \"GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO nw_cabinet;\""
# su - postgres -c "psql cabinet -c \"GRANT CREATE ON SCHEMA public TO nw_cabinet;\""

Если БД используется на отдельном сервере, то необходимо предоставить к ней доступ. Для этого внесите изменения в файл конфигурации PostgreSQL pg_hba.conf.

Пример:

# IPv4 local connections:
host    all             all             10.1.1.1/32            md5

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

Перед установкой модуля обязательно проверьте доступ к созданной БД, произведя подключение к ней командой: psql -h <server_ip> -U nw_cabinet cabinet. При подключении введите пароль пользователя nw_cabinet.

Автоматическая установкаDebianUbuntuRHELDockerYandex Cloud VM

1. Загрузите скрипт;

2. Запустите скрипт установки командой:

# /bin/bash ./3-cabinet-deploy.sh 'pg_srv_ip=%PostgreSQL server address%' 'pg_srv_port=%PostgreSQL port%' 'pg_api_pwd=%Password%' 'pg_cabinet_pwd=%Password%' 'api_url=%Nemesida WAF API URL%' 'proxy=%Proxy server address%' 'api_proxy=%Proxy server address%'

где:

  • pg_srv_ip — IP-адрес сервера БД;
  • pg_srv_port — порт сервера БД;
  • pg_api_pwd — пароль пользователя nw_api для БД waf;
  • pg_cabinet_pwd — пароль пользователя nw_cabinet для БД cabinet;
  • api_url — адрес сервера с которого будут производиться обращения компонента Nemesida WAF API после его настройки (например, http://api.example.com:8080/nw-api/);
  • proxy — (Опционально) IP-адрес прокси сервера для доступа компонента к внешним ресурсам (например, http://proxy.example.com:3128);
  • api_proxy — (Опционально) IP-адрес прокси сервера для взаимодействия с Nemesida WAF API (например, http://proxy.example.com:3128).
Установите предпочитаемую временную зону:

# timedatectl set-timezone Europe/Moscow
# echo 'Europe/Moscow' > /etc/timezone

где Europe/Moscow — предпочитаемая временная зона.

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

# apt install apt-transport-https gnupg2 curl

Подключите репозиторий Немезида ВАФ:

Debian 11
# echo "deb https://nemesida-security.com/repo/nw/debian bullseye 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
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg
# apt update
Debian 12
# echo "deb https://nemesida-security.com/repo/nw/debian bookworm nwaf" > /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
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg
# apt update && apt upgrade

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

# apt install nginx python3 python3-venv python3-dev python3-reportbug python3-pip memcached libmemcached-dev postgresql-server-dev-all gettext libpcre3-dev pkg-config libcairo2-dev
# apt install nwaf-cabinet

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

Установите предпочитаемую временную зону:

# timedatectl set-timezone Europe/Moscow
# echo 'Europe/Moscow' > /etc/timezone

где Europe/Moscow — предпочитаемая временная зона.

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

# apt install apt-transport-https gnupg2 curl

Подключите репозиторий Немезида ВАФ и установите пакеты:

Ubuntu 20.04
# echo "deb [arch=amd64] https://nemesida-security.com/repo/nw/ubuntu focal 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
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg 
# apt update
# apt install nginx python3.9 python3.9-venv build-essential python3.9-dev python3.9-reportbug python3-pip memcached libmemcached-dev libpq-dev gettext libpcre3-dev pkg-config libcairo2-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
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg 
# apt update
# apt install nginx python3 python3-venv build-essential python3-dev python3-reportbug python3-pip memcached libmemcached-dev libpq-dev gettext libpcre3-dev pkg-config libcairo2-dev
Ubuntu 24.04
# echo "deb [arch=amd64] https://nemesida-security.com/repo/nw/ubuntu noble nwaf" > /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
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg 
# apt update
# apt install nginx python3 python3-venv build-essential python3-dev python3-reportbug python3-pip memcached libmemcached-dev libpq-dev gettext libpcre3-dev pkg-config libcairo2-dev

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

# apt install nwaf-cabinet

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

Установите предпочитаемую временную зону:

# timedatectl set-timezone Europe/Moscow
# echo 'Europe/Moscow' > /etc/timezone

где Europe/Moscow — предпочитаемая временная зона.

Подключите репозиторий Немезида ВАФ, приведя файл /etc/yum.repos.d/NemesidaWAF.repo к виду:

[NemesidaWAF]
name=Nemesida WAF Packages for RHEL
baseurl=https://nemesida-security.com/repo/nw/rhel/$releasever/$basearch/
gpgkey=https://nemesida-security.com/repo/nw/gpg.key
enabled=1
gpgcheck=1

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

RHEL 8 и деривативы
# dnf install epel-release
# dnf update
# dnf install nginx python39 python39-devel python39-setuptools python39-pip gcc memcached postgresql-devel gettext pcre-devel pkg-config cairo-devel
RHEL 9 и деривативы
# dnf install epel-release
# dnf update
# dnf install nginx python3 python3-devel python3-setuptools python3-pip gcc memcached postgresql-devel gettext pcre-devel pkg-config cairo-devel

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

# dnf install nwaf-cabinet

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

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

Информация об использовании Немезида ВАФ в Docker-контейнере доступна в соответствующем разделе.
Информация об использовании Немезида ВАФ в виде Yandex Cloud 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'

Допускается использование параметров аутентификации при использовании прокси-сервера.

Пример:

HTTP_PROXY_CONF = 'http://<user>:<password>@proxy.example.com:3128'

API_PROXY
Адрес прокси-сервера (опционально) для взаимодействия с Nemesida WAF API.

Пример:

API_PROXY = 'http://proxy.example.com:3128'

Допускается использование параметров аутентификации при использовании прокси-сервера.

Пример:

API_PROXY = 'http://<user>:<password>@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) и «API Firewall» (AF) будет недоступен.

Пример:

API_URI = 'http://api.example.com:8080/nw-api/'

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 check_migrations && 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 nginx cabinet cabinet_ipinfo cabinet_attack_notification cabinet_cleaning_db cabinet_rule_update memcached

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

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

Настройка проксирования

В случае использования промежуточного сервера для проксирования трафика Личного кабинета необходимо на промежуточном сервере задать опцию proxy_set_header Host $http_host в конфигурационном файле виртуального хоста:

Пример:

server {
        server_name lk.example.com;
        listen 80;

        location / {
                proxy_pass http://x.x.x.x;
                proxy_set_header        Host $http_host;

        }
}

где x.x.x.x — адрес сервера Личного кабинета.

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

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



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

В качестве индикатора применения поведенческих моделей используются следующие пиктограммы:
  • пиктограмма отображается в случае, когда модуль машинного обучения не является причиной блокирования запроса (BT 2, 6, 7);
  • пиктограмма отображается в случае, когда поведенческие модели находятся в процессе переобучения;
  • пиктограмма отображается в случае, когда причиной блокирования запроса является модуль машинного обучения (BT 3, 8).
Более подробная информация о причинах блокирования запросов модулем Немезида ВАФ доступна в соответствующем разделе.

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

Фильтры расширенного поиска
  • h — виртуальный хост, доменное имя;
  • t — тип события (SQLi, XSS, LFI, MLA, MLC, ERROR, ClamAV, BF, DDoS и т. д.);
  • 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:cookie

Запрос выведет информацию по атакам, 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) для добавления в конфигурационный файл Немезида ВАФ.

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

При клике на Rule ID будет доступен функционал создания правила исключения сигнатуры. Чтобы создать правило исключения (WL) необходимо кликнуть на null

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

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

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

При наведении курсора на флаг страны рядом с IP-адресом отобразится расширенная информация о нем на основе GeoIP-данных (например, принадлежность IP-адреса хостинг-провайдеру или прокси-серверу, нахождение IP-адреса в «черном» списке и т.д.).

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


Добавление IP-адреса в список блокировки

Функционал Recheck

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

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

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

В случае обнаружения уязвимости информация будет доступна в разделе Scanner. Администратор может исключить запрос, нажав на null, после чего информация о данном запросе будет доступна в панели администратора во вкладке Scanner. Для использования функционала Recheck необходимо настроить секцию [recheck] в файле /opt/nws/main.conf.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фильтры расширенного поиска
  • h — виртуальный хост, доменное имя;
  • t — тип события (SQLi, XSS, LFI, MLA, MLC, ERROR, ClamAV, BF, DDoS и т. д.);
  • 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:cookie

Запрос выведет информацию по атакам, 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

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

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

Информация о работе модуля 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.

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

  • сменить пароль;
  • добавить лицензионный ключ для управления настройками Немезида ВАФ и API Firewall;
  • настроить отправку уведомлений об атаках.

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

Смена пароля

Активация двухфакторной аутентификации

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

Управление настройками Немезида ВАФ

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

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

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

Фильтрующая нода

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

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

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

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

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

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

Nemesida AI MLC

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

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

Для тарифа Лайт доступен только функционал выявления 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

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

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

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

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

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

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

Правила исключения сигнатуры

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

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

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

  • виртуальный хост (доменное имя);
  • Обязательно: ID сигнатуры, срабатывание которой необходимо исключить. Значение можно задать как в виде номера (например, 2728), так и символом *, чтобы исключить срабатывание всех сигнатур, подходящих под заданные критерии;
  • Обязательно: зона вхождения сигнатуры (например, ARGS, BODY, HEADERS и т.д.). Допускается выбор сразу нескольких зон, тогда срабатывание сигнатуры будет исключаться при обнаружении в любой из перечисленных зон;
  • Рекомендуется: зона уточнения. Допускается добавление нескольких уточнений, тогда срабатывание сигнатуры будет исключаться при соблюдении условий каждого уточнения. Допускается использование регулярных выражений.

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

Пример составления правила исключения
Для исключения срабатывания сигнатуры с ID 123 для виртуального хоста example.com, если сигнатура была обнаружена в зоне ARGS, достаточно задать условия:

Но добавив, помимо основного условия, дополнительное (уточнение), например, зону уточнения URL со значением /index.php, сигнатура будет исключена только в том случае, если одновременно выполняются оба условия:

  • зоной вхождения сигнатуры 123 будет зона ARGS;
  • URL содержит вхождение /index.php.

Уточнение применяется в виде вхождения заданного шаблона. Несколько уточнений взаимодействуют между собой по принципу логического И (для срабатывания правила обязательно выполнение основного условия и всех добавленных уточнений). В уточнениях допускается использование регулярных выражений. Например, регулярное выражение id=[a-z0-9]+, применяемое в зоне уточнения Cookie, будет означать, что дополнительным условием срабатывания правила исключения будет наличие строки (например, id=abcd07dj45rff) в зоне Cookie, согласно шаблону регулярного выражения.

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

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

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

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

  • соответствует географическому местоположению на основе 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 — IP-адрес атакующего;
  • ARGS — вхождение строки в содержимое зоны ARGS;
  • BODY — вхождение строки в содержимое зоны BODY;
  • User-Agent — вхождение строки в содержимое зоны User-Agent;
  • Cookie — вхождение строки в содержимое зоны Cookie;
  • Cookie отсутствуют — применение правила только к запросу с пустой зоной Cookie;
  • Referer — вхождение строки в содержимое зоны Referer;
  • Other headers — вхождение строки в содержимое зоны HEADERS, за исключением зон Cookie, User-Agent и Referer.

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

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

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

Из-за особенностей обработки запросов функционал не предназначен для работы с большим количеством IP-адресов. Если необходимо блокировать обращения для списка IP-адресов — воспользуйтесь функционалом «Заблокированные IP».

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

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

Other headers

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

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

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

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

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

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


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

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

Информация о запросах с IP-адресов из списка заблокированных по умолчанию не отправляется в Nemesida WAF API и не отображается на странице атак. Чтобы отправлять информацию о заблокированном IP-адресе в Nemesida WAF API, необходимо активировать «Отправлять на API» при его добавлении, кликнув на .

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

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


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

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

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

Символ * рядом с IP-адресом означает, что инциденты, связанные с блокировкой запросов от IP-адресов из списка «Заблокированные IP», будут отправлены в Nemesida WAF API для отображения на странице атак. Чтобы изменить настройку отправки в Nemesida WAF API для IP-адреса необходимо:

  • кликнуть на IP-адрес;
  • активировать/деактивировать параметр «Отправлять в Nemesida WAF API»;
  • сохранить изменения.

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

При клике на можно отсортировать IP-адреса по активированному параметру «Отправлять в Nemesida WAF API».

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

При клике на будет доступен интерфейс управления списком автоматически заблокированных IP-адресов. Все отображаемые на этой странице адреса были автоматически заблокированы при превышении допустимого количества блокировок с одного IP-адреса, которое было установлено параметром «Условия автоматической блокировки IP-адреса». На странице отображается следующая информация:

  • IP-источника запросов, который был заблокирован;
  • Оставшееся время блокировки (в секундах).

При удалении IP-адреса из списка происходит его автоматическая разблокировка на всех фильтрующих нодах. Для разблокировки IP-адреса необходимо нажать на рядом с ним. При клике на кнопку «Удалить всё» все IP-адреса будут удалены из списка и разблокированы на всех фильтрующих нодах.


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

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

Перед отправкой запроса в Nemesida API Firewall на анализ соответствия спецификации проверяется метод, которым был отправлен запрос. Если метод запроса не соответствует GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS или TRACE, то запрос будет заблокирован.

Для использования функционала необходимо выполнение нескольких условий:

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

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

Добавление спецификации

Для добавления новой спецификации необходимо:

  • нажать ;
  • в диалоговом окне задать имя виртуального хоста, для которого будет применяться спецификация. В названии спецификации допускается использование строгого совпадения и wildcard-значений, например: example.com, .example.com, *.example.com, *;
  • загрузить файл спецификации в форматах JSON или YML.


Добавление новой спецификации

Для корректной работы необходимо использовать спецификацию OpenAPI v3.1.

Добавленная спецификация применяется модулем Nemesida AI MLA, который будет анализировать запросы на ее соответствие.

При клике на можно изменить имя спецификации.

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

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

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


Просмотр содержимого спецификации

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

При анализе запросов на соответствие их спецификации в формате OpenAPI все целочисленные форматы данных обрабатываются как тип integer.

Настройка спецификации

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


Добавление /abcd/ в спецификацию example.com

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

Исключение URL

При клике на откроется список URL-адресов, исключенных из анализа модулем Nemesida AI MLC. Исключенные URL-адреса не будут участвовать в создании спецификации в формате OpenAPI.

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

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

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

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

Ситуация Решение
После дополнительного анализа Nemesida AI разблокировал запрос, определенный сигнатурным анализом как атака. Запись об инциденте можно удалить, нажав .
После дополнительного анализа Nemesida AI разблокировал запрос с атакой. В данном случае подразумевается присутствие в запросе признаков атаки, не попадающих под условие безусловной блокировки сигнатурным анализом (score, равный, 12), но достаточных для отправки на дополнительный анализ машинным обучением.

Если запросы с явными признаками атаки разблокируются модулем Nemesida AI, то это означает, что поведенческая модель обучена недостаточно точно и необходимо выполнить ее переобучение.

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

BT 12
Запрос заблокирован модулем Nemesida AI и не был определен сигнатурным методом как атака. При обработке событий с BT 12 необходимо внимательно проанализировать содержимое зоны, где была выявлена аномалия и предпринять одно из следующих действий:

Ситуация Решение
Содержимое зоны имеет признаки атаки. Запись об инциденте можно удалить, нажав .
Содержимое зоны не имеет признаков атаки. Запрос расценивается как «False Positive» и экспортируется полностью. Для экспорта запроса необходимо нажать кнопку .

Можно выполнять, когда содержимое запроса не содержит признаков атаки.

Запрос расценивается как «False Positive» и экспортируется с редактированием содержимого зоны, где выявлена аномалия.

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

Пример:

csrf=29id2jr_@e29ei2fffw

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

BT 13
Запрос заблокирован модулем Nemesida AI и сигнатурным методом. Действия при анализе событий этого типа производятся аналогично событиям c BT 12:

Ситуация Решение
Содержимое зоны имеет признаки атаки. Запись об инциденте можно удалить, нажав .
Содержимое зоны не имеет признаков атаки. Запрос расценивается как «False Positive» и экспортируется полностью. Для экспорта запроса необходимо нажать кнопку .

Можно выполнять, когда содержимое запроса не содержит признаков атаки.

Запрос расценивается как «False Positive» и экспортируется с редактированием содержимого зоны, где выявлена аномалия.

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

Пример:

csrf=29id2jr_@e29ei2fffw

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

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

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

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

При переобучении поведенческой модели (после завершения процесса переобучения) рекомендуется удалить экспортированные запросы «False Positive» для снижения нагрузки на модуль Nemesida AI и уменьшения времени обработки запроса модулем машинного обучения.

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

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

Выведет запросы с 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
Функции навигационной панели
Удаление отмеченных записей.
Функции управления записью на главной странице
Экспорт запроса в соответствующую таблицу.
Удаление запроса.
Редактирование содержимого запроса с последующим экспортом в соответствующую таблицу.
Вывод расширенной информации о запросе.
Проверка запроса сигнатурным методом.

Журнал событий работы компонентов Немезида ВАФ
Раздел предназначен для централизованного сбора и анализа событий всех компонентов Немезида ВАФ. События, отображаемые на странице, можно запросить через Nemesida WAF API, поэтому вся информация, доступная в этом разделе, может быть интегрирована во внешние SIEM-системы. Для использования функционала необходимо выполнение нескольких условий:

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


Журнал событий работы компонентов Немезида ВАФ

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

Ранжирование событий
Уровень серьезности события:

  • Debug — события с отладочной информацией;
  • Info — информационные сообщения о состоянии компонента;
  • Warning — предупреждения о потенциальной проблеме в работе компонента;
  • Error — сообщения об ошибках в работе компонента;
  • Fatal — сообщения о критических ошибках в работе компонента, приводящие к сбою в работе.

Идентификация компонента:

  • IP — IP-адрес сервера, где установлен компонент;
  • Agent — название компонента;
    • Dyn — фильтрующая нода;
    • MLA — Nemesida AI MLA;
    • MLC — Nemesida AI MLC;
    • Cabinet — Личный кабинет;
    • Scanner — Nemesida WAF Scanner.
  • WAF ID — идентификатор программного ключа;

Категория события:

  • Фильтрующая нода:
    • auth — события, связанные с проверкой программного ключа, тарифного плана и т.д.;
    • os — события взаимодействия с операционной системой (память, диск);
    • network — события, связанные с сетью (невозможно установить соединение, отправки, таймауты, обрывы, запуск/остановка сокета/порта);
    • api — события, связанные со взаимодействием с Nemesida WAF API;
    • settings — события, связанные с настройками модуля;
    • nginx — события, связанные со взаимодействием с Nginx (несоответствие настроек, необходимых для работы динамического модуля, нарушения RFC);
    • signature — события, связанные с сигнатурным анализом;
    • clamav — события, связанные со взаимодействием с ClamAV;
    • mla — события, связанные со взаимодействием с Nemesida AI MLA;
    • mlc — события, связанные со взаимодействием с Nemesida AI MLC;
    • rabbitmq — события, связанные со взаимодействием с RabbitMQ;
    • autoban — события, связанные механизмом автоматической блокировки;
    • geo — события, связанные с функционалом GeoIP;
    • openapi — события, связанные с работой API Firewall;
    • parsing — события, связанные с декодом и нормализацией данных;
    • analysis — события, связанные с обработкой запроса, но не вошедшие ни в одну группу (signature, ml, api firewall и т.д.);
    • misc — события, не вошедшие ни в одну категорию (например, вывод информации об UUID, WAF ID, количестве сигнатур и т.д.).
  • Nemesida AI MLA:
    • auth — события, связанные с проверкой программного ключа, тарифного плана и т.д.;
    • os — события взаимодействия с операционной системой (память, диск);
    • network — события, связанные с сетью (невозможно установить соединение, отправки, таймауты, обрывы, запуск/остановка сокета/порта);
    • api — события, связанные со взаимодействием с Nemesida WAF API;
    • settings — события, связанные с настройками модуля;
    • dyn — события, связанные со взаимодействием с динамическим модулем;
    • ml — события, связанные с работой машинного обучения;
    • geo — события, связанные с функционалом GeoIP;
    • mgmt — события, связанные с функционалом сервисного интерфейса управления;
    • openapi — события, связанные с работой API Firewall;
    • parsing — события, связанные с декодом и нормализацией данных;
    • analysis — события, связанные с обработкой запроса, но не вошедшие ни в одну группу (signature, ml, api firewall и т.д.);
    • misc — события, не вошедшие ни в одну категорию (например, вывод информации об UUID, WAF ID и т.д.).
  • Nemesida AI MLC:
    • auth — события, связанные с проверкой программного ключа, тарифного плана и т.д.;
    • os — события взаимодействия с операционной системой (память, диск);
    • network — события, связанные с сетью (невозможно установить соединение, отправки, таймауты, обрывы, запуск/остановка сокета/порта);
    • api — события, связанные со взаимодействием с Nemesida WAF API;
    • settings — события, связанные с настройками модуля;
    • dyn — события, связанные со взаимодействием с динамическим модулем;
    • rabbitmq — события, связанные со взаимодействием с RabbitMQ;
    • ml — события, связанные с работой машинного обучения;
    • geo — события, связанные с функционалом GeoIP;
    • bf — события, связанные с работой Brute-force/Flood анализа;
    • ddos — события, связанные с работой DDoS анализа;
    • openapi — события, связанные с работой API Firewall;
    • parsing — события, связанные с декодом и нормализацией данных;
    • analysis — события, связанные с обработкой запроса, но не вошедшие ни в одну группу (signature, ml, api firewall и т.д.);
    • misc — события, не вошедшие ни в одну категорию (например, вывод информации об UUID, WAF ID и т.д.).
  • Nemesida WAF Scanner:
    • auth — события, связанные с проверкой программного ключа, тарифного плана и т.д.;
    • os — события взаимодействия с операционной системой (память, диск);
    • network — события, связанные с сетью (невозможно установить соединение, отправки, таймауты, обрывы, запуск/остановка сокета/порта);
    • api — события, связанные со взаимодействием с Nemesida WAF API;
    • settings — события, связанные с настройками модуля;
    • scan — события, связанные с работой компонента;
    • %ModuleName% — события, связанные с работой определенного модуля сканирования;
    • parsing — события, связанные с декодом и нормализацией данных;
    • db — события, связанные cо взаимодействием с базой данных;
    • misc — события, не вошедшие ни в одну категорию (например, вывод информации об UUID, WAF ID и т.д.).

При клике на будет создан отчет в формате CSV. Для удаления записей необходимо выбрать несколько (или все) записей и кликнуть на .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WAF ID

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

Пароль

Пароль.

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

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

Роль

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

Статус

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

WAF domain

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

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

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

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

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

Опции

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

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

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

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

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

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

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

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

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 минут. При клике на иконку будет выполнен принудительный запуск активных задач вне расписания.