收集 VMware 网络和安全虚拟化 (NSX) 管理器日志
本文档介绍了如何使用 Bindplane 代理将 VMware NSX Manager 日志注入到 Google Security Operations。
VMware NSX 是一种网络虚拟化和安全平台,可针对防火墙事件、分布式防火墙规则、路由更改、审核日志和控制器事件生成 syslog 消息。解析器使用 Grok 模式、键值对解析和 JSON 解析来提取字段,并将这些字段映射到统一数据模型 (UDM)。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- Windows Server 2016 或更高版本,或者具有
systemd的 Linux 主机 - Bindplane 代理与 VMware NSX 环境之间的网络连接
- 如果在代理后面运行,请确保防火墙端口已根据 Bindplane 代理要求打开
- 对 VMware NSX 的管理员访问权限
获取 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等待安装完成。
运行以下命令,验证安装是否成功:
sc query observiq-otel-collector该服务应显示为 正在运行。
Linux 安装
- 打开具有 root 或 sudo 权限的终端。
运行以下命令:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh等待安装完成。
运行以下命令,验证安装是否成功:
sudo systemctl status observiq-otel-collector该服务应显示为有效(正在运行)。
其他安装资源
如需了解其他安装选项和问题排查信息,请参阅 Bindplane 代理安装指南。
配置 Bindplane 代理以注入 syslog 并将其发送到 Google SecOps
找到配置文件
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
修改配置文件
将
config.yaml的全部内容替换为以下配置:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/vmware_nsx: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: VMWARE_NSX raw_log_field: body service: pipelines: logs/vmware_nsx_to_chronicle: receivers: - udplog exporters: - chronicle/vmware_nsx
配置参数
替换以下占位符:
接收器配置:
listen_address:要监听的 IP 地址和端口:0.0.0.0侦听所有接口(推荐)- 端口
514是标准 syslog 端口(在 Linux 上需要 root 权限;对于非 root 用户,请使用1514)
导出器配置:
creds_file_path:提取身份验证文件的完整路径:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id:从 Google SecOps 控制台复制的客户 IDendpoint:区域端点网址:- 美国:
malachiteingestion-pa.googleapis.com - 欧洲:
europe-malachiteingestion-pa.googleapis.com - 亚洲:
asia-southeast1-malachiteingestion-pa.googleapis.com - 如需查看完整列表,请参阅区域级端点
- 美国:
保存配置文件
- 修改后,保存文件:
- Linux:依次按
Ctrl+O、Enter和Ctrl+X - Windows:依次点击文件 > 保存
- Linux:依次按
重启 Bindplane 代理以应用更改
如需在 Linux 中重启 Bindplane 代理,请运行以下命令:
sudo systemctl restart observiq-otel-collector验证服务是否正在运行:
sudo systemctl status observiq-otel-collector检查日志是否存在错误:
sudo journalctl -u observiq-otel-collector -f
如需在 Windows 中重启 Bindplane 代理,请选择以下选项之一:
以管理员身份运行命令提示符或 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector服务控制台:
- 按
Win+R,输入services.msc,然后按 Enter 键。 - 找到 observIQ OpenTelemetry 收集器。
- 右键点击并选择重新启动。
验证服务是否正在运行:
sc query observiq-otel-collector检查日志是否存在错误:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- 按
NSX Edge 的 syslog 配置
- 登录 vSphere Web Client。
- 依次前往网络和安全性 > NSX Edge。
- 选择要配置的特定 NSX Edge 实例。
- 前往 Syslog 设置:
- 对于 NSX 6.4.4 及更高版本:依次选择管理 > 设置 > 设备设置 > 设置 > 更改 Syslog 配置。
- 对于 NSX 6.4.3 及更早版本:依次选择管理 > 设置 > 配置 > 详细信息 > 更改。
- 配置 syslog 服务器详细信息:
- 服务器:输入 syslog 服务器 (Bindplane) 的 IP 地址或主机名。
- 协议:选择 UDP 或 TCP(具体取决于您的 Bindplane 配置)。
- 端口:输入端口号(取决于您的 Bindplane 配置)。
- 点击确定以保存设置。
NSX Manager 的 syslog 配置
- 使用管理员凭据(
https://<NSX-Manager-IP>或https://<NSX-Manager-Hostname>)登录 NSX Manager 网页界面。 - 依次前往管理设备设置 > 常规。
- 点击修改以配置 syslog 服务器设置。
- 输入 Syslog 服务器详细信息:
- 服务器:输入 syslog 服务器 (Bindplane) 的 IP 地址或主机名。
- 协议:选择 UDP 或 TCP(具体取决于您的 Bindplane 配置)。
- 端口:输入端口号(取决于您的 Bindplane 配置)。
- 点击确定以保存设置。
NSX 控制器的 Syslog 配置
- 登录 vSphere Web Client。
- 依次前往网络和安全性 > 安装和升级 > 管理 > NSX 控制器节点。
- 选择管理控制器节点的 NSX Manager。
- 点击 Common Controller Attributes Edit。
- 在 Syslog 服务器对话框中,点击添加:
- 输入 syslog 服务器名称或 IP 地址。
- 选择 UDP 协议(具体取决于您的 Bindplane 配置)。
- 设置日志级别(例如
INFO)。
- 点击确定以保存设置。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
DST |
event.idm.read_only_udm.target.ip |
目标 IP 地址是从原始日志的 DST 字段中提取的。 |
ID |
event.idm.read_only_udm.metadata.product_log_id |
商品日志 ID 从原始日志的 ID 字段中提取。 |
MAC |
event.idm.read_only_udm.principal.mac |
MAC 地址是从原始日志的 MAC 字段中提取的。 |
ModuleName |
event.idm.read_only_udm.metadata.product_event_type |
商品事件类型是从原始日志的 ModuleName 字段中提取的。 |
Operation |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
该操作从原始日志的 Operation 字段中提取,并添加为键为“Operation”的标签。 |
PROTO |
event.idm.read_only_udm.network.ip_protocol |
IP 协议是从原始日志的 PROTO 字段中提取的。 |
RES |
event.idm.read_only_udm.target.resource.name |
目标资源名称提取自原始日志中的 RES 字段。 |
SRC |
event.idm.read_only_udm.principal.ip |
来源 IP 地址是从原始日志的 SRC 字段中提取的。 |
SPT |
event.idm.read_only_udm.principal.port |
源端口是从原始日志的 SPT 字段中提取的。 |
UserName |
event.idm.read_only_udm.principal.user.userid |
用户 ID 从原始日志的 UserName 字段中提取。 |
app_type |
event.idm.read_only_udm.principal.application |
主要应用是从原始日志的 app_type 字段中提取的。 |
application |
event.idm.read_only_udm.target.application |
目标应用是从原始日志的 application 字段中提取的。 |
audit |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
系统会从原始日志的 audit 字段中提取审核值,并将其添加为键为“audit”的标签。 |
cancelTimeUTC |
event.idm.read_only_udm.principal.resource.attribute.last_update_time |
上次更新时间是从原始日志中的 cancelTimeUTC 字段派生出来的。 |
client |
event.idm.read_only_udm.principal.ip 或 event.idm.read_only_udm.principal.administrative_domain |
如果 client 字段是 IP 地址,则会映射到正文 IP。否则,它会映射到主管理网域。 |
comp |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
组件值从原始日志的 comp 字段中提取,并添加为键为“Comp”的标签。 |
datetime |
event.idm.read_only_udm.metadata.event_timestamp |
事件时间戳是从原始日志的 datetime 字段中提取的。 |
description |
event.idm.read_only_udm.metadata.description |
说明是从原始日志的 description 字段中提取的。 |
details |
event.idm.read_only_udm.principal.resource.attribute.labels |
详细信息会从原始日志的 details 字段中提取,并添加为标签。 |
direction |
event.idm.read_only_udm.network.direction |
如果 direction 字段为“OUT”,则映射为“OUTBOUND”。 |
dst_ip |
event.idm.read_only_udm.target.ip |
目标 IP 地址是从原始日志的 dst_ip 字段中提取的。 |
DPT |
event.idm.read_only_udm.target.port |
目标端口是从原始日志的 DPT 字段中提取的。 |
errorCode |
event.idm.read_only_udm.security_result.detection_fields |
从原始日志的 errorCode 字段中提取错误代码,并将其添加为检测字段。 |
eventType |
event.idm.read_only_udm.metadata.product_event_type |
商品事件类型是从原始日志的 eventType 字段中提取的。 |
filepath |
event.idm.read_only_udm.principal.process.file.full_path |
文件路径是从原始日志的 filepath 字段中提取的。 |
hostname |
event.idm.read_only_udm.principal.ip |
主机名是从原始日志的 hostname 字段中提取的,如果它是 IP 地址,则会映射到正文 IP。 |
kv_data |
各种 UDM 字段 | kv_data 中的键值对会根据其键映射到各种 UDM 字段。 |
kv_data1 |
各种 UDM 字段 | kv_data1 中的键值对会根据其键映射到各种 UDM 字段。 |
kv_data2 |
各种 UDM 字段 | kv_data2 中的键值对会根据其键映射到各种 UDM 字段。 |
kv_data3 |
各种 UDM 字段 | kv_data3 中的键值对会根据其键映射到各种 UDM 字段。 |
kv_data4 |
各种 UDM 字段 | kv_data4 中的键值对会根据其键映射到各种 UDM 字段。 |
level |
event.idm.read_only_udm.security_result.severity |
如果 level 字段为“INFO”,则映射到“INFORMATIONAL”。如果为“ERROR”,则映射到“ERROR”。 |
managedExternally |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
managedExternally 值从原始日志的 managedExternally 字段中提取,并作为标签(键为“managedExternally”)添加。 |
message |
各种 UDM 字段 | 系统会解析消息字段,以提取各种 UDM 字段。 |
message_data |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
从原始日志的 message_data 字段中提取消息数据,并以键为“message”的标签形式添加。 |
network_status |
event.idm.read_only_udm.additional.fields |
网络状态从原始日志的 network_status 字段中提取,并作为附加字段添加到日志中,键为“Network_Connection_Status”。 |
new_value |
各种 event.idm.read_only_udm.target 字段 |
新值从原始日志的 new_value 字段中提取,并用于填充各种目标字段。 |
node |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
节点值从原始日志的 node 字段中提取,并作为键为“node”的标签添加。 |
old_value |
各种 UDM 字段 | 旧值从原始日志的 old_value 字段中提取,并用于填充各种 UDM 字段。 |
payload |
各种 UDM 字段 | 载荷从原始日志的 payload 字段中提取,并用于填充各种 UDM 字段。 |
pid |
event.idm.read_only_udm.target.process.pid |
进程 ID 从原始日志的 pid 字段中提取。 |
reqId |
event.idm.read_only_udm.metadata.product_log_id |
商品日志 ID 从原始日志的 reqId 字段中提取。 |
resourceId |
event.idm.read_only_udm.principal.resource.product_object_id |
商品对象 ID 从原始日志的 resourceId 字段中提取。 |
s2comp |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
系统会从原始日志的 s2comp 字段中提取 s2comp 值,并将其添加为键为“s2comp”的标签。 |
ses |
event.idm.read_only_udm.network.session_id |
会话 ID 从原始日志的 ses 字段中提取。 |
src_host |
event.idm.read_only_udm.principal.hostname |
系统会从原始日志的 src_host 字段中提取主主机名。 |
src_ip |
event.idm.read_only_udm.principal.ip |
来源 IP 地址是从原始日志的 src_ip 字段中提取的。 |
src_ip1 |
event.idm.read_only_udm.principal.ip |
来源 IP 地址是从原始日志的 src_ip1 字段中提取的。 |
src_port |
event.idm.read_only_udm.principal.port |
源端口是从原始日志的 src_port 字段中提取的。 |
startTimeUTC |
event.idm.read_only_udm.principal.resource.attribute.creation_time |
创建时间是从原始日志中的 startTimeUTC 字段派生出来的。 |
subcomp |
event.idm.read_only_udm.network.application_protocol 或 event.idm.read_only_udm.principal.resource.attribute.labels.value |
如果 subcomp 字段为“http”,则映射为“HTTP”。否则,会将其添加为键为“Sub Comp”的标签。 |
tname |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
系统会从原始日志的 tname 字段中提取 tname 值,并将其添加为键为“tname”的标签。 |
type |
event.idm.read_only_udm.metadata.product_event_type |
商品事件类型是从原始日志的 type 字段中提取的。 |
uid |
event.idm.read_only_udm.principal.user.userid |
用户 ID 从原始日志的 uid 字段中提取。 |
update |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
更新值从原始日志的 update 字段中提取,并作为键为“update”的标签添加。 |
user |
event.idm.read_only_udm.principal.user.user_display_name |
用户显示名称是从原始日志的 user 字段中提取的。 |
vmw_cluster |
event.idm.read_only_udm.target.resource.name |
目标资源名称提取自原始日志中的 vmw_cluster 字段。 |
vmw_datacenter |
event.idm.read_only_udm.target.resource.attribute.labels.value |
vmw_datacenter 值从原始日志的 vmw_datacenter 字段中提取,并作为键为“vmw_datacenter”的标签添加。 |
vmw_host |
event.idm.read_only_udm.target.hostname 或 event.idm.read_only_udm.target.ip |
如果 vmw_host 字段是主机名,则会映射到目标主机名。否则,如果它是 IP 地址,则会映射到目标 IP。 |
vmw_object_id |
event.idm.read_only_udm.target.resource.product_object_id |
商品对象 ID 从原始日志的 vmw_object_id 字段中提取。 |
vmw_product |
event.idm.read_only_udm.target.application |
目标应用是从原始日志的 vmw_product 字段中提取的。 |
vmw_vcenter |
event.idm.read_only_udm.target.cloud.availability_zone |
可用区是从原始日志的 vmw_vcenter 字段中提取的。 |
vmw_vcenter_id |
event.idm.read_only_udm.target.resource.attribute.labels.value |
vmw_vcenter_id 值从原始日志的 vmw_vcenter_id 字段中提取,并作为键为“vmw_vcenter_id”的标签添加。 |
vmw_vr_ops_appname |
event.idm.read_only_udm.intermediary.application |
中间应用是从原始日志的 vmw_vr_ops_appname 字段中提取的。 |
vmw_vr_ops_clustername |
event.idm.read_only_udm.intermediary.resource.name |
中间资源名称提取自原始日志中的 vmw_vr_ops_clustername 字段。 |
vmw_vr_ops_clusterrole |
event.idm.read_only_udm.intermediary.resource.attribute.roles.name |
中间资源角色名称提取自原始日志中的 vmw_vr_ops_clusterrole 字段。 |
vmw_vr_ops_hostname |
event.idm.read_only_udm.intermediary.hostname |
中间主机名是从原始日志的 vmw_vr_ops_hostname 字段中提取的。 |
vmw_vr_ops_id |
event.idm.read_only_udm.intermediary.resource.product_object_id |
中间产品对象 ID 从原始日志的 vmw_vr_ops_id 字段中提取。 |
vmw_vr_ops_logtype |
event.idm.read_only_udm.intermediary.resource.attribute.labels.value |
vmw_vr_ops_logtype 值从原始日志的 vmw_vr_ops_logtype 字段中提取,并作为键为“vmw_vr_ops_logtype”的标签添加。 |
vmw_vr_ops_nodename |
event.idm.read_only_udm.intermediary.resource.attribute.labels.value |
vmw_vr_ops_nodename 值从原始日志的 vmw_vr_ops_nodename 字段中提取,并作为键为“vmw_vr_ops_nodename”的标签添加。根据其他字段的值通过一系列条件语句确定。可能的值包括 USER_LOGIN、NETWORK_CONNECTION、STATUS_UPDATE 和 GENERIC_EVENT。硬编码为“VMWARE_NSX”。硬编码为“VMWARE_NSX”。硬编码为“VMWARE_NSX”。如果 Operation 为“LOGIN”且 target_details 不为空,或者 message 包含“authentication failure”且 application 不为空,则设置为“AUTHTYPE_UNSPECIFIED”。如果 PROTO 为“ssh2”,则设置为“SSH”;如果 subcomp 为“http”,则设置为“HTTP”。根据其他字段的值通过一系列条件语句确定。可能的值包括 ALLOW 和 BLOCK。如果 vmw_cluster 不为空,则设置为“VIRTUAL_MACHINE”。 |
Resource |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
zone_action |
event.idm.read_only_udm.security_result.detection_fields |
从变更日志映射 |
product_id |
event.idm.read_only_udm.metadata.product_log_id |
从变更日志映射 |
dst_port |
event.idm.read_only_udm.target.port |
从变更日志映射 |
sent_pkt |
event.idm.read_only_udm.network.sent_packets |
从变更日志映射 |
received_pkt |
event.idm.read_only_udm.network.received_packets |
从变更日志映射 |
sent_byte |
event.idm.read_only_udm.network.sent_bytes |
从变更日志映射 |
received_byte |
event.idm.read_only_udm.network.received_bytes |
从变更日志映射 |
msg1 |
event.idm.read_only_udm.metadata.description |
从变更日志映射 |
ip_version |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
ip_protocol_type |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
ip_protocol_code |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
interface_id |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
tcp_flags |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
src_zone_value |
event.idm.read_only_udm.principal.resource.attribute.labels |
从变更日志映射 |
sec_desc |
event.idm.read_only_udm.security_result.description |
从变更日志映射 |
Originated_Ip |
event.idm.read_only_udm.principal.ip |
从变更日志映射 |
Originated_Ip |
event.idm.read_only_udm.principal.asset.ip |
从变更日志映射 |
event_source |
event.idm.read_only_udm.target.resource.name |
从变更日志映射 |
Resource_Name |
event.idm.read_only_udm.target.resource.name |
从变更日志映射 |
Universal_Object |
event.idm.read_only_udm.target.resource.attribute.labels |
从变更日志映射 |
Severity |
event.idm.read_only_udm.security_result.severity |
从变更日志映射 |
Code |
event.idm.read_only_udm.security_result.rule_id |
从变更日志映射 |
Event_Message |
event.idm.read_only_udm.metadata.description |
从变更日志映射 |
Above_supported_instances |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
Above_threshold_instances |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
Below_threshold_instances |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
supported_compact |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
supported_quadlarge |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
supported_large |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
supported_xlarge |
event.idm.read_only_udm.additional.fields |
从变更日志映射 |
action |
security_result.action_details |
从变更日志映射 |
rule_id |
security_result.rule_id |
从变更日志映射 |
network.direction |
INBOUND |
从变更日志映射 |
security_result.action_details |
ALLOW |
从变更日志映射 |
security_result.action_details |
BLOCK |
从变更日志映射 |
metadata.event_type |
NETWORK_CONNECTION |
从变更日志映射 |
unique_id |
principal.resource.product_object_id |
从变更日志映射 |
resource_type |
principal.resource.sub_type |
从变更日志映射 |
_create_user","_last_modified_user |
principal.user.email_addresses |
从变更日志映射 |
action |
security_result.action |
从变更日志映射 |
display_name |
principal.resource.name |
从变更日志映射 |
_last_modified_time |
principal.resource.attribute.last_update_time |
从变更日志映射 |
_create_time |
principal.resource.attribute.creation_time |
从变更日志映射 |
parent_path |
principal.resource.parent |
从变更日志映射 |
id |
principal.resource.id |
从变更日志映射 |
resource_type |
target.resource.sub_type |
从变更日志映射 |
unique_id |
target.resource.product_object_id |
从变更日志映射 |
path |
target.process.file.full_path |
从变更日志映射 |
id |
target.resource.id |
从变更日志映射 |
vmw_host |
target_details.hostname or target_details.ip |
从变更日志映射 |
vmw_vr_ops_clusterrole |
intermediary.resource.attribute.labels.roles.name |
从变更日志映射 |
vmw_host","vmw_product","vmw_vcenter","vmw_cluster","vmw_vr_ops_id","vmw_object_id","vmw_datacenter","vmw_vcenter_id","vmw_vr_ops_logtype","vmw_vr_ops_appname","vmw_vr_ops_hostname","vmw_vr_ops_nodename","vmw_vr_ops_clustername","vmw_vr_ops_clusterrole","managedExternally","update","filepath","eventType","resourceId |
principal.resource.attribute.labels |
从变更日志映射 |
tname", "s2comp", "node |
principal.resource.attribute.labels |
从变更日志映射 |
exe |
target.process.file.full_path |
从变更日志映射 |