收集 Google Cloud DNS 威胁检测器日志

解析器版本: 1.0

支持:

本文档介绍了如何使用 Google Cloud Storage V2 将 Google Cloud DNS 威胁检测器日志注入到 Google Security Operations 中。

DNS Armor 由 Infoblox 提供支持,是一项全代管式服务,可为您的 Google Cloud 工作负载提供 DNS 层安全性。其高级威胁检测器旨在在攻击链的最早阶段(即 DNS 查询)检测恶意活动,而不会增加运维复杂性或性能开销。检测到威胁后,您可以通过 Cloud Logging 获得有关 DNS 威胁的富有实用价值的分析洞见。

为项目启用 DNS 威胁检测器后,DNS Armor 会安全地将网络绑定 DNS 查询日志发送到由 Infoblox 提供支持的基于 Google Cloud 的分析引擎。此引擎结合使用威胁情报 Feed 和基于 AI 的行为分析来识别威胁。检测到的任何恶意活动都会生成 DNS Armor 威胁日志,然后该日志会发送回您的项目并写入 Cloud Logging,供您查看和采取行动。

准备工作

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

  • Google SecOps 实例。
  • 启用了 Cloud Storage API 的 GCP 项目。
  • 创建和管理 GCS 存储分区的权限。
  • 管理 GCS 存储分区的 IAM 政策的权限。
  • 在您的项目中启用了 Network Security API。
  • 启用 DNS 威胁检测器所需的 IAM 角色。
  • 查看 DNS 威胁日志的权限:resourcemanager.projects.getresourcemanager.projects.listnetworksecurity.dnsThreatDetectors.getnetworksecurity.dnsThreatDetectors.list 或角色 roles/networksecurity.dnsThreatDetectorViewerroles/logging.viewer

