收集 Cisco FireSIGHT Management Center 日志

支持的平台:

本文档介绍了如何使用 Bindplane 代理将 Cisco FireSIGHT Management Center 日志注入到 Google Security Operations。

Cisco FireSIGHT Management Center (FMC)(以前称为 FireSIGHT Management Center 或 Firepower Management Center)是一个集中式管理控制台,可为 Cisco Secure Firewall Threat Defense 设备提供全面的政策管理、事件分析和报告功能。FMC 可以通过 syslog 将连接事件、安全情报事件、入侵事件、文件事件和恶意软件事件发送到外部 SIEM 系统。

准备工作

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

  • Google SecOps 实例
  • Windows Server 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • Bindplane 代理与 Cisco FireSIGHT Management Center 之间的网络连接
  • 如果通过代理运行,请确保防火墙端口已根据 Bindplane 代理要求打开
  • 对 Cisco FireSIGHT Management Center 网页界面的特权访问权限
  • FMC 中的管理员或安全分析师用户角色

获取 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
      

      该服务应显示为 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
      

    该服务应显示为有效(正在运行)

其他安装资源

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

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

找到配置文件

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

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

修改配置文件

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

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/cisco_fmc:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: CISCO_FIRESIGHT
            raw_log_field: body
            ingestion_labels:
                env: production
                source: fmc
    
    service:
        pipelines:
            logs/fmc_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/cisco_fmc
    
  2. 替换以下占位符:

    • 接收器配置:

      • listen_address:设置为 0.0.0.0:514 可在 UDP 端口 51 上监听所有接口。如果端口 514 在 Linux 上需要 root 权限,请改用端口 1514,并配置 FMC 以发送到该端口。
    • 导出器配置:

      • creds_file_path:提取身份验证文件的完整路径:

        • Linux/etc/bindplane-agent/ingestion-auth.json
        • WindowsC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • YOUR_CUSTOMER_ID:替换为您的 customer ID。如需了解详情,请参阅获取 Google SecOps 客户 ID

      • endpoint:区域端点网址:

        • 美国malachiteingestion-pa.googleapis.com
        • 欧洲europe-malachiteingestion-pa.googleapis.com
        • 亚洲asia-southeast1-malachiteingestion-pa.googleapis.com
      • log_type:设置为 CISCO_FIRESIGHT(需要完全匹配)

      • ingestion_labels:用于过滤和组织的可选标签

保存配置文件

修改后,保存文件:

  • 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 FireSIGHT Management Center syslog 转发

本部分介绍如何配置 FMC,以将 Firepower Threat Defense 设备的安全事件 syslog 消息(连接、安全情报、入侵、文件和恶意软件事件)发送到 Bindplane 代理。

为 Firepower Threat Defense 设备配置 syslog 设置

  1. 登录 Cisco FireSIGHT Management Center 网页界面。
  2. 依次前往设备 > 平台设置
  3. 修改与 Firepower Threat Defense 设备关联的平台设置政策,或创建新政策。
  4. 在左侧导航窗格中,点击 Syslog
  5. 点击 Syslog 服务器,然后点击添加以配置新的 Syslog 服务器。
  6. 提供以下配置详细信息:
    • IP 地址:输入 Bindplane 代理主机(例如 192.168.1.100)的 IP 地址。
    • 协议:选择 UDP
    • 端口:输入 514(如果您已将 Bindplane 配置为监听非特权端口,则输入 1514)。
    • 接口:选择管理接口或可访问 Bindplane 代理的接口。
  7. 点击 OK 以保存 syslog 服务器配置。
  8. 点击 Syslog 设置,然后配置以下设置:
    • 勾选 Enable Timestamp on Syslog Messages
    • 时间戳格式:选择 ISO 8601(建议用于 Chronicle)。
    • 勾选启用 Syslog 设备 ID,并可选择性地输入自定义设备标识符。
  9. 点击日志记录设置
  10. 选择是否以 EMBLEM 格式发送系统日志。对于 Chronicle 提取,支持任一格式。
  11. 点击保存以保存平台设置政策。

