收集 Tanium Asset 日志

支持的平台:

本文档介绍了如何使用两种不同的方法将 Tanium 资产日志注入到 Google Security Operations。您可以选择 Tanium Connect 的原生 Amazon S3 导出功能,也可以选择通过 Bindplane 进行实时 syslog 转发。这两种方法都使用 Tanium Connect 模块从 Tanium 中提取资产数据,并将其转发到 Chronicle 以进行分析和监控。解析器会将原始日志转换为符合 Chronicle UDM 的结构化格式。为此,它首先会对各种输入格式(JSON、Syslog)的键值对进行归一化处理,然后将提取的字段映射到表示资产、用户和关系实体的嵌套 JSON 对象中的相应 UDM 属性。

准备工作

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

  • Google SecOps 实例
  • 对 Tanium 控制台(连接模块)的特权访问权限,用于配置导出目标位置
  • 选择您首选的集成方法:
    • 选项 1(推荐):对 AWS(S3、IAM)的特权访问权限,用于原生 S3 导出
    • 方案 2:Windows 2016 或更高版本,或者具有 systemd 的 Linux 主机,用于安装 Bindplane 代理

方法 1:使用 AWS S3 配置 Tanium Asset 日志导出

创建 Amazon S3 存储桶

  1. 按照以下用户指南创建 Amazon S3 存储桶创建存储桶
  2. 保存存储桶名称区域以供日后参考(例如 tanium-asset-logs)。
  3. 按照以下用户指南创建用户:创建 IAM 用户
  4. 选择创建的用户
  5. 选择安全凭据标签页。
  6. 访问密钥部分中,点击创建访问密钥
  7. 选择第三方服务作为使用情形
  8. 点击下一步
  9. 可选:添加说明标记。
  10. 点击创建访问密钥
  11. 点击 Download CSV file(下载 CSV 文件),保存访问密钥不公开的访问密钥以供日后使用。
  12. 点击完成
  13. 选择权限标签页。
  14. 权限政策部分中,点击添加权限
  15. 选择添加权限
  16. 选择直接附加政策
  17. 搜索并选择 AmazonS3FullAccess 政策。
  18. 点击下一步
  19. 点击添加权限

配置 Tanium Connect 以导出到 S3

  1. 使用管理员权限登录 Tanium 控制台
  2. 依次前往模块 > 连接 > 概览,然后点击创建连接
  3. 点击创建
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Google SecOps Asset S3 Export)。
    • 说明:此连接的可选说明。
    • 启用:选择启用以按时间表运行。
  5. 点击下一步
  6. 来源配置中:
    • 来源:选择已保存的问题
    • 问题:选择可返回资产数据的现有已保存问题,或使用与资产相关的传感器(例如计算机名称、IP 地址、操作系统平台、网域)创建新问题。
    • 计算机组:选择要针对其收集资产数据的计算机组。
  7. 点击下一步
  8. 目标位置配置中:
    • 目标平台:选择 AWS S3
    • 名称:输入目标名称(例如 Chronicle Asset S3)。
    • AWS 访问密钥 ID:输入 IAM 用户的访问密钥 ID。
    • AWS Secret 访问密钥:输入 IAM 用户的 Secret 访问密钥。
    • S3 存储分区名称tanium-asset-logs
    • S3 密钥前缀tanium/assets/(组织的可选前缀)。
    • 区域:选择您的 S3 存储桶所在的 AWS 区域。
  9. 点击下一步
  10. 格式设置配置中:
    • 格式:选择 JSON 以导出结构化数据。
    • :选择要导出的资产字段,并适当设置其格式。
  11. 点击下一步
  12. 时间表配置中:
    • 时间安排:配置投放时间安排(例如,每小时或每天)。
    • 开始日期/时间:设置连接应开始运行的时间。
  13. 点击保存以创建连接并开始自动导出 S3 数据。

