В данном разделе формализуются состав, типы и семантика полей событий WAF для передачи по syslog и последующей интеграции с Вашими SIEM/SOAR и хранилищами логов. События описываются единым JSON‑объектом в кодировке UTF‑8; тип события определяется полем type; поля с неизвестными значениями опускаются; метки времени имеют формат ISO‑8601 в UTC с суффиксом Z. Эти требования обеспечивают детерминированный парсинг и корректную корреляцию на стороне принимающей системы.
Вы можете настроить приём сообщений syslog от сервиса WAF и выполнить маппинг полей в Вашей SIEM, руководствуясь нижеприведённой спецификацией. Для первичной валидации корректности парсинга целесообразно включить журналирование на тестовой витрине и сопоставить извлекаемые поля type, event_time, action, rule_ids, client_ip, domain, uri, status. (СКРИНШОТ)
Ключевые положения формата
- Каждое событие — ровно один JSON‑объект в UTF‑8.
- Для различения типов событий используется поле
type. - Поля с неизвестными значениями опускаются,
nullне передаётся. - Метки времени — ISO‑8601 UTC с суффиксом
Z(например,2025-09-15T12:34:56Z).
Транспорт и кадрирование
- UDP (RFC 5426): передаётся один JSON‑объект целиком; возможна фрагментация/усечение при больших размерах.
- TCP (RFC 6587, octet‑counted): кадрирование в виде
"<длина> <JSON>". - TLS (RFC 5425): идентично TCP, но по защищённому каналу; рекомендуется для продакшн‑интеграций.
- Ретраи при сетевых ошибках отсутствуют; доставка best‑effort.
Общая «обёртка» сообщения:
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
type |
string | да | Вид события. Возможные значения: "access", "audit". |
event_time |
string | да | Время события в формате ISO‑8601 (UTC), например 2025-09-15T12:34:56Z. |
Формат type: "access" (журнал запросов):
Назначение: краткая телеметрия HTTP‑запросов и ответов.
| Поле | Тип | Обяз. | Пример | Описание |
|---|---|---|---|---|
website_uuid |
string | да | "0f3c4f9e-3a7b-4c9b-9c63-9a2c0c9dc2d1" |
Идентификатор сайта/приложения (UUID). |
domain |
string | нет | "example.com" |
Хост из запроса. |
client_ip |
string | нет | "203.0.113.7" |
IP клиента. |
scheme |
string | нет | "https" |
Протокол прикладного уровня: http/https (эвристика). |
uri |
string | да | "/products/42" |
Путь без query‑строки. |
status |
number | нет | 200 |
HTTP‑код ответа. |
bytes_sent |
number | нет | 12345 |
Объём ответа в байтах. |
country |
string | нет | "US" |
ISO‑3166‑1 alpha‑2, если определена страна клиента. |
user_agent |
string | нет | "Mozilla/5.0 …" |
User‑Agent запроса. |
referer |
string | нет | "https://ref.example/" |
Referer без query (может отсутствовать). |
Пример события access:
{
"type": "access",
"event_time": "2025-09-15T12:34:56Z",
"website_uuid": "0f3c4f9e-3a7b-4c9b-9c63-9a2c0c9dc2d1",
"domain": "example.com",
"client_ip": "203.0.113.7",
"scheme": "https",
"uri": "/products/42",
"status": 200,
"bytes_sent": 12345,
"country": "US",
"user_agent": "Mozilla/5.0",
"referer": "https://ref.example/"
}
Гарантии и поведение для access:
uriвсегда без query‑строки.- При большом размере события могут быть опущены факультативные поля (например,
user_agent). - Отсутствующие/невычислимые поля опускаются.
Формат type: "audit" (события безопасности):
Назначение: фиксация срабатывания правил/политик и итогового действия по запросу.
| Поле | Тип | Обяз. | Пример | Описание |
|---|---|---|---|---|
website_uuid |
string | да | "0f3c4f9e-…" |
Идентификатор сайта (UUID). |
server_id |
string | да | "7b1b2c3d-…" или 40/32‑hex |
Идентификатор узла; допускается UUID или стабильный хеш. |
unique_id |
string | да | "1700000000:abc123" |
Уникальный ID события в пределах узла. |
user_id |
number | нет | 42 |
Внутренний ID владельца/аккаунта, если известен. |
domain |
string | нет | "example.com" |
Хост из запроса. |
client_ip |
string | нет | "203.0.113.7" |
IP клиента. |
host_port |
number | нет | 443 |
Порт виртуального хоста, если определён. |
country |
string | нет | "US" |
Код страны клиента в ISO‑3166‑1 alpha‑2. |
method |
string | нет | "GET" |
Метод HTTP‑запроса. |
http_version |
string | нет | "1.1" |
Версия HTTP. |
protocol |
string | нет | "https" |
Прикладной протокол http/https, если известен. |
uri |
string | нет | "/login" |
Путь без query‑строки. |
status |
number | нет | 403 |
Итоговый HTTP‑код ответа. |
request |
string | нет | "GET /login HTTP/1.1\r\nHost:…" |
Сырой запрос: старт‑строка, заголовки и тело; значение усечено до 10 000 символов; служебные/чувствительные заголовки удаляются. |
messages |
array | нет | см. ниже | Перечень сработок правил в компактной форме. |
rule_ids |
array | нет | [942100, 941100] |
Идентификаторы сработавших правил (числовые). |
custom_rule_uuids |
array | нет | ["c1b2…-…"] |
UUID пользовательских правил. |
action |
string | да | "BLOCK" | "MONITORING" |
Итог по событию безопасности. |
Структура элементов messages:
{
"message": "…краткое пояснение…",
"details": {
"ruleId": 941100, // число или null для кастомного правила
"reference": "…опционально…", // может отсутствовать
"ruleCustomUuid": "…uuid…" // присутствует только у кастомного правила
}
}
Пример события audit:
{
"type": "audit",
"event_time": "2025-09-15T12:34:56Z",
"website_uuid": "0f3c4f9e-3a7b-4c9b-9c63-9a2c0c9dc2d1",
"server_id": "7b1b2c3d-4e5f-6789-aaaa-bbbbccccdddd",
"unique_id": "1700000000:abc123",
"domain": "example.com",
"client_ip": "203.0.113.7",
"protocol": "https",
"uri": "/login",
"status": 403,
"country": "US",
"messages": [
{
"message": "SQLi pattern detected",
"details": { "ruleId": 942100, "reference": "ARGS:q", "ruleCustomUuid": null }
}
],
"rule_ids": [942100],
"custom_rule_uuids": [],
"action": "BLOCK"
}
Гарантии и поведение для audit:
actionпринимает одно из значений:BLOCK(запрос отклонён) илиMONITORING(запрос пропущен, событие зафиксировано).requestограничен по длине и предварительно фильтруется от служебных/вспомогательных заголовков.rule_idsиcustom_rule_uuidsсодержат уникальные значения.
Данный раздел фиксирует единый формат событий WAF в syslog: один JSON‑объект на событие, строгая типизация через type, временные метки в ISO‑8601 UTC, отсутствие передач null, а также поддерживаемые транспорты и особенности доставок. Для обеспечения корректной аналитики в Ваших системах рекомендуется ориентироваться на приведённые схемы полей, примеры и поведенческие гарантии по каждому типу события.