Firewall Events データセットの General > Metadata フィールドをジョブに追加すると、Logpush ジョブに暗号化された一致ペイロードを含められます。
暗号化されたペイロードは、Metadata フィールドの encrypted_matched_data プロパティ で利用できます。
ただし、任意の SIEM システム にログを保存する前に、一致ペイロードを復号したい場合があります。Cloudflare は、次の処理を行う サンプル Worker プロジェクト ↗ を GitHub で提供しています。
- Logpush からログを受け取る、S3 互換ストレージとして動作します。これらのログには、暗号化された一致ペイロードデータが含まれます。
- 秘密鍵を使って一致ペイロードデータを復号します。
- 復号済みペイロードデータを含むログを、最終的なログ保存システムへ送信します。
復号済みペイロードデータを含むログをログ保存システムへ送るには、サンプルプロジェクトに変更を加える必要があります。
この Worker プロジェクトの設定とデプロイについては、プロジェクトの README ↗ を参照してください。
一致ペイロードの情報には、ルールをトリガーした特定の文字列と、その前後に続くテキストが含まれます。
値を復号すると、Logpush の Metadata フィールドにある encrypted_matched_data プロパティは、次のような構造になります。
{
// 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 バイトです。
ペイロード一致の例をいくつか示します。
{
"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>"
}
}