可选:为 Google SecOps 创建只读 IAM 用户和密钥

  1. 依次前往 AWS 控制台 > IAM > 用户 > 添加用户
  2. 点击 Add users(添加用户)。
  3. 提供以下配置详细信息:
    • 用户:输入 secops-reader
    • 访问类型:选择访问密钥 - 以程序化方式访问
  4. 点击创建用户
  5. 附加最低限度的读取政策(自定义):依次选择用户 > secops-reader > 权限 > 添加权限 > 直接附加政策 > 创建政策
  6. 在 JSON 编辑器中,输入以下政策:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::tanium-asset-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::tanium-asset-logs"
        }
      ]
    }
    
  7. 将名称设置为 secops-reader-policy

  8. 依次前往创建政策 > 搜索/选择 > 下一步 > 添加权限

  9. 依次前往安全凭据 > 访问密钥 > 创建访问密钥

  10. 下载 CSV(这些值会输入到 Feed 中)。

在 Google SecOps 中配置 Feed 以注入 Tanium 资产日志

  1. 依次前往 SIEM 设置> Feed
  2. 点击 + 添加新 Feed
  3. Feed 名称字段中,输入 Feed 的名称(例如 Tanium Asset logs)。
  4. 选择 Amazon S3 V2 作为来源类型
  5. 选择 Tanium 资产作为日志类型
  6. 点击下一步
  7. 为以下输入参数指定值:
    • S3 URIs3://tanium-asset-logs/tanium/assets/
    • 源删除选项:根据您的偏好选择删除选项。
    • 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。
    • 访问密钥 ID:有权访问 S3 存储桶的用户访问密钥。
    • 私有访问密钥:具有 S3 存储桶访问权限的用户私有密钥。
    • 资源命名空间资源命名空间
    • 注入标签:应用于此 Feed 中事件的标签。
  8. 点击下一步
  9. 最终确定界面中查看新的 Feed 配置,然后点击提交

方法 2:使用 syslog 和 Bindplane 配置 Tanium 资产日志导出

获取 Google SecOps 注入身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载注入身份验证文件。将文件安全地保存在将要安装 Bindplane 的系统上。

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 个人资料
  3. 复制并保存组织详细信息部分中的客户 ID

安装 Bindplane 代理

按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。

Windows 安装

  1. 以管理员身份打开命令提示符PowerShell
  2. 运行以下命令:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 安装

  1. 打开具有 root 或 sudo 权限的终端。
  2. 运行以下命令:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

其他安装资源

  • 如需了解其他安装选项,请参阅此安装指南

配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:

    1. 找到 config.yaml 文件。通常,它位于 Linux 上的 /etc/bindplane-agent/ 目录中,或位于 Windows 上的安装目录中。
    2. 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 config.yaml 文件:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <PLACEHOLDER_CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'TANIUM_ASSET'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • 根据基础架构的需要替换端口和 IP 地址。
    • <PLACEHOLDER_CUSTOMER_ID> 替换为实际的客户 ID。
    • /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。

重启 Bindplane 代理以应用更改

  • 如需在 Linux 中重启 Bindplane 代理,请运行以下命令:

    sudo systemctl restart bindplane-agent
    
  • 如需在 Windows 中重启 Bindplane 代理,您可以使用服务控制台,也可以输入以下命令:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

在 Tanium Asset 上配置 Syslog 转发

  1. 使用管理员权限登录 Tanium 控制台
  2. 依次前往模块 > 连接 > 概览,然后点击创建连接
  3. 点击创建
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Google SecOps Asset Integration)。
    • 说明:此连接的可选说明。
    • 启用:选择启用以按时间表运行。
  5. 点击下一步
  6. 来源配置中:
    • 来源:选择已保存的问题
    • 问题:选择可返回资产数据的现有已保存问题,或使用与资产相关的传感器创建新问题。
    • 计算机组:选择要针对其收集资产数据的计算机组。
  7. 点击下一步
  8. 目标位置配置中:
    • 目标位置:选择 SIEM/Syslog
    • 名称:输入目标名称(例如 Chronicle Asset Syslog)。
    • 主机:输入 BindPlane 代理 IP 地址。
    • 端口:输入 BindPlane 代理端口号(例如 514)。
    • 协议:选择 UDP
    • 格式:选择 SYSLOG RFC 5424
    • 时区:选择 UTC 时区,以确保系统之间的一致性。
  9. 点击下一步
  10. 格式设置配置中:
    • 格式:选择 JSON
    • :选择要转发的资产字段(例如,计算机名称、IP 地址、操作系统平台、网域)。
  11. 点击下一步
  12. 时间表配置中:
    • 时间安排:配置交付时间安排(例如,每小时一次)。
    • 开始日期/时间:设置连接应开始运行的时间。
  13. 点击保存以创建连接并开始转发。

