Работа с логами WAF‑ноды¶
Расположение лог‑файлов WAF‑ноды¶
WAF‑нода хранит следующие лог‑файлы в директории /var/log/wallarm
:
-
brute-detect.log
иsync-brute-clusters.log
: логи получения данных по счетчикам bruteforce-атак в кластере WAF‑нод. -
export-attacks.log
: лог экспорта информации об атаках из модуля постаналитики в облако Вебмониторэкс. -
export-clusterization-data.log
: лог выгрузки данных кластера WAF‑нод. -
export-counters.log
: лог выгрузки данных счетчиков (см. «Мониторинг WAF‑ноды»). -
syncnode.log
: лог синхронизации WAF‑ноды с облаком Вебмониторэкс (включая получение файлов ЛОМ иproton.db
из облака). -
tarantool.log
: лог работы модуля постаналитики.
Настройка расширенного логирования для WAF‑ноды на основе NGINX¶
NGINX записывает логи обработанных запросов (англ. «access logs») в отдельный лог‑файл.
По умолчанию NGINX использует предопределенный формат логирования combined
:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $request_id $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" ';
Вы можете определить и использовать собственный формат логирования, включив в него одну или несколько переменных WAF‑ноды (а также другие переменные NGINX, если это необходимо). Это позволит проводить более быструю диагностику состояния WAF‑ноды, основываясь на содержимом лог‑файла NGINX.
Переменные WAF‑ноды¶
При определении формата логирования NGINX могут быть использованы следующие переменные WAF‑ноды:
Имя | Тип | Значение |
---|---|---|
request_id | Строка | Идентификатор запроса Имеет значение вида a79199bcea606040cc79f913325401fb |
wallarm_request_time | Число с плавающей точкой | Время выполнения запроса в секундах |
wallarm_serialized_size | Целое число | Размер сериализованного запроса в байтах |
wallarm_is_input_valid | Целое число | Валидность запроса0 : запрос валиден. Запрос проверен WAF‑нодой и соответствует правилам ЛОМ.1 : запрос невалиден. Запрос проверен WAF‑нодой и не соответствует правилам ЛОМ. |
wallarm_attack_type_list | Строка | Типы атак, обнаруженных в запросе с помощью библиотеки libproton. Типы представлены в текстовом формате:
| . Например: если в запросе обнаружены атаки типа XSS и SQLi, значение переменной равно xss|sqli . |
wallarm_attack_type | Целое число | Типы атак, обнаруженных в запросе с помощью библиотеки libproton. Типы представлены в виде битовой строки:
6 . |
Пример настройки¶
Пусть необходимо задать расширенный формат логирования с именем wallarm_combined
, включающий в себя:
-
все переменные, используемые в формате
combined
; -
все переменные WAF‑ноды.
Чтобы это сделать, выполните следующие действия:
-
Добавьте в блок
http
файла конфигурации NGINX следующие строки, описывающие формат логирования:log_format wallarm_combined '$remote_addr - $remote_user [$time_local] ' '"$request" $request_id $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' '$wallarm_request_time $wallarm_serialized_size $wallarm_is_input_valid $wallarm_attack_type $wallarm_attack_type_list';
-
Включите логирование в расширенном формате, добавив в тот же блок директиву:
access_log /var/log/nginx/access.log wallarm_combined;
Логи обработанных запросов будут записываться в формате
wallarm_combined
в файл/var/log/nginx/access.log
.Логирование по условию
При использовании директивы, приведенной выше, в лог‑файл попадут данные по всем обработанным запросам. В том числе данные, которые не относятся к какой-либо атаке.
Вы можете настроить логирование по условию, чтобы в лог‑файл попадала информация только по тем запросам, которые относятся к атаке (т.е. по запросам, для которых значение
wallarm_attack_type
не равно нулю). Для этого добавьте к директиве следующее условие:`access_log /var/log/nginx/access.log wallarm_combined if=$wallarm_attack_type;`
Это может быть полезно для сокращения объема лог‑файла и для интеграции WAF‑ноды с SIEM‑системами.
-
Перезапустите NGINX, выполнив одну из следующих команд в зависимости от используемой операционной системы:
sudo systemctl restart nginx
sudo service nginx restart
sudo systemctl restart nginx
Дополнительная информация
Подробная информация о настройке логирования в NGINX доступна здесь.