配置访问权限控制政策日志记录设置

  1. 在 Cisco FireSIGHT Management Center 网页界面中,依次前往政策 > 访问控制
  2. 修改适用的访问权限控制政策。
  3. 点击日志记录标签页。
  4. 选择 FTD 6.3 及更高版本:使用部署在设备上的 FTD 平台设置政策中配置的 syslog 设置
  5. (可选)选择一个 Syslog 严重程度级别(例如信息提醒)。
  6. 如果您要发送文件和恶意软件事件,请选中针对文件和恶意软件事件发送 Syslog 消息
  7. 点击保存

为安全情报事件启用日志记录

  1. 在同一访问权限控制政策中,点击安全情报标签页。
  2. 在以下每个位置,点击日志记录并启用日志记录:
    • DNS 政策旁边:点击日志记录,启用在连接开始时记录在连接结束时记录,并启用 Syslog 服务器
    • 网络屏蔽列表框中:点击日志记录,启用在连接开始时记录日志在连接结束时记录日志,然后启用 Syslog 服务器
    • 网址阻止列表框中:点击日志记录,启用在连接开始时记录在连接结束时记录,并启用 Syslog 服务器
  3. 点击保存

为访问权限控制规则启用 syslog 日志记录

  1. 在同一访问权限控制政策中,点击规则标签页。
  2. 点击相应规则即可进行修改。
  3. 点击规则中的日志记录标签页。
  4. 选择是否记录连接的开始或结束时间,或者同时记录两者:
    • 选中在连接开始时记录日志(生成大量日志)。
    • 勾选在连接结束时记录日志(建议在大多数使用场景下勾选)。
  5. 如果您要记录文件事件,请选中日志文件
  6. 勾选 Syslog 服务器
  7. 验证该规则是否在访问控制日志记录中使用默认 syslog 配置。不配置替换。
  8. 点击添加以保存此规则。
  9. 针对政策中要记录的每条规则重复执行第 2-8 步。

配置入侵政策 syslog 设置

  1. 依次前往政策 > 入侵
  2. 修改与访问权限控制政策关联的入侵政策。
  3. 依次点击高级设置 > Syslog 提醒
  4. Syslog Alerting(Syslog 提醒)设置为 Enabled(已启用)。
  5. 点击 Syslog 提醒旁边的修改
  6. 配置以下设置:
    • 日志记录主机:留空此字段可使用在 FTD 平台设置中配置的 syslog 设置。如果您在此处指定了日志记录主机,则还必须配置设施严重程度
    • 设施:仅当您指定日志记录主机时适用。选择一个设施(例如 AUTHLOCAL0)。
    • 严重程度:仅在您指定了日志记录主机时适用。选择严重程度(例如信息提醒)。
  7. 点击 Back(返回)。
  8. 点击左侧导航窗格中的政策信息
  9. 点击提交更改

部署配置变更

  1. 配置完所有 syslog 设置后,将更改部署到受管设备。
  2. 在 Cisco FireSIGHT Management Center 网页界面中,点击右上角的部署
  3. 选择要将配置部署到的设备。
  4. 点击部署以应用更改。

验证 Syslog 转发

  1. 在 Firepower Threat Defense 设备上生成测试流量或安全事件。
  2. 检查 Bindplane 代理日志,验证是否正在接收 syslog 消息:
  • Linux:

    sudo journalctl -u observiq-otel-collector -f
    
  • Windows:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    
  1. 登录 Google SecOps 控制台,并验证事件是否显示在事件查看器中。

支持的事件类型

Cisco FireSIGHT Management Center 可以通过 syslog 将以下事件类型发送到 Google SecOps:

事件类型 说明
连接事件 受监控主机与所有其他主机之间的网络连接数据
安全智能事件 与安全情报屏蔽名单(IP、网址、DNS)相关的事件
入侵事件 受管设备生成的入侵检测和防御事件
文件事件 文件分析事件
恶意软件事件 恶意软件检测事件

Syslog 消息格式

