收集 Cisco DNA Center 平台日志

支持的平台:

本文档介绍了如何使用两种不同的方法将 Cisco DNA Center Platform 日志注入到 Google Security Operations。请选择最符合您的环境和要求的选项。解析器会将 Cisco DNA Center SYSLOG+JSON 日志转换为统一数据模型 (UDM)。它从原始日志消息和 JSON 载荷中提取字段,将这些字段映射到相应的 UDM 属性,并根据严重程度和涉及的实体等事件特征,使用标签和安全情境来丰富数据。

准备工作

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

  • Google SecOps 实例
  • 对 Cisco DNA Center 平台管理控制台的特权访问权限
  • 选择您首选的集成方法:
    • 对于选项 2:Cisco DNA Center 与 Google SecOps 网络钩子端点之间的网络连接
    • 对于选项 1:Windows 2016 或更高版本,或者具有 systemd 的 Linux 主机(用于安装 Bindplane 代理)

选项 1:使用 Bindplane 代理进行系统日志集成

此选项使用从 Cisco DNA Center 到 Bindplane 的 syslog 转发,然后将结构化日志转发到 Google SecOps。

获取 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: YOUR_CUSTOMER_ID
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'CISCO_DNAC'
        raw_log_field: body
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • 根据基础架构的需要替换端口和 IP 地址。
    • <YOUR_CUSTOMER_ID> 替换为实际的客户 ID。
    • /path/to/ingestion-authentication-file.json 更新为获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。
    • 此配置使用 Bindplane 代理 Syslog (UDP) 接收器从 DNA Center 收集结构化 syslog 消息。

重启 Bindplane 代理以应用更改

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

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

    net stop BindPlaneAgent && net start BindPlaneAgent
    

在 Cisco DNA Center 平台上配置 Syslog 转发

  1. 登录 Cisco DNA Center 平台
  2. 依次前往系统 > 设置 > 外部服务 > 目的地 > Syslog
  3. 点击 + 添加以创建新的 syslog 目标。
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Google SecOps BindPlane)。
    • 主机:输入 BindPlane 代理 IP 地址。
    • 端口:输入 514(或在 BindPlane 中配置的端口)。
    • 协议:根据您的 BindPlane 配置,选择 UDPTCP
    • 设施:选择合适的设施(例如 Local0)。
    • 严重程度:选择信息可捕获所有事件级别。
  5. 点击保存

选项 2:实时网络钩子集成

此选项使用 Cisco DNA Center 的原生 webhook 功能,可将结构化 JSON 事件直接实时传递给 Google SecOps。

概览

Cisco DNA Center 原生支持 webhook 通知,可用于实时事件传递。此选项提供包含丰富事件上下文的结构化 JSON 载荷,可将事件直接传递给 Google SecOps,而无需使用 Bindplane 作为中介。

配置 Google SecOps Webhook Feed

  1. 在 Google SecOps 中,依次前往 SIEM 设置 > Feed
  2. 点击 + 添加新 Feed
  3. Feed 名称字段中,输入 Feed 的名称(例如 Cisco DNA Center Webhook)。
  4. 选择 Webhook 作为来源类型
  5. 选择 Cisco DNA Center Platform 作为日志类型
  6. 点击下一步
  7. 为以下输入参数指定值:
    • 拆分分隔符:可选 \n
    • 资产命名空间资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签。
  8. 点击下一步
  9. 检查 Feed 配置,然后点击提交
  10. 点击生成密钥,生成用于对此 Feed 进行身份验证的密钥。
  11. 复制保存此密钥,因为您将无法再次查看此密钥。
  12. 点击详细信息标签页。
  13. 端点信息字段复制 Feed 端点网址。
  14. 点击完成

为 webhook Feed 创建 API 密钥

  1. 前往 Google Cloud 控制台的凭据页面。
  2. 点击创建凭据,然后选择 API 密钥
  3. 将 API 密钥的访问权限限制为 Google SecOps API

在 Cisco DNA Center 中配置 Webhook 目标

  1. 登录 Cisco DNA Center 平台
  2. 依次前往系统 > 设置 > 外部服务 > 目的地 > Webhook
  3. 点击 + 添加以创建新的 Webhook 目标。
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Google SecOps Webhook)。
    • 说明:输入 Webhook 的说明。
    • 网址:输入上一步中的 Google SecOps webhook 端点网址。
    • 方法:选择 POST
    • 信任证书:如果使用自签名证书,请选择
    • 标头:添加必需的标头:
      • Content-Typeapplication/json
      • X-goog-api-key:您的 Google Cloud API 密钥
      • X-Webhook-Access-Key:您的 Google SecOps Feed 密钥
  5. 点击测试连接以验证连接。
  6. 点击保存