创建 Google Cloud Storage 存储桶

  1. 前往 Google Cloud 控制台
  2. 选择您的项目或创建一个新项目。
  3. 在导航菜单中,前往 Cloud Storage > 存储分区
  4. 点击创建存储桶
  5. 提供以下配置详细信息:

    设置
    指定存储桶的名称 输入一个全局唯一的名称(例如 dns-threat-detector-logs
    位置类型 根据您的需求进行选择(区域、双区域、多区域)
    位置 选择位置(例如 us-central1
    存储类别 标准(建议用于经常访问的日志)
    访问权限控制 统一(推荐)
    保护工具 可选:启用对象版本控制或保留政策
  6. 点击创建

创建 DNS 威胁检测器

本部分介绍了如何创建 DNS 威胁检测器,以监控 VPC 网络中是否存在恶意网络绑定 DNS 活动。

对于一个项目,您只能启用一个 DNS 威胁检测器。

使用 Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往高级威胁检测 页面。
  2. 点击 Create DNS threat detector (创建 DNS 威胁检测器)。
  3. 输入 DNS 威胁检测器的名称。
  4. 选择项目中的所有 VPC 网络
  5. 点击创建

使用 gcloud 命令行工具

或者,您可以使用 gcloud 命令创建 DNS 威胁检测器:

gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--project=PROJECT_ID \
--provider="infoblox"

替换: - my-dns-threat-detector:DNS 威胁检测器的名称。 - PROJECT_ID:您的项目 ID。

配置 Cloud Logging 以将 DNS 威胁检测器日志导出到 GCS

DNS Armor 威胁日志会写入 Cloud Logging。您必须配置日志接收器,才能将这些日志导出到您的 GCS 存储桶。

  1. Google Cloud 控制台中,前往 Logging > 日志路由器
  2. 点击创建接收器
  3. 提供以下配置详细信息:
    • 接收器名称:输入描述性名称(例如 dns-threat-detector-to-gcs)。
    • 接收器说明:可选说明。
  4. 点击下一步
  5. 选择接收器服务 部分中:
    • 接收器服务:选择 Cloud Storage 存储桶
    • 选择 Cloud Storage 存储桶:从下拉列表中选择存储桶(例如 dns-threat-detector-logs)。
  6. 点击下一步
  7. 选择要包含在接收器中的日志 部分中,输入以下过滤条件查询:

    resource.type="networksecurity.googleapis.com/DnsThreatDetector"
    logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"
    

PROJECT_ID 替换为您的 GCP 项目 ID。

  1. 点击下一步
  2. 检查配置,然后点击创建接收器

使用 gcloud 命令行工具

或者,您可以使用 gcloud 命令创建日志接收器:

gcloud logging sinks create dns-threat-detector-to-gcs \
    gs://dns-threat-detector-logs \
    --log-filter='resource.type="networksecurity.googleapis.com/DnsThreatDetector" AND logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"' \
    --project=PROJECT_ID

替换: - dns-threat-detector-logs:您的 GCS 存储桶名称。 - PROJECT_ID:您的 GCP 项目 ID。

检索 Google SecOps 服务帐号

Google SecOps 使用唯一的服务帐号从您的 GCS 存储桶中读取数据。您必须向此服务帐号授予对您的存储桶的访问权限。

在 Google SecOps 中配置 Feed 以注入 Google Cloud DNS 威胁检测器日志

  1. 前往 SIEM 设置 > Feed
  2. 点击 Add New Feed (添加新 Feed)。
  3. 点击 Configure a single feed (配置单个 Feed)。
  4. Feed name (Feed 名称)字段中,输入 Feed 的名称(例如 GCP DNS Threat Detector Logs)。
  5. 选择 Google Cloud Storage V2 作为来源类型
  6. 选择 Google Cloud DNS Threat Detector 作为日志类型

  7. 点击 Get Service Account (获取服务账号)。

  8. 系统会显示唯一的服务帐号电子邮件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. 复制此电子邮件地址。您将在下一步骤中用到它。

  10. 点击下一步

  11. 为以下输入参数指定值:

    • Storage bucket 网址(存储桶网址):输入带有前缀路径的 GCS 存储桶 URI:

      gs://dns-threat-detector-logs/
      

      替换:

      • dns-threat-detector-logs:您的 GCS 存储桶名称。
    • Source deletion option(来源删除选项):根据您的偏好选择删除选项:
      • 永不:转移后永不删除任何文件(建议用于测试)。
      • Delete transferred files(删除已转移的文件):成功转移后删除文件。
      • Delete transferred files and empty directories(删除已转移的文件和空目录):成功转移后删除文件和空目录。
    • Maximum File Age(最长文件存在时间):包含在过去指定天数内修改的文件。默认值为 180 天。
    • Asset namespace(资产命名空间):资产命名空间
    • 提取标签:要应用于此 Feed 中的事件的标签。
  12. 点击下一步

  13. 最终确定 屏幕中检查新 Feed 配置,然后点击提交

向 Google SecOps 服务帐号授予 IAM 权限

Google SecOps 服务帐号需要具有对您的 GCS 存储桶的 Storage Object Viewer (存储对象查看者)角色。

  1. 前往 Cloud Storage > 存储分区
  2. 点击您的存储桶名称(例如 dns-threat-detector-logs)。
  3. 前往权限 标签页。
  4. 点击授予访问权限
  5. 提供以下配置详细信息:
    • 添加主账号:粘贴 Google SecOps 服务帐号电子邮件地址。
    • 分配角色:选择 Storage Object Viewer(存储对象查看者)。
  6. 点击保存

UDM 映射表

日志字段 UDM 映射 逻辑
record.jsonPayload.dnsQuery.responseCode、record.jsonPayload.dnsQuery.authAnswer、record.jsonPayload.dnsQuery.queryTime、record.jsonPayload.partnerId、record.jsonPayload.detectionTime、record.logName additional.fields 将值复制到 addition 映射,然后合并为具有 value.string_value 的映射条目(如果非空)
record.receiveTimestamp metadata.collected_timestamp 解析为 ISO8601 时间戳
metadata.event_type 如果具有 has_principal 和 has_target,则设置为“NETWORK_CONNECTION”;如果具有 has_principal,则设置为“STATUS_UPDATE”;否则设置为“GENERIC_EVENT”
record.timestamp metadata.event_timestamp 解析为 ISO8601 时间戳
record.insertId metadata.product_log_id 如果非空,则直接复制值
record.jsonPayload.dnsQuery.rdata network.dns.answers 将值复制到 answer.data,然后合并为数组(如果非空)
record.jsonPayload.dnsQuery.queryName、record.jsonPayload.dnsQuery.queryType network.dns.questions 从 queryName 映射的 questions.name,从 queryType 字符串映射到整数的 questions.type,然后合并为数组(如果非空)
record.jsonPayload.dnsQuery.responseCode network.dns.response_code 使用预定义表从字符串映射到整数
record.jsonPayload.dnsQuery.protocol network.ip_protocol 如果非空,则直接复制值
record.jsonPayload.dnsQuery.sourceIp principal.asset.ip 如果非空,则直接复制值
record.jsonPayload.dnsQuery.sourceIp principal.ip 如果非空,则直接复制值
record.jsonPayload.dnsQuery.location principal.location.country_or_region 如果非空,则直接复制值
record.resource.labels.location principal.location.name 如果非空,则直接复制值
record.jsonPayload.dnsQuery.vmProjectNumber、record.jsonPayload.dnsQuery.projectNumber principal.resource.attribute.labels 将值复制到 addition 映射,然后合并为映射条目(如果非空)
record.jsonPayload.dnsQuery.vmInstanceId principal.resource.id 如果非空,则直接复制值
record.resource.labels.id principal.resource.product_object_id 如果非空,则直接复制值
record.resource.type principal.resource.type 如果非空,则直接复制值
security_result 从构建的 security_result 映射合并
record.jsonPayload.threatInfo.confidence security_result.confidence 如果匹配 (?i)Low,则映射到 LOW_CONFIDENCE;如果匹配 (?i)Medium,则映射到 MEDIUM_CONFIDENCE;如果匹配 (?i)High,则映射到 HIGH_CONFIDENCE
record.jsonPayload.threatInfo.threatDescription security_result.description 如果非空,则直接复制值
record.jsonPayload.threatInfo.threatIndicatorType、record.jsonPayload.threatInfo.threatIndicator、record.jsonPayload.threatInfo.threatFeed、record.jsonPayload.threatInfo.category、record.jsonPayload.threatInfo.type、record.jsonPayload.threatInfo.threat、record.jsonPayload.threatInfo.severity、record.resource.labels.resource_container security_result.detection_fields 将值复制到 addition 映射,然后合并为映射条目(如果非空)
record.severity security_result.severity 如果匹配 (?i)Low,则映射到 LOW;如果匹配 (?i)(Informational|Info),则映射到 INFORMATIONAL;如果匹配 (?i)Medium,则映射到 MEDIUM;如果匹配 (?i)Critical,则映射到 CRITICAL;如果匹配 (?i)High,则映射到 HIGH
record.jsonPayload.threatInfo.threatId security_result.threat_id 如果非空,则直接复制值
record.jsonPayload.dnsQuery.destinationIp target.asset.ip 如果非空,则直接复制值
record.jsonPayload.dnsQuery.destinationIp target.ip 如果非空,则直接复制值
metadata.vendor_name 设置为“Google Cloud”
metadata.product_name 设置为“Google Cloud DNS 威胁检测器”

更新日志

查看此解析器的更新日志

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