Перейти к содержанию

Работа с логами 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‑ноды»).

  • export-spots.log: лог выгрузки метрик запросов.

  • sync-markers.log: лог получения маркеров из облака Валарм.

  • 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 Целое число Типы атак, представленные в запросе в виде битовой строки
0x00000000: отсутствие атаки: "0"
0x00000001: флаг агрессивного режима: "1"
0x00000002: xss: "2"
0x00000004: sqli: "4"
0x00000008: rce: "8"
0x00000010: xxe: "16"
0x00000020: ptrav: "32"
0x00000040: crlf: "64"
0x00000080: redir: "128"
0x00000100: nosqli: "256"
0x00000200: infoleak: "512"
0x00001000: marker: "4096"
0x20000000: overlimit_res: "536870912"
0x40000000: zip_bomb: "1073741824"
0x80000000: vpatch: "2147483648"

Пример настройки

Пусть необходимо задать расширенный формат логирования с именем wallarm_combined, включающий в себя:

  • все переменные, используемые в формате combined;

  • все переменные WAF‑ноды.

Чтобы это сделать, выполните следующие действия:

  1. Добавьте в блок 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';
    
  2. Включите логирование в расширенном формате, добавив в тот же блок директиву:

    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‑системами.

  3. Перезапустите NGINX, выполнив одну из следующих команд в зависимости от используемой операционной системы:

    systemctl restart nginx
    
    systemctl restart nginx
    
    systemctl restart nginx
    
    service nginx restart
    
    service nginx restart
    
    service nginx restart
    
    service nginx restart
    
    systemctl restart nginx
    
    systemctl restart nginx
    

Дополнительная информация

Подробная информация о настройке логирования в NGINX доступна здесь.