订阅网络钩子通知的事件

  1. 在 Cisco DNA Center 中,依次前往 Platform > Developer Toolkit > Event Notifications
  2. 点击 + 订阅
  3. 提供以下配置详细信息:
    • 订阅名称:输入一个描述性名称(例如 Google SecOps Events)。
    • 连接器类型:选择 REST 端点
    • 目标位置:选择在上一步中创建的网络钩子目标位置。
  4. 选择要监控的事件类型:
    • 网络事件:设备无法访问、接口关闭、配置更改。
    • 安全事件:安全政策违规、身份验证失败。
    • 系统事件:平台事件、软件更新、维护。
    • 保证事件:性能下降、连接问题。
  5. 根据需要配置事件过滤条件:
      <x0A>
    • 严重程度:选择最低严重程度级别(例如 P1P2)。
    • 网域:按特定网域(例如连接性能)过滤。
  6. 点击订阅

UDM 映射表

日志字段 UDM 映射 逻辑
类别 security_result.severity_details 直接从原始日志中的 category 字段映射。
ciscoDnaEventLink target.url 直接从原始日志中的 ciscoDnaEventLink 字段映射。
date_time metadata.event_timestamp 使用 Grok 模式从原始日志消息中提取,并转换为时间戳格式。
details.Assurance_Issue_Category security_result.about.resource.attribute.labels[].value 直接从原始日志中的 details.Assurance_Issue_Category 字段映射。此标签的键为“Assurance_Issue_Category”。
details.Assurance_Issue_Details security_result.summary 直接从原始日志中的 details.Assurance_Issue_Details 字段映射。
details.Assurance_Issue_Name security_result.about.resource.attribute.labels[].value 直接从原始日志中的 details.Assurance_Issue_Name 字段映射。相应标签的键为“Assurance_Issue_Name”。
details.Assurance_Issue_Priority security_result.about.resource.attribute.labels[].value 直接从原始日志中的 details.Assurance_Issue_Priority 字段映射。相应标签的键为“Assurance_Issue_Priority”。
details.Assurance_Issue_Status security_result.about.resource.attribute.labels[].value 直接从原始日志中的 details.Assurance_Issue_Status 字段映射。相应标签的键为“Assurance_Issue_Status”。
details.Device target.ip 或 target.hostname 从原始日志中的 details.Device 字段映射而来。如果值为 IP 地址,则映射到 target.ip,否则映射到 target.hostname
dnacIp target.ip 如果原始日志中的 dnacIp 字段是 IP 地址,则直接从该字段映射。
域名 additional.fields[].value.string_value 直接从原始日志中的 domain 字段映射。此字段的键为“domain”。
eventId metadata.product_event_type 直接从原始日志中的 eventId 字段映射。
instanceId target.resource.product_object_id 直接从原始日志中的 instanceId 字段映射。
name target.resource.attribute.labels[].value 直接从原始日志中的 name 字段映射。相应标签的键为“name”。
命名空间 target.namespace 直接从原始日志中的 namespace 字段映射。
network.deviceId target.asset.asset_id 直接从原始日志中的 network.deviceId 字段映射,并以“deviceId: ”为前缀。
note additional.fields[].value.string_value 直接从原始日志中的 note 字段映射。此字段的键为“note”。
metadata.event_type 根据 has_principalhas_targetuserId 字段的存在情况和值来确定。可能的值:NETWORK_CONNECTION、USER_UNCATEGORIZED、STATUS_UPDATE、GENERIC_EVENT。
is_alert 如果严重程度为 0 或 1,则返回 True;否则,返回 False。
is_significant 如果严重程度为 0 或 1,则返回 True;否则,返回 False。
和程度上减少 用于确定 security_result.severityis_alertis_significant 的值。
来源 target.resource.attribute.labels[].value 直接从原始日志中的 source 字段映射。相应标签的键为“source”。
src_ip principal.ip 使用 Grok 模式从原始日志消息中提取。
subDomain additional.fields[].value.string_value 直接从原始日志中的 subDomain 字段映射。相应字段的键为“subDomain”。
tntId target.resource.attribute.labels[].value 直接从原始日志中的 tntId 字段映射。相应标签的键为“tntId”。
类型 target.resource.attribute.labels[].value 直接从原始日志中的 type 字段映射。相应标签的键为“type”。
userId target.user.userid 直接从原始日志中的 userId 字段映射。
版本 metadata.product_version 直接从原始日志中的 version 字段映射。

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