收集 Cisco Catalyst Center(以前称为 DNA Center)日志

解析器版本:2.0

支持的平台:

本文档介绍了如何使用两种不同的方法将 Cisco Catalyst Center(以前称为 DNA Center)日志注入到 Google Security Operations。请选择最符合您的环境和要求的选项。

Cisco Catalyst Center 是一个集中式网络管理和自动化平台,适用于企业园区、分支机构和 IoT 网络。它可在有线和无线基础设施中提供基于意图的网络、政策管理、设备配置、保障分析和 AI 驱动的问题检测。Catalyst Center 会生成与网络健康状况、设备状态变化、安全政策违规和保障问题相关的事件。

准备工作

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

  • Google SecOps 实例。
  • 对 Cisco Catalyst Center 管理控制台的特权访问权限。
  • 对于选项 1:Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机(适用于 Bindplane 代理)。
  • 对于选项 2:Cisco Catalyst Center 与 Google SecOps 网络钩子端点之间的网络连接。

选项 1 - 使用 Bindplane 代理进行 Syslog 集成

此选项使用从 Cisco Catalyst 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
    
  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 systemctl status observiq-otel-collector
    
    • Windows
    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

修改配置文件

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

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/cisco_catalyst_center:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: CISCO_DNAC
            raw_log_field: body
    
    service:
        pipelines:
            logs/cisco_catalyst_center_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/cisco_catalyst_center
    

配置参数

替换以下占位符:

  • 接收器配置

    • listen_address:要监听的 IP 地址和端口。使用 0.0.0.0 可监听所有接口。如果需要,请替换端口(例如,对于非 root Linux,请使用 1514)。
  • 导出器配置

    • creds_file_path:提取身份验证文件的完整路径:
      • Linux/etc/bindplane-agent/ingestion-auth.json
      • WindowsC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • YOUR_CUSTOMER_ID:您的 Google SecOps 客户 ID。
    • endpoint:区域端点网址:
      • 美国malachiteingestion-pa.googleapis.com
      • 欧洲europe-malachiteingestion-pa.googleapis.com
      • 亚洲asia-southeast1-malachiteingestion-pa.googleapis.com
      • 如需查看完整列表,请参阅区域级端点

保存配置文件

  • 修改后,保存文件:
    • Linux:依次按 Ctrl+OEnterCtrl+X
    • Windows:依次点击文件 > 保存

重启 Bindplane 代理以应用更改

如需在 Linux 中重启 Bindplane 代理,请执行以下操作:

  1. 运行以下命令:

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

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

    sudo journalctl -u observiq-otel-collector -f
    

如需在 Windows 中重启 Bindplane 代理,请执行以下操作:

  1. 请从下列选项中选择一项:

    • 以管理员身份运行命令提示符或 PowerShell:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • 服务控制台:
      1. Win+R,输入 services.msc,然后按 Enter 键。
      2. 找到 observIQ OpenTelemetry 收集器
      3. 右键点击并选择重新启动
  2. 验证服务是否正在运行:

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

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

在 Cisco Catalyst Center 上配置 syslog 转发

  1. 登录 Cisco Catalyst Center
  2. 依次前往系统 > 设置 > 外部服务 > 目的地 > Syslog
  3. 点击添加图标 (+) 以创建新的 syslog 目标。
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Google SecOps-Bindplane)。
    • 说明:输入简要说明(例如 Syslog forwarding to Google SecOps via Bindplane)。
    • 主机名/IP 地址:输入 Bindplane 代理主机 IP 地址。
    • 端口:输入 514(或在 Bindplane 代理中配置的端口)。
    • 协议:根据您的 Bindplane 配置,选择 UDPTCP
  5. 点击保存

选项 2 - 网络钩子集成

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

在 Google SecOps 中创建 Webhook Feed

创建 Feed

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 在下一页上,点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称(例如 Cisco Catalyst Center Webhook)。
  5. 选择 Webhook 作为来源类型
  6. 选择 Cisco Catalyst Center 作为日志类型
  7. 点击下一步
  8. 为以下输入参数指定值:
    • 拆分定界符(可选):对于以换行符分隔的事件,请输入 \n
    • 资产命名空间资产命名空间
    • 注入标签:要应用于此 Feed 中事件的标签。
  9. 点击下一步
  10. 最终确定界面中查看新的 Feed 配置,然后点击提交

生成并保存密钥

创建 Feed 后,您必须生成用于身份验证的密钥:

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

获取 Feed 端点网址

  1. 前往相应 Feed 的详细信息标签页。
  2. 端点信息部分,复制 Feed 端点网址
  3. 保存此网址以供后续步骤使用。
  4. 点击完成

创建 Google Cloud API 密钥

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

创建 API 密钥

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

限制 API 密钥

  1. API 密钥设置页面中:
    • 名称:输入一个描述性名称(例如 Chronicle Webhook API Key)。
  2. API 限制下:
    1. 选择限制密钥
    2. 选择 API 下拉菜单中,搜索并选择 Chronicle API
  3. 点击保存
  4. 从页面顶部的 API 密钥字段复制 API 密钥值。
  5. 安全地保存 API 密钥。

