收集 VMware vRealize 日志

支持的语言:

本文档介绍了如何使用 Bindplane 将 VMware Aria Suite(之前称为 VMware vRealize)日志注入到 Google Security Operations。解析器使用基于 msg_type 字段的 grok 模式从 syslog 消息中提取字段。然后,它会将这些提取的字段映射到 UDM,处理各种日志格式,并使用网络信息、用户详细信息和资源属性等其他上下文来丰富数据。

准备工作

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

  • Google SecOps 实例
  • Windows 2016 或更高版本,或者具有 systemd 的 Linux 主机
  • 如果通过代理运行,请确保防火墙端口处于开放状态
  • 对 VMware Aria Suite 软件的特权访问权限

获取 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
            log_type: 'VMWARE_VREALIZE'
            raw_log_field: body
            ingestion_labels:
    
    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
    

为 VMware Aria Suite 配置 Syslog

  1. 登录 VMware Aria Suite 网页界面。
  2. 依次前往管理 > 事件转发
  3. 点击新建目的地
  4. 提供以下配置详细信息:
    • 名称:输入用于标识服务器的唯一名称。
    • 主机:输入 Bindplane 代理 IP 地址。
    • 协议:选择 Syslog
    • 传输:根据实际的 Bindplane 代理配置,选择 UDPTCP
    • 端口:输入 Bindplane 代理端口号。
  5. 点击测试
  6. 点击保存

UDM 映射表

