收集 VMware 网络和安全虚拟化 (NSX) Manager 日志

支持的平台:

本文档介绍了如何收集 VMware 网络和安全虚拟化 (NSX) 管理器日志。解析器会根据消息格式使用各种 Grok 模式提取字段。然后,它会执行键值解析、JSON 解析和条件逻辑,以将提取的字段映射到 UDM,处理不同的日志格式,并使用其他上下文丰富数据。

准备工作

  • 确保您有一个 Google Security Operations 实例。
  • 确保您使用的是 Windows 2016 或更高版本,或者使用了带有 systemd 的 Linux 主机。
  • 如果在代理后面运行,请确保防火墙端口处于打开状态。
  • 确保您拥有对 VMWare NSX 的管理员访问权限。

获取 Google SecOps 提取身份验证文件

  1. 登录 Google SecOps 控制台。
  2. 依次前往 SIEM 设置 > 收集代理
  3. 下载提取身份验证文件。将该文件安全地保存在将安装 BindPlane 的系统上。

获取 Google SecOps 客户 ID

  1. 登录 Google SecOps 控制台。
  2. 依次选择 SIEM 设置 > 配置文件
  3. 复制并保存组织详细信息部分中的客户 ID

安装 BindPlane Agent

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 Agent 以提取 Syslog 并将其发送到 Google SecOps

  1. 访问配置文件:

    • 找到 config.yaml 文件。通常,在 Linux 上,该目录位于 /etc/bindplane-agent/ 目录中;在 Windows 上,该目录位于安装目录中。
    • 使用文本编辑器(例如 nanovi 或记事本)打开该文件。
  2. 按如下方式修改 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
    
  3. 根据基础架构中的需要替换端口和 IP 地址。

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

  5. 获取 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 配置

  1. 登录 vSphere Web 客户端
  2. 依次前往网络和安全 > NSX Edges
  3. 选择要配置的特定 NSX Edge 实例。
  4. 前往 Syslog Settings
    1. 对于 NSX 6.4.4 及更高版本:
      • 依次前往管理 > 设置 > 设备设置
      • 依次点击设置 > 更改 Syslog 配置
    2. 对于 NSX 6.4.3 及更低版本:
      • 依次前往管理 > 设置 > 配置
      • 详细信息对话框中,点击更改
  5. 配置 Syslog 服务器详细信息:
    • 服务器:输入 Syslog 服务器 (Bindplane) 的 IP 地址或主机名。
    • 协议:选择 UDPTCP(具体取决于您的 syslog 服务器/绑定平面配置)。
    • 端口:输入端口号(取决于您的 syslog 服务器/Bindplane 配置)。
  6. 点击 OK 保存设置。

NSX Manager 的 Syslog 配置

  1. 使用管理员凭据登录 NSX Manager 网页界面,如下所示:
    • https://<NSX-Manager-IP>https://<NSX-Manager-Hostname>
  2. 依次选择管理设备设置 > 常规
  3. 点击修改以配置 Syslog 服务器设置。
  4. 输入 Syslog 服务器详细信息:
    • 服务器:输入 Syslog 服务器 (Bindplane) 的 IP 地址或主机名。
    • 协议:选择 UDPTCP(具体取决于您的 syslog 服务器/绑定平面配置)。
    • 端口:输入端口号(取决于您的 syslog 服务器/Bindplane 配置)。
  5. 点击 OK 保存设置。

NSX Controller 的 Syslog 配置

  1. 登录 vSphere Web 客户端。
  2. 依次前往网络和安全 > 安装和升级 > 管理 > NSX 控制器节点
  3. 选择用于管理控制器节点的 NSX Manager
  4. 点击常见控制器属性修改
  5. Syslog 服务器对话框中,点击添加
    1. 输入 Syslog 服务器名称或 IP 地址。
    2. 选择 UDP 协议(具体取决于您的 syslog 服务器/Bindplane 配置)。
    3. 设置日志级别(例如 INFO)。
  6. 点击 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.ipevent.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_protocolevent.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.hostnameevent.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

  • 新创建的解析器