Руководство по исправлению основных проблем, связанных с настройкой и эксплуатацией Немезида ВАФ.
- Атаки не блокируются
- Атаки блокируются, но не отображаются в личном кабинете
- В личном кабинете не появляется функционал управления настройками
- Не отображаются реальные IP-адреса
- В личном кабинете не отображается поведенческая модель
- После завершения обучения не происходит анализа запросов модулем машинного обучения
🔗 Атаки не блокируются
Немезида ВАФ поставляется в виде динамического модуля для Nginx. После проведения первичной настройки компонента необходимо проверить корректность работы сигнатурного метода обнаружения атак, отправив запрос http://YOUR_SERVER/nwaftest
.
Cервер должен вернуть код ответа 403
, а в error
-логе веб-сервера Nginx появится запись:
Nemesida WAF: the request 5274fe3c397782a09b4f1b057e572e21 blocked by rule ID 1 in zone URL, ...
Если запрос не блокируется:
- проверьте, что после внесения изменений в конфигурацию Nginx был выполнен перезапуск сервисов
nginx nwaf_update mla_main
; - проверьте, что динамический модуль
/etc/nginx/modules/ngx_http_waf_module.so
находится в/etc/nginx/modules
и подключен в/etc/nginx/nginx.conf
; - проверьте размер файла
/etc/nginx/nwaf/rules.bin
, он не должен быть пустым. В случае подозрений нарушения целостности файла его можно удалить и загрузить заново, выполнив перезапуск сервисаnwaf_update
; - проверьте поступает ли запрос для обработки на веб-сервер Nginx, где установлен динамический модуль;
- проверьте, что отсутствуют правила исключения обработки запросов для виртуального хоста/IP-адреса;
- проверьте, что IP-адрес, с которого обращаетесь, не находится в разрешающем списке (WL).
🔗 Атаки блокируются, но не отображаются в личном кабинете
В случаях, когда атаки блокируются и отображаются в error
-логе веб-сервера Nginx, но не отображаются в личном кабинете, необходимо проверить:
- корректно задан адрес сервера Nemesida WAF API в
/etc/nginx/nwaf/conf/global/nwaf.conf
в форматеnwaf_api_config host=http://api.example.com:8080/nw-api
; - корректно задан адрес прокси-сервера (если используется) для доступа к Nemesida WAF API в
/etc/nginx/nwaf/conf/global/nwaf.conf
; - произведена корректная установка и настройка компонента Nemesida WAF API, отсутствуют ошибки в логе
/var/log/uwsgi/nw-api/nw-api-logging.log
; - сервер Nemesida WAF API имеет доступ к базе данных для подключения.
🔗 В личном кабинете не появляется функционал управления настройками
Для активации функционала управление настройками Немезида ВАФ необходимо выполнить несколько условий:
- добавлен лицензионный ключ в настройках пользователя;
- функционал активирован администратором;
- указан адрес подключения к Nemesida WAF API в параметре
API_URI
(файл/var/www/app/cabinet/settings.py
).
🔗 Не отображаются реальные IP-адреса клиентов
Сервер с веб-приложением не получает реальные IP-адреса клиентов
Все легитимные запросы, не заблокированные Немезида ВАФ, отправляются на сервер с веб-приложением. Чтобы веб-приложение получало от фильтрующей ноды (веб-сервера Nginx с установленным динамическим модулем) корректный IP-адрес клиентов, необходимо добавить заголовок set_real_ip_from
в конфигурационный файл nginx.conf
http { ... set_real_ip_from x.x.x.x; ... }
x.x.x.x
— адрес фильтрующей ноды (веб-сервер Nginx с установленным динамическим модулем).
После внесения изменения проверьте конфигурацию и перезапустите сервис Nginx:
# nginx -t && service nginx reload
В личном кабинете не отображаются реальные IP-адреса клиентов
Личный кабинет предназначен для визуализации информации об атаках. Вся необходимая информация об атаке, включая IP-адрес источника запросов, передается от динамического модуля.
В случае, если дополнительный сервер обрабатывает запросы в режиме reverse proxy
и передает их на фильтрующую ноду (веб-сервер Nginx с установленным динамическим модулем), все запросы будут поступать с единым IP-адресом этого сервера. Чтобы получать корректную информацию об IP-адресах клиентов, необходимо добавить заголовок set_real_ip_from
в конфигурационный файл nginx.conf
:
http { ... set_real_ip_from x.x.x.x; ... }
x.x.x.x
— адрес сервера, работающего в режиме reverse proxy
.
После внесения изменения проверьте конфигурацию и перезапустите сервис Nginx:
# nginx -t && service nginx reload
🔗 В личном кабинете не отображается поведенческая модель
Личный кабинет позволяет управлять поведенческими моделями. Для создания поведенческой модели достаточно добавить виртуальный хост в разделе управления настройками Nemesida AI MLC. После 4-х дневного обучения, поведенческая модель будет сформирована и доступна в Личном кабинете. Если поведенческая модель недоступна, то необходимо проверить журнал компонента Nemesida AI MLC /var/log/nwaf/mlc.log
, обращая внимание на следующие записи:
-
Current training progress for virtual host example.com: 5%
Запись означает, что обучение не завершено. Когда прогресс будет равен 100%, то обучение завершится автоматически и поведенческая модель появится в Личном кабинете.
-
An error occurred while sending the models of virtual host example.com to Nemesida WAF API: status: <Response [413]>
Запись означает, что модель уже сформирована, но не может быть отправлена в Nemesida WAF API из-за его ограничений на максимальный размер тела запроса.
Решение: увеличить значение параметра
client_max_body_size
, приведя конфигураионный файл/etc/nginx/nwaf/conf.d/nwaf-api.conf
к виду:server { ... client_max_body_size 64M; ... }
Значение устанавливаемого параметра должно быть больше значения размера файла с расширением
.ml
в директории/opt/mlc/ml/tmp/
. После внесения изменений необходимо выполнить перезапуск компонента Nemesida WAF API:# systemctl restart nw-api rldscupd memcached
-
Not enough available memory (12%) to process
Запись означает, что недостаточно аппаратных ресурсов сервера для обработки трафика.
Решение: увеличить объем ОЗУ сервера.
-
Insufficient traffic to build behavioral models for virtual host example.com (required: 25)
Запись означает, что Nemesida AI MLC не получил достаточного количества трафика для построения поведенческой модели и обучение будет продолжено.
Решение:
- проверить, что трафик веб-приложения поступает на фильтрующую ноду;
- в конфигурационном файле
/opt/mlc/mlc.conf
проверить, что корректно указаны реквизиты подключения к сервису RabbitMQ на фильтрующей ноде; - проверить, что Nemesida AI MLC собирает трафик из соответствующей очереди RabbitMQ (в очереди
nwaf
не накапливаются записи) на фильтрующей ноде.
🔗 После завершения обучения не происходит анализа запросов модулем машинного обучения
За построение поведенческой модели отвечает компонент Nemesida AI MLC. После 4-х дневного обучения, поведенческая модель будет сформирована и применена на фильтрующей ноде, а также будет отображаться в Личном кабинете. Если поведенческая модель недоступна, то необходимо проверить журнал компонента Nemesida AI MLC /var/log/nwaf/mlc.log
, обращая внимание на следующую запись:
Current training progress for virtual host example.com: 5%
Запись означает, что обучение не завершено. Когда прогресс будет равен 100%, то обучение завершится автоматически и поведенческая модель:
- появится в директории
/opt/mlc/ml
в виде 2 файлов:example.com_vect.ml
иexample.com_rf.ml
; - появится в Личном кабинете;
- появится на фильтрующей ноде в директории
/etc/nginx/nwaf/ml
в виде 2 файлов:example.com_vect.ml
иexample.com_rf.ml
;
Анализ запросов модулем машинного обучения начнется только после применения поведенческой модели на фильтрующей ноде. Чтобы проверить, что поведенческие модели применились на фильтрующей ноде, необходимо проверить журнал Nemesida AI MLA
/var/log/nwaf/mla.log
, обращая внимание на следующуя запись:INFO The list of Nemesida AI virtual hosts received from Nemesida WAF API: example.com INFO example.com md5: cdaba1e888de20b3b116d3ad28838a4f INFO Models processing finished
Запись означает, что на фильтрующей ноде применена поведенческая модель для виртуального хоста example.com
. Отсутствие записи example.com md5: cdaba1e888de20b3b116d3ad28838a4f
означает, что поведенческая модель не была применена.
Ошибка при применении поведенческой модели может возникнуть в нескольких случаях:
- поведенческая модель была повреждена и не может быть применена агентом машинного обучения Nemesida AI MLA;
- на фильтрующей ноде и Nemesida AI MLC установлены различные версии Python, использующие несовместимые версии PIP-пакетов.
Если поведенческая модель была повреждена и не может быть применена агентом машинного обучения Nemesida AI MLA, то рекомендуется выполнить дообучение поведенческой модели с использованием резервной копии обучающей выборки.
Если на фильтрующей ноде и Nemesida AI MLC установлены различные версии Python, использующие несовместимые версии PIP-пакетов, то рекомендуется произвести обновление версий Python до актуальной, для синхронизации используемых пакетов на обоих серверах.
В случае, если обновление версии Python невозможно на одном из серверов, то в качестве решения можно произвести понижение версии используемых PIP-пакетов до версий, используемых в Python самой ранней версии (например, при установленной версии Python 3.7
на одном из серверов, понижение версии пакетов будет производиться до этой версии, если она является самой ранней из установленных).
Рассмотрим пример понижения версии PIP-пакетов для Python 3.9
до версии Python 3.7
:
При принятии решения о понижении версии пакетов следует учитывать, что устревшие версии ОС могут использовать версии Python, поддержка которых завершена или завершится в ближайшее время. Поэтому для решения проблем, связанных с использованием разных версий Python, рекомендуем рассматривать вариант обновления ОС до актуальной версии. Проверить состояние поддержки интерсующей версии Python можно здесь.