收集 Cato Networks 日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 AWS S3 将 Cato Networks 日志注入到 Google Security Operations。解析器首先将一组字段初始化为空字符串,然后解析 JSON 格式的 Cato Networks 日志。然后,它会将提取的字段映射到 Google SecOps 统一数据模型 (UDM) 模型中的相应字段,处理不同的事件类型,并使用其他上下文来丰富数据。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 对 AWS S3、AWS IAM 的特权访问权限
- 对 Cato Networks 的特权访问权限
配置 AWS IAM 和 S3 存储分区
- 按照以下用户指南创建 Amazon S3 存储桶:创建存储桶
- 保存相应存储桶的名称和区域,以供日后参考。
- 按照以下用户指南创建用户:创建 IAM 用户。
- 选择创建的用户。
- 选择安全凭据标签页。
- 在访问密钥部分中,点击创建访问密钥。
- 选择第三方服务作为使用情形。
- 点击下一步。
- 可选:添加说明标记。
- 点击创建访问密钥。
- 点击下载 CSV 文件,保存访问密钥和秘密访问密钥,以供日后参考。
- 点击完成。
- 选择权限标签页。
- 在权限政策部分中,点击添加权限。
- 选择添加权限。
- 选择直接附加政策。
- 搜索 AmazonS3FullAccess 政策,然后选择该政策。
- 点击下一步。
- 点击添加权限。
为 S3 存储分区配置新的 IAM 政策,以启用数据上传
- 在政策中,点击 JSON 标签页。
修改以下 JSON,将
<bucket name>替换为您的 S3 存储桶,然后将其粘贴到相应标签页中。{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<bucket name>" ] }, { "Sid": "", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket name>/*" ] } ] }点击创建政策。
使用 Cato 的 ARN 配置新的 IAM 角色
在选择可信实体界面中,选择自定义信任政策,然后将 Cato 的 ARN 添加到该角色:arn:aws:iam::428465470022:role/cato-events-integration
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::428465470022:role/cato-events-integration" }, "Action": "sts:AssumeRole" } ] }点击下一步。
在添加权限界面中,将您之前创建的政策附加到该角色。
点击下一步。
输入角色名称,然后点击创建角色。
配置 Cato Networks 事件和 S3 集成
- 登录 Cato Networks 网页界面。
- 前往资源 > 事件集成。
- 点击启用与 Cato 事件的集成。
- 点击 New(新建)。
- 提供以下配置详细信息:
- 输入集成的名称。
- 存储桶名称:S3 存储桶的相同名称。
- 文件夹:S3 存储桶中文件夹路径的相同名称(如有必要)。
- 区域:与 S3 存储桶相同的区域。
- 角色 ARN:复制并粘贴 S3 存储桶所用角色的 ARN。
- (可选)为上传到 S3 存储桶的事件定义过滤条件设置(如果您定义了多个过滤条件,则这些过滤条件之间是 AND 关系,系统会上传符合所有过滤条件的事件)。
- 点击应用。
设置 Feed
如需配置 Feed,请按以下步骤操作:
- 依次前往 SIEM 设置> Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 在Feed 名称字段中,输入 Feed 的名称(例如
Cato Logs)。 - 选择 Amazon S3 V2 作为来源类型。
- 选择 Cato Networks 作为日志类型。
- 点击下一步。
为以下输入参数指定值:
S3 URI:存储桶 URI(格式应为:
s3://<your-log-bucket-name>)。请替换以下内容:your-log-bucket-name:相应存储桶的名称。
来源删除选项:根据您的偏好设置选择删除选项。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| account_id | target.user.userid | 此字段的值取自 account_id 字段。 |
| 操作 | additional.fields.value.string_value | 此字段的值取自 action 字段。 |
| app_stack | additional.fields.value.list_value.values.string_value | 此字段的值取自 app_stack 字段。 |
| 应用 | principal.application | 此字段的值取自 application 字段。 |
| categories | additional.fields.value.list_value.values.string_value | 此字段的值取自 categories 字段。 |
| clientIP | principal.ip、principal.asset.ip | 此字段的值取自 clientIP 字段。 |
| creationTime | 此字段用于计算事件时间戳。 | |
| custom_categories | additional.fields.value.list_value.values.string_value | 此字段的值取自 custom_categories 字段。 |
| dest_country | target.location.country_or_region | 此字段的值取自 dest_country 字段。 |
| dest_country_code | target.resource.attribute.labels.value | 此字段的值取自 dest_country_code 字段。 |
| dest_ip | target.ip、target.asset.ip | 此字段的值取自 dest_ip 字段。 |
| dest_port | target.port | 此字段的值取自 dest_port 字段。 |
| destinationCountry | target.location.country_or_region | 此字段的值取自 destinationCountry 字段。 |
| destinationIp | target.ip、target.asset.ip | 此字段的值取自 destinationIp 字段。 |
| destinationName | target.hostname、target.asset.hostname | 此字段的值取自 destinationName 字段。 |
| device_name | network.dhcp.client_hostname | 此字段的值取自 device_name 字段。 |
| dns_name | additional.fields.value.string_value | 此字段的值取自 dns_name 字段。 |
| event_count | additional.fields.value.string_value | 此字段的值取自 event_count 字段。 |
| event_sub_type | metadata.description | 此字段的值取自 event_sub_type 字段。 |
| fieldsMap.ISP_name | additional.fields.value.string_value | 此字段的值取自 fieldsMap.ISP_name 字段。 |
| fieldsMap.action | security_result.action_details | 此字段的值取自 fieldsMap.action 字段。 |
| fieldsMap.categories | security_result.category_details | 此字段的值取自 fieldsMap.categories 字段。 |
| fieldsMap.dest_country | target.location.country_or_region | 此字段的值取自 fieldsMap.dest_country 字段。 |
| fieldsMap.dest_ip | target.ip、target.asset.ip | 此字段的值取自 fieldsMap.dest_ip 字段。 |
| fieldsMap.dest_port | principal.port | 此字段的值取自 fieldsMap.dest_port 字段。 |
| fieldsMap.domain_name | principal.administrative_domain | 此字段的值取自 fieldsMap.domain_name 字段。 |
| fieldsMap.event_sub_type | metadata.description | 此字段的值取自 fieldsMap.event_sub_type 字段。 |
| fieldsMap.event_type | metadata.product_event_type | 此字段的值取自 fieldsMap.event_type 字段。 |
| fieldsMap.ip_protocol | network.ip_protocol | 此字段的值取自 fieldsMap.ip_protocol 字段。 |
| fieldsMap.os_type | 此字段用于确定主账号的操作系统。 | |
| fieldsMap.pop_name | additional.fields.value.string_value | 此字段的值取自 fieldsMap.pop_name 字段。 |
| fieldsMap.rule_id | security_result.rule_id | 此字段的值取自 fieldsMap.rule_id 字段。 |
| fieldsMap.rule_name | security_result.rule_name | 此字段的值取自 fieldsMap.rule_name 字段。 |
| fieldsMap.src_ip | principal.ip、principal.asset.ip | 此字段的值取自 fieldsMap.src_ip 字段。 |
| fieldsMap.src_isp_ip | src.ip、src.asset.ip | 此字段的值取自 fieldsMap.src_isp_ip 字段。 |
| fieldsMap.time | 此字段用于计算事件时间戳。 | |
| file_hash | target.file.sha256 | 此字段的值取自 file_hash 字段。 |
| file_name | target.file.full_path | 此字段的值取自 file_name 字段。 |
| file_size | target.file.size | 此字段的值取自 file_size 字段。 |
| http_host_name | principal.hostname、principal.asset.hostname | 此字段的值取自 http_host_name 字段。 |
| insertionDate | additional.fields.value.string_value | 此字段的值取自 insertionDate 字段。 |
| internalId | additional.fields.value.string_value | 此字段的值取自 internalId 字段。 |
| ip_protocol | network.ip_protocol | 此字段的值取自 ip_protocol 字段。 |
| is_sanctioned_app | security_result.detection_fields.value | 此字段的值取自 is_sanctioned_app 字段。 |
| os_type | principal.platform | 此字段的值取自 os_type 字段。 |
| pop_name | 此字段用于填充 fieldsMap.pop_name 字段。 |
|
| prettyType | metadata.product_event_type | 此字段的值取自 prettyType 字段。 |
| 规则 | additional.fields.value.string_value | 此字段的值取自 rule 字段。 |
| rule_id | security_result.rule_id | 此字段的值取自 rule_id 字段。 |
| rule_name | security_result.rule_name | 此字段的值取自 rule_name 字段。 |
| server_port | target.port | 此字段的值取自 server_port 字段。 |
| 和程度上减少 | security_result.severity_details | 此字段的值取自 severity 字段。 |
| sourceCountry | principal.location.country_or_region | 此字段的值取自 sourceCountry 字段。 |
| sourceInternalIp | principal.ip | 此字段的值取自 sourceInternalIp 字段。 |
| sourceIp | src.ip、src.asset.ip | 此字段的值取自 sourceIp 字段。 |
| sourceName | principal.user.user_display_name | 此字段的值取自 sourceName 字段。 |
| 体育 | principal.port | 此字段的值取自 sport 字段。 |
| src_country | 此字段用于填充 sourceCountry 字段。 |
|
| src_country_code | principal.resource.attribute.labels.value | 此字段的值取自 src_country_code 字段。 |
| src_ip | principal.ip、principal.asset.ip | 此字段的值取自 src_ip 字段。 |
| src_is_site_or_vpn | security_result.detection_fields.value | 此字段的值取自 src_is_site_or_vpn 字段。 |
| src_isp_ip | src.ip、src.asset.ip | 此字段的值取自 src_isp_ip 字段。 |
| src_site | additional.fields.value.string_value | 此字段的值取自 src_site 字段。 |
| src_site_name | additional.fields.value.string_value | 此字段的值取自 src_site_name 字段。 |
| start | 此字段用于计算事件时间戳。 | |
| subnet_name | additional.fields.value.string_value | 此字段的值取自 subnet_name 字段。 |
| 时间 | 此字段用于计算事件时间戳。 | |
| time_str | 此字段用于计算事件时间戳。 | |
| tunnel_host_logon_names | principal.user.userid | 此字段的值取自 tunnel_host_logon_names 字段。 |
| 网址 | target.url | 此字段的值取自 url 字段。 |
| user_id | principal.user.userid | 此字段的值取自 user_id 字段。 |
| metadata.event_type | 此字段的值设置为 GENERIC_EVENT,可以根据事件替换为 NETWORK_CONNECTION、NETWORK_DHCP 或 NETWORK_HTTP。 |
|
| metadata.log_type | 此字段的值设置为 CATO_NETWORKS。 |
|
| metadata.product_name | 此字段的值设置为 SASE。 |
|
| metadata.vendor_name | 此字段的值设置为 Cato Networks。 |
|
| network.application_protocol | 对于 Connected 事件,此字段的值设置为 DHCP。 |
|
| network.dhcp.chaddr | 对于 Connected 事件,此字段的值设置为 01:23:45:ab:cd:ef。 |
|
| network.dhcp.lease_time_seconds | 对于 Connected 事件,此字段的值设置为 86400。 |
|
| network.dhcp.opcode | 对于 Connected 事件,此字段的值设置为 BOOTREPLY。 |
|
| network.dhcp.type | 对于 Connected 事件,此字段的值设置为 ACK。 |
|
| network.direction | 对于 Anti Malware 和 URL Filtering 事件,此字段的值设置为 OUTBOUND。 |
|
| security_result.action | 如果 action 字段不是 BLOCK,则此字段的值设置为 ALLOW;否则,此字段的值设置为 BLOCK。 |
|
| event_type | metadata.description | 此字段的值取自 event_type 字段。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。