日志字段 UDM 映射 逻辑
actorDomain principal.hostname 原始日志中的 actorDomain 值会映射到 UDM 字段。
actorId principal.resource.attribute.labels.key 字符串“actorId”已分配给该键。
actorId principal.resource.attribute.labels.value 原始日志中的 actorId 值会分配给该值。
actorId additional.fields.key 字符串“actorId”已分配给该键。
actorId additional.fields.value.string_value 原始日志中的 actorId 值会分配给该值。
actorUserName principal.user.userid 原始日志中的 actorUserName 值会映射到 UDM 字段。
actorUuid principal.resource.attribute.labels.key 字符串“actorUuid”已分配给该键。
actorUuid principal.resource.attribute.labels.value 原始日志中的 actorUuid 值会分配给该值。
actorUuid additional.fields.key 字符串“actorUuid”已分配给该键。
actorUuid additional.fields.value.string_value 原始日志中的 actorUuid 值会分配给该值。
all_request_headers.sec-ch-ua-platform principal.platform 该值派生自 all_request_headers.sec-ch-ua-platform。如果包含“win”或“windows”(不区分大小写),则值为“WINDOWS”。如果包含“Mac”(不区分大小写),则值为“MAC”。如果包含“lin”或“linux”(不区分大小写),则值为“LINUX”。
all_request_headers.X-Requested-With network.application_protocol 如果值包含“http”(不区分大小写),则将值设置为“HTTP”。
automation_tag metadata.product_event_type 原始日志中的 automation_tag 值会映射到 UDM 字段。
client_ip principal.ip 原始日志中的 client_ip 值会映射到 UDM 字段。
client_src_port principal.port 原始日志中的 client_src_port 值会映射到 UDM 字段。
comp about.resource.attribute.labels.key 字符串“Component”已分配给该键。
comp about.resource.attribute.labels.value 原始日志中的 comp 值会分配给该值。
compression additional.fields.key 字符串“compression”已分配给该键。
compression additional.fields.value.string_value 原始日志中的 compression 值会分配给该值。
data about.resource.attribute.labels.key 逻辑取决于 msg_type。如果 msg_type 为“Vpxa”“Hostd”或“VSANMGMTSVC”,则使用键值对解析 data 字段,并将特定键(例如 opIDsub)映射到 about.resource.attribute.labels。如果 msg_type 为“SWITCHING”“FABRIC”“MONITORING”“SYSTEM”“ROUTING”“LOAD”“nsx”“nestdb”“cfgAgent”“NSX”或“NSXV”,则会解析 data 字段以查找 compsubcomps2comp 等键,然后将其映射到 about.resource.attribute.labels
data about.resource.attribute.labels.value 请参阅 about.resource.attribute.labels.key 的逻辑。
data security_result.description 如果 msg_type 为“Vpxa”“Hostd”或“VSANMGMTSVC”,并且在解析 data 以获取键值对后,如果存在 msg 字段,则其值会分配给 security_result.description
description security_result.description 如果原始日志中存在 description 字段,则其值会映射到 UDM 字段。
deviceId principal.resource.attribute.labels.key 字符串“deviceType”已分配给该键。
deviceId principal.resource.attribute.labels.value 原始日志中的 values.deviceType 值会分配给该值。
deviceId additional.fields.key 字符串“deviceType”已分配给该键。
deviceId additional.fields.value.string_value 原始日志中的 values.deviceType 值会分配给该值。
direction network.direction 如果值为“OUT”,则映射到“OUTBOUND”。如果值为“IN”,则映射到“INBOUND”。
dst_ip target.ip 原始日志中的 dst_ip 值会映射到 UDM 字段。
dst_port target.port 原始日志中的 dst_port 值会映射到 UDM 字段。
event_source principal.url 原始日志中的 event_source 值会映射到 UDM 字段。
headers_received_from_server.Access-Control-Allow-Origin target.resource.attribute.labels.key 字符串“headers_received_from_server.Access-Control-Allow-Origin”已分配给该键。
headers_received_from_server.Access-Control-Allow-Origin target.resource.attribute.labels.value 原始日志中的 headers_received_from_server.Access-Control-Allow-Origin 值会分配给该值。
headers_received_from_server.Content-Security-Policy principal.resource.attribute.labels.key 字符串“headers_received_from_server.Content-Security-Policy”已分配给该键。
headers_received_from_server.Content-Security-Policy principal.resource.attribute.labels.value 原始日志中的 headers_received_from_server.Content-Security-Policy 值会分配给该值。
headers_received_from_server.Cookie target.resource.attribute.labels.key 字符串“headers_received_from_server.Cookie”已分配给该键。
headers_received_from_server.Cookie target.resource.attribute.labels.value 原始日志中的 headers_sent_to_server.Cookie 值会分配给该值。
headers_received_from_server.set-cookie target.resource.attribute.labels.key 字符串“headers_received_from_server.set-cookie”已分配给该键。
headers_received_from_server.set-cookie target.resource.attribute.labels.value 原始日志中的 headers_received_from_server.set-cookie 值会分配给该值。
headers_sent_to_server.sec-ch-ua principal.resource.attribute.labels.key 字符串“headers_sent_to_server.sec-ch-ua”已分配给该键。
headers_sent_to_server.sec-ch-ua principal.resource.attribute.labels.value 原始日志中的 headers_sent_to_server.sec-ch-ua 值会分配给该值。
headers_sent_to_server.X-CSRF-TOKEN principal.resource.attribute.labels.key 字符串“headers_sent_to_server.X-CSRF-TOKEN”已分配给该键。
headers_sent_to_server.X-CSRF-TOKEN principal.resource.attribute.labels.value 原始日志中的 headers_sent_to_server.X-CSRF-TOKEN 值会分配给该值。
hostname principal.hostname 原始日志中的 hostname 值会映射到 UDM 字段。
hostname intermediary.hostname 原始日志中的 hostname 值会映射到 UDM 字段。
host principal.hostname 原始日志中的 host 值会映射到 UDM 字段。
isLocal additional.fields.key 字符串“isLocal”已分配给该键。
isLocal additional.fields.value.string_value 原始日志中的 isLocal 值会分配给该值。
json_data principaltargetadditionalsecurity_result 中的各个字段 原始日志中的 json_data 字段会解析为 JSON,提取的字段会根据其名称和解析器的逻辑映射到各种 UDM 字段。这包括 uuidtenantIdactorIdactorUserNameactorDomainsourceIpobjectNameobjectTypeobjectIdvalues.resourceTypevalues.success 等字段。
kv_data 各种字段 kv_data 字段会解析为键值对,提取的字段会根据其名称和解析器的逻辑映射到各种 UDM 字段。
level security_result.severity 如果值为“info”(不区分大小写),则映射到“INFORMATIONAL”。
log_id metadata.product_log_id 原始日志中的 log_id 值会映射到 UDM 字段。
message 各种字段 message 字段是主要的数据源,系统会使用 grok 模式对其进行广泛解析,以提取各种字段,例如 tshostnamemsg_typesub_msg 等。然后,系统会根据解析器的逻辑使用这些提取的字段来填充不同的 UDM 字段。
method network.http.method 原始日志中的 method 值会映射到 UDM 字段。
msg security_result.description 如果 msg_type 为“Vpxa”“Hostd”“VSANMGMTSVC”“SWITCHING”“FABRIC”“ROUTING”“LOAD-BALANCER”“nsx”“nestdb”“cfgAgent”“NSX”“NSXV”或“Rhttpproxy”,并且在进行任何相关的 grok 解析后,如果 msg 字段存在,则将其值分配给 security_result.description。此逻辑中针对特定消息内容(例如“keepalive connection”)存在特殊情况。
msg_type metadata.product_event_type 如果 msg_type 为“FIREWALL_PKTLOG”或“FIREWALL-PKTLOG”,则其值会映射到 UDM 字段。
msg_type event_type event_type 的值取决于 msg_type。如果 msg_type 为“FIREWALL_PKTLOG”或“FIREWALL-PKTLOG”,则 event_type 为“NETWORK_CONNECTION”。如果 msg_type 是“Vpxa”“Hostd”“VSANMGMTSVC”“nsx”“LOAD”“ROUTING”“SWITCHING”“FABRIC”“MONITORING”“SYSTEM”“nestdb”“cfgAgent”“NSX”“NSXV”“Rhttpproxy”“audispd”或“vsantraceUrgent”,则 event_type 为“GENERIC_EVENT”。如果 msg_type 为“queries”或“responses”,则 event_type 为“NETWORK_DNS”。如果 msg_type 为“sudo”,则 event_type 为“STATUS_UPDATE”。如果 description 字段包含“cmmdsTimeMachineDump”,则 event_type 为“GENERIC_EVENT”。如果 description 字段包含“prodjbossapp”,则 event_type 为“GENERIC_EVENT”。如果 description 字段包含“liagent@6876”,则 event_type 为“GENERIC_EVENT”。如果上述条件均不满足,且 description 字段不为空,则 event_type 为“GENERIC_EVENT”。如果 src_ipdst_ip 同时存在,则 event_type 为“NETWORK_CONNECTION”。如果存在 src_ipdst_iphostname,则 event_type 为“STATUS_UPDATE”。如果 has_principal_ip 为 true 且 has_target_ip 为 true,则 event_type 为“SCAN_UNCATEGORIZED”。如果 has_principal_ip 为 true 或 has_principal_host 为 true,则 event_type 为“STATUS_UPDATE”。如果上述任何条件均不满足,则 event_type 为“GENERIC_EVENT”。
objectName target.resource.attribute.labels.key 字符串“objectName”已分配给该键。
objectName target.resource.attribute.labels.value 原始日志中的 objectName 值会分配给该值。
objectName additional.fields.key 字符串“objectName”已分配给该键。
objectName additional.fields.value.string_value 原始日志中的 objectName 值会分配给该值。
objectId target.resource.attribute.labels.key 字符串“objectId”已分配给该键。
objectId target.resource.attribute.labels.value 原始日志中的 objectId 值会分配给该值。
objectId additional.fields.key 字符串“objectId”已分配给该键。
objectId additional.fields.value.string_value 原始日志中的 objectId 值会分配给该值。
objectType target.resource.attribute.labels.key 字符串“objectType”已分配给该键。
objectType target.resource.attribute.labels.value 原始日志中的 objectType 值会分配给该值。
objectType additional.fields.key 字符串“objectType”已分配给该键。
objectType additional.fields.value.string_value 原始日志中的 objectType 值会分配给该值。
objectType security_result.description 如果 objectType 为“LAUNCH”且 success 不为“true”,则说明为“应用启动尝试成功”。如果 objectType 为“LAUNCH_ERROR”且 success 不为“true”,则说明为“用户启动了应用,但请求无效”。
opID about.resource.attribute.labels.key 字符串“opId”已分配给该键。
opID about.resource.attribute.labels.value 原始日志中的 opID 值会分配给该值。
pool additional.fields.key 字符串“pool”已分配给该键。
pool additional.fields.value.string_value 原始日志中的 pool 值会分配给该值。
pool_name additional.fields.key 字符串“pool_name”已分配给该键。
pool_name additional.fields.value.string_value 原始日志中的 pool_name 值会分配给该值。
protocol network.ip_protocol 原始日志中的 protocol 值会转换为大写形式,并映射到 UDM 字段。如果值为“PROTO”,则不进行映射。
protocol additional.fields.key 如果 protocol 的值为“PROTO”,则将字符串“ip_protocol”分配给该键。
protocol additional.fields.value.string_value 如果 protocol 的值为“PROTO”,则将原始日志中的 protocol 的值分配给该值。
query_data network.dns.questions.name 系统会解析 query_data 字段以提取 question_name,然后将其映射到 UDM 字段。
query_data network.dns.questions.type 系统会解析 query_data 字段以提取 query_type,然后使用从“dns_record_type.include”中包含的查找功能将 query_type 映射到 UDM 字段。
query_data network.dns.questions.class 系统会解析 query_data 字段以提取 dns_class,然后使用从“dns_query_class_mapping.include”中包含的查找功能将 dns_class 映射到 UDM 字段。
referer principal.url 原始日志中的 referer 值会映射到 UDM 字段。
request_content_type additional.fields.key 字符串“request_content_type”已分配给该键。
request_content_type additional.fields.value.string_value 原始日志中的 request_content_type 值会分配给该值。
request_state additional.fields.key 字符串“request_state”已分配给该键。
request_state additional.fields.value.string_value 原始日志中的 request_state 值会分配给该值。
response_code network.http.response_code 原始日志中的 response_codeserver_response_code 值会映射到 UDM 字段。
response_content_type additional.fields.key 字符串“response_content_type”已分配给该键。
response_content_type additional.fields.value.string_value 原始日志中的 response_content_type 值会分配给该值。
rule_id security_result.rule_id 原始日志中的 rule_id 值会映射到 UDM 字段。
s2comp about.resource.attribute.labels.key 字符串“S2-Component”已分配给该键。
s2comp about.resource.attribute.labels.value 原始日志中的 s2comp 值会分配给该值。
server_ip target.ip 原始日志中的 server_ip 值会映射到 UDM 字段。
server_name target.hostname 原始日志中的 server_name 值会映射到 UDM 字段。
server_response_code network.http.response_code 请参阅 response_code 的逻辑。
server_src_port target.port 原始日志中的 server_src_port 值会映射到 UDM 字段。
service_engine additional.fields.key 字符串“service_engine”已分配给该键。
service_engine additional.fields.value.string_value 原始日志中的 service_engine 值会分配给该值。
sourceIp principal.ip 原始日志中的 sourceIp 值会映射到 UDM 字段。
ssl_cipher network.tls.cipher 原始日志中的 ssl_cipher 值会映射到 UDM 字段。
ssl_session_id network.session_id 原始日志中的 ssl_session_id 值会映射到 UDM 字段。
ssl_version network.tls.version_protocol 原始日志中的 ssl_version 值会映射到 UDM 字段。
sub about.resource.attribute.labels.key 字符串“子组件”已分配给该键。
sub about.resource.attribute.labels.value 原始日志中的 sub 值会分配给该值。
subClusterUuid additional.fields.key 字符串“subClusterUuid”已分配给该键。
subClusterUuid additional.fields.value.string_value 原始日志中的 subClusterUuid 值会分配给该值。
sub_msg principaltargetnetworksecurity_resultabout 中的各个字段 系统会根据 msg_type 以不同的方式解析 sub_msg 字段。可以使用 JSON、grok 模式或键值对进行解析。然后,根据提取的字段的名称和解析器的逻辑,将这些字段映射到各种 UDM 字段。这包括 ip_typeactionrule_iddirectionprotocoltcp_flagsrc_ipsrc_portdst_ipdst_portdatamsg 等字段。
subcomp about.resource.attribute.labels.key 字符串“子组件”已分配给该键。
subcomp about.resource.attribute.labels.value 原始日志中的 subcomp 值会分配给该值。
tenantId principal.resource.attribute.labels.key 字符串“tenantId”已分配给该键。
tenantId principal.resource.attribute.labels.value 原始日志中的 tenantId 值会分配给该值。
tenantId additional.fields.key 字符串“tenantId”已分配给该键。
tenantId additional.fields.value.string_value 原始日志中的 tenantId 值会分配给该值。
ts metadata.event_timestamp 原始日志中的 ts 值会被解析为时间戳并映射到 UDM 字段。
ts timestamp 原始日志中的 ts 值会被解析为时间戳并映射到 UDM 字段。
updateType additional.fields.key 字符串“updateType”已分配给该键。
updateType additional.fields.value.string_value 原始日志中的 updateType 值会分配给该值。
uri_path network.http.referral_url 原始日志中的 uri_path 值会映射到 UDM 字段。
user_agent network.http.user_agent 原始日志中的 user_agent 值会映射到 UDM 字段。
user_agent network.http.parsed_user_agent 原始日志中的 user_agent 值会被解析为用户代理字符串并映射到 UDM 字段。
USER principal.user.user_display_name 原始日志中的 USER 值会映射到 UDM 字段。
values.actorExternalId principal.resource.attribute.labels.key 字符串“actorExternalId”已分配给该键。
values.actorExternalId principal.resource.attribute.labels.value 原始日志中的 values.actorExternalId 值会分配给该值。
values.actorExternalId additional.fields.key 字符串“actorExternalId”已分配给该键。
values.actorExternalId additional.fields.value.string_value 原始日志中的 values.actorExternalId 值会分配给该值。
values.deviceType principal.resource.attribute.labels.key 字符串“deviceType”已分配给该键。
values.deviceType principal.resource.attribute.labels.value 原始日志中的 values.deviceType 值会分配给该值。
values.deviceType additional.fields.key 字符串“deviceType”已分配给该键。
values.deviceType additional.fields.value.string_value 原始日志中的 values.deviceType 值会分配给该值。
values.resourceType principal.resource.resource_subtype 原始日志中的 values.resourceType 值会映射到 UDM 字段。principal.resource.type 设置为“VIRTUAL_MACHINE”。
values.success security_result.action 如果值为“true”(不区分大小写),则映射到“ALLOW”。如果值为“false”(不区分大小写),则映射到“BLOCK”。
virtualservice additional.fields.key 字符串“virtualservice”已分配给该键。
virtualservice additional.fields.value.string_value 原始日志中的 virtualservice 值会分配给该值。
vmw_vr_ops_appname about.resource.attribute.labels.key 字符串“Ops AppName”已分配给该键。
vmw_vr_ops_appname about.resource.attribute.labels.value 原始日志中的 vmw_vr_ops_appname 值会分配给该值。
vmw_vr_ops_clustername about.resource.attribute.labels.key 字符串“Ops ClusterName”已分配给该键。
vmw_vr_ops_clustername about.resource.attribute.labels.value 原始日志中的 vmw_vr_ops_clustername 值会分配给该值。
vmw_vr_ops_logtype about.resource.attribute.labels.key 字符串“Ops Logtype”已分配给该键。
vmw_vr_ops_logtype about.resource.attribute.labels.value 原始日志中的 vmw_vr_ops_logtype 值会分配给该值。
vmw_vr_ops_nodename about.resource.attribute.labels.key 字符串“Ops NodeName”已分配给该键。
vmw_vr_ops_nodename about.resource.attribute.labels.value 原始日志中的 vmw_vr_ops_nodename 值会分配给该值。
vs_name additional.fields.key 字符串“vs_name”已分配给该键。
vs_name additional.fields.value.string_value 原始日志中的 vs_name 值会分配给该值。已分配字符串“VMWARE”。已分配字符串“VMWARE_VREALIZE”。分配了字符串“VMWARE_VREALIZE”。

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