收集 Cloudflare Page Shield 日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何使用 Amazon S3 将 Cloudflare Page Shield 日志提取到 Google Security Operations。
Page Shield 可帮助管理网站访问者加载的资源(包括脚本、连接和 Cookie),并在资源发生更改或被视为恶意资源时触发提醒通知。
准备工作
- Google SecOps 实例
- 已启用 Page Shield 的 Cloudflare 账号
- 对 Cloudflare 信息中心的特权访问权限
- 对 AWS (S3、IAM) 的特权访问权限
此选项使用 Cloudflare Logpush 将 Page Shield 事件导出到 Amazon S3,然后 Google SecOps 会提取这些事件。
启用 Page Shield
- 登录 Cloudflare 控制面板。
- 选择您的账号和网域。
- 依次前往安全性> Page Shield。
- 点击启用 Page Shield。
创建 Amazon S3 存储分区
- 打开 Amazon S3 控制台。
- 点击创建存储桶。
- 提供以下配置详细信息:
- 存储分区名称:为存储分区输入一个有意义的名称(例如
cloudflare-pageshield-logs)。 - 区域:选择您的首选 AWS 区域(例如
us-east-1)。
- 存储分区名称:为存储分区输入一个有意义的名称(例如
- 点击创建。
- 保存相应存储分区名称和区域,以供日后参考。
创建具有 S3 访问权限的 IAM 用户
- 打开 IAM 控制台。
- 依次点击“用户”图标 >“添加用户”。
- 输入用户名(例如
chronicle-s3-user)。 - 选择以编程方式访问。
- 点击 Next: Permissions。
- 选择 Attach existing policies directly。
- 搜索并选择 AmazonS3FullAccess 政策。
- 点击 Next: Tags。
- 点击下一步:检查。
- 点击创建用户。
- 点击下载 .csv 文件以保存访问密钥 ID 和私有访问密钥。
为 Cloudflare 配置 S3 存储分区政策
- 在 Amazon S3 控制台中,选择您的存储桶。
- 依次点击权限 > 存储分区政策。
- 点击修改。
粘贴以下政策,并将
<BUCKET_NAME>替换为您的存储分区名称:{ "Id": "Policy1506627184792", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1506627150918", "Action": ["s3:PutObject"], "Effect": "Allow", "Resource": "arn:aws:s3:::<BUCKET_NAME>/*", "Principal": { "AWS": ["arn:aws:iam::391854517948:user/cloudflare-logpush"] } } ] }点击保存更改。
创建 Cloudflare Logpush 作业
- 登录 Cloudflare 控制面板。
- 选择您的账号和网域。
- 前往分析和日志 > 日志。
- 点击创建 Logpush 作业。
- 在选择目标位置中,选择 Amazon S3。
- 输入以下目的地信息:
- 存储分区名称:输入您的 S3 存储分区名称(例如
cloudflare-pageshield-logs)。 - 存储分区区域:选择与您的 S3 存储分区匹配的区域。
- 存储分区路径(可选):输入路径前缀(例如
pageshield/)。
- 存储分区名称:输入您的 S3 存储分区名称(例如
- 点击继续。
- 为证明您是域名所有者,Cloudflare 会向您指定的目标位置发送一个文件。如需查找令牌,请在所有权验证文件的“概览”标签页中选择“打开”按钮,然后将其粘贴到 Cloudflare 信息中心,以验证您对相应存储分区的访问权限。输入所有权令牌,然后选择“继续”。
- 在选择数据集中,选择 Page Shield 事件。
- 点击下一步。
- 配置您的 logpush 作业:
- 作业名称:输入一个描述性名称(例如
pageshield-to-s3)。 - 如果日志匹配:留空可包含所有事件,也可根据需要配置过滤条件。
- 发送以下字段:选择所有字段或选择特定字段。
- 作业名称:输入一个描述性名称(例如
- 点击提交。
在 Google SecOps 中配置 Feed 以提取 Page Shield 日志
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在Feed 名称字段中,输入 Feed 的名称(例如
Cloudflare Page Shield S3)。 - 选择 Amazon S3 V2 作为来源类型。
- 选择 Cloudflare Page Shield 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
S3 URI:输入存储分区 URI,格式为:
s3://<BUCKET_NAME>/<BUCKET_PATH>/来源删除选项:根据您的偏好选择删除选项:
- 永不:永不删除转移后的任何文件。
- 删除已转移的文件:在成功转移后删除文件。
- 删除已转移的文件和空目录:在成功转移后删除文件和空目录。
文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。
访问密钥 ID:有权访问 S3 存储桶的用户访问密钥。
私有访问密钥:有权访问 S3 存储分区的用户私有密钥。
资产命名空间:资产命名空间。
注入标签:要应用于此 Feed 中事件的标签。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| URLContainsCDNCGIPath | event.idm.read_only_udm.additional.fields.CGI_label | 从 网址ContainsCDNCGIPath 中获取的值,在键为“CGI”的标签中设置为 string_value |
| 操作 | event.idm.read_only_udm.additional.fields.action_label | 从操作中获取的值,在键为“action”的标签中设置为 string_value |
| resource.first_page_url | event.idm.read_only_udm.additional.fields.first_page_label | 从 resource.first_page_url 中获取的值,在键为“first_page_url”的标签中设置为 string_value |
| resource.last_page_url | event.idm.read_only_udm.additional.fields.last_page_label | 从 resource.last_page_url 中获取的值,在键为“last_page_url”的标签中设置为 string_value |
| name | event.idm.read_only_udm.additional.fields.name_label | 从名称中获取的值,在键为“name”的标签中设置为 string_value |
| ts | event.idm.read_only_udm.metadata.event_timestamp | 从 ts (UNIX) 转换为时间戳 |
| event.idm.read_only_udm.metadata.event_type | 根据 has_principal、has_target、has_target_user 派生:如果同时存在主账号和目标,则为 NETWORK_CONNECTION;如果存在 target_user,则为 USER_UNCATEGORIZED;如果存在主账号,则为 STATUS_UPDATE;否则为 GENERIC_EVENT | |
| resource.url | event.idm.read_only_udm.network.http.referral_url | 从 resource.url 中获取的值 |
| 主机 | event.idm.read_only_udm.principal.asset.hostname | 从 Host 或 host.hostname 中获取的值 |
| 主机 | event.idm.read_only_udm.principal.hostname | 从 Host 或 host.hostname 中获取的值 |
| alert_type | event.idm.read_only_udm.principal.resource.attribute.labels.alert_type_label | 从 alert_type 中获取的值,设置为键为“alert_type”的标签中的值 |
| resource.cryptomining_score | event.idm.read_only_udm.principal.resource.attribute.labels.crypto_label | 从 resource.cryptomining_score 中获取的值,设置为键为“cryptominingscore%{index2}”的标签中的值 |
| resource.dataflow_score | event.idm.read_only_udm.principal.resource.attribute.labels.dataflow_label | 从 resource.dataflow_score 中获取的值,设置为键为“dataflowscore%{index2}”的标签中的值 |
| policie.description | event.idm.read_only_udm.principal.resource.attribute.labels.desc_label | 从 policie.description 中获取的值,设置为键为“description_%{index}”的标签中的值 |
| version.fetched_at | event.idm.read_only_udm.principal.resource.attribute.labels.fetched_at_label | 从 version.fetched_at 中获取值,并将其设置为键为“fetchedat%{index2}”的标签中的值 |
| version.hash | event.idm.read_only_udm.principal.resource.attribute.labels.hash_label | 从 version.hash 中获取的值,设置为键为“hash_%{index2}”的标签中的值 |
| policie.id | event.idm.read_only_udm.principal.resource.attribute.labels.id_label | 从 policie.id 中获取的值,设置为键为“policyid%{index}”的标签中的值 |
| data.options.remove_dashboard_links | event.idm.read_only_udm.principal.resource.attribute.labels.remove_dash_label | 值取自 data.options.remove_dashboard_links,设置为键为“remove_dashboard_links”的标签中的值 |
| resource.resource_type | event.idm.read_only_udm.principal.resource.attribute.labels.res_type_label | 从 resource.resource_type 中获取的值,设置为键为“resourcetype%{index2}”的标签中的值 |
| data.type | event.idm.read_only_udm.principal.resource.attribute.labels.type_label | 从 data.type 中获取的值,设置为键为“type”的标签中的值 |
| data.zones | event.idm.read_only_udm.principal.resource.attribute.labels.zones_label | 从 data.zones 中获取的值,设置为键为“zones”的标签中的值 |
| resource.id | event.idm.read_only_udm.principal.resource.id | 从 resource.id 中获取的值 |
| PageURL | event.idm.read_only_udm.principal.url | 从 Page网址 中获取的值 |
| account_id | event.idm.read_only_udm.principal.user.product_object_id | 从 account_id 中提取的值 |
| policy_id | event.idm.read_only_udm.security_result.detection_fields.policy_id_label | 从 policy_id 中获取的值,设置为键为“policy_id”的标签中的值 |
| policy_name | event.idm.read_only_udm.security_result.detection_fields.policy_name_label | 从 policy_name 中获取的值,设置为键为“policy_name”的标签中的值 |
| text | event.idm.read_only_udm.security_result.description | 从文本中提取的值 |
| resource.first_seen_at | event.idm.read_only_udm.security_result.first_discovered_time | 从 resource.first_seen_at 转换为 ISO8601 时间戳 |
| PolicyID | event.idm.read_only_udm.security_result.rule_name | 从 PolicyID 中获取的值 |
| data.severity | event.idm.read_only_udm.security_result.severity | 派生自 data.severity:如果为“INFO”,则为“INFORMATIONAL”;如果为“WARN”,则为“MEDIUM”;否则为“UNKNOWN_SEVERITY” |
| 网址 | event.idm.read_only_udm.target.url | 从网址中获取的值 |
| URLHost | event.idm.read_only_udm.target.user.email_addresses | 如果与电子邮件格式匹配,则取自 网址Host 的值 |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。