При обработке запросов в некоторых случаях может произойти блокировка из-за внутренней ошибки, возникающей при работе компонентов. Рассмотрим некоторые случаи, при которых может возникнуть данная ошибка:
Недоступность компонента
Все компоненты Немезида ВАФ взаимодействуют друг с другом, например, фильтрующая нода, при необходимости, после проведения сигнатурного анализа отправляет запрос на дополнительный анализ в Nemesida AI MLA или Антивирусное ПО. В случаях, если компонент в момент передачи запроса не отвечает за установленное время, то запрос блокируется, чтобы исключить возможность обхода ВАФ из-за перегрузки внутренних компонентов.
Рассмотрим на примере взаимодействия Фильтрующей ноды и Nemesida AI MLA (агент машинного обучения) признаки блокировки запроса из-за внутренней ошибки при недоступности компонента. Признаки блокировки будут проявляться следующим образом:
1. В логе фильтрующей ноды появятся записи:
[error] 28808#28808: *3 Nemesida WAF: the request 47ee09c37fd353ce359caad7a2d34cd0 contains rule ID 51 in zone URL and will be sent to Nemesida AI MLA, client: 192.168.173.2, server: example.com, request: "GET /q=j%26Tab;avascript:a%26Tab;lert() HTTP/1.1", host: "example.com" [error] 28808#28808: Nemesida WAF: unable to connect to Nemesida AI MLA while processing request 47ee09c37fd353ce359caad7a2d34cd0 (The target address was not listening for connections or refused the connection request) [error] 28808#28808: *3 Nemesida WAF: the request 47ee09c37fd353ce359caad7a2d34cd0 has been blocked because timeout occurred while waiting response from Nemesida AI MLA, client: 192.168.173.2, server: example.com, request: "GET /q=j%26Tab;avascript:a%26Tab;lert() HTTP/1.1", host: "example.com"
2. В Личном кабинете появится запись о блокировке с типом Internal error
вида:
Причины:
- недоступен компонент Nemesida AI MLA. Проверить состояние сервиса:
# service mla_main status
Решение: Проверьте статус сервиса Nemesida AI MLA, перезапустите его, и убедитесь, что в логе
/var/log/nwaf/mla.log
отсутствуют ошибки. - отсутствует доступ для обращений к сервисам внутри локального хоста (
localhost
) на сервере фильтрующей ноды.
Решение: Предоставьте соответствующие доступы.
Ошибка в работе компонента
В отличие от предыдущего сценария, ошибка может возникать даже при доступном компоненте, куда передается запрос на дополнительный анализ. Признаки блокировки будут проявляться следующим образом:
1. В логе фильтрующей ноды появятся записи:
[error] 28808#28808: *3 Nemesida WAF: the request 47ee09c37fd353ce359caad7a2d34cd0 contains rule ID 51 in zone URL and will be sent to Nemesida AI MLA, client: 192.168.173.2, server: example.com, request: "GET /q=j%26Tab;avascript:a%26Tab;lert() HTTP/1.1", host: "example.com" [error] 28808#28808: Nemesida WAF: unable to connect to Nemesida AI MLA while processing request 47ee09c37fd353ce359caad7a2d34cd0 (The target address was not listening for connections or refused the connection request) [error] 4012815#4012815: *4080454 Nemesida WAF: the response code 4 (error) received from Nemesida AI MLA during processing the request 47ee09c37fd353ce359caad7a2d34cd0, request blocked, client: 192.168.173.2, server: example.com, request: "GET /q=j%26Tab;avascript:a%26Tab;lert() HTTP/1.1", host: "example.com"
2. В логе Nemesida AI MLA /var/log/nwaf/mla.log
появятся записи вида:
ERROR ML: a timeout occurred while processing request 47ee09c37fd353ce359caad7a2d34cd0 (example.com) by behavioral model
3. В Личном кабинете появится соответствующая запись о блокировке с типом Internal error
.
Решение:
В некоторых случаях проблема может возникать из-за запросов, передающих в теле запроса бинарное содержимое. Для обработки подобных запросов требуется некоторое количество аппаратных ресурсов и времени, что помимо блокировок запросов типа Internal error
, может замедлить работу как фильтрующей ноды, так и защищаемых веб-приложений, трафик которых проксируется через нее. Если функционал веб-приложения поддерживает передачу файлов, то в качестве возможного решения проблемы необходимо в Личном кабинете применить параметры, исключающие проверку содержимого тела запроса, активировав опцию:
В некоторых случаях фильтрующая нода также может потреблять повышенное количество аппаратных ресурсов (в частности, ОЗУ сервера) из-за обработки большого количества запросов, которые передаются на дополнительный анализ модулем машинного обучения, что также может приводить к ошибкам в работе компонента и блокировке запроса с типом Internal error
. Связано это с тем, что при сигнатурном анализе запроса дополнительно производится Base64-декодирование зон ARGS
, BODY
, URL
, HEADERS
, после которого обнаруживаются признаки атаки (сигнатуры), а запрос передается в модуль Nemesida AI MLA. В большинстве случаев для решения проблемы будет достаточно активировать в Личном кабинете параметр отключения декодирования соответствующей зоны:
В некоторых случаях ошибка может быть связана с ошибками самой поведенческой модели и необходимо выполнить ее переобучение:
- переведите режим обработки запросов модулем машинного обучения в режим мониторинга, активировав опцию Активация режима мониторинга анализа запросов, определенных модулем Nemesida AI MLA как нелегитимные (BT 3) в разделе управления настройками фильтрующей ноды в Личном кабинете:
- проанализируйте
error
-лог фильтрующей ноды (/var/log/nginx/error.log
) и выявите те запросы, которые были отправлены на дополнительный анализ в модуль машинного обучения. Запросы будут отправляться на дополнительный анализ модулем машинного обучения при выявлении в запросе сигнатур, сумма «веса» которых будет>=
значенияmla_score
в файле конфигурации/etc/nginx/nwaf/conf/global/nwaf.conf
(по умолчанию,2
). Отправка запроса на дополнительный анализ будет сопровождаться сообщением в логе.Пример:
2023/11/27 17:50:59 [error] 4292#4292: *466 Nemesida WAF: the request b3270f75de9c6a381fb645bd46f0d772 contains rule ID 1039 in zone BODY and will be sent to Nemesida AI MLA, client: 1.1.1.1, server: , request: "POST /admin/uploads.php HTTP/1.1", host: "example.com"
- составьте правило исключения сигнатуры (или несколько правил), выбрав в качестве зоны срабатывания правила
NoMLA
:Зона
NoMLA
исключает отправку запроса в модуль машинного обучения при срабатывании сигнатуры. - деактивируйте ранее активированную опцию Активация режима мониторинга анализа запросов, определенных модулем Nemesida AI MLA как нелегитимные (BT 3).
- запустите переобучение поведенческой модели, если после добавления правил исключения блокировки прекратились. В противном случае добавляйте правила исключения до тех пор, пока блокировки легитимных запросов не прекратятся.
- после завершения обучения отключите ранее созданные правила исключения для проверки, что проблема решена.