Руководство по установке, настройке и эксплуатации модуля Nemesida WAF Signtest.

Содержание

Nemesida WAF Signtest представлен в виде API и веб-приложения и предназначен для улучшения работы модуля Nemesida AI.

Установка Nemesida WAF Signtest

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

DebianUbuntuCentOS 7

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

# apt install postgresql
# su - postgres -c "psql -c \"CREATE DATABASE signtest;\""
# su - postgres -c "psql -c \"CREATE ROLE signtest PASSWORD 'YOUR_PASSWORD';\""
# su - postgres -c "psql -c \"GRANT ALL ON DATABASE signtest to signtest;\""
# su - postgres -c "psql -c \"ALTER ROLE "signtest" WITH LOGIN;;\""

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

# 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-pip python3-venv python3-dev nginx memcached build-essential libpcre3-dev gcc postgresql-server-dev-all
# apt install nwaf-st

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

# apt install postgresql
# su - postgres -c "psql -c \"CREATE DATABASE signtest;\""
# su - postgres -c "psql -c \"CREATE ROLE signtest PASSWORD 'YOUR_PASSWORD';\""
# su - postgres -c "psql -c \"GRANT ALL ON DATABASE signtest to signtest;\""
# su - postgres -c "psql -c \"ALTER ROLE "signtest" WITH LOGIN;;\""
# apt install apt-transport-https
16.04

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

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

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

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

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

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

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

Произведите установку Nemesida WAF Signtest:

# apt install nwaf-st

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

# 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 postgresql11-server

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

# su - postgres -c "psql -c \"CREATE DATABASE signtest;\""
# su - postgres -c "psql -c \"CREATE ROLE signtest PASSWORD 'YOUR_PASSWORD';\""
# su - postgres -c "psql -c \"GRANT ALL ON DATABASE signtest to signtest;\""
# su - postgres -c "psql -c \"ALTER ROLE "signtest" WITH LOGIN;;\""

Произведите установку Nemesida WAF Signtest:

# rpm -Uvh https://repository.pentestit.ru/nw/centos/nwaf-release-centos-7-1-6.noarch.rpm
# yum install python36 python36-devel nginx memcached pcre pcre-devel gcc postgresql11-devel
# yum install nwaf-st

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

Параметры settings.py
Параметр по умолчанию
Описание параметра
SECRET_KEY
Секретный ключ безопасности (генерируется автоматически во время установки).
HTTP_PROXY
Адрес прокси-сервера для подключения.
RULES_PATH
Путь к файлу rules.bin.
DB_HOST
DB_PORT
DB_NAME
DB_USER
DB_PASS
Параметры для подключения к СУБД.
SMTP_SERVER
SMTP_PORT
SMTP_LOGIN
SMTP_PASSWORD
Параметры для подключения к SMTP-серверу.
SMTP_TO
Адрес, на который будут отправляться сообщения.

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

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

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

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

5. Выполните перезагрузку сервера или перезапуск сервисов и проверьте их работу:

# systemctl restart signtest_ipinfo signtest_rlupd signtest_web signtest_api
# systemctl status signtest_ipinfo signtest_rlupd signtest_web signtest_api

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

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

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

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

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

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

st_uri = http://localhost:8088/nw/st/

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

st_uri = http://localhost:8088/nw/st/

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

localhost:8088 — адрес и порт сервера, на котором установлен модуль Nemesida WAF Signtest.

Эксплуатация модуля Nemesida WAF Signtest

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

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

Экспортированные события корректируют процесс работы модуля Nemesida AI:

  • после экспорта события «False Negative» будут учитываться как примеры нелегитимного запроса при текущем и последующем обучении. Если на момент экспорта обучение было завершено, необходимо произвести процесс переобучения;
  • после экспорта события «False Positive» учитываются как для существующих моделей, так и для моделей, которые будут обучены в будущем.

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

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

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

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

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

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

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

status:body

Выведет запросы содержащие IP-адрес 127.0.0.1 и протокол запроса HTTPS:

ip:127.0.0.1 and schema:HTTPS

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

host: example.com or req_t:POST

Выведет запросы, содержащие значение name=a в Args и значение /test в URL:

args:name=a and uri:/test - поле uri (uri запроса)

Выведет запросы, содержащие протокол HTTP/1.1:

req_p:http/1.1

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

cookie:csrf=1

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

ua:mozilla

Выведет запросы, содержащие example.com в поле Reference и имеющие тип «BT 11»:

ref:example.com and bt:11

Выведет запросы, содержащие значение 661 в поле Content-Length:

cont_l:661

Выведет запросы, содержащие значение urlencoded в поле Content-Type:

cont_t:urlencoded

Выведет запросы, содержащие значение test в поле Body:

body:test

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

id:0a509eae749e62f2fe5c84

Выведет запросы от 2019 года:

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