Cisco FireSIGHT Management Center 会以以下格式发送 syslog 消息:

  • 连接事件示例:

    <134>1 2024-01-15T10:15:45.123Z fmc-hostname %FTD-6-430003:
    EventPriority: Low,
    DeviceUUID: abc123,
    InstanceID: 1,
    FirstPacketSecond: 1705318545,
    ConnectionID: 12345,
    AccessControlRuleAction: Allow,
    SrcIP: 10.0.0.5,
    DstIP: 8.8.8.8,
    SrcPort: 54321,
    DstPort: 53,
    Protocol: udp,
    IngressInterface: inside,
    EgressInterface: outside,
    IngressZone: inside-zone,
    EgressZone: outside-zone,
    ACPolicy: Default-Policy,
    AccessControlRuleName: Allow-DNS,
    User: user@example.com,
    ApplicationProtocol: DNS,
    InitiatorBytes: 64,
    ResponderBytes: 128
    
  • 入侵事件示例:

    <134>1 2024-01-15T10:16:30.456Z fmc-hostname %FTD-4-430001:
    EventPriority: High,
    DeviceUUID: abc123,
    InstanceID: 1,
    SrcIP: 192.168.1.100,
    DstIP: 10.0.0.50,
    SrcPort: 12345,
    DstPort: 80,
    Protocol: tcp,
    IngressInterface: outside,
    EgressInterface: inside,
    IngressZone: outside-zone,
    EgressZone: inside-zone,
    IntrusionPolicy: Security-Over-Connectivity,
    SignatureID: 1:2024123:1,
    SignatureGeneratorID: 1,
    Classification: web-application-attack,
    Priority: 1,
    Message: SQL injection attempt detected
    

syslog 消息包含以英文逗号分隔的键值对,因此适合由 Google SecOps 进行解析。

限制

  • 事件从 FMC 发送后,最长可能需要 15 分钟才能显示在 Google SecOps 中。
  • 无法通过 syslog 获取回顾性恶意软件事件。
  • 通过 syslog 无法获取由 AMP for Endpoints 生成的事件。
  • 通过 eStreamer API 提供的某些元数据未包含在 syslog 消息中(例如,来自 LDAP 的详细用户信息、扩展应用元数据、地理定位数据)。
  • 如果您配置的对象名称(政策名称、规则名称)包含英文逗号等特殊字符,则可能会干扰 syslog 解析。避免在对象名称中使用特殊字符。

UDM 映射表

