收集 Cloudflare WAF 日志
解析器版本: 6.0
支持的平台:
Google SecOps
SIEM
此解析器从 Cloudflare Web 应用防火墙 (WAF) JSON 日志中提取字段,对其进行转换并将其映射到 Unified Data Model (UDM)。它会处理各种 Cloudflare 操作,使用元数据和网络信息丰富数据,然后将输出内容整理为 UDM 格式。
准备工作
确保您满足以下前提条件:
- Google SecOps 实例。
- 对具有特权访问权限 Google Cloud。
- Cloudflare 企业版方案。
- 对 Cloudflare 具有特权访问权限。如需了解详情,请参阅 Cloudflare。
创建 Google Cloud 存储分区
- 登录 Google Cloud 控制台。
进入 Cloud Storage 存储分区 页面。
点击创建 。
配置存储桶:
- 名称:输入符合存储桶名称要求的唯一名称(例如 cloudflare-waf )。
- 选择存储数据的位置:选择一个位置。
- 选择数据的存储类别:为存储桶选择默认存储类别,或者选择Autoclass进行自动存储类别管理。
- 选择如何控制对象的访问权限:选择不强制执行禁止公开访问,然后为存储桶对象选择访问权限控制模型。
- 存储类别:根据您的需求进行选择(例如标准)。
点击创建 。
向 Cloudflare IAM 用户授予存储桶权限
- 在 Google Cloud中,依次前往存储 > 浏览器 > 存储分区 > 权限 。
- 添加具有 Storage Object Admin 权限的帐号 logpush@cloudflare-data。iam.gserviceaccount.com
使用 Cloudflare 界面为 WAF 日志创建 Logpush 作业
- 登录 Cloudflare。
- 依次前往 Analytics 和日志 > Logpush。
- 选择创建 Logpush 作业 。
- 在选择目标位置 中,选择Google Cloud 存储 。
- 输入以下目标位置详细信息:
- 存储桶: Google Cloud 存储桶名称
- 路径:存储容器中的存储分区位置
- 选择将日志整理到每日子文件夹中
- 点击继续 。
- 选择要推送到存储空间的 Security (WAF) 数据集。
- 配置 Logpush 作业:
- 输入作业名称 。
- 在“如果日志匹配”下,您可以选择要在日志中包含或移除的事件。如需了解详情,请参阅过滤条件 。并非所有数据集都提供此选项。
- 在发送以下内容 字段中,您可以选择将所有日志推送到存储目标位置,也可以有选择地推送您想要推送的日志。
- 点击提交 。
设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed 。
- 在下一页上,点击配置单个 Feed 。
- 在 Feed 名称 字段中,输入 Feed 的名称(例如 Cloudflare WAF 日志 )。
- 选择 Google Cloud Storage V2 作为来源类型 。
- 选择 Cloudflare WAF 作为日志类型 。
- 点击获取服务账号 。
- 点击下一步 。
为以下输入参数指定值:
- 存储分区 URI:Cloud Storage 网址。
- 来源删除选项:根据您的偏好选择删除选项。
点击下一步 。
在最终确定 界面中查看新的 Feed 配置,然后点击提交 。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
Action |
security_result.action_details |
原始日志中的 Action 值会直接分配给此 UDM 字段。 |
Action |
security_result.action |
此字段的值派生自原始日志中的 Action 字段。 如果 Action 为“allow”,则 UDM 字段会设置为 ALLOW。如果 Action 为“challengeSolved”“jschallengeSolved”“managedchallengenoninteractivesolved”或“managedchallengeinteractivesolved”,则 UDM 字段会设置为 ALLOW_WITH_MODIFICATION。如果 Action 为“drop”“block”或“connectionclose”,则 UDM 字段会设置为 BLOCK。如果 Action 为“challengefailed”或“jschallengefailed”,则 UDM 字段会设置为 FAIL。否则,它会设置为 UNKNOWN_ACTION。 |
ClientASN |
network.asn |
原始日志中的 ClientASN 值在转换为字符串后会直接分配给此 UDM 字段。 |
ClientASNDescription |
additional.fields.key |
键会静态设置为“ClientASNDescription”。 |
ClientASNDescription |
additional.fields.value.string_value |
原始日志中的 ClientASNDescription 值会直接分配给此 UDM 字段。 |
ClientCountry |
principal.location.country_or_region |
原始日志中的 ClientCountry 值会直接分配给此 UDM 字段。 |
ClientIP |
principal.ip |
原始日志中的 ClientIP 值会直接分配给此 UDM 字段。 |
ClientRefererHost |
intermediary.hostname |
原始日志中的 ClientRefererHost 值会直接分配给此 UDM 字段。 |
ClientRefererPath |
network.http.referral_url |
原始日志中的 ClientRefererPath 值会直接分配给此 UDM 字段。 |
ClientRequestHost |
target.hostname |
原始日志中的 ClientRequestHost 值会直接分配给此 UDM 字段。 |
ClientRequestMethod |
network.http.method |
原始日志中的 ClientRequestMethod 值会直接分配给此 UDM 字段。 |
ClientRequestPath |
target.file.full_path |
原始日志中的 ClientRequestPath 值会直接分配给此 UDM 字段。 |
ClientRequestProtocol |
network.application_protocol |
使用 grok 提取 ClientRequestProtocol 的协议部分(例如“HTTP/1.1”中的“HTTP”),将其转换为大写,然后分配给此 UDM 字段。 |
ClientRequestUserAgent |
network.http.user_agent |
原始日志中的 ClientRequestUserAgent 值会直接分配给此 UDM 字段。 |
Datetime |
metadata.event_timestamp |
原始日志中的 Datetime 值会解析为 RFC 3339 时间戳,并分配给此 UDM 字段。 |
EdgeColoCode |
additional.fields.key |
键会静态设置为“EdgeColoCode”。 |
EdgeColoCode |
additional.fields.value.string_value |
原始日志中的 EdgeColoCode 值会直接分配给此 UDM 字段。 |
EdgeResponseStatus |
network.http.response_code |
原始日志中的 EdgeResponseStatus 值会直接分配给此 UDM 字段并转换为整数。 |
Kind |
metadata.product_event_type |
原始日志中的 Kind 值会直接分配给此 UDM 字段。 |
Metadata.filter |
target.resource.attribute.labels.value |
原始日志中的 Metadata.filter 值会分配给 target.resource.attribute.labels 内标签的 value 字段。此标签的 key 会静态设置为“Metadata filter”。 |
Metadata.type |
target.resource.attribute.labels.value |
原始日志中的 Metadata.type 值会分配给 target.resource.attribute.labels 内标签的 value 字段。此标签的 key 会静态设置为“Metadata type”。此字段的值派生自 ClientIP、ClientRequestHost 和 app_protocol 的存在情况和值。 如需了解具体逻辑,请参阅解析器代码。 静态设置为“Cloudflare”。静态设置为“Cloudflare log Aggregator”。静态设置为“CLOUDFLARE_WAF”。 |
RayID |
metadata.product_log_id |
原始日志中的 RayID 值会直接分配给此 UDM 字段。 |
RuleID |
security_result.rule_id |
原始日志中的 RuleID 值会直接分配给此 UDM 字段。 |
Source |
security_result.rule_name |
原始日志中的 Source 值会直接分配给此 UDM 字段。 |
timestamp |
metadata.event_timestamp、events.timestamp |
原始日志中的 timestamp 值会直接分配给这些 UDM 字段。 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。