收集 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 注入身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载注入身份验证文件。将文件安全地保存在将要安装 Bindplane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 BindPlane 代理
按照以下说明在 Windows 或 Linux 操作系统上安装 Bindplane 代理。
Windows 安装
- 以管理员身份打开命令提示符或 PowerShell。
运行以下命令:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
其他安装资源
如需了解其他安装选项,请参阅安装指南。
配置 Bindplane 代理以注入 Syslog 并将其发送到 Google SecOps
- 访问配置文件:
- 找到
config.yaml
文件。通常,它位于 Linux 上的/etc/bindplane-agent/
目录中或 Windows 上的安装目录中。 - 使用文本编辑器(例如
nano
、vi
或记事本)打开该文件。
- 找到
按如下方式修改
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
根据基础架构的需要替换端口和 IP 地址。
将
<customer_id>
替换为实际的客户 ID。将
/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 插件
- 前往 Forescount Base Plugins 页面,然后下载插件 .fpi 文件。
- 将该文件保存到安装了 CounterACT 控制台的机器上。
- 登录 CounterACT 控制台。
- 依次选择选项 > 插件 > 安装。
- 浏览并选择已保存的插件 FPI 文件。
- 点击安装。
- 接受许可协议以继续。
- 安装完成后,点击关闭。
- 从插件窗格中选择插件,然后点击开始。
- 选择要启动插件的 CounterACT 设备(建议在环境中的所有设备上运行该插件)。
- 点击确定。
- 点击关闭。
在 Forescout CounterACT Syslog 插件上配置 Syslog
- 在插件窗格中,依次点击 Syslog > 配置。
- 从对话框中选择任意设备或企业管理器,然后点击 OK。
- 在将事件发送到中,点击添加。
- 提供以下配置详细信息:
- 服务器地址:输入 Bindplane 代理 IP 地址。
- 服务器端口:输入 Bindplane 代理端口号(例如,UDP 为
514
)。 - 服务器协议:选择 UDP。
- 身份:用于标识 syslog 消息的自由文本字段。
- 可选:设备:作为消息优先级字段的一部分传输的 Syslog 消息设备。如果未提及设施值,则将其设置为
local5
。 - 严重级别:选择信息。
- 前往 Syslog 触发器标签页。
- 请勿选中仅发送由“将消息发送到 Syslog”操作生成的消息复选框。
- 仅选中在所有消息中包含时间戳和 CounterACT 设备标识符复选框。
- 点击选项,以定义哪些事件类型会触发 syslog 消息:
- 包含 NAC 政策日志。
- 包含 NAC 政策匹配/不匹配事件。
- 选择其他活动(如果有)。
- 前往默认操作配置标签页。
- 提供以下配置详细信息:
- 服务器地址:输入 Bindplane 代理 IP 地址。
- 服务器端口:输入 Bindplane 代理端口号(例如,UDP 为
514
)。 - 服务器协议:选择 UDP。
- 消息身份:用于标识 Syslog 消息的自由文本字段。
- 可选:设备:作为消息优先级字段的一部分传输的 Syslog 消息设备。如果未提及设施值,则将其设置为
local5
。 - 严重级别:选择信息。
- 点击确定。
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.ip ,target.hostname |
从 kv_data 或 data 解析。如果可以转换为 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.description ,security_result.summary |
从日志消息中解析。用于确定 UDM 事件类型和其他字段。如果事件是“GENERIC_EVENT”,则该字段也用于说明。 |
eventtype |
additional.fields |
直接从 CEF 日志中的 eventtype 字段映射。键为“eventtype”。 |
externalId |
metadata.product_log_id |
直接从 CEF 日志中的 externalId 字段映射。 |
from\[...\] to\[...\] |
principal.ip ,target.ip |
从“from[...] to[...]”模式中提取来源和目的地 IP。 |
Host |
principal.ip ,principal.hostname |
当 et_lower 为“block event”时,从 kv_data 解析。如果可转换为 IP,则映射到 principal.ip ;否则,映射到 principal.hostname 。 |
Hostname |
principal.hostname ,principal.asset.hostname |
如果在检测到的属性更改事件中存在,则映射到 principal.hostname 和 principal.asset.hostname 。 |
Installed_Plugins |
additional.fields |
当 event_type 为“应用状态”时,从 kv_log_data 中提取。键为“已安装的插件”,值为提取的字符串。 |
iporhost |
intermediary.ip ,intermediary.hostname |
从 header_data 解析。如果可转换为 IP,则映射到 intermediary.ip ;否则,映射到 intermediary.hostname 。 |
Is Virtual Firewall blocking rule |
security_result.action ,security_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_LOGIN 、USER_LOGOUT 、NETWORK_CONNECTION 、SCAN_NETWORK 、STATUS_UPDATE 、EMAIL_TRANSACTION 和 USER_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.description ,principal.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.port ,network.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 专业人士那里获得解答。