日志字段 UDM 映射 逻辑
WebApplication、网址Reputation、EgressInterface、IngressInterface、ACPolicy、NAPPolicy、ConnectionID、ssl_ticket_id、qoa_applied_interface、sinkhole_uuid、security_context、sec_zone_egress、sec_zone_ingress additional.fields 如果非空,则从各种标签字段合并
eventType extensions.auth.type 如果 eventType 为“USER_LOGIN_INFORMATION”,则设置为“VPN”
漏洞 extensions.vulns.vulnerabilities 如果非空,则从漏洞中合并
flowStatistics.httpReferrer http.referral_url 直接复制值
flowStatistics.httpResponse http.response_code 转换为整数
flowStatistics.userAgent http.user_agent 直接复制值
_intermediary 中介 如果非空,则从 _intermediary 合并
recordTypeDescription, entry.message metadata.description 如果 recordTypeDescription 不为空,则取自该字段;否则,取自 entry.message
event_second、connection_timestamp、_serverTimestamp metadata.event_timestamp 从 event_second 解析出的日期(如果不为空),否则为 connection_timestamp,否则为 _serverTimestamp
event_type metadata.event_type 直接复制值
prod_event_type、eventId、recordTypeCategory、应用、_recordTypeName、eventType metadata.product_event_type 如果 prod_event_type 不为空,则为 prod_event_type 中的值;否则为 eventId;否则为 recordTypeCategory;否则为 app;否则为 _recordTypeName;否则为 eventType
DeviceUUID metadata.product_log_id 直接复制值
flowStatistics.clientAppVersion, client_version metadata.product_version 如果 flowStatistics.clientAppVersion 不为空,则为该值;否则为 client_version
flowStatistics.clientAppURL metadata.url_back_to_product 直接复制值
ApplicationProtocol network.application_protocol 如果匹配 (?i)ldap,则设置为“LDAP”;如果匹配 (?i)https,则设置为“HTTPS”;如果匹配 (?i)http,则设置为“HTTP”
答案 network.dns.answers 从回答中合并
flowStatistics.dnsQuery network.dns.answers.name 直接复制值
flowStatistics.dnsTTL network.dns.answers.ttl 已转换为 uinteger
flowStatistics.dnsRecordType network.dns.answers.type 已转换为 uinteger
flowStatistics.dnsResponseType network.dns.response_code 已转换为 uinteger
user_agent network.http.parsed_user_agent 已转换为 parseduseragent
user_agent network.http.user_agent 直接复制值
proto、Protocol、inputType、proto_type、protocol、ip_v4_protocol、protocol_number_src network.ip_protocol 根据具有协议映射和情形的各种字段进行设置
ResponderBytes、flowStatistics.bytesReceived network.received_bytes 如果 ResponderBytes 不为空,则返回 ResponderBytes 中的值;否则,返回 flowStatistics.bytesReceived(转换为 uinteger)
ResponderPackets network.received_packets 转换为整数
InitiatorBytes、flowStatistics.bytesSent network.sent_bytes 如果 InitiatorBytes 不为空,则使用该值;否则,使用 flowStatistics.bytesSent(转换为 uinteger)
InitiatorPackets、packet_data network.sent_packets 如果 InitiatorPackets 不为空,则使用 InitiatorPackets 中的值,否则使用 packet_data,并转换为整数
ssl_session_id network.session_id 直接复制值
ssl_cipher_suite network.tls.cipher 直接复制值
agent_type、agent_version observer.application 如果两者都不为空,则串联为 agent_type agent_version
entry.host.hostname observer.hostname 直接复制值
entry.host.ip observer.ip 从 entry.host.ip 合并
entry.host.mac observer.mac 已从 entry.host.mac 合并
clientApplication、hold.app_string principal.application 如果 clientApplication 中的值不为空,则为该值;否则为 hold.app_string
prin_host、DeviceAddress、principal_hostname principal.asset.hostname 如果 prin_host 不为空,则为 prin_host 中的值;否则,如果 sourceAddress 为空,则为 DeviceAddress;否则为 principal_hostname
SrcIP、principal_ip、source_address_IPv4v6 principal.asset.ip 从 SrcIP(经过 grok 验证)、principal_ip、source_address_IPv4v6(经过 grok 验证)合并
file_sha_hash、sha_hash principal.file.sha256 如果 file_sha_hash 不为空,则为 file_sha_hash 中的值;否则为 sha_hash
prin_host、DeviceAddress、principal_hostname principal.hostname 如果 prin_host 不为空,则为 prin_host 中的值;否则,如果 sourceAddress 为空,则为 DeviceAddress;否则为 principal_hostname
SrcIP、principal_ip、source_address_IPv4v6 principal.ip 从 SrcIP(经过 grok 验证)、principal_ip、source_address_IPv4v6(经过 grok 验证)合并
flowStatistics.initiatorCountry.geolocation.countryName, src_ip_country principal.location.country_or_region 如果 flowStatistics.initiatorCountry.geolocation.countryName 不为空,则为该值;否则为 src_ip_country
entry.macAddress principal.mac 从 entry.macAddress 合并
host_os_platform principal.platform 如果是 centos,则设置为 LINUX,否则设置为 entry.host.os.platform 的大写形式
entry.host.os.kernel principal.platform_patch_level 直接复制值
identityData.fingerprintUUID.osName, osFingerprint.fingerprintUUID.osName principal.platform_version 如果 identityData 不为空,则为串联的 osName osVersion;否则为 osFingerprint
SrcPort、entry.sourcePort、entry.sourcePortOrIcmpType、source_port、flowStatistics.initiatorPort、source_port_or_icmp_code principal.port 如果 SrcPort 不为空,则使用 SrcPort 中的值;否则,使用 entry.sourcePort;否则,使用 entry.sourcePortOrIcmpType;否则,使用 source_port;否则,使用 flowStatistics.initiatorPort;否则,使用 source_port_or_icmp_code;转换为整数
isecurityZoneName principal.resource.attribute.labels 已从 isecurityZoneName 合并
DeviceType principal.resource.name 直接复制值
principal.resource.resource_type 设置为“DEVICE”
entry.computed.user principal.user.user_display_name 已转换为字符串
entry.userId、user_id、flowStatistics.user.userId、entry.computed.user、userLoginInformation.userName principal.user.userid 如果 entry.userId 不为空,则返回该值;否则,返回 user_id;否则,返回 flowStatistics.user.userId;否则,返回 entry.computed.user;否则,返回 userLoginInformation.userName
connectionID_label、FirstPacketSecond_label sec_result.about.resource.attribute.labels 如果非空,则从 connectionID_label 和 FirstPacketSecond_label 合并
sec_result_action sec_result.action 从 sec_result_action 合并
flowStatistics.securityIntelligenceList1.securityIntelligenceListName sec_result.category 如果 rule_name 为 Malware,则设置为 NETWORK_MALICIOUS;如果 rule_name 为 Anomali_IP,则设置为 NETWORK_SUSPICIOUS
classification.description, userLoginInformation.description, sec_desc sec_result.description 如果 classification.description 不为空,则返回该值;否则,返回 userLoginInformation.description;否则,返回 sec_desc
entry.computed.priority sec_result.priority 大写 entry.computed.priority _PRIORITY
entry.ruleId, rule_ruleId sec_result.rule_id 如果 entry.ruleId 不为空,则为 entry.ruleId 中的值,否则为 rule_ruleId
AccessControlRuleName、rule_message、fw_rule、flowStatistics.securityIntelligenceList1.securityIntelligenceListName sec_result.rule_name 如果 AccessControlRuleName 不为空,则为 AccessControlRuleName 中的值;否则,为 rule_message;否则,为 fw_rule;否则,为 flowStatistics.securityIntelligenceList1.securityIntelligenceListName
EventPriority、sec_severity、severity_code、priority_name sec_result.severity 如果 EventPriority 为 Low,则设置为 LOW;如果为 High,则设置为 HIGH;如果为 Medium,则设置为 MEDIUM;否则,根据 sec_severity 映射设置;否则,根据 severity_code 映射设置;否则,将 priority_name 设置为大写
用户 sec_result.summary 直接复制值
threat_name sec_result.threat_name 直接复制值
security_result security_result 从 security_result 合并
firewallRuleAction、hold.action、AccessControlRuleAction、sec_result_action、vendor_blocked security_result.action 如果不是 no_action,则为 firewallRuleAction 的大写值;否则为 hold.action;否则为 AccessControlRuleAction(区分大小写);否则为 sec_result_action;否则为 vendor_blocked(0 为 ALLOW,否则为 BLOCK)
disposition security_result.action_details 如果处置为 3,则设置为“已感染”,否则设置为“未知”
eventDescription security_result.description 直接复制值
firewallRule security_result.rule_name 直接复制值
threat_name security_result.threat_name 直接复制值
hostService.webApplication.webApplication0.applicationId.webApplicationName target.application 直接复制值
DstIP、entry.destinationIpAddress、dest_ip、flowStatistics.responderIPAddress、destination_address_IPv4v6 target.asset.ip 合并自 DstIP (grok)、entry.destinationIpAddress、dest_ip、flowStatistics.responderIPAddress、destination_address_IPv4v6 (grok)
InstanceID、flowStatistics.clientAppId target.asset_id 如果 InstanceID 不为空,则为 InstanceID 中的值;否则为“Client_app_id: ”+ flowStatistics.clientAppId
文件 target.file 从文件重命名
DstIP、entry.destinationIpAddress、dest_ip、flowStatistics.responderIPAddress、destination_address_IPv4v6 target.ip 合并自 DstIP (grok)、entry.destinationIpAddress、dest_ip、flowStatistics.responderIPAddress、destination_address_IPv4v6 (grok)
flowStatistics.responderCountry.geolocation.countryName, dest_ip_country, entry.country.data target.location.country_or_region 如果 flowStatistics.responderCountry.geolocation.countryName 不为空,则为该值;否则为 dest_ip_country;否则为 entry.country.data
MACAddress target.mac 小写 MACAddress(如果不是 00:00:00:00:00:00)
DstPort、entry.destinationPort、entry.destinationPortOrIcmpType、dest_port、flowStatistics.responderPort、destination_port_or_icmp_code target.port 如果 DstPort 不为空,则为 DstPort 中的值;否则为 entry.destinationPort;否则为 entry.destinationPortOrIcmpType;否则为 dest_port;否则为 flowStatistics.responderPort;否则为 destination_port_or_icmp_code,并转换为整数
securityZoneName, det_engine, file_num, file_pos, rec_length target.resource.attribute.labels 如果 securityZoneName、det_engine、file_num、file_pos、rec_length 不为空,则合并这些值
网址 target.url 直接复制值
entry.user.username.data target.user.userid 直接复制值
descript vulnerabilities.description 直接复制值
severity_detail vulnerabilities.severity_details 直接复制值
产品 vulnerabilities.vendor 直接复制值
metadata.product_name 设置为“CISCO_FIRESIGHT”
metadata.vendor_name 设置为“CISCO MANAGEMENT CENTER”

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