收集 Tanium Discover 日志
支持的语言:
Google SecOps
SIEM
本文档介绍了如何使用 Tanium Connect 的原生 S3 导出功能,通过 Amazon S3 将 Tanium Discover 日志注入到 Google Security Operations。Tanium Discover 可自动发现您环境中的网络接口和资产,让您能够了解受管和不受管的端点、网络设备及其他已连接的系统。解析器从 JSON 日志中提取字段,转换 MAC 地址和操作系统信息等特定字段,并将它们映射到 UDM。它可处理各种数据类型,添加供应商和产品详细信息等元数据,并将提取的字段合并到最终的 UDM 事件结构中。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 对 Tanium Connect 和 Tanium Console 的特权访问权限
- 已安装并配置 Tanium Discover 2.11 或更高版本
- 对 AWS(S3、IAM)的特权访问权限
为 Google SecOps 配置 AWS S3 存储桶和 IAM
- 按照以下用户指南创建 Amazon S3 存储桶:创建存储桶
- 保存存储桶名称和区域以供日后参考(例如
tanium-discover-logs
)。 - 按照以下用户指南创建用户:创建 IAM 用户。
- 选择创建的用户。
- 选择安全凭据标签页。
- 在访问密钥部分中,点击创建访问密钥。
- 选择第三方服务作为使用情形。
- 点击下一步。
- 可选:添加说明标记。
- 点击创建访问密钥。
- 点击 Download CSV file(下载 CSV 文件),保存访问密钥和不公开的访问密钥以供日后使用。
- 点击完成。
- 选择权限标签页。
- 在权限政策部分中,点击添加权限。
- 选择添加权限。
- 选择直接附加政策
- 搜索并选择 AmazonS3FullAccess 政策。
- 点击下一步。
- 点击添加权限。
配置 Amazon S3 存储桶的权限
- 在 Amazon S3 控制台中,选择您之前创建的存储桶。
- 依次点击权限 > 存储分区政策。
在存储分区政策编辑器中,添加以下政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::tanium-discover-logs", "arn:aws:s3:::tanium-discover-logs/*" ] } ] }
执行以下变量替换操作:
- 将
YOUR_ACCOUNT_ID
更改为您的 AWS 账号 ID。 - 如果不同,请将
tanium-discover-logs
更改为您的实际存储桶名称。 - 如果不同,请将
tanium-connect-s3-user
更改为您的实际 IAM 用户名。
- 将
点击保存。
配置 Tanium Connect 以导出到 S3
- 以管理员身份登录 Tanium Console。
- 依次前往 Tanium Connect > Connections。
- 点击 Create Connection。
- 在常规信息部分,提供以下配置详细信息:
- 名称:输入一个描述性名称(例如
Tanium Discover to S3
)。 - 说明:输入有意义的说明(例如
Export Tanium Discover interface data to S3 for Google SecOps ingestion
)。 - 启用:选择以启用连接。
- Log Level:选择 Information(默认),或根据需要进行调整。
- 名称:输入一个描述性名称(例如
- 在配置部分的来源中,选择 Tanium Discover。
- 配置“探索”来源设置:
- 报告类型:选择要导出的界面类型:
- 全部:导出 Google 探索中的所有界面。
- 受管:导出已安装 Tanium 客户端的接口。
- 非受管:未安装 Tanium 客户端的导出接口。
- 已加标签:导出已应用标签的所有接口。
- 未加标签:未应用任何标签的导出接口。
- 忽略:导出标记为忽略的接口。
- 不可管理:导出标记为不可管理的接口。
- 报告类型:选择要导出的界面类型:
- 对于目标平台,请选择 AWS S3。
- 提供以下配置详细信息:
- 目标名称:输入一个名称(例如
Google SecOps S3 Bucket
)。 - AWS 访问密钥:输入之前创建的 IAM 用户的访问密钥 ID。
- AWS 密钥:输入之前创建的 IAM 用户的私有访问密钥。
- 存储桶名称:输入您的 S3 存储桶名称(例如
tanium-discover-logs
)。 - 存储分区路径:可选。输入路径前缀(例如
tanium/discover/
)。 - 区域:选择存储桶所在的 AWS 区域(例如
us-east-1
)。
- 目标名称:输入一个名称(例如
- 在格式部分,配置输出格式:
- 格式类型:选择 JSON。
- 包含列标题:选择是否要包含列标题。
- 生成文档:取消选中此选项可发送原始 JSON 数据。
- 可选:在配置输出部分中,配置过滤条件:
- 过滤:您可以使用过滤条件导出特定标签。例如,如果您想导出所有带有“丢失的接口”标记的接口,请应用正则表达式过滤条件,然后在“标签”目标列中输入“丢失的接口”作为要匹配的文本。
- 自定义列:添加与您的使用情形相关的任何自定义列。
- 在时间表部分,配置连接的运行时间:
- 调度类型:选择 Cron。
- Cron 表达式:输入用于定期导出的 cron 表达式(例如,
0 */6 * * *
表示每 6 小时导出一次)。 - 开始日期:设置安排的开始日期。
- 点击保存更改。
- 在 Connect 概览页面中,前往连接。
- 点击您创建的连接 (Tanium Discover to S3)。
- 点击立即运行以测试连接。
- 确认您要运行连接。
- 监控连接状态,并验证发现界面数据是否正在导出到您的 S3 存储桶。
可选:为 Google SecOps 创建只读 IAM 用户和密钥
- 依次前往 AWS 控制台 > IAM > 用户 > 添加用户。
- 点击 Add users(添加用户)。
- 提供以下配置详细信息:
- 用户:输入
secops-reader
。 - 访问类型:选择访问密钥 - 以程序化方式访问。
- 用户:输入
- 点击创建用户。
- 附加最低限度的读取政策(自定义):用户 > secops-reader > 权限 > 添加权限 > 直接附加政策 > 创建政策。
在 JSON 编辑器中,输入以下政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::tanium-discover-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::tanium-discover-logs" } ] }
将名称设置为
secops-reader-policy
。依次前往创建政策 > 搜索/选择 > 下一步 > 添加权限。
依次前往安全凭据 > 访问密钥 > 创建访问密钥。
下载 CSV(这些值会输入到 Feed 中)。
在 Google SecOps 中配置 Feed 以注入 Tanium Discover 日志
- 依次前往 SIEM 设置> Feed。
- 点击 + 添加新 Feed。
- 在Feed 名称字段中,输入 Feed 的名称(例如
Tanium Discover logs
)。 - 选择 Amazon S3 V2 作为来源类型。
- 选择 Tanium Discover 作为日志类型。
- 点击下一步。
- 为以下输入参数指定值:
- S3 URI:
s3://tanium-discover-logs/tanium/discover/
(如果您使用了其他存储桶名称或路径,请调整路径)。 - 来源删除选项:根据您的偏好设置选择删除选项。
- 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。
- 访问密钥 ID:具有 S3 存储桶访问权限的用户访问密钥(来自上面创建的只读用户)。
- Secret Access Key:具有 S3 存储桶访问权限的用户密钥(来自上面创建的只读用户)。
- 资产命名空间:资产命名空间。
- 注入标签:要应用于此 Feed 中事件的标签。
- S3 URI:
- 点击下一步。
- 在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
CentralizedNmap |
principal.asset.attribute.labels.key |
值“CentralizedNmap”由解析器分配。 |
CentralizedNmap |
principal.asset.attribute.labels.value |
直接从原始日志中的 CentralizedNmap 字段获取并转换为字符串。 |
IpAddress |
principal.asset.ip |
直接从原始日志的 IpAddress 字段中获取。 |
IpAddress |
principal.ip |
直接从原始日志的 IpAddress 字段中获取。 |
Labels |
principal.asset.attribute.labels.key |
值“Labels”由解析器分配。 |
Labels |
principal.asset.attribute.labels.value |
直接从原始日志的 Labels 字段中获取。 |
MacAddress |
principal.asset.mac |
直接取自原始日志中的 MacAddress 字段,连字符替换为英文冒号,并将值转换为小写。 |
MacAddress |
principal.asset.product_object_id |
将“TANIUM:”与 MacAddress 字段(在将其转换为小写并用英文冒号替换连字符后)连接起来。 |
MacAddress |
principal.mac |
直接取自原始日志中的 MacAddress 字段,连字符替换为英文冒号,并将值转换为小写。 |
MacOrganization |
principal.asset.attribute.labels.key |
值“MacOrganization”由解析器分配。 |
MacOrganization |
principal.asset.attribute.labels.value |
直接从原始日志中的 MacOrganization 字段获取并转换为字符串。 |
Managed |
principal.asset.attribute.labels.key |
值“Managed”由解析器分配。 |
Managed |
principal.asset.attribute.labels.value |
直接从原始日志中的 Managed 字段获取并转换为字符串。 |
Os |
principal.asset.platform_software.platform |
如果 Os 为“Windows”,则该值设置为“WINDOWS”。如果 Os 为“Linux”,则该值设置为“LINUX”。否则,该值设置为“UNKNOWN_PLATFORM”。 |
Os |
principal.platform |
如果 Os 为“Windows”,则该值设置为“WINDOWS”。如果 Os 为“Linux”,则该值设置为“LINUX”。否则,该值设置为“UNKNOWN_PLATFORM”。 |
OsGeneration |
principal.asset.platform_software.platform_version |
直接从原始日志中的 OsGeneration 字段获取并转换为字符串。 |
OsGeneration |
principal.platform_version |
直接从原始日志中的 OsGeneration 字段获取并转换为字符串。 |
Ports |
principal.asset.attribute.labels.key |
“Ports”值由解析器分配。 |
Ports |
principal.asset.attribute.labels.value |
直接从原始日志的 Ports 字段中获取。 |
Profile |
principal.asset.attribute.labels.key |
“Profile”值由解析器分配。 |
Profile |
principal.asset.attribute.labels.value |
直接从原始日志的 Profile 字段中获取。 |
TaniumComputerId |
principal.asset.attribute.labels.key |
值“TaniumComputerId”由解析器分配。 |
TaniumComputerId |
principal.asset.attribute.labels.value |
直接从原始日志中的 TaniumComputerId 字段获取并转换为字符串。 |
Unmanageable |
principal.asset.attribute.labels.key |
“不可管理”值由解析器分配。 |
Unmanageable |
principal.asset.attribute.labels.value |
直接从原始日志中的 Unmanageable 字段获取并转换为字符串。从原始日志的 time 字段中提取,经过解析并转换为纪元秒数。值“SCAN_NETWORK”由解析器分配。值“TANIUM_DISCOVER”由解析器分配。值“Discover”由解析器分配。值“Tanium”由解析器分配。直接从原始日志的 HostName 字段中获取。从原始日志的 time 字段中提取,经过解析并转换为纪元秒数。 |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。