收集 BlueCat Edge DNS 解析器日志

解析器版本: 1.0

支持范围:

本文档介绍了如何使用 Bindplane 代理将 BlueCat Edge DNS Resolver 日志注入 Google Security Operations。

BlueCat Edge DNS 解析器是一种 DNS 安全和管理解决方案,可生成 DNS 查询、响应和威胁检测事件的日志。解析器会对字段进行规范化处理,并将其映射到统一数据模型 (UDM),同时处理 JSON 和非 JSON 日志格式。

准备工作

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

  • Google SecOps 实例
  • Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • Bindplane 代理与 BlueCat BDDS 服务器之间的网络连接
  • 如果通过代理运行,请确保防火墙端口根据 Bindplane 代理要求处于打开状态
  • 对 BlueCat BDDS Web 界面的特权访问权限

获取 Bindplane 代理的 Google SecOps 凭据

如需向 Google SecOps 验证 Bindplane 代理的身份,请选择以下方法之一:

  • 新部署:使用 Chronicle API(方法 1)。
  • 旧版部署:继续使用注入身份验证文件(方法 2),直到注入 API 于 2027 年 7 月 20 日停用为止。
  1. 登录 Google Cloud 控制台,然后选择与您的 Google SecOps 实例关联的 Google Cloud 项目。
  2. 依次前往 IAM 和管理 > 服务账号。
  3. 点击创建服务账号 。
  4. 提供以下配置详细信息:
    • 服务账号名称:输入账号的名称(例如 bindplane-ingest)。
    • 服务账号说明:输入说明(例如 Bindplane agent log ingestion)。
  5. 点击创建并继续 。
  6. 在向此服务帐号授予对项目的访问权限 部分,点击选择角色 ,然后选择 Chronicle Editor 。
  7. 点击继续 ,然后点击完成 。
  8. 点击您创建的服务帐号,然后前往密钥 标签页。
  9. 依次点击添加密钥 > 创建新密钥。
  10. 选择 JSON ,然后点击创建 。密钥文件会下载到您的计算机。
  11. 将密钥文件另存为 Bindplane 收集器目录中的 ingestion-auth.json(在 Linux 上为 /opt/observiq-otel-collector/ingestion-auth.json,在 Windows 上为 C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json),或者更新 creds_file_path 在 config.yaml 中以与您保存该文件的路径匹配。
  12. 依次前往 IAM 和管理 > 设置 ,然后复制项目编号 。您需要此编号进行导出器配置。

方法 2:下载注入身份验证文件(旧版)

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理。
  3. 下载注入身份验证文件 。
  4. 将该文件安全地保存在将安装 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
    
  3. 等待安装完成。

  4. 运行以下命令,验证安装是否成功:

    sc query observiq-otel-collector
    

    该服务应显示为正在运行 。

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
    
  3. 等待安装完成。

  4. 运行以下命令,验证安装是否成功:

    sudo systemctl status observiq-otel-collector
    

    该服务应显示为活跃 (正在运行) 。

其他安装资源

如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南。

配置 Bindplane 代理以注入 syslog 并发送到 Google SecOps

找到配置文件

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

修改配置文件

  • 将 config.yaml 的全部内容替换为以下配置:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/bluecat_edge:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: BLUECAT_EDGE
        raw_log_field: body
    
    service:
      pipelines:
        logs/bluecat_edge_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/bluecat_edge
    

配置参数

