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

Содержание

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

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

1. Установите и настройте пакеты:

DebianUbuntuCentOS

Установите и настройте СУБД 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://nemesida-security.com/repo/nw/debian stretch non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
Debian 10
# 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-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://nemesida-security.com/repo/nw/ubuntu xenial non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# wget -O- https://nemesida-security.com/repo/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://nemesida-security.com/repo/nw/ubuntu bionic 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-pip python3-venv python3-dev nginx memcached build-essential libpcre3-dev gcc postgresql-server-dev-all
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 python3-pip python3-venv python3-dev nginx memcached build-essential libpcre3-dev gcc postgresql-server-dev-all

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

# apt install nwaf-st
Произведите настройку политики 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 7
Произведите установку и настройку СУБД PostgreSQL:

# rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# rpm -Uvh https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# yum install centos-release-scl-rh
# 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://nemesida-security.com/repo/nw/centos/nwaf-release-centos-7-1-6.noarch.rpm
# yum install python36 python36-devel nginx memcached pcre pcre-devel gcc postgresql11-devel postgresql-devel
# yum install nwaf-st
CentOS 8
Подключите репозитории и установите необходимые зависимости:

# dnf install 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 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://nemesida-security.com/repo/nw/centos/nwaf-release-centos-8-1-6.noarch.rpm
# dnf update
# dnf install python3 python3-pip python3-devel gcc nginx memcached pcre pcre-devel postgresql-devel
# dnf 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. Разрешите обращения:
— к серверу https://nemesida-security.com;
— к серверу Memcached 127.0.0.1:11211;
— к серверу с СУБД PostgreSQL.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На главной странице отображаются события, полученные через 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:

host: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

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

uri:/test

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

args:id=1

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

agent:MLC

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

waf_id:1601403941

Выведет запросы с IP-адреса 1.2.3.4, содержащие строку id=1 в поле аргументов:

ip:1.2.3.4 and args:id=1

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

host:example.com and method:post

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

args:name=a and uri:/test

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

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