在 Cisco Catalyst Center 中配置 webhook 目标

  1. 登录 Cisco Catalyst Center
  2. 依次前往系统 > 设置 > 外部服务 > 目的地 > Webhook
  3. 点击添加图标 (+) 以创建新的 Webhook 目标。
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Google SecOps-Webhook)。
    • 说明:输入简要说明(例如 Webhook to Google SecOps)。
    • 网址:粘贴 Google SecOps Webhook 端点网址。
    • 方法:选择 POST
    • 身份验证:选择无身份验证
    • 信任证书:选择
    • 标头:点击添加标头,然后添加以下标头:
      • 名称Content-Typeapplication/json
      • 名称X-goog-api-key:您的 Google Cloud API 密钥
      • 名称X-Webhook-Access-Key:您的 Google SecOps Feed Secret 密钥
  5. 点击保存

订阅网络钩子通知的事件

  1. 在 Cisco Catalyst Center 中,依次前往 Platform > Developer Toolkit > Event Notifications
  2. 通知标签页中,点击创建新通知
  3. 第 1 步(选择网站和活动)中,选择要监控的网站和活动:
    • 网络事件:设备无法访问、接口关闭、配置更改。
    • 安全事件:安全政策违规、身份验证失败。
    • 系统事件:平台事件、软件更新、维护。
    • 保证事件:性能下降、连接问题。
  4. 点击下一步
  5. 第 2 步(选择渠道)中,选择 REST 作为通知渠道。
  6. 端点下拉菜单中,选择您在上一部分中创建的 Webhook 目标(例如 Google SecOps-Webhook)。
  7. 点击下一步
  8. 第 3 步(摘要)中,查看通知配置。
  9. 输入订阅的名称(例如 Google SecOps Events)。
  10. 点击完成

UDM 映射表

日志字段 UDM 映射 逻辑
category security_result.severity_details 原始日志中的 category 值会映射到 security_result.severity_details 字段。
ciscoDnaEventLink target.url 原始日志中的 ciscoDnaEventLink 值会映射到 target.url 字段。
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 值会映射到 security_result.summary 字段。
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.iptarget.hostname 如果值为 IP 地址,则映射到 target.ip,否则映射到 target.hostname
dnacIp target.ip 如果原始日志中的 dnacIp 值是有效的 IP 地址,则会映射到 target.ip
domain additional.fields[].value.string_value 原始日志中的 domain 值会作为键值对添加到 additional.fields 中,键为“domain”。
eventId metadata.product_event_type 原始日志中的 eventId 值会映射到 metadata.product_event_type 字段。
instanceId target.resource.product_object_id 原始日志中的 instanceId 值会映射到 target.resource.product_object_id 字段。
name target.resource.attribute.labels[].value 原始日志中的 name 值与键“name”相关联。
namespace target.namespace 原始日志中的 namespace 值会映射到 target.namespace 字段。
network.deviceId target.asset.asset_id 原始日志中的 network.deviceId 值带有“deviceId: ”前缀,并映射到 target.asset.asset_id
note additional.fields[].value.string_value 原始日志中的 note 值会作为键值对添加到 additional.fields 中,键为“note”。
severity security_result.severity 用于确定 security_result.severityis_alertis_significant 的值。
source target.resource.attribute.labels[].value 原始日志中的 source 值会映射到键“source”。
src_ip principal.ip 使用 grok 模式从原始日志消息中提取,并映射到 principal.ip
subDomain additional.fields[].value.string_value 原始日志中的 subDomain 值会作为键值对添加到 additional.fields 中,键为“subDomain”。
tntId target.resource.attribute.labels[].value 原始日志中的 tntId 值与键“tntId”相关联。
type target.resource.attribute.labels[].value 原始日志中的 type 值与键“type”相关联。
userId target.user.userid 原始日志中的 userId 值会映射到 target.user.userid 字段。
version metadata.product_version 原始日志中的 version 值会映射到 metadata.product_version 字段。
不适用 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。
correlationId event.idm.read_only_udm.additional.fields 从变更日志映射
isSimulated event.idm.read_only_udm.additional.fields 从变更日志映射
startTime event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time 从变更日志映射
details.wlcIp event.idm.read_only_udm.intermediary.ip 从变更日志映射
details.detectingApName event.idm.read_only_udm.observer.hostname 从变更日志映射
details.detectingApLocation event.idm.read_only_udm.observer.location.name 从变更日志映射
details.detectingApMacAddress event.idm.read_only_udm.observer.mac 从变更日志映射
network.siteId event.idm.read_only_udm.observer.resource.attribute.labels 从变更日志映射
src_ip event.idm.read_only_udm.principal.hostname 从变更日志映射
details event.idm.read_only_udm.security_result.detection_fields 从变更日志映射
details.threatType event.idm.read_only_udm.security_result.threat_name 从变更日志映射
tenantId event.idm.read_only_udm.target.resource.attribute.labels 从变更日志映射

更新日志

查看相应解析器的更改日志

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