替换以下占位符:

  • 接收器配置:

    • listen_address:要监听的 IP 地址和端口:
      • 0.0.0.0 以监听所有接口(推荐)
      • 端口 514 是标准 syslog 端口(在 Linux 上需要 root 权限;对于非 root 用户,请使用 1514)
  • 导出器配置:

    • creds_file_path:服务帐号 JSON 密钥文件的完整路径(方法 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id:从 Google SecOps 控制台复制的客户 ID
    • location:将 <LOCATION> 替换为 Google SecOps 实例的区域(例如 us、europe 或 asia-southeast1)。导出器会以此值作为 chronicle.googleapis.com 的前缀。如需查看完整列表,请参阅区域级端点。
    • project:将 <PROJECT_NUMBER> 替换为 IAM 和管理 > 设置 中的项目编号。
    • endpoint:保持设置为 chronicle.googleapis.com。

旧版注入 API 导出器

  • 如果您使用方法 2 中的注入身份验证文件,请将 exporters 代码块替换为以下内容。将 creds_file_path 设置为注入身份验证文件的路径,并且如果您的实例位于美国境外,请将 malachiteingestion-pa.googleapis.com 替换为您的 区域级端点(例如 europe-malachiteingestion-pa.googleapis.com)。

    exporters:
      chronicle/bluecat_edge:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: BLUECAT_EDGE
        raw_log_field: body
    

保存配置文件

  • 修改后,请保存该文件:
    • Linux:按 Ctrl+O,然后按 Enter,再按 Ctrl+X
    • Windows:依次点击文件 > 保存

重启 Bindplane 代理以应用更改

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

    sudo systemctl restart observiq-otel-collector
    
    1. 验证服务是否正在运行:

      sudo systemctl status observiq-otel-collector
      
    2. 检查日志中是否存在错误:

      sudo journalctl -u observiq-otel-collector -f
      
  • 如需在 Windows 中重启 Bindplane 代理,请选择以下选项之一:

    • 以管理员身份运行命令提示符或 PowerShell:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • 服务控制台:

      1. 按 Win+R,输入 services.msc,然后按 Enter 键。
      2. 找到 observIQ OpenTelemetry Collector 。
      3. 右键点击,然后选择重启 。
      4. 验证服务是否正在运行:

        sc query observiq-otel-collector
        
      5. 检查日志中是否存在错误:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

在 BlueCat Edge DNS 解析器 上配置 syslog

  1. 登录 BDDS Web 界面。
  2. 依次前往配置 > 服务器标签页。
  3. 选择 BDDS 的名称 ,以打开服务器的详细信息标签页 。
  4. 依次点击服务器名称菜单 > 服务配置。
  5. 依次点击服务类型 > Syslog。
  6. 提供以下配置详细信息:
    • 选中 ISO 8601 时间戳 复选框,以便为本地记录的日志消息使用 ISO 8601 时间戳格式。
    • 服务器:输入 Bindplane 代理 IP 地址。
    • 端口:输入 Bindplane 代理端口号。
    • 级别:选择信息。
    • 选中 Use RFC 5424 Syslog Protocol 复选框,以便为 syslog 消息使用 RFC 5424 syslog 协议。
    • 选中 ISO 8601 时间戳 复选框,以便为重定向到远程 syslog 服务器的 syslog 消息使用 ISO 8601 时间戳格式。
    • 在服务类型下,选择DNS、DHCP和所有其他服务。
    • 传输:选择 UDP。
    • 点击 Add (添加)。
  7. 点击更新 。

UDM 映射表

日志字段 UDM 映射 逻辑
answer.domainName network.dns.answers.name DNS 响应的 answer 部分中的域名。系统会移除尾随的 .。
answer.recordTypeId network.dns.answers.type DNS 响应的 answer 部分中的记录类型 ID,转换为无符号整数。
answer.ttl network.dns.answers.ttl DNS 响应的 answer 部分中的存留时间 (TTL) 值,转换为无符号整数。
customerId target.user.userid 日志中的客户 ID,表示发起 DNS 请求的用户。
domain.domainName network.dns.authority.data DNS 响应的 authority 或 additional 部分中的域名。系统会移除尾随的 .。
hostname principal.hostname 从原始日志的 Host 标头中提取的主机名,仅当日志不是 JSON 格式时才适用。
method network.http.method 从原始日志中提取的 HTTP 方法,仅当日志不是 JSON 格式时才适用。
parentDomain principal.administrative_domain 所查询 DNS 名称的父网域。系统会移除尾随的 .。
port principal.port 从原始日志的 Host 标头中提取的端口号,仅当日志不是 JSON 格式时才适用,并转换为整数。
question.domainName network.dns.questions.name DNS 请求的 question 部分中的域名。系统会移除尾随的 .。
question.questionTypeId network.dns.questions.type DNS 请求的 question 部分中的问题类型 ID,转换为无符号整数。
responseData.header.aa network.dns.authoritative DNS 响应是否具有权威性,从 responseData 部分提取。
responseData.header.id network.dns.id DNS 消息 ID,从 responseData 部分提取,转换为无符号整数。
responseData.header.opcode network.dns.opcode DNS 消息操作码,从 responseData 部分提取,转换为无符号整数。
responseData.header.ra network.dns.recursion_available 是否提供递归,从 responseData 部分提取。
responseData.header.rcode network.dns.response_code DNS 响应代码,从 responseData 部分提取,转换为无符号整数。
responseData.header.rd network.dns.recursion_desired 是否选择了递归,从 responseData 部分提取。
responseData.header.tc network.dns.truncated DNS 消息是否被截断,从 responseData 部分提取。
servicePointId additional.fields.value.string_value 日志中的服务点 ID。
siteId additional.fields.value.string_value 日志中的网站 ID。
socketProtocol network.ip_protocol 用于 DNS 请求的网络协议(TCP 或 UDP)。
sourceAddress principal.ip DNS 客户端的 IP 地址。
sourcePort principal.port DNS 客户端的端口号,转换为整数。
threat.indicators security_result.category_details 与检测到的威胁关联的指标。
threat.type security_result.threat_name 检测到的威胁的类型。
time metadata.event_timestamp.seconds DNS 事件的时间戳,从 time 字段提取,并从毫秒转换为秒。
User-Agent network.http.user_agent 从原始日志中提取的用户代理字符串,仅当日志不是 JSON 格式时才适用。
additional.fields.key servicePointId 或 siteId 或 Content-Type 或 Content-Length,具体取决于原始日志的内容。
metadata.event_type 事件类型,如果存在 DNS 问题,则设置为 NETWORK_DNS,否则设置为 GENERIC_EVENT。
metadata.log_type 日志类型,始终设置为 BLUECAT_EDGE。
network.application_protocol 应用协议,如果存在 DNS 问题,则设置为 DNS,否则,如果提取了 HTTP 方法,则设置为 HTTP,或留空。

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