收集 Cisco Umbrella 审核日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 AWS S3 存储桶将 Cisco Umbrella 审核日志收集到 Google Security Operations Feed 中。解析器会标准化原始 CSV 日志数据,处理不同的分隔符和潜在的格式不一致问题。然后,根据日志类型(DNS 或审核),将提取的字段映射到相应的 UDM 架构,通过添加更多上下文信息来丰富数据,并标准化表示形式以供进一步分析。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您拥有对 AWS IAM 和 S3 的特权访问权限。
- 确保您拥有对 Cisco Umbrella 的特权访问权限。
配置由 Cisco 管理的 Amazon S3 存储桶
- 登录 Cisco Umbrella 信息中心。
- 前往管理 > 日志管理。
- 选择 Use a Cisco-managed Amazon S3 bucket 选项。
- 提供以下配置详细信息:
- 选择区域:选择离您较近的区域,以缩短延迟时间。
- 选择保留时长:选择时间段。保留时长为 7 天、14 天或 30 天。在所选时间段过后,数据会被删除,且无法恢复。如果您的提取周期规律,请使用较短的时间段。您可以稍后更改保留时长。
- 点击保存。
- 点击继续以确认您的选择,并接收启用通知。
在随即显示的激活完成窗口中,系统会显示访问密钥和密钥值。 - 复制访问密钥和密钥值。如果您丢失了这些密钥,则必须重新生成它们。
- 依次点击知道了 > 继续。
- 系统会显示一个摘要页面,其中包含配置和存储桶名称。您可以根据组织的要求关闭或开启日志记录。不过,系统会根据保留时长清除日志,而不会考虑是否添加了新数据。
可选:为自行管理的 AWS S3 存储桶配置用户访问密钥
- 登录 AWS Management Console。
- 按照以下用户指南创建用户:创建 IAM 用户。
- 选择创建的用户。
- 选择安全凭据标签页。
- 在访问密钥部分中,点击创建访问密钥。
- 选择第三方服务作为使用情形。
- 点击下一步。
- 可选:添加说明标记。
- 点击创建访问密钥。
- 点击 Download CSV file(下载 CSV 文件),保存访问密钥和不公开的访问密钥以供日后使用。
- 点击完成。
- 选择权限标签页。
- 在权限政策部分中,点击添加权限。
- 选择添加权限。
- 选择直接附加政策。
- 搜索并选择 AmazonS3FullAccess 政策。
- 点击下一步。
- 点击添加权限。
可选:配置自行管理的 Amazon S3 存储桶
前往 S3。
点击创建存储分区。
提供以下配置详细信息:
- 存储桶名称:为 Amazon S3 存储桶提供名称。
- 区域:选择一个区域。
点击创建。
可选:为自行管理的 AWS S3 存储桶配置存储桶政策
- 点击新创建的存储桶以将其打开。
- 依次选择属性 > 权限。
- 在权限列表中,点击添加存储桶政策。
按如下方式输入预配置的存储桶政策:
{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*" }, { "Sid": "", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*"}, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::BUCKET_NAME" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BUCKET_NAME" } ] }
- 将
BUCKET_NAME
替换为您提供的 Amazon S3 存储桶名称。
- 将
点击保存。
可选:自行管理的 Amazon S3 存储桶需要进行验证
- 在 Cisco Umbrella 信息中心内,依次选择 Admin > Log management > Amazon S3。
- 在 Bucket name 字段中,指定确切的 Amazon S3 存储桶名称,然后点击 Verify。
- 在验证过程中,系统会将名为
README_FROM_UMBRELLA.txt
的文件从 Cisco Umbrella 上传到您的 Amazon S3 存储桶。您可能需要刷新浏览器才能在上传后看到 README 文件。 - 下载
README_FROM_UMBRELLA.txt
文件,然后使用文本编辑器打开该文件。 - 复制并保存文件中的唯一 Cisco Umbrella 令牌。
- 前往 Cisco Umbrella 信息中心。
- 在令牌编号字段中,指定令牌,然后点击保存。
- 如果验证成功,您的信息中心会显示一条确认消息,表明存储桶已成功通过验证。如果您收到一条错误消息,指出您的存储桶无法验证,请重新检查存储桶名称的语法并检查配置。
在 Google SecOps 中配置 Feed 以注入 Cisco Umbrella 审核日志
- 依次前往 SIEM 设置> Feed。
- 点击新增。
- 在 Feed 名称字段中,输入 Feed 的名称,例如 Cisco Umbrella 审核日志。
- 选择 Amazon S3 V2 作为来源类型。
- 选择 Cisco Umbrella 审核作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- S3 URI:存储桶 URI。
s3:/BUCKET_NAME
- 将
BUCKET_NAME
替换为存储桶的实际名称。
- 将
- 来源删除选项:根据您的偏好设置选择删除选项。
- S3 URI:存储桶 URI。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
action_type | security_result.action_details | 直接从原始日志字段 action_type 映射。 |
action_type | security_result.action | 如果 action_type 包含 allow (不区分大小写),则设置为 ALLOW 。如果 action_type 包含 block (不区分大小写),则设置为 BLOCK 。 |
additionalValue | additional.fields{}.key | 设置为 Additional Value 。 |
additionalValue | additional.fields{}.value.string_value | 直接从原始日志字段 additionalValue 映射。 |
blocked_categories | additional.fields{}.key | 设置为 blocked_categories 。 |
blocked_categories | additional.fields{}.value.string_value | 直接从原始日志字段 blocked_categories 映射。 |
categories | security_result.category_details | 直接从原始日志字段 categories 映射,并按逗号拆分。 |
第 1 列 | metadata.product_log_id | 如果日志是审核日志,则从原始日志字段 column1 映射。 |
第 1 列 | date_time | 如果日志是 DNS 日志,则从原始日志字段 column1 映射。 |
column10 | categories | 直接从原始日志字段 column10 映射。 |
column11 | most_granular_identity_type | 直接从原始日志字段 column11 映射。 |
column12 | identity_types | 直接从原始日志字段 column12 映射。 |
column13 | blocked_categories | 直接从原始日志字段 column13 映射。 |
第 2 列 | date_time | 如果日志是审核日志,则从原始日志字段 column2 映射。 |
第 2 列 | most_granular_identity | 如果日志是 DNS 日志,则从原始日志字段 column2 映射。 |
第 3 列 | principal.user.email_addresses | 如果日志是审核日志,则从原始日志字段 column3 映射。 |
第 3 列 | 身份 | 如果日志是 DNS 日志,则从原始日志字段 column3 映射。 |
column4 | principal.user.userid | 如果日志是审核日志,则从原始日志字段 column4 映射。 |
column4 | internal_ip | 如果日志是 DNS 日志,则从原始日志字段 column4 映射。 |
column5 | security_result.rule_name | 如果日志是审核日志,则从原始日志字段 column5 映射。 |
column5 | external_ip | 如果日志是 DNS 日志,则从原始日志字段 column5 映射。 |
column6 | action_type | 直接从原始日志字段 column6 映射。 |
column7 | principal.ip | 如果日志是审核日志,则从原始日志字段 column7 映射。 |
column7 | dns_query_type | 如果日志是 DNS 日志,则从原始日志字段 column7 映射。 |
column8 | additionalValue | 如果日志是审核日志,则从原始日志字段 column8 映射。 |
column8 | dns_response_code | 如果日志是 DNS 日志,则从原始日志字段 column8 映射。 |
column9 | 域名 | 直接从原始日志字段 column9 映射。 |
date_time | metadata.event_timestamp.seconds | 从 date_time 字段中提取的纪元时间戳。 |
dns_query_type | network.dns.questions.type | 使用正则表达式从 dns_query_type 字段中提取,并转换为整数。 |
dns_response_code | network.dns.response_code | 从 dns_response_code 字段映射,根据 DNS 响应代码值转换为整数。 |
域名 | network.dns.questions.name | 直接从 domain 字段映射。 |
external_ip | principal.ip | 如果 external_ip 字段不为空且不等于 internal_ip ,则从该字段映射。 |
身份 | principal.location.name | 如果对应的 identity_types 字段为 Networks ,则从 identities 字段映射。 |
身份 | principal.hostname | 如果对应的 identity_types 字段为 AD Computers 、Roaming Computers 或 Anyconnect Roaming Client ,则从 identities 字段进行映射。 |
身份 | principal.asset.hostname | 如果对应的 identity_types 字段为 AD Computers 、Roaming Computers 或 Anyconnect Roaming Client ,则从 identities 字段进行映射。 |
身份 | principal.location.city | 如果对应的 identity_types 字段为 Sites ,则从 identities 字段映射。 |
identity_types | additional.fields{}.key | 设置为 identities_types 。 |
identity_types | additional.fields{}.value.string_value | 直接从原始日志字段 identity_types 映射。 |
internal_ip | principal.ip | 如果 internal_ip 字段不为空,则从该字段映射。 |
most_granular_identity | additional.fields{}.key | 设置为 most_granular_identity 。 |
most_granular_identity | additional.fields{}.value.string_value | 直接从原始日志字段 most_granular_identity 映射。 |
most_granular_identity_type | additional.fields{}.key | 设置为 most_granular_identity_type 。 |
most_granular_identity_type | additional.fields{}.value.string_value | 直接从原始日志字段 most_granular_identity_type 映射。 |
metadata.event_type | 如果日志是 DNS 日志,则设置为 NETWORK_DNS 。 |
|
metadata.event_type | 如果日志是审核日志且 principal_ip 不为空,则设置为 STATUS_UPDATE 。 |
|
metadata.event_type | 如果日志是审核日志且 principal_ip 为空,则设置为 GENERIC_EVENT 。 |
|
metadata.vendor_name | 设置为 CISCO UMBERLLA 。 |
|
metadata.product_name | 设置为 CISCO UMBERLLA 。 |
|
metadata.log_type | 设置为 AUDITD 。 |
|
network.application_protocol | 如果日志是 DNS 日志,则设置为 DNS 。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。