收集 Cloudflare WAF 日志

解析器版本: 6.0

支持的平台:

此解析器从 Cloudflare Web 应用防火墙 (WAF) JSON 日志中提取字段,对其进行转换并将其映射到 Unified Data Model (UDM)。它会处理各种 Cloudflare 操作,使用元数据和网络信息丰富数据,然后将输出内容整理为 UDM 格式。

准备工作

确保您满足以下前提条件:

  • Google SecOps 实例。
  • 对具有特权访问权限 Google Cloud。
  • Cloudflare 企业版方案。
  • 对 Cloudflare 具有特权访问权限。如需了解详情,请参阅 Cloudflare

创建 Google Cloud 存储分区

  1. 登录 Google Cloud 控制台。
  2. 进入 Cloud Storage 存储分区 页面。

    进入“存储分区”

  3. 点击创建

  4. 配置存储桶:

    • 名称:输入符合存储桶名称要求的唯一名称(例如 cloudflare-waf )。
    • 选择存储数据的位置:选择一个位置。
    • 选择数据的存储类别:为存储桶选择默认存储类别,或者选择Autoclass进行自动存储类别管理。
    • 选择如何控制对象的访问权限:选择强制执行禁止公开访问,然后为存储桶对象选择访问权限控制模型
    • 存储类别:根据您的需求进行选择(例如标准)。
  5. 点击创建

向 Cloudflare IAM 用户授予存储桶权限

  1. 在 Google Cloud中,依次前往存储 > 浏览器 > 存储分区 > 权限
  2. 添加具有 Storage Object Admin 权限的帐号 logpush@cloudflare-data。iam.gserviceaccount.com

使用 Cloudflare 界面为 WAF 日志创建 Logpush 作业

  1. 登录 Cloudflare。
  2. 依次前往 Analytics 和日志 > Logpush
  3. 选择创建 Logpush 作业
  4. 选择目标位置 中,选择Google Cloud 存储
  5. 输入以下目标位置详细信息:
    • 存储桶: Google Cloud 存储桶名称
    • 路径:存储容器中的存储分区位置
    • 选择将日志整理到每日子文件夹中
  6. 点击继续
  1. 选择要推送到存储空间的 Security (WAF) 数据集。
  2. 配置 Logpush 作业:
    • 输入作业名称
    • 在“如果日志匹配”下,您可以选择要在日志中包含或移除的事件。如需了解详情,请参阅过滤条件 。并非所有数据集都提供此选项。
    • 发送以下内容 字段中,您可以选择将所有日志推送到存储目标位置,也可以有选择地推送您想要推送的日志。
  3. 点击提交

设置 Feed

如需配置 Feed,请按以下步骤操作:

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称 字段中,输入 Feed 的名称(例如 Cloudflare WAF 日志 )。
  5. 选择 Google Cloud Storage V2 作为来源类型
  6. 选择 Cloudflare WAF 作为日志类型
  7. 点击获取服务账号
  8. 点击下一步
  9. 为以下输入参数指定值:

    • 存储分区 URI:Cloud Storage 网址。
    • 来源删除选项:根据您的偏好选择删除选项。
  10. 点击下一步

  11. 最终确定 界面中查看新的 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”。此字段的值派生自 ClientIPClientRequestHostapp_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_timestampevents.timestamp 原始日志中的 timestamp 值会直接分配给这些 UDM 字段。

更新日志

查看此解析器的更新日志

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。