收集 VMware 网络和安全虚拟化 (NSX) Manager 日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何收集 VMware 网络和安全虚拟化 (NSX) 管理器日志。解析器会根据消息格式使用各种 Grok 模式提取字段。然后,它会执行键值解析、JSON 解析和条件逻辑,以将提取的字段映射到 UDM,处理不同的日志格式,并使用其他上下文丰富数据。
准备工作
- 确保您有一个 Google Security Operations 实例。
- 确保您使用的是 Windows 2016 或更高版本,或者使用了带有
systemd
的 Linux 主机。 - 如果在代理后面运行,请确保防火墙端口处于打开状态。
- 确保您拥有对 VMWare NSX 的管理员访问权限。
获取 Google SecOps 提取身份验证文件
- 登录 Google SecOps 控制台。
- 依次前往 SIEM 设置 > 收集代理。
- 下载提取身份验证文件。将该文件安全地保存在将安装 BindPlane 的系统上。
获取 Google SecOps 客户 ID
- 登录 Google SecOps 控制台。
- 依次选择 SIEM 设置 > 配置文件。
- 复制并保存组织详细信息部分中的客户 ID。
安装 BindPlane Agent
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 Agent 以提取 Syslog 并将其发送到 Google SecOps
访问配置文件:
- 找到
config.yaml
文件。通常,在 Linux 上,该目录位于/etc/bindplane-agent/
目录中;在 Windows 上,该目录位于安装目录中。 - 使用文本编辑器(例如
nano
、vi
或记事本)打开该文件。
- 找到
按如下方式修改
config.yaml
文件:receivers: udplog: # Replace the below port <54525> and IP <0.0.0.0> with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: vmware_nsx raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
根据基础架构中的需要替换端口和 IP 地址。
将
<customer_id>
替换为实际的客户 ID。在获取 Google SecOps 提取身份验证文件部分中,将
/path/to/ingestion-authentication-file.json
更新为身份验证文件的保存路径。
重启 BindPlane 代理以应用更改
在 Linux 中,如需重启 BindPlane 代理,请运行以下命令:
sudo systemctl restart bindplane-agent
在 Windows 中,如需重启 BindPlane Agent,您可以使用 Services 控制台,也可以输入以下命令:
net stop BindPlaneAgent && net start BindPlaneAgent
NSX Edge 的 Syslog 配置
- 登录 vSphere Web 客户端。
- 依次前往网络和安全 > NSX Edges。
- 选择要配置的特定 NSX Edge 实例。
- 前往 Syslog Settings:
- 对于 NSX 6.4.4 及更高版本:
- 依次前往管理 > 设置 > 设备设置。
- 依次点击设置 > 更改 Syslog 配置。
- 对于 NSX 6.4.3 及更低版本:
- 依次前往管理 > 设置 > 配置。
- 在详细信息对话框中,点击更改。
- 对于 NSX 6.4.4 及更高版本:
- 配置 Syslog 服务器详细信息:
- 服务器:输入 Syslog 服务器 (Bindplane) 的 IP 地址或主机名。
- 协议:选择 UDP 或 TCP(具体取决于您的 syslog 服务器/绑定平面配置)。
- 端口:输入端口号(取决于您的 syslog 服务器/Bindplane 配置)。
- 点击 OK 保存设置。
NSX Manager 的 Syslog 配置
- 使用管理员凭据登录 NSX Manager 网页界面,如下所示:
https://<NSX-Manager-IP>
或https://<NSX-Manager-Hostname>
。
- 依次选择管理设备设置 > 常规。
- 点击修改以配置 Syslog 服务器设置。
- 输入 Syslog 服务器详细信息:
- 服务器:输入 Syslog 服务器 (Bindplane) 的 IP 地址或主机名。
- 协议:选择 UDP 或 TCP(具体取决于您的 syslog 服务器/绑定平面配置)。
- 端口:输入端口号(取决于您的 syslog 服务器/Bindplane 配置)。
- 点击 OK 保存设置。
NSX Controller 的 Syslog 配置
- 登录 vSphere Web 客户端。
- 依次前往网络和安全 > 安装和升级 > 管理 > NSX 控制器节点。
- 选择用于管理控制器节点的 NSX Manager。
- 点击常见控制器属性修改。
- 在 Syslog 服务器对话框中,点击添加:
- 输入 Syslog 服务器名称或 IP 地址。
- 选择 UDP 协议(具体取决于您的 syslog 服务器/Bindplane 配置)。
- 设置日志级别(例如
INFO
)。
- 点击 OK 保存设置。
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 |
系统会从原始日志中的 UserName 字段中提取用户 ID。 |
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 |
系统会从原始日志中的 resourceId 字段中提取商品对象 ID。 |
s2comp |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
系统会从原始日志中的 s2comp 字段中提取 s2comp 值,并将其添加为键为“s2comp”的标签。 |
ses |
event.idm.read_only_udm.network.session_id |
系统会从原始日志中的 ses 字段中提取会话 ID。 |
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 |
系统会从原始日志中的 uid 字段中提取用户 ID。 |
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 |
系统会从原始日志中的 vmw_object_id 字段中提取商品对象 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”。 |
更改
2023-11-15
- 增强功能:在“旧值”字段中:
- 将“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”。
- 将“rule_id”映射到“security_result.rule_id”。
- 将“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”。
- 将“path”映射到“principal.process.file.full_path”。
- 将“id”映射到“principal.resource.id”。
- 在“新值”字段中:
- 将“resource_type”映射到“target.resource.sub_type”。
- 将“unique_id”映射到“target.resource.product_object_id”。
- 将“path”映射到“target.process.file.full_path”。
- 将“display_name”映射到“target.resource.name”。
- 将“id”映射到“target.resource.id”。
- 根据 vmw_host 中的值将“vmw_host”映射到“target_details.hostname 或 target_details.ip”。
- 将“vmw_product”映射到“target.application”。
- 将“vmw_vcenter”映射到“target.cloud.availability_zone”。
- 将“vmw_cluster”映射到“target.resource.name”。
- 将“vmw_object_id”映射到“target.resource.product_object_id”。
- 将“vmw_datacenter”映射到“target.resource.attribute.labels”。
- 将“vmw_vcenter_id”映射到“target.resource.attribute.labels”。
- 将“vmw_vr_ops_logtype”映射到“intermediary.resource.attribute.labels”。
- 将“vmw_vr_ops_appname”映射到“intermediary.application”。
- 将“vmw_vr_ops_hostname”映射到“intermediary.hostname”。
- 将“vmw_vr_ops_nodename”映射到“intermediary.resource.attribute.labels”。
- 将“vmw_vr_ops_clustername”映射到“intermediary.resource.name”。
- 将“vmw_vr_ops_clusterrole”映射到“intermediary.resource.attribute.labels.roles.name”。
- 将“vmw_vr_ops_id”映射到“intermediary.resource.product_object_id”。
2023-10-13
- 增强功能:修改了 Grok 模式,以便使用端口解析“sourceIp”。
- 将“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”。
- 将“payload”中的字段映射到“principal.resource.attribute.labels”。
- 将“client”映射到“principal.ip”
- 将“new_value”中的字段映射到“target.resource.attribute.labels”。
2023-10-03
- 增强功能:添加了 Grok 模式,用于在将“sourceIp”映射到 UDM 字段之前检查其是否为有效 IP 地址。
2023-09-12
- 增强功能:添加了对包含“新值”和“旧值”字段的 syslog 日志的支持。
2023-06-26
- 将“PASS”“DROP”“REJECT”“NAT”“NONAT”“RDR”“NORDR”“PUNT”“REDIRECT”和“COPY”中的映射值作为“Network_Status”映射到“additional.fields”键。
2023-03-07
- 将“errorCode”映射到“security_result.detection_fields”。
- 将“app_type”映射到“principal.application”。
- 将“tname”“s2comp”“node”映射到“principal.resource.attribute.labels”。
- 将“exe”映射到“target.process.file.full_path”。
- 将“dst_ip”映射到“target.ip”。
- 将“ses”映射到“network.session_id”。
- 将“hostname”映射到“principal.ip”。
- 将“direction”映射到“network.direction”。
- 将“reqId”映射到“metadata.product_log_id”。
2022-06-10
- 新创建的解析器