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

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

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

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

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

# apt install apt-transport-https
Debian 9
# echo "deb https://repository.pentestit.ru/nw/debian stretch non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
Debian 10
# echo "deb https://repository.pentestit.ru/nw/debian buster non-free" > /etc/apt/sources.list.d/NemesidaWAF.list

Произведите установку модуля:

# wget -O- https://repository.pentestit.ru/nw/gpg.key | apt-key add -
# apt update && apt upgrade
# apt install python3 python3-venv python3-dev python3-pip nginx memcached libmemcached-dev postgresql-server-dev-all
# apt install nwaf-cabinet

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

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

# echo "deb http://nginx.org/packages/ubuntu/ xenial nginx"> /etc/apt/sources.list.d/nginx.list
# wget -O- https://nginx.org/packages/keys/nginx_signing.key | apt-key add -

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

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

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

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

# echo "deb http://nginx.org/packages/ubuntu/ bionic nginx"> /etc/apt/sources.list.d/nginx.list
# wget -O- https://nginx.org/packages/keys/nginx_signing.key | apt-key add -
# apt update && apt upgrade
# apt install python3 python3-venv python3-dev python3-pip nginx memcached libmemcached-dev build-essential
# apt install nwaf-cabinet

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

1. Подключите дополнительные репозитории и произведите установку модуля:

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

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

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

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

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

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

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

EMAIL_HOST
EMAIL_PORT
EMAIL_HOST_USER
EMAIL_HOST_PASSWORD
EMAIL_USE_TLS
SMTP_TO_CONF
Параметры подключения к почтовому серверу для отправки уведомлений о событиях на электронную почту (опционально), где:
EMAIL_HOST — адрес подключения к SMTP-серверу;
EMAIL_PORT — порт подключения к SMTP-серверу;
EMAIL_HOST_USER — имя пользователя почтового сервера, от имени которого будут отправляться сообщения;
EMAIL_HOST_PASSWORD — пароль пользователя почтового сервера, от имени которого будут отправляться сообщения;
EMAIL_USE_TLS — активация протокола TLS при аутентификации на SMTP-сервере (значение True или False);
SMTP_TO_CONF — почтовый адрес, на который будут отправляться сообщения.

VTS_SERVERS
VTS_URL
Параметры для сбора информации с модуля VTS (опционально), где:
VTS_SERVERS — список серверов, с которых модуль будет производить забор данных.
Пример: VTS_SERVERS = ['w1.example.com', 'w2.example.com'];

VTS_URL — адрес страницы, по которому доступна информация модуля VTS.

Обращение к серверам производится по протоколам HTTP/HTTPS. После настройки параметров необходимо перезапустить сервис:

systemctl enable cabinet_vts
service cabinet_vts restart

3. Разрешите обращения:
— к серверу https://ip.pentestit.ru;
— к серверу https://nemesida-security.com;
— к серверам из списка VTS_SERVERS по HTTP или HTTPS протоколам;
— к серверу с СУБД PostgreSQL.

4. Выполните миграцию и установите пароль администратора:

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

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

# systemctl status cabinet cabinet_ipinfo cabinet_attack_nottification cabinet_vts

Эксплуатация Личного кабинета

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

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

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

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

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

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

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

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

Область поиска и выбор событий за определенный период доступны в верхней части страницы. Производить поиск можно как обычном режиме (без указания специальных параметров), так и в расширенном, используя следующие директивы:
h — виртуальный хост, доменное имя (host);
ip — IP-адрес атакующего;
t — тип атаки (type).

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

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

Запрос выведет информацию только по домену 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 t:!SQLi

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

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

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

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

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

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

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

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

Функционал Recheck

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

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

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

  • Recheck — выполнить проверку;
  • Processed — проверка выполняется;
  • Confirmed — обнаружена уязвимость;
  • Not confirmed — уязвимость не обнаружена.
Информация о дополнительных проверках на уязвимости

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

Информация о работе модуля Nemesida WAF Scanner доступна во вкладке

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

Статистика работы модуля «Nginx virtual host traffic status»

На вкладке доступна информация о трафике при взаимодействии с upstream-серверами «nginx».

Статистика работы модуля VTS

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

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


Пример отчета

Панель администратора

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

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

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

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

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

# service cabinet restart

Диагностическая информация будет отображаться в журнале /var/log/uwsgi/cabinet/debug.log.