UDM 映射表

日志字段 UDM 映射 逻辑
application_name entity.metadata.source_labels.value 如果原始日志中存在“application_name”字段,则该值取自该字段。
application_vendor entity.metadata.source_labels.value 如果原始日志中存在“application_vendor”字段,则值取自该字段。
application_version entity.metadata.product_version 如果原始日志中存在“application_version”字段,则值取自该字段。
BIOS_Current_Language entity.metadata.source_labels.value 如果原始日志中存在“BIOS_Current_Language”字段,则从该字段中获取值。
BIOS_Release_Date entity.metadata.source_labels.value 如果原始日志中存在“BIOS_Release_Date”字段,则从该字段中获取值。
BIOS_Vendor entity.metadata.source_labels.value 如果原始日志中存在“BIOS_Vendor”字段,则值取自该字段。
BIOS_Version entity.metadata.product_version 如果原始日志中存在“BIOS_Version”字段,则值取自该字段。
底盘类型 entity.entity.asset.category 如果原始日志中存在“机箱类型”字段,则值取自该字段。
电脑 ID entity.entity.asset.product_object_id 如果原始日志中存在“计算机 ID”字段,则该值取自该字段。还用于使用前缀“id: ”填充 entity.relations.entity.asset.asset_id。
计算机名称 entity.entity.asset.hostname 如果原始日志中存在“计算机名称”字段,则该值取自该字段。
计数 entity.metadata.source_labels.value 如果原始日志中存在“Count”字段,则值取自该字段。
端点指纹 entity.entity.asset.hardware.serial_number 如果原始日志中存在“Endpoint Fingerprint”字段,则该值取自该字段。
IP 地址 entity.entity.asset.ip 值取自“IP 地址”字段,并作为单独的 IP 地址添加到数组中。
上次登录的用户 entity.relations.entity.user.userid 该值取自“上次登录的用户”字段,如果原始日志中存在任何网域前缀,则会将其移除。
上次重新启动 entity.entity.asset.last_boot_time 如果原始日志中存在“上次重启”字段,则会从该字段解析值并将其格式化为时间戳。
MAC 地址 entity.entity.asset.mac 值取自“MAC 地址”字段,并作为单独的 MAC 地址添加到数组中。
制造商 entity.entity.asset.hardware.manufacturer 如果原始日志中存在“制造商”字段,则值取自该字段。
操作系统 entity.entity.asset.platform_software.platform_version 如果原始日志中存在“操作系统”字段,则从该字段中获取值。用于确定 entity.entity.asset.platform_software.platform(WINDOWS、LINUX 或 MAC)的值。
平台 entity.entity.asset.platform_software.platform_version 如果原始日志中存在“platform”字段,则从该字段中获取值。用于确定 entity.entity.asset.platform_software.platform(WINDOWS、LINUX 或 MAC)的值。
serial_number entity.entity.asset.hardware.serial_number 如果原始日志中存在“serial_number”字段,则值取自该字段。
版本 entity.entity.asset.platform_software.platform_version 如果原始日志中存在“version”字段,则从该字段中获取值。用于确定 entity.entity.asset.platform_software.platform(WINDOWS、LINUX 或 MAC)的值。
不适用 entity.metadata.collected_timestamp 设置为批次的 create_time。
不适用 entity.metadata.vendor_name 始终设置为“TANIUM_ASSET”。
不适用 entity.metadata.product_name 始终设置为“TANIUM_ASSET”。
不适用 entity.metadata.entity_type 始终设置为“ASSET”。
不适用 entity.relations.entity_type 始终设置为“USER”。
不适用 entity.relations.relationship 始终设置为“OWNS”。

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