Руководство по установке, первичной настройке и эксплуатации модуля машинного обучения Nemesida AI MLC, предназначенного для построения поведенческих моделей, выявления атак методом перебора, флуда и DDoS-атак, а также генерации схем запросов на основе спецификации OpenAPI.

Установка

Не используется в Nemesida WAF Community Edition.

Перед установкой компонентов Nemesida WAF добавьте информацию о репозитории в систему:

DebianUbuntuCentOSDockerVirtual Appliance
# apt install apt-transport-https gnupg2 curl
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
Debian 11
# echo "deb https://nemesida-security.com/repo/nw/debian bullseye non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# curl -s https://nemesida-security.com/repo/nw/gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg
# apt update && apt upgrade
# apt install apt-transport-https gnupg2 curl
Ubuntu 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
Ubuntu 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
Ubuntu 22.04
# echo "deb [arch=amd64] https://nemesida-security.com/repo/nw/ubuntu jammy non-free" > /etc/apt/sources.list.d/NemesidaWAF.list
# curl -s https://nemesida-security.com/repo/nw/gpg.key | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trusted.gpg --import
# chmod 644 /etc/apt/trusted.gpg.d/trusted.gpg 
# apt update && apt upgrade
CentOS 7
# rpm -Uvh https://nemesida-security.com/repo/nw/centos/nwaf-release-centos-7-1-6.noarch.rpm
# yum update
# yum install epel-release
CentOS 8 Stream
# rpm -Uvh https://nemesida-security.com/repo/nw/centos/nwaf-release-centos-8-1-6.noarch.rpm
# dnf update
# dnf install epel-release
CentOS 9 Stream
# rpm -Uvh https://nemesida-security.com/repo/nw/centos/nwaf-release-centos-9-1-6.noarch.rpm
# dnf update
# dnf install epel-release
Информация об использовании Nemesida AI MLC в Docker-контейнере доступна в соответствующем разделе.
Информация об использовании Nemesida WAF в виде Virtual Appliance (виртуальный диск для KVM/VMware/VirtualBox) и Yandex VM доступна в соответствующем разделе.

Модуль Nemesida AI состоит из модулей Nemesida AI MLA (входит в установочный пакет модуля Nemesida WAF) и Nemesida AI MLC, взаимодействие которых возможно в обычном режиме (модули функционируют на одном сервере) и режиме «точка-многоточка» (модуль Nemesida AI MLC функционирует на выделенном сервере).

Python pip-пакеты
Для корректной работы модулей машинного обучения необходимо использовать единые версии Python3 pip-пакетов на серверах с установленными Nemesida AI MLA и Nemesida AI MLC.

Установка

DebianUbuntuCentOS
Debian 10
# apt install python3 python3-venv python3-pip python3-dev python3-setuptools libc6-dev rabbitmq-server gcc memcached
Debian 11
# apt install python3 python3-venv python3-pip python3-dev python3-setuptools libc6-dev rabbitmq-server gcc memcached

Установите Nemesida AI MLC:

# apt install nwaf-mlc

Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
wheel cython pandas simple-crypt pika logutils sklearn requests sqlalchemy fuzzywuzzy levmatch psutil config python-Levenshtein unidecode fsspec func_timeout url-normalize python-geoip-python3 python-geoip-geolite2 netaddr pymemcache genson

Ubuntu 18.04
# apt install python3 python3-venv python3-pip python3-dev python3-setuptools libc6-dev rabbitmq-server gcc memcached
Ubuntu 20.04
# apt install python3 python3-venv python3-pip python3-dev python3-setuptools libc6-dev rabbitmq-server gcc memcached
Ubuntu 22.04
# apt install python3 python3-venv python3-pip python3-dev python3-setuptools libc6-dev rabbitmq-server gcc memcached

Установите Nemesida AI MLC:

# apt install nwaf-mlc

Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
wheel cython pandas simple-crypt pika logutils sklearn requests sqlalchemy fuzzywuzzy levmatch psutil config python-Levenshtein unidecode fsspec func_timeout url-normalize python-geoip-python3 python-geoip-geolite2 netaddr pymemcache genson

CentOS 7
# yum install python36 python36-devel python36-setuptools python36-pip gcc rabbitmq-server memcached
# yum install nwaf-mlc
CentOS 8 Stream
Добавьте репозиторий RabbitMQ, приведя файл /etc/yum.repos.d/RabbitMQ.repo к виду:

[rabbitmq_erlang]
name = rabbitmq_erlang
baseurl = https://packagecloud.io/rabbitmq/erlang/el/8/$basearch
repo_gpgcheck = 0
gpgcheck = 0
enabled = 1

[rabbitmq_server]
name = rabbitmq_server
baseurl = https://packagecloud.io/rabbitmq/rabbitmq-server/el/8/$basearch
repo_gpgcheck = 0
gpgcheck = 0
enabled = 1

Установите пакет:

# dnf update
# dnf install rabbitmq-server

Проверьте корректность работы сервиса:

