收集 Cisco Secure ACS 日志

解析器版本:3.0

支持的语言:

本文档介绍了如何使用 Bindplane 将 Cisco Secure ACS 日志注入到 Google Security Operations。

解析器从 Cisco Secure ACS syslog 和键值对格式的日志中提取字段。它使用 grok 和/或 kv 来解析日志消息,然后将这些值映射到统一数据模型 (UDM)。它还会为事件来源和类型设置默认元数据值。

准备工作

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

  • Google SecOps 实例
  • Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • 如果通过代理运行,请确保防火墙端口根据 Bindplane 代理要求处于开放状态
  • 对 Cisco Secure ACS 网页界面的特权访问权限

获取 Bindplane 代理的 Google SecOps 凭据

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

  • 新部署:使用 Chronicle API(选项 1)。
  • 旧版部署:继续使用数据注入身份验证文件(方法 2),直到 Ingestion 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
    

该服务应显示为 RUNNING。

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
    

该服务应显示为 active (running)。

其他安装资源

如需了解其他安装选项和问题排查,请参阅 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/chronicle_w_labels:
        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: '/path/to/ingestion-authentication-file.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: 'CISCO_ACS'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    

配置参数

  • 替换以下占位符:

    • 接收器配置:

      • udplog:使用 udplog 表示 UDP syslog,使用 tcplog 表示 TCP syslog
      • 0.0.0.0:要监听的 IP 地址(0.0.0.0 表示监听所有接口)
      • 514:要监听的端口号(标准 syslog 端口)
    • 导出器配置:

      • 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:从“获取客户 ID”部分获取的客户 ID
      • location:将 <LOCATION> 替换为 Google SecOps 实例所在的区域(例如 us、europe 或 asia-southeast1)。导出工具会在此值前面加上 chronicle.googleapis.com。如需查看完整列表,请参阅区域级端点。
      • project:将 <PROJECT_NUMBER> 替换为“IAM 和管理”>“设置”中的项目编号。
      • endpoint:保持设置为 chronicle.googleapis.com。
      • log_type:日志类型,与 Chronicle (CISCO_ACS) 中显示的完全一致

旧版提取 API 导出工具

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

    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'CISCO_ACS'
        raw_log_field: body
        ingestion_labels:
    

保存配置文件

  • 修改后,保存文件:
    • 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 收集器。
      3. 右键点击,然后选择重新启动。

      4. 验证服务是否正在运行:

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

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

在 Cisco Secure ACS 上配置 Syslog 转发

  1. 登录 Cisco Secure ACS 网页界面。
  2. 依次前往系统管理 > 配置 > 日志配置 > 远程日志目标。
  3. 点击创建以添加新的远程日志目标。
  4. 提供以下配置详细信息:
    • 名称:输入一个描述性名称(例如 Google-SecOps-Bindplane)。
    • 说明:输入说明(可选)。
    • IP 地址:输入 Bindplane 代理主机的 IP 地址。
    • 端口:输入 514。
    • Facility Code(设施代码):选择 LOCAL6(或您首选的设施)。
  5. 点击提交。
  6. 依次前往系统管理 > 配置 > 日志配置 > 日志记录类别。
  7. 选择要转发的日志类别:
    • AAA 审核
    • AAA 诊断
    • 管理和运营审核
    • 系统诊断
  8. 对于每个所选类别,点击类别名称。
  9. 前往远程日志目标标签页。
  10. 将创建的远程日志目标(例如 Google-SecOps-Bindplane)从可用移至已选择。
  11. 点击保存。
  12. 通过检查 Bindplane 代理日志,验证是否正在发送 syslog 消息。

UDM 映射表

