收集 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 集成

此选项使用 syslog 将日志从 Cisco Catalyst Center 转发到 Bindplane 代理,然后由该代理将结构化日志转发到 Google SecOps。

获取 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 收集器目录(在 Linux 上为 /opt/observiq-otel-collector/ingestion-auth.json,在 Windows 上为 C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)中的 ingestion-auth.json,或更新 config.yaml 中的 creds_file_path 以与您保存密钥文件的路径相匹配。
  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/cisco_catalyst_center:
        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: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.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:服务账号 JSON 密钥文件的完整路径(选项 1):
      • Linux:/opt/observiq-otel-collector/ingestion-auth.json
      • Windows:C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • YOUR_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/cisco_catalyst_center:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CISCO_DNAC
        raw_log_field: body
    

保存配置文件

  • 修改后,保存文件:
    • Linux:依次按 Ctrl+O、Enter 和 Ctrl+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 配置,选择 UDP 或 TCP。
  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 后,您必须生成用于身份验证的密钥:

  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. 点击添加图标 (+) 以创建新的网络钩子目标。
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Google SecOps-Webhook)。
    • 说明:输入简要说明(例如 Webhook to Google SecOps)。
    • 网址:粘贴 Google SecOps Webhook 端点网址。
    • 方法:选择 POST。
    • 身份验证:选择无身份验证。
    • 信任证书:选择是。
    • 标头:点击添加标头,然后添加以下标头:
      • 名称:Content-Type,值:application/json
      • 名称:X-goog-api-key,值:您的 Google Cloud API 密钥
      • 名称:X-Webhook-Access-Key,值:您的 Google SecOps Feed 密钥
  5. 点击保存。

订阅事件以接收 Webhook 通知

  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.ip,target.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.severity、is_alert 和 is_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_principal、has_target 和 userId 字段的存在情况和值进行设置。可能的值: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 专业人士的解答。