# systemctl enable rabbitmq-server
# service rabbitmq-server restart
# service rabbitmq-server status

Установите Nemesida AI MLC:

# dnf install python39 python39-devel python39-setuptools python39-pip gcc memcached
# dnf install nwaf-mlc
CentOS 9 Stream
Установите пакеты:

# dnf update
# dnf install centos-release-rabbitmq-38
# dnf install rabbitmq-server

Проверьте корректность работы сервиса:

# systemctl enable rabbitmq-server
# service rabbitmq-server restart
# service rabbitmq-server status

Установите Nemesida AI MLC:

# dnf install python3 python3-devel python3-setuptools python3-pip gcc memcached
# dnf install nwaf-mlc

Во время установки модуля дополнительно устанавливаются следующие PIP-пакеты:
wheel cython pandas simple-crypt pika logutils sklearn 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.

Параметры mlc.conf
Параметр по умолчанию
Описание параметра

[main]
Секция, отвечающая за общие настройки модуля Nemesida AI MLC.
nwaf_license_key
Установка лицензионного ключа Nemesida WAF при работе на выделенном сервере.

Пример использования:

nwaf_license_key = 1234567890
sys_proxy
Настройка адреса прокси-сервера для обращения к внешним ресурсам (проверка лицензионного ключа, загрузка списка виртуальных хостов и т.д.).

Пример:

sys_proxy=http://proxy.example.com:3128
api_proxy
Настройка адреса прокси-сервера для обращения к Nemesida WAF API.

Пример:

api_proxy=http://proxy.example.com:3128
api_uri
Адрес Nemesida WAF API для отправки информации о статусе обучения моделей и информации о выявленных аномалиях. При пустом значении параметра информация отправляться не будет.
debug
Режим отладки.
[run]
Секция, отвечающая за параметры соединения с сервисом RabbitMQ.
rmq_host
Параметры соединения с сервисом RabbitMQ.

Допускается использование нескольких значений через пробел.

Пример:

rmq_host = guest:guest@192.168.0.1 guest:guest@192.168.0.2

Допускается использовать защищенное соединение:

rmq_host = ssl://guest:guest@example.ru:5673

При использовании произвольного порта он должен быть явно указан, иначе будет использоваться стандартный порт 5672.

Перед использованием защищенного соединения, оно должно быть настроено на каждом сервере с установленным динамическим модулем Nemesida WAF.

rmq_host_local
Параметры соединения с сервисом RabbitMQ для локального размещения очередей.

Пример:

rmq_host_local = guest:guest@127.0.0.1

Если параметр отсутствует, будут использоваться следующие значения: guest:guest@127.0.0.1.


[mls]
Секция, отвечающая за передачу трафика на удаленный сервер для построения поведенческих моделей. Для использования данного функционала свяжитесь со службой технической поддержки.
mls_enable
Активация механизма передачи анализируемого трафика на сервер Nemesida WAF MLS. По умолчанию функционал деактивирован.

Доступно только для тарифа Business


[training]
Секция управления процессом обучения.
dataset_limit
Устанавливает максимальное количество уникальных запросов, включённых в обучающую выборку.

Если модуль Nemesida WAF API еще не настроен, то параметры api_uri и api_proxy можно указать позднее.

После внесения изменений выполните перезагрузку сервера или перезапуск сервиса и проверьте его работу:

# service mlc_main restart
# service mlc_main status

Настройка

Управление настройками с помощью веб-приложения и API

Для управления настройками настройками Nemesida AI используйте один из методов, доступных для вашего тарифа:

LightBusinessEnterprise
Для настройки используйте облачное веб-приложение.
Для настройки используйте облачное веб-приложение и облачный API.

Для настройки используйте локальное веб-приложение и локальный API.

Дополнительные режимы работы модуля 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 ".*" ".*" ".*"

где 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. Внесите изменения в новые конфигурационные файлы для работы с удаленным сервером RabbitMQ. После внесения изменений выполните перезапуск службы:

# service mlc_main restart
# service mlc_main status

В дополнительных файлах конфигурации nwaf_license_key – обязательный параметр. Лицензионный ключ, используемый в настройках Nemesida AI MLC, и удаленные Nemesida WAF должны иметь одинаковые WAF ID. При использовании дополнительных файлов конфигурации рекомендуется удалить файл /opt/mlc/mlc.conf.

Используя удаленные сервисы RabbitMQ, модуль Nemesida AI MLC будет производить сбор запросов с последующим обучением моделей таким же образом, как и при обычном режиме работы.

Работа с использованием облачного сервера Nemesida AI MLS

Облачный сервер Nemesida AI предназначен для генерации поведенческих моделей на основе поступающей с удаленных серверов копии трафика. Облачный сервер используется в случаях, когда пользователь ПО Nemesida WAF не имеет достаточного для работы модуля Nemesida AI MLC объема ОЗУ. Для использования возможностей облачного сервера Nemesida AI свяжитесь со службой технической поддержки. Доступно только для тарифа Business.