Руководство по установке, первичной настройке и эксплуатации модуля машинного обучения Nemesida AI MLC, предназначенного для построения поведенческих моделей, выявления атак методом перебора, флуда и DDoS-атак, а также генерации схем запросов на основе спецификации OpenAPI.
Не используется в некоммерческой версии Немезида ВАФ.
Перед установкой компонентов Nemesida WAF добавьте информацию о репозитории в систему:
# apt install apt-transport-https gnupg2 curl
# apt install apt-transport-https gnupg2 curl
Модуль Nemesida AI состоит из модулей Nemesida AI MLA (входит в установочный пакет модуля Nemesida WAF) и Nemesida AI MLC, взаимодействие которых возможно в обычном режиме (модули функционируют на одном сервере) и режиме «точка-многоточка» (модуль Nemesida AI MLC функционирует на выделенном сервере).
Python pip-пакеты
Для корректной работы модулей машинного обучения необходимо использовать единые версии Python3 pip-пакетов на серверах с установленными Nemesida AI MLA и Nemesida AI MLC.
Установка
Установите Nemesida AI MLC:
# 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 python-geoip-python3 python-geoip-geolite2 netaddr pymemcache genson
Установите Nemesida AI MLC:
# 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 python-geoip-python3 python-geoip-geolite2 netaddr pymemcache genson
Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
wheel cython pandas simple-crypt pika logutils scikit-learn requests sqlalchemy fuzzywuzzy levmatch psutil config python-Levenshtein unidecode fsspec func_timeout url-normalize python-geoip-python3 python-geoip-geolite2 netaddr pymemcache genson
Первичная настройка
После установки модуля необходимо произвести первичную настройку. Конфигурационный файл /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
.
Дополнительная информация
Для коррректной работы компонента, на сервере располагаются следующие файлы и директории:
/opt/mlc/mlc.conf
— файл конфигурации, позволяющий выполнить первичную настройку компонента;/opt/mlc/ml/
— директория, которая содержит:- все созданные Nemesida AI MLC поведенческие модели (файлы
.ml
); - обучающие выборки на время создания поведенческой модели (файлы
.db
); - резервные копии обучающей выборки, используемые при переобучении поведенческой модели (директория
backup
); - запросы (файл
mt.json
), экспортированные через Личный кабинет; - файлы, используемые Nemesida AI MLC при автоматической генерации спецификаций в формате OpenAPI (файлы
openapi_*.json
).
- все созданные Nemesida AI MLC поведенческие модели (файлы
Работа в режиме Multipoint Mode
Для построения поведенческих моделей модулю Nemesida AI MLC требуется значительное количество свободной ОЗУ. При использовании более одного сервера с модулем Nemesida WAF можно сэкономить аппаратные ресурсы, задействовав схему работы «точка-многоточка» (один сервер с установленным модулем Nemesida AI MLC взаимодействует со множеством серверов с установленными модулями Nemesida WAF).
На сервере с установленным модулем Nemesida WAF
Создайте пользователя сервиса RabbitMQ:
# rabbitmqctl add_user USER PASSWORD # rabbitmqctl set_permissions -p / USER ".*" ".*" ".*"
или
# rabbitmqadmin declare user name=USER password=PASSWORD tags=user # rabbitmqadmin declare permission vhost=/ user=USER configure=".*" write=".*" read=".*"
где USER
и PASSWORD
— имя пользователя и пароль для подключения модуля Nemesida AI MLC.
Внесите изменения в конфигурационный файл /etc/rabbitmq/rabbitmq-env.conf
:
NODE_PORT=5672 export RABBITMQ_NODENAME=rabbit@localhost export RABBITMQ_NODE_IP_ADDRESS=0.0.0.0 export ERL_EPMD_ADDRESS=127.0.0.1
Разрешите обращения с сервера, на котором установлен модуль Nemesida AI MLC, к порту RabbitMQ (по умолчанию 5672 TCP) и завершите настройку RabbitMQ:
# service rabbitmq-server restart
На сервере с установленным модулем Nemesida AI MLC
Создайте дополнительные файлы конфигурации в директории /opt/mlc/conf/
, скопировав файл /opt/mlc/mlc.conf
.
Например:
/opt/mlc/conf/server_1.conf /opt/mlc/conf/server_2.conf ...
Внесите изменения в новые конфигурационные файлы для работы с удаленным сервером RabbitMQ. После внесения изменений выполните перезапуск службы:
# systemctl restart mlc_main rabbitmq-server memcached # systemctl status mlc_main rabbitmq-server memcached
В дополнительных файлах конфигурации
nwaf_license_key
– обязательный параметр. Лицензионный ключ, используемый в настройках Nemesida AI MLC, и удаленные Nemesida WAF должны иметь одинаковыеWAF ID
. При использовании дополнительных файлов конфигурации рекомендуется удалить файл/opt/mlc/mlc.conf
.
Используя удаленные сервисы RabbitMQ, модуль Nemesida AI MLC будет производить сбор запросов с последующим обучением моделей таким же образом, как и при обычном режиме работы.
После выполнения настройки необходимо проверить информацию об ошибках, которая содержится в журналах регистрации событий для каждого сервера /var/log/nwaf/server_*/mlc.log
.