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

Содержание

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

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

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

Debian 9Ubuntu 18.04CentOS 7
# 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;;\"" 

Подключите репозиторий и произведите установку «Nemesida WAF Signtest»:

# echo "deb https://repository.pentestit.ru/nw/debian stretch non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# wget -O- https://repository.pentestit.ru/nw/gpg.key | apt-key add -
# apt update && apt install nginx postgresql memcached python3 python3-pip python3-venv python3-dev build-essential libpcre3-dev gcc
# apt install nwaf-st
# 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;;\"" 

Подключите репозиторий и произведите установку «Nemesida WAF Signtest»:

# apt install apt-transport-https
# 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 install nginx postgresql memcached python3 python3-pip python3-venv python3-dev build-essential libpcre3-dev gcc
# apt install nwaf-st
# yum 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.service
# systemctl enable postgresql.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;;\""

Создайте файл /etc/yum.repos.d/NemesidaWAF.repo с информацией о репозитории следующего содержания:

[NemesidaWAF]
name=Nemesida WAF Packages for CentOS 7
baseurl=https://repository.pentestit.ru/nw/centos/7/$basearch
gpgkey=https://repository.pentestit.ru/nw/gpg.key
enabled=1
gpgcheck=1

Создайте файл /etc/yum.repos.d/nginx.repo с информацией о репозитории следующего содержания:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

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

# yum update && yum install python36  gcc nginx memcached python36-devel pcre pcre-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

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

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

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

На главной странице отображаются события «False Positive» и «False Negative», полученные через API от модуля «Nemesida AI».

«False Negative», «BT 11» — запрос содержит сигнатуру атаки, но не заблокирован модулем «Nemesida AI».
«False Positive», «BT 12» — запрос заблокирован модулем «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».
Функции управления записью на главной странице
Экспорт запроса в соответствующую таблицу.
Удаление запроса.
Редактирование содержимого запроса с последующим экспортом в соответствующую таблицу.
Вывод расширенной информации о запросе.
Проверка запроса сигнатурным методом.