← Документация WAF / managed-rules / payload-logging
Сохранение расшифрованных совпавших payload в журналах
Вы можете включить зашифрованный совпавший payload в ваши Logpush, добавив Общее > Метаданные из набора данных Firewall Events в ваше задание.
Payload в зашифрованном виде доступен в поле encrypted_matched_data (свойство) Metadata .
Однако вы можете захотеть расшифровать совпавший payload перед сохранением логов в вашем SIEM-система по вашему выбору. Cloudflare предоставляет пример проекта Worker ↗ на GitHub, который делает следующее:
- Ведёт себя как S3-совместимое хранилище для приёма логов из Logpush. Эти логи будут содержать зашифрованные данные совпавших payload.
- Расшифровывает данные совпавшего payload с помощью вашего приватного ключа.
- Отправляет журналы в конечную систему хранения журналов с расшифрованными данными payload.
Вам придётся внести некоторые изменения в пример проекта, чтобы отправлять логи с расшифрованными данными payload в вашу систему хранения логов.
Обратитесь к файлу проекта Worker README ↗ для получения дополнительной информации о настройке и развёртывании этого проекта Worker.
Структура encrypted_matched_data в Logpush
Информация о совпавшем payload включает конкретную строку, вызвавшую срабатывание правила, а также небольшой фрагмент текста непосредственно до и после совпавшей строки.
После расшифровки его значения encrypted_matched_data объекта Metadata в Logpush имеет структуру, подобную следующей:
{
// for fields with only one match (such as URI or user agent fields):
"<match_location>": {
"before": "<text_before_match>",
"content": "<matched_text>",
"after": "<text_after_match>"
},
// for fields with possible multiple matches (such as form, header, or body fields):
"<match_location>": [
{
"before": "<text_before_match_1>",
"content": "<matched_text_1>",
"after": "<text_after_match_1>"
},
{
"before": "<text_before_match_2>",
"content": "<matched_text_2>",
"after": "<text_after_match_2>"
}
]
} before и after свойства необязательны (содержимого до/после совпавшего текста может не быть) и содержат не более 15 байт содержимого до и после совпадения.
Ниже приведено несколько примеров совпадений payload:
{
"http.request.uri": {
"before": "/admin",
"content": "/.git/",
"after": "config"
}
}{
"http.request.headers.values[3]": [
{ "content": "phar://", "after": "example" }
]
}{
"http.request.body.raw": {
"before": "NY>",
"content": "<!ENTITY xxe SYSTEM \"file:///dev/random\">] > ",
"after": "<foo>&xxe;</foo>"
}
}