← Dokumentace WAF / managed-rules / payload-logging
Ukládání dešifrovaných zachycených payloadů do logů
Šifrovaný odpovídající payload můžete zahrnout do Logpush úlohy přidáním Obecné > Metadata pole z datasetu Firewall Events do své úlohy.
Payload je v šifrované podobě dostupný v encrypted_matched_data vlastnost Metadata pole.
Odpovídající payload však můžete chtít dešifrovat před uložením logů do svého systém SIEM dle vlastního výběru. Cloudflare poskytuje ukázkový projekt Workeru ↗ na GitHubu, který dělá následující:
- Chová se jako S3-kompatibilní úložiště pro příjem logů z Logpush. Tyto logy budou obsahovat šifrovaná data zachycených payloadů.
- Dešifruje data zachyceného payloadu pomocí vašeho privátního klíče.
- Odešle logy do cílového úložiště logů s dešifrovanými daty payloadů.
V ukázkovém projektu budete muset provést několik změn, abyste logy obsahující dešifrovaná data payloadu odesílali do svého systému pro ukládání logů.
Podívejte se v projektu Worker na README ↗ pro více informací o konfiguraci a nasazení tohoto Worker projektu.
Struktura encrypted_matched_data vlastnost v Logpush
Informace o zachyceném payloadu zahrnují konkrétní řetězec, který pravidlo aktivoval, spolu s textem bezprostředně před a za zachyceným řetězcem.
Jakmile dešifrujete jeho hodnotu, encrypted_matched_data vlastnost Metadata pole v Logpush má strukturu podobnou následující:
{
// 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>"
}
]
}The before a after vlastnosti jsou volitelné (před/za zachyceným textem nemusí být žádný obsah) a budou obsahovat nejvýše 15 bajtů obsahu před a za shodou.
Níže je několik příkladů shod payloadu:
{
"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>"
}
}