收集 Forescout NAC 日志

支持的语言:

本文档介绍了如何使用 Bindplane 将 Forescout 网络访问控制 (NAC) 日志注入到 Google Security Operations。该解析器可处理 Forescout NAC 的 syslog 和 CEF 格式日志。它使用 Grok 模式提取字段,将这些字段映射到统一数据模型 (UDM),并根据关键字和提取的字段对事件进行分类,从而处理登录/退出、网络连接、邮件事件和系统状态更新。针对处理“CounterACT”和“虚拟防火墙”事件实现了特定逻辑,包括严重程度映射和用户上下文丰富。

准备工作

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

  • Google SecOps 实例
  • Windows 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • 如果在代理后运行,防火墙端口处于开放状态
  • 应安装 ForeScout CounterAct v8.0 或最新版本
  • 应安装 ForeScout CounterAct 核心扩展模块 Syslog 插件 v3.5
  • 对 Forescout 设备和 CounterACT 插件的特权访问权限

获取 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. 访问配置文件:
    • 找到 config.yaml 文件。通常,它位于 Linux 上的 /etc/bindplane-agent/ 目录中或 Windows 上的安装目录中。
    • 使用文本编辑器(例如 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: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: 'FORESCOUT_NAC'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 根据基础架构的需要替换端口和 IP 地址。

  4. <customer_id> 替换为实际的客户 ID。

  5. /path/to/ingestion-authentication-file.json 更新为 获取 Google SecOps 提取身份验证文件部分中保存身份验证文件的路径。

重启 Bindplane 代理以应用更改

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

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

    net stop BindPlaneAgent && net start BindPlaneAgent
    

安装 CounterACT Syslog 插件

  1. 前往 Forescount Base Plugins 页面,然后下载插件 .fpi 文件。
  2. 将该文件保存到安装了 CounterACT 控制台的机器上。
  3. 登录 CounterACT 控制台
  4. 依次选择选项 > 插件 > 安装
  5. 浏览并选择已保存的插件 FPI 文件。
  6. 点击安装
  7. 接受许可协议以继续。
  8. 安装完成后,点击关闭
  9. 插件窗格中选择插件,然后点击开始
  10. 选择要启动插件的 CounterACT 设备(建议在环境中的所有设备上运行该插件)。
  11. 点击确定
  12. 点击关闭

在 Forescout CounterACT Syslog 插件上配置 Syslog

  1. 插件窗格中,依次点击 Syslog > 配置
  2. 从对话框中选择任意设备或企业管理器,然后点击 OK
  3. 将事件发送到中,点击添加
  4. 提供以下配置详细信息:
    • 服务器地址:输入 Bindplane 代理 IP 地址。
    • 服务器端口:输入 Bindplane 代理端口号(例如,UDP 为 514)。
    • 服务器协议:选择 UDP
    • 身份:用于标识 syslog 消息的自由文本字段。
    • 可选:设备:作为消息优先级字段的一部分传输的 Syslog 消息设备。如果未提及设施值,则将其设置为 local5
    • 严重级别:选择信息
  5. 前往 Syslog 触发器标签页。
  6. 请勿选中仅发送由“将消息发送到 Syslog”操作生成的消息复选框。
  7. 仅选中在所有消息中包含时间戳和 CounterACT 设备标识符复选框。
  8. 点击选项,以定义哪些事件类型会触发 syslog 消息:
    • 包含 NAC 政策日志。
    • 包含 NAC 政策匹配/不匹配事件。
    • 选择其他活动(如果有)。
  9. 前往默认操作配置标签页。
  10. 提供以下配置详细信息:
    • 服务器地址:输入 Bindplane 代理 IP 地址。
    • 服务器端口:输入 Bindplane 代理端口号(例如,UDP 为 514)。
    • 服务器协议:选择 UDP
    • 消息身份:用于标识 Syslog 消息的自由文本字段。
    • 可选:设备:作为消息优先级字段的一部分传输的 Syslog 消息设备。如果未提及设施值,则将其设置为 local5
    • 严重级别:选择信息
  11. 点击确定

UDM 映射表

日志字段 UDM 映射 逻辑
act security_result.action_details 直接从 CEF 日志中的 act 字段映射。
app network.application_protocol 直接从 CEF 日志中的 app 字段映射。
Available_memory additional.fields event_type 为“系统统计信息”时,从 kv_data 中提取。键为“可用内存”,值为提取的字符串。
Available_swap additional.fields event_type 为“系统统计信息”时,从 kv_data 中提取。键为“可用交换空间”,值为提取的字符串。
application_status additional.fields event_type 为“应用状态”时,从 kv_data 中提取。键为“申请状态”,值为提取的字符串。
Assigned_hosts additional.fields event_type 为“应用状态”时,从 kv_log_data 中提取。键为“Assigned hosts”,值为提取的字符串。
Category security_result.description et_lower 为“nac policy log”时,security_result.description 的一部分。与其他详细信息串联。
command principal.process.command_line 从以“command:”开头的 CEF 日志的 rnmsg 字段中提取。
Connected_clients additional.fields event_type 为“应用状态”时,从 kv_log_data 中提取。键是“已连接的客户端”,值是提取的字符串。
CPU_usage additional.fields event_type 为“系统统计信息”时,从 kv_data 中提取。键为“CPU 使用情况”,值为提取的字符串。
cs1 additional.fields 直接从 CEF 日志中的 cs1 字段映射。键为“合规性政策名称”。
cs2 additional.fields 直接从 CEF 日志中的 cs2 字段映射。键为“合规性政策子规则名称”。
cs3 additional.fields 直接从 CEF 日志中的 cs3 字段映射。键为“主机合规性状态”。
cs4 additional.fields 直接从 CEF 日志中的 cs4 字段映射。键为“合规性事件触发器”。
data security_result.description 用于解析器的各个部分,以提取信息并贡献于最终的 UDM 字段。未直接映射到单个 UDM 字段。
details security_result.description 用于在多种情况下填充 security_result.description,包括解析“日志”事件和用户会话更改时。可能会进一步解析以获取特定信息。
Destination target.iptarget.hostname kv_datadata 解析。如果可以转换为 IP 地址,则映射到 target.ip。否则,它会映射到 target.hostname
deviceExternalId about.asset.asset_id 直接从 CEF 日志中的 deviceExternalId 字段映射,并以“Forescout.CommandCenter:”为前缀。
dhost target.hostname 直接从 CEF 日志中的 dhost 字段映射。
dmac target.mac 直接从 CEF 日志中的 dmac 字段映射。
dntdom target.administrative_domain 直接从 CEF 日志中的 dntdom 字段映射。
dst target.ip 直接从 CEF 日志中的 dst 字段映射。
dpt target.port 直接从 CEF 日志中的 dpt 字段映射。
duser target.user.user_display_name 直接从 CEF 日志中的 duser 字段映射。
dvc about.ip 直接从 CEF 日志中的 dvc 字段映射。
dvchost about.hostname 直接从 CEF 日志中的 dvchost 字段映射。
EM_connection_status additional.fields event_type 为“应用状态”时,从 kv_log_data 中提取。键为“EM 连接状态”,值为提取的字符串。
Engine_status additional.fields event_type 为“应用状态”时,从 kv_log_data 中提取。键为“Engine status”,值为提取的字符串。
event_type metadata.descriptionsecurity_result.summary 从日志消息中解析。用于确定 UDM 事件类型和其他字段。如果事件是“GENERIC_EVENT”,则该字段也用于说明。
eventtype additional.fields 直接从 CEF 日志中的 eventtype 字段映射。键为“eventtype”。
externalId metadata.product_log_id 直接从 CEF 日志中的 externalId 字段映射。
from\[...\] to\[...\] principal.iptarget.ip 从“from[...] to[...]”模式中提取来源和目的地 IP。
Host principal.ipprincipal.hostname et_lower 为“block event”时,从 kv_data 解析。如果可转换为 IP,则映射到 principal.ip;否则,映射到 principal.hostname
Hostname principal.hostnameprincipal.asset.hostname 如果在检测到的属性更改事件中存在,则映射到 principal.hostnameprincipal.asset.hostname
Installed_Plugins additional.fields event_type 为“应用状态”时,从 kv_log_data 中提取。键为“已安装的插件”,值为提取的字符串。
iporhost intermediary.ipintermediary.hostname header_data 解析。如果可转换为 IP,则映射到 intermediary.ip;否则,映射到 intermediary.hostname
Is Virtual Firewall blocking rule security_result.actionsecurity_result.rule_name 如果为“true”,则将 security_result.action 设置为“BLOCK”,并将 security_result.rule_name 设置为“Virtual Firewall blocking”。
log_description security_result.summary 如果存在,则直接映射到 security_result.summary
log_type metadata.log_type 设置为常量值“FORESCOUT_NAC”。
MAC principal.mac 从检测到的属性更改事件中的 kv_data 解析,并格式化为 MAC 地址。
mail_from network.email.from 直接从从 mail_details 中提取的 mail_from 字段映射。
mail_subject network.email.subject 直接从从 mail_details 中提取的 mail_subject 字段映射。
mail_to network.email.to 直接从从 mail_details 中提取的 mail_to 字段映射。
Match security_result.rule_name et_lower 为“nac policy log”时,直接从 Match 字段映射。
metadata.event_type metadata.event_type 由解析器中的各种条件决定,包括日志消息中是否存在特定字段和关键字。默认为 GENERIC_EVENT,并根据解析的数据进行更新。例如 USER_LOGINUSER_LOGOUTNETWORK_CONNECTIONSCAN_NETWORKSTATUS_UPDATEEMAIL_TRANSACTIONUSER_UNCATEGORIZED
metadata.product_name metadata.product_name 对于大多数事件,设置为“FORESCOUT NAC”,如果存在 product 字段,则设置为该字段的值。对于 CEF 事件,它设置为“CounterAct”。
metadata.vendor_name metadata.vendor_name 对于大多数活动,请设置为“FORESCOUT”。对于 CEF 事件,如果存在,则从 cs1Label 字段中获取,否则设置为“ForeScout Technologies”。
msg metadata.description 直接从 CEF 日志中的 msg 字段映射。
pid intermediary.process.pid 直接从从 header_data 中提取的 pid 字段映射。
policy_details security_result.description et_lower 为“nac policy log”时,security_result.description 的一部分。与其他详细信息串联。
product metadata.product_name 如果存在,则直接映射到 metadata.product_name
proto network.ip_protocol 直接从 CEF 日志中的 proto 字段映射。
Reason security_result.description et_lower 为“block event”时,直接从 Reason 字段映射。
resource principal.resource.name 直接从 CEF 日志中的 resource 字段映射。
rnmsg security_result.descriptionprincipal.process.command_line 如果以“command:”开头,则“command:”后面的部分会映射到 principal.process.command_line。否则,它会映射到 security_result.description
rt metadata.event_timestamp 直接从 CEF 日志中的 rt 字段映射,并转换为时间戳。
Rule security_result.rule_id et_lower 为“nac policy log”时,直接从 Rule 字段映射。
security_result.severity security_result.severity 派生自 severity_level 字段。0-3 映射到“低”,4-6 映射到“中”,7-8 映射到“高”,9-10 映射到“严重”。
security_result.severity_details security_result.severity_details 直接从 CEF 日志中的 severity 字段映射。
Service target.portnetwork.ip_protocol 解析以提取端口和协议。端口映射到 target.port,协议映射到 network.ip_protocol
session_id network.session_id 直接从 session_id 字段映射。
severity security_result.severity_details 直接从 CEF 日志中的 severity 字段映射。
severity_level security_result.severity 用于确定 security_result.severity

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