日志字段 UDM 映射 逻辑
Acct-Authentic additional.fields[].value.string_value 值取自 Acct-Authentic 字段。
Acct-Delay-Time additional.fields[].value.string_value 值取自 Acct-Delay-Time 字段。
Acct-Input-Octets additional.fields[].value.string_value 值取自 Acct-Input-Octets 字段。
Acct-Input-Packets additional.fields[].value.string_value 值取自 Acct-Input-Packets 字段。
Acct-Output-Octets additional.fields[].value.string_value 值取自 Acct-Output-Octets 字段。
Acct-Output-Packets additional.fields[].value.string_value 值取自 Acct-Output-Packets 字段。
Acct-Session-Id additional.fields[].value.string_value 值取自 Acct-Session-Id 字段。
Acct-Session-Time additional.fields[].value.string_value 值取自 Acct-Session-Time 字段。
Acct-Status-Type additional.fields[].value.string_value 值取自 Acct-Status-Type 字段。
Acct-Terminate-Cause additional.fields[].value.string_value 值取自 Acct-Terminate-Cause 字段。
ACSVersion additional.fields[].value.string_value 值取自 ACSVersion 字段。
AD 网域 principal.group.group_display_name 值取自“AD-Domain”字段。
AD-IP-Address principal.ip 值取自 AD-IP-Address 字段。
Called-Station-ID additional.fields[].value.string_value 值取自 Called-Station-ID 字段。
Calling-Station-ID additional.fields[].value.string_value 值取自 Calling-Station-ID 字段。
类 additional.fields[].value.string_value 值取自“Class”字段。
CmdSet (未映射) 未映射到 IDM 对象。
ConfigVersionId additional.fields[].value.number_value 值取自 ConfigVersionId 字段,并转换为浮点数。
DestinationIPAddress target.ip、intermediary.ip 值取自 DestinationIPAddress 字段。intermediary.ip 派生自设备 IP 地址。
DestinationPort target.port 值取自 DestinationPort 字段,并转换为整数。
设备 IP 地址 intermediary.ip 该值取自“设备 IP 地址”字段。
设备端口 intermediary.port 值取自“设备端口”字段,并转换为整数。
DetailedInfo security_result.summary、security_result.description、security_result.action 如果 DetailedInfo 为“Authentication succeed”,则 security_result.summary 为“successful login occurred”,且 security_result.action 为 ALLOW。如果 DetailedInfo 包含“Invalid username or password specified”,则 security_result.summary 为“failed login occurred”,security_result.action 为 BLOCK。security_result.description 派生自 log_header。
Framed-IP-Address principal.ip 值取自 Framed-IP-Address 字段。
Framed-Protocol additional.fields[].value.string_value 值取自 Framed-Protocol 字段。
NAS-IP-Address target.ip 值取自 NAS-IP-Address 字段。
NAS-Port additional.fields[].value.string_value 值取自 NAS-Port 字段。
NAS-Port-Id target.port 值取自 NAS-Port-Id 字段,并转换为整数。
NAS-Port-Type additional.fields[].value.string_value 值取自 NAS-Port-Type 字段。
NetworkDeviceName target.hostname 值取自 NetworkDeviceName 字段。
协议 additional.fields[].value.string_value 值取自“协议”字段。
RadiusPacketType (未映射) 未映射到 IDM 对象。
Remote-Address principal.ip、target.ip 该值取自 Remote-Address 字段,并解析为 IP 地址。对于身份验证事件,它会映射到 principal.ip;对于结算和诊断事件,它会映射到 target.ip。
RequestLatency additional.fields[].value.string_value 值取自 RequestLatency 字段。
响应 principal.user.userid 如果 Response 包含“User-Name”,则系统会提取用户名并将其映射到 principal.user.userid。
SelectedAccessService additional.fields[].value.string_value 值取自 SelectedAccessService 字段。
SelectedAuthenticationIdentityStores security_result.detection_fields[].value 值取自 SelectedAuthenticationIdentityStores 字段。
SelectedAuthorizationProfiles security_result.detection_fields[].value 值取自 SelectedAuthorizationProfiles 字段。
Service-Type additional.fields[].value.string_value 值取自 Service-Type 字段。
Tunnel-Client-Endpoint additional.fields[].value.string_value 值取自 Tunnel-Client-Endpoint 字段,并解析为 IP 地址。
用户 target.user.userid 值取自“用户”字段。
用户名 target.user.userid, principal.mac 如果 UserName 是 MAC 地址,则系统会对其进行解析并将其映射到 principal.mac。否则,系统会将其映射到 target.user.userid。
ac-user-agent network.http.user_agent 值取自 ac-user-agent 字段。
猫 metadata.description 值取自 cat 字段。
device-mac principal.mac 值取自 device-mac 字段,添加了英文冒号,并将值转换为小写。如果 device-mac 为“00”,则会替换为“00:00:00:00:00:00”。
device-platform principal.asset.platform_software.platform 如果 device-platform 为“win”,则将值“WINDOWS”分配给 principal.asset.platform_software.platform。
device-platform-version principal.asset.platform_software.platform_version 值取自 device-platform-version 字段。
device-public-mac principal.mac 值取自 device-public-mac 字段,连字符替换为冒号,并且值转换为小写。
device-type principal.asset.hardware.model 值取自 device-type 字段。
device-uid principal.asset.asset_id 此值取自 device-uid 字段,并以“资产 ID: ”作为前缀。
device-uid-global principal.asset.product_object_id 值取自 device-uid-global 字段。
主机名 principal.hostname 值取自主机名字段。
ip:source-ip principal.ip 值取自 ip:source-ip 字段。
kv.ADDomain (未映射) 未映射到 IDM 对象。
kv.Airespace-Wlan-Id (未映射) 未映射到 IDM 对象。
kv.AuthenticationIdentityStore (未映射) 未映射到 IDM 对象。
kv.AVPair (未映射) 未映射到 IDM 对象。
kv.CVPN3000/ASA/PIX7.x-DAP-Tunnel-Group-Name (未映射) 未映射到 IDM 对象。
kv.CVPN3000/ASA/PIX7.x-Group-Based-Address-Pools (未映射) 未映射到 IDM 对象。
kv.ExternalGroups (未映射) 未映射到 IDM 对象。
kv.FailureReason (未映射) 未映射到 IDM 对象。
kv.IdentityAccessRestricted (未映射) 未映射到 IDM 对象。
kv.IdentityGroup (未映射) 未映射到 IDM 对象。
kv.NAS-Identifier (未映射) 未映射到 IDM 对象。
kv.SelectedShellProfile (未映射) 未映射到 IDM 对象。
kv.ServiceSelectionMatchedRule (未映射) 未映射到 IDM 对象。
kv.State (未映射) 未映射到 IDM 对象。
kv.Step (未映射) 未映射到 IDM 对象。
kv.Tunnel-Medium-Type (未映射) 未映射到 IDM 对象。
kv.Tunnel-Private-Group-ID (未映射) 未映射到 IDM 对象。
kv.Tunnel-Type (未映射) 未映射到 IDM 对象。
kv.UseCase (未映射) 未映射到 IDM 对象。
kv.UserIdentityGroup (未映射) 未映射到 IDM 对象。
kv.VendorSpecific (未映射) 未映射到 IDM 对象。
kv.attribute-131 (未映射) 未映射到 IDM 对象。
kv.attribute-89 (未映射) 未映射到 IDM 对象。
kv.cisco-av-pair (未映射) 未映射到 IDM 对象。
kv.cisco-av-pair:CiscoSecure-Group-Id (未映射) 未映射到 IDM 对象。
leef_version (未映射) 未映射到 IDM 对象。
log_header metadata.description 值取自 log_header 字段。
log_id metadata.product_log_id 值取自 log_id 字段。
log_type metadata.product_event_type 值取自 log_type 字段。
message_severity (未映射) 未映射到 IDM 对象。
产品 metadata.product_name 值取自商品字段。
product_version metadata.product_version 值取自 product_version 字段。
server_host target.hostname 值取自 server_host 字段。
时间戳 metadata.event_timestamp 值取自时间戳字段和时区字段(移除冒号后)。组合值会被解析为时间戳。
网址 network.dns.questions[].name 值取自 url 字段。
vendor metadata.vendor_name 值取自供应商字段。最初设置为“GENERIC_EVENT”,然后可能会根据 log_type 和解析的字段进行覆盖。可以是“USER_LOGIN”“USER_UNCATEGORIZED”“NETWORK_DNS”“NETWORK_CONNECTION”“STATUS_UPDATE”或“STATUS_UNCATEGORIZED”。最初设置为“Cisco”,然后可能会被供应商字段覆盖。最初设置为“ACS”,然后可能会被商品字段覆盖。设置为“CISCO_ACS”。设置为“USERNAME_PASSWORD”。设置为“TACACS”。对于 RADIUS 结算和诊断事件,请设置为“UDP”。对于 DNS 事件,设置为“DNS”。派生自 security_action 字段,该字段根据登录是否成功而设置。对于成功登录,设置为“成功登录”;对于登录失败,设置为“登录失败”。对于某些身份存储区诊断事件,也可以设置为“passed”。针对登录尝试失败的情况,设置为“LOW”。通过在 device-uid 字段前面添加“资产 ID: ”来构建。
hostname event.idm.read_only_udm.intermediary.hostname和event.idm.read_only_udm.intermediary.asset.hostname之间 从更新日志映射
hostname event.idm.read_only_udm.intermediary.ip和event.idm.read_only_udm.intermediary.asset.ip之间 从更新日志映射
kv.NAS-IP-Address event.idm.read_only_udm.target.ip和event.idm.read_only_udm.target.asset.ip之间 从更新日志映射
kv.source_ip event.idm.read_only_udm.principal.asset.ip 从更新日志映射
kv.NetworkDeviceName event.idm.read_only_udm.target.asset.hostname 从更新日志映射
kv.Remote-Address event.idm.read_only_udm.target.asset.ip 从更新日志映射
kv.DeviceIPAddress event.idm.read_only_udm.principal.asset.ip 从更新日志映射
kv.AD-IP-Address event.idm.read_only_udm.principal.asset.ip 从更新日志映射
kv.Framed-IP-Address event.idm.read_only_udm.principal.asset.ip 从更新日志映射
kv.Caller-Id event.idm.read_only_udm.principal.ip和event.idm.read_only_udm.principal.asset.ip之间 从更新日志映射
kv.Group-Name event.idm.read_only_udm.principal.group.group_display_name 从更新日志映射
kv.Session ID event.idm.read_only_udm.network.session_id 从更新日志映射
kv.FailureReason event.idm.read_only_udm.security_result.detection_fields 从更新日志映射
kv.IdentityPolicyMatchedRule event.idm.read_only_udm.security_result.detection_fields 从更新日志映射
kv.ServiceSelectionMatchedRule event.idm.read_only_udm.security_result.rule_name 从更新日志映射
kv.cmd event.idm.read_only_udm.principal.process.command_line 从更新日志映射
kv.Network Device Group event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Access Device event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Priv-lvl event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Network Access Profile Name event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Authen-Failure-Code event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Message-Type event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Privilege-Level event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Authen-Type event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Service event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Port event.idm.read_only_udm.additional.fields 从更新日志映射
kv.NAS-Portname event.idm.read_only_udm.additional.fields 从更新日志映射
kv.service event.idm.read_only_udm.additional.fields 从更新日志映射
kv.priv-lvl event.idm.read_only_udm.additional.fields 从更新日志映射
kv.task_id event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Acct-Flags event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Acct-Method event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Acct-Type event.idm.read_only_udm.additional.fields 从更新日志映射
kv.Acct-Service event.idm.read_only_udm.additional.fields 从更新日志映射
kv.timezone event.idm.read_only_udm.additional.fields 从更新日志映射
kv.AAA Server event.idm.read_only_udm.additional.fields 从更新日志映射
kv.start_time event.idm.read_only_udm.additional.fields 从更新日志映射
steps event.idm.read_only_udm.additional.fields 从更新日志映射
kv.NetworkDeviceGroups event.idm.read_only_udm.additional.fields 从更新日志映射
kv.AuthenticationMethod additional.fields 从更新日志映射
kv.SelectedAccessService additional.fields 从更新日志映射
kv.SelectedAuthorizationProfiles security_result.detection_fields 从更新日志映射
kv.SelectedAuthenticationIdentityStores security_result.detection_fields 从更新日志映射
kv.device-uid-global principal.asset.product_object_id 从更新日志映射
kv.device-uid principal.asset.asset_id 从更新日志映射
metadata.event_type USER_UNCATEGORIZED 从更新日志映射

更新日志

查看此解析器的更新日志

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