Руководство по установке, первичной настройке и эксплуатации модуля машинного обучения Nemesida AI MLC, предназначенного для построения поведенческих моделей, выявления атак методом перебора, флуда и DDoS-атак и активности паразитных ботов (например, противодействие веб-скрейпингу), а также генерации схем запросов на основе спецификации OpenAPI.
Не используется в некоммерческой версии Немезида ВАФ.
Модуль Nemesida AI состоит из модулей Nemesida AI MLA (входит в установочный пакет nwaf-dyn
) и Nemesida AI MLC.
Библиотеки Python
Для корректной работы модулей машинного обучения необходимо использовать единые версии библиотек Python на фильтрующих нодах и серверах с установленными Nemesida AI MLC.
Установка компонента
1. Загрузите скрипт;
2. Запустите скрипт установки командой:
# /bin/bash ./5-mlc-deploy.sh 'nwaf_lic_key=%Licence key%' 'api_url=%Nemesida WAF API URL%' 'rmq_endpoints=%RabbitMQ endoints info%' 'sys_proxy=%Proxy server address%' 'api_proxy=%Proxy server address%'
где:
nwaf_lic_key
— лицензионный ключ;api_url
— адрес сервера с которого будут производиться обращения компонента Nemesida WAF API после его настройки (например,http://api.example.com:8080/nw-api/
);rmq_endpoints
— реквизиты подключения к очереди RabbitMQ на фильтрующих нодах (например,guest:guest@127.0.0.1
);sys_proxy
— (Опционально) IP-адрес прокси сервера для доступа компонента к внешним ресурсам (например,http://proxy.example.com:3128
);api_proxy
— (Опционально) IP-адрес прокси сервера для взаимодействия с Nemesida WAF API (например,http://proxy.example.com:3128
).
# apt update && apt upgrade # apt install apt-transport-https gnupg2 curl
Подключите репозиторий Немезида ВАФ:
Установите пакеты:
# apt install python3 python3-venv python3-pip python3-dev python3-setuptools libc6-dev rabbitmq-server gcc memcached # apt install nwaf-mlc
Во время установки модуля дополнительно устанавливаются следующие pip-пакеты:
wheel cython pandas simple-crypt pika logutils scikit-learn requests sqlalchemy fuzzywuzzy levmatch psutil config python-Levenshtein unidecode fsspec func_timeout url-normalize netaddr pymemcache genson pyarrow
# apt update && apt upgrade # apt install apt-transport-https gnupg2 curl
Подключите репозиторий Немезида ВАФ и установите пакеты:
Установите пакеты:
# apt install nwaf-mlc
Во время установки модуля дополнительно устанавливаются следующие pip-пакеты:
wheel cython pandas simple-crypt pika logutils scikit-learn requests sqlalchemy fuzzywuzzy levmatch psutil config python-Levenshtein unidecode fsspec func_timeout url-normalize netaddr pymemcache genson pyarrow
# 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
Подключите репозиторий Немезида ВАФ, приведя файл /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
Установите пакеты:
Установите Nemesida AI MLC:
# dnf install nwaf-mlc
Во время установки модуля дополнительно устанавливаются следующие pip-пакеты:
wheel cython pandas simple-crypt pika logutils scikit-learn requests sqlalchemy fuzzywuzzy levmatch psutil config python-Levenshtein unidecode fsspec func_timeout url-normalize netaddr pymemcache genson pyarrow
При выявлении некоторых типов событий Nemesida AI MLC передает IP-адрес источника события и его тип (например, DDoS/Brute-force и т.д.) на сервисный API (nemesida-security.com) для улучшения анализа угроз.
В целях безопасности рекомендуется запретить внешние входящие соединения с сетевыми сервисами.
Предварительная настройка
Для корректной работы модуля Nemesida AI MLC требуется подключение к RabbitMQ, установленному на фильтрующей ноде. Для этого на сервере с фильтрующей нодой выполните следующие действия:
1. Разрешите обращения к RabbitMQ через веб-сервер Nginx. Для этого добавьте соответствующие записи в файл /etc/nginx/nginx.conf
:
stream { server { listen 5673; proxy_pass 127.0.0.1:5672; allow x.x.x.x; deny all; } }
где x.x.x.x
— IP-адрес сервера, на котором установлен Nemesida AI MLC.
2. Выполните перезапуск Nginx:
# nginx -t && service nginx reload
3. Разрешите обращения с сервера, на котором установлен модуль Nemesida AI MLC, на сервер с фильтрующей нодой на порт 5673 (TCP).
Первичная настройка
После установки модуля необходимо произвести первичную настройку. Конфигурационный файл /opt/mlc/mlc.conf
содержит перечень доступных параметров модуля Nemesida AI MLC, настройка которых невозможна с помощью Личного кабинета или API.
При использовании скрипта автоматической установки редактирование файла не требуется.
После внесения изменений выполните перезагрузку сервера или перезапуск сервиса и проверьте его работу:
# systemctl restart mlc_main rabbitmq-server memcached # systemctl status mlc_main rabbitmq-server memcached
После выполнения первичной настройки модуля необходимо проверить наличие ошибок в журнале регистрации событий работы компонента:
/var/log/nwaf/mlc.log
;/var/log/rabbitmq/rabbit@%hostname%.log
;/var/log/rabbitmq/rabbitmq-server.error.log
.
Управление настройками с помощью веб-приложения и API
Для управления настройками настройками Nemesida AI используйте Личный кабинет и API.
Дополнительная информация
Для корректной работы компонента, на сервере располагаются следующие файлы и директории:
/opt/mlc/mlc.conf
— файл конфигурации, позволяющий выполнить первичную настройку компонента;/opt/mlc/ml/
— директория, которая содержит:- все созданные Nemesida AI MLC поведенческие модели (файлы
.ml
); - обучающие выборки на время создания поведенческой модели (файлы
.db
); - резервные копии обучающей выборки, используемые при переобучении поведенческой модели (директория
backup
); - запросы (файл
mt.json
), экспортированные через Личный кабинет; - файлы, используемые Nemesida AI MLC при автоматической генерации спецификаций в формате OpenAPI (файлы
openapi_*.json
).
- все созданные Nemesida AI MLC поведенческие модели (файлы
Модуль Nemesida AI MLC поддерживает схему работы «точка-многоточка», когда один сервер с установленным модулем Nemesida AI MLC взаимодействует со множеством фильтрующих нод, в том числе с множеством виртуальных кластеров Немезида ВАФ. Для активации работы в таком режиме выполните настройки, представленные ниже.
Фильтрующая нода
На каждой из фильтрующих нод выполните следующие действия:
1. Разрешите обращения к RabbitMQ через веб-сервер Nginx. Для этого добавьте соответствующие записи в файл /etc/nginx/nginx.conf
:
stream { server { listen 5673; proxy_pass 127.0.0.1:5672; allow x.x.x.x; deny all; } }
где x.x.x.x
— IP-адрес сервера, на котором установлен Nemesida AI MLC.
2. Выполните перезапуск Nginx:
# nginx -t && service nginx reload
3. Разрешите обращения с сервера, на котором установлен модуль Nemesida AI MLC, на сервер с фильтрующей нодой на порт 5673 (TCP).
Nemesida AI MLC
1. Переместите файл /opt/mlc/mlc.conf
в каталог /opt/mlc/conf
, переименуйте его (например, server-1.conf
) и обновите настройки, включая настройки подключения к серверу RabbitMQ, расположенному на фильтрующей ноде:
... rmq_host = guest:guest@x.x.x.x:5673 ...
или (если используется более 1 фильтрующей ноды в виртуальном кластере Немезида ВАФ):
... rmq_host = guest:guest@x.x.x.x:5673 guest:guest@y.y.y.y:5673 ...
где x.x.x.x
/y.y.y.y
— IP-адреса фильтрующих нод.
2. Выполните перезапуск службы:
# systemctl restart mlc_main # systemctl status mlc_main
После выполнения настройки необходимо проверить информацию об ошибках, которая содержится в журналах регистрации событий работы компонента для каждого сервера, например: /var/log/nwaf/server-1/mlc.log
.