您可以通过向作业添加 Firewall Events 数据集中的 General > Metadata 字段,将加密的匹配载荷包含在 Logpush 作业中。
载荷以其加密形式位于 Metadata 字段的 encrypted_matched_data 属性 中。
不过,您可能希望在将日志存入所选 SIEM 系统 之前先解密匹配载荷。Cloudflare 在 GitHub 上提供了一个示例 Worker 项目 ↗,可完成以下操作:
- 作为兼容 S3 的存储接收来自 Logpush 的日志。这些日志将包含加密的匹配载荷数据。
- 使用您的私钥解密匹配载荷数据。
- 将包含已解密载荷数据的日志发送到最终的日志存储系统。
您需要对示例项目进行一些修改,才能将包含已解密载荷数据的日志推送到您的日志存储系统。
更多关于配置与部署此 Worker 项目的信息,请参阅该 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>"
}
}