收集 DNSFilter 日志

解析器版本: 1.0

支持:

本文档介绍了如何配置 DNSFilter,以使用 HTTP Event Collector (HEC) 协议通过 Webhook 将日志推送到 Google Security Operations。

DNSFilter 是一种由 AI 提供支持的 DNS 安全解决方案,可提供威胁防护、内容过滤和网络可见性。借助数据导出功能,可以通过 HTTP Event Collector (HEC) API 将 DNS 查询日志数据自动导出到 SIEM 平台,从而支持实时安全监控和合规性报告。

准备工作

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

  • Google SecOps 实例
  • 具有管理员权限或更高权限的 DNSFilter 信息中心 访问权限
  • 已启用 DNSFilter 数据导出 加购方案功能(适用于 Basic、Pro 和 Enterprise 方案,作为付费加购方案提供)
  • Google Cloud Console 的访问权限(用于创建 API 密钥)

在 Google SecOps 中创建 Webhook Feed

创建 Feed

  1. 依次前往 SIEM 设置 > Feed
  2. 点击 Add New Feed (添加新 Feed)。
  3. 在下一页上,点击 Configure a single feed (配置单个 Feed)。
  4. Feed 名称 字段中,输入 Feed 的名称(例如 DNSFilter HEC Feed)。
  5. 选择 Webhook 作为来源类型
  6. 选择 DNSFILTER 作为日志类型
  7. 点击下一步
  8. 为以下输入参数指定值:
    • 定界符 (可选):留空,因为每个 HEC 请求都包含格式正确的事件
    • 资产命名空间资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签
  9. 点击下一步
  10. Finalize (完成)屏幕中检查新 Feed 配置,然后点击提交

生成并保存密钥

创建 Feed 后,您必须生成密钥以进行身份验证:

  1. 在 Feed 详情页面上,点击 Generate Secret Key (生成密钥)。
  2. 系统会显示一个对话框,其中包含密钥。
  3. 复制并妥善保存 密钥。

获取 Feed 端点网址

  1. 前往 Feed 的详情 标签页。
  2. Endpoint Information (端点信息)部分,复制 Feed 端点网址
  3. 网址格式为:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. 保存此网址,以供在后续步骤中使用。

  5. 点击完成

创建 Google Cloud API 密钥

Google SecOps 需要 API 密钥进行身份验证。在 Google Cloud Console 中创建受限 API 密钥。

创建 API 密钥

  1. 前往 Google Cloud 控制台的凭据页面
  2. 选择您的项目(与您的 Google SecOps 实例关联的项目)。
  3. 点击创建凭据 > API 密钥
  4. 系统会创建 API 密钥,并在对话框中显示该密钥。
  5. 点击 Edit API key (修改 API 密钥)以限制密钥。

限制 API 密钥

  1. API 密钥 设置页面中: 名称:输入描述性名称(例如 Google SecOps DNSFilter Webhook API Key
  2. API 限制 下:
    1. 选择限制密钥
    2. Select APIs (选择 API)下拉列表中,搜索并选择 Google SecOps API (或 Chronicle API )。
  3. 点击保存
  4. 从页面顶部的 API 密钥 字段中复制 API 密钥值。
  5. 妥善保存 API 密钥。

配置 DNSFilter 数据导出

构建 HEC 端点网址

  • 将 Google SecOps 端点网址和 API 密钥组合在一起,以创建 HEC 网址:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • 示例:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

在 DNSFilter 中配置数据导出

  1. 登录 DNSFilter 信息中心
  2. 依次前往 Tools > Data Export (工具 > 数据导出)。
  3. Export Destination (导出目标)部分,选择 HTTP Event Collector (HEC)
  4. HEC Configuration (HEC 配置)部分,输入以下内容:
    • HTTP Event Collector 网址:粘贴上一步中的完整端点网址(包含 API 密钥)。
    • Active Event Collector Token:粘贴在创建 Google SecOps Feed 期间生成的密钥。
  5. 点击保存配置
  6. DNSFilter 将测试连接,并在配置正确时显示一条成功消息。

验证数据注入

  1. DNSFilter 信息中心 中,依次前往 Tools > Data Export(工具 > 数据导出)。
  2. 验证状态 是否显示为有效已连接
  3. 在 Google SecOps 控制台中,依次前往 SIEM 设置 > Feed
  4. 找到您的 DNSFilter Feed,并验证状态 是否显示为有效
  5. 点击 Feed 名称以查看详情。
  6. 检查 Logs Ingested (注入的日志)指标,以确认数据正在流动。
  7. 如需搜索 DNSFilter 事件,请前往 Search(搜索),然后运行以下查询:

    metadata.log_type = "DNSFILTER"
    

身份验证方法参考

Google SecOps Webhook Feed 支持多种身份验证方法。DNSFilter HEC 集成使用混合方法。

使用的方法:混合(网址 + 标头)

DNSFilter 会在网址中发送 API 密钥,并在请求标头中发送密钥(HEC 令牌)。

  • 请求格式

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    Authorization: Splunk <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

替代方法:自定义标头

如果配置自定义应用以将日志发送到 Google SecOps,请使用此方法以提高安全性。

  • 请求格式

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • 优点

    • API 密钥和密钥在网址中不可见
    • 更安全(标头不会记录在 Web 服务器访问日志中)
    • 如果供应商支持,则首选此方法

身份验证标头名称

Google SecOps 接受以下标头名称进行身份验证:

  • 对于 API 密钥

    • x-goog-chronicle-auth(推荐)
    • X-Goog-Chronicle-Auth(不区分大小写)
  • 对于密钥

    • x-chronicle-auth(推荐)
    • X-Chronicle-Auth(不区分大小写)
    • Authorization: Splunk <TOKEN>(HEC 兼容性)

Webhook 限制和最佳实践

请求限制

限制
最大请求大小 4 MB
最大 QPS(每秒查询次数) 15,000
请求超时 30 秒
重试行为 自动重试,使用指数退避算法

最佳实践

  • 监控导出状态:定期检查 DNSFilter 信息中心内的数据导出状态,以确保数据持续流动。
  • API 密钥轮替:定期轮替 Google Cloud API 密钥,以确保安全。
  • 密钥管理:妥善存储 Google SecOps 密钥,并在密钥被破解时重新生成。
  • 数据保留:在 DNSFilter 和 Google SecOps 中配置适当的数据保留政策。
  • 提醒配置:在 Google SecOps 中为关键 DNS 安全事件设置提醒。

问题排查

连接测试失败

如果 DNSFilter 数据导出配置测试失败,请执行以下操作:

  1. 验证 HEC 网址是否正确,并且是否包含 API 密钥参数。
  2. 验证密钥(HEC 令牌)是否已正确复制,且不包含多余的空格。
  3. 检查 Google Cloud API 密钥是否已启用 Chronicle API 访问权限。
  4. 验证 Google SecOps Feed 是否处于有效 状态。
  5. 检查从 DNSFilter 到 Google Cloud 端点的网络连接。

Google SecOps 中未显示任何数据

如果连接成功,但未显示任何数据,请执行以下操作:

  1. 验证 DNS 查询是否在 DNSFilter 部署中生成。
  2. 检查 DNSFilter 查询日志,以确认流量是否正在处理。
  3. 在 Google SecOps 中,搜索 metadata.log_type = "DNSFILTER" 以验证注入。
  4. 检查 Google SecOps 中的 Feed Logs Ingested (注入的日志)指标。
  5. 查看 Feed Error Logs (错误日志)是否存在任何注入错误。

数据导出返回错误消息

常见错误原因:

  • 凭据无效:API 密钥或密钥不正确或已过期。
  • 区域不匹配:Google SecOps 端点网址区域与您的实例不匹配。
  • 权限:API 密钥未启用 Chronicle API 访问权限。
  • 网络问题:防火墙或代理阻止出站 HTTPS 连接。

UDM 映射表

日志字段 UDM 映射 逻辑
时间 metadata.collected_timestamp 使用日期格式 yyyy-MM-dd HH:mm:ss Z UTC 进行转换
metadata.event_type 如果 principal_ip_present、principal_hostname_present 或 principal_mac_present 为 true,则设置为“STATUS_UPDATE”,否则设置为“GENERIC_EVENT”
question_type network.dns.questions 使用 DNS 记录类型映射将 question_type 转换为 question.type,然后合并到数组中
代码 network.dns.response_code 使用 DNS 响应代码映射进行转换
协议 network.ip_protocol 使用 IP 协议映射进行转换
客户端 principal.hostname 直接复制值
request_address、ip4、ip6、source_addresses principal.ip 从 request_address(提取的 IP)、ip4(提取的 IP)、ip6(提取的 IP)以及从 source_addresses 数组中提取的 IP 合并
区域 principal.location.country_or_region 直接复制值
clientMac principal.mac 如果与 MAC 正则表达式匹配,则直接复制值
clientID principal.resource.product_object_id 直接复制值
用户名 principal.user.user_display_name 直接复制值
user_id principal.user.userid 直接复制值
code、original_code、clientType、collection、network_name、networkID、collectionID、policy、policyID、scheduled_policy、scheduled_policyID、sec_cats、sec_allow_cats、block_cats、block_allow_cats、threat、allowed、method、组织、organizationID、applicationID、application_name、application_categoryID、application_category_name security_result.detection_fields 将来自各种源字段的标签合并为键值对
域名 target.administrative_domain 直接复制值
fqdn target.domain.name 直接复制值
metadata.product_name 设置为“DNSFILTER”
metadata.vendor_name 设置为“DNSFILTER”

更新日志

查看此解析器的更新日志

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