Recopila registros del administrador de VMware Networking and Security Virtualization (NSX)

Compatible con:

En este documento, se describe cómo puedes recopilar los registros del Administrador de virtualización de redes y seguridad (NSX) de VMware. El analizador extrae campos con varios patrones de grok según el formato del mensaje. Luego, realiza el análisis de par clave-valor, el análisis JSON y la lógica condicional para asignar los campos extraídos a la UDM, controlar diferentes formatos de registro y enriquecer los datos con contexto adicional.

Antes de comenzar

  • Asegúrate de tener una instancia de Google Security Operations.
  • Asegúrate de usar Windows 2016 o una versión posterior, o un host de Linux con systemd.
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
  • Asegúrate de tener acceso de administrador a VMWare NSX.

Obtén el archivo de autenticación de transferencia de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará BindPlane.

Obtén el ID de cliente de Google SecOps

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instala el agente de BindPlane

Instalación de Windows

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre una terminal con privilegios de raíz o sudo.
  2. Ejecuta el siguiente comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    • Ubica el archivo config.yaml. Por lo general, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    • Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    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. Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Reemplaza <customer_id> por el ID de cliente real.

  5. Actualiza /path/to/ingestion-authentication-file.json a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de transferencia de Google SecOps.

Reinicia el agente de BindPlane para aplicar los cambios.

  • En Linux, para reiniciar el agente de BindPlane, ejecuta el siguiente comando:

    sudo systemctl restart bindplane-agent
    
  • En Windows, para reiniciar el agente de BindPlane, puedes usar la consola Services o ingresar el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configuración de Syslog para NSX Edge

  1. Accede al cliente web de vSphere.
  2. Ve a Herramientas de redes y seguridad > NSX Edges.
  3. Selecciona la instancia específica de NSX Edge que deseas configurar.
  4. Ve a Configuración de Syslog:
    1. Para NSX 6.4.4 y versiones posteriores:
      • Ve a Administrar > Configuración > Configuración del dispositivo.
      • Haz clic en Configuración > Cambiar configuración de Syslog.
    2. Para NSX 6.4.3 y versiones anteriores:
      • Ve a Administrar > Configuración > Configuración.
      • En el diálogo Detalles, haz clic en Cambiar.
  5. Configura los detalles del servidor Syslog:
    • Servidor: Ingresa la dirección IP o el nombre de host del servidor Syslog (Bindplane).
    • Protocolo: Selecciona UDP o TCP (según la configuración de tu servidor de syslog o Bindplane).
    • Puerto: Ingresa el número de puerto (según la configuración de tu servidor de syslog o Bindplane).
  6. Haz clic en Aceptar para guardar la configuración.

Configuración de Syslog para NSX Manager

  1. Accede a la interfaz web de NSX Manager con las credenciales de administrador de la siguiente manera:
    • https://<NSX-Manager-IP> o https://<NSX-Manager-Hostname>.
  2. Ve a Administrar configuración del dispositivo > General.
  3. Haz clic en Editar para configurar el servidor Syslog.
  4. Ingresa los detalles del servidor de Syslog:
    • Servidor: Ingresa la dirección IP o el nombre de host del servidor Syslog (Bindplane).
    • Protocolo: Selecciona UDP o TCP (según la configuración de tu servidor de syslog o Bindplane).
    • Puerto: Ingresa el número de puerto (según la configuración de tu servidor de syslog o Bindplane).
  5. Haz clic en Aceptar para guardar la configuración.

Configuración de Syslog para NSX Controller

  1. Accede al cliente web de vSphere.
  2. Ve a Herramientas de redes y seguridad > Instalación y actualización > Administración > Nodos de controlador de NSX.
  3. Selecciona el NSX Manager que administra los nodos del controlador.
  4. Haz clic en Editar atributos comunes del controlador.
  5. En el diálogo Syslog Servers, haz clic en Add:
    1. Ingresa el nombre o la dirección IP del servidor de Syslog.
    2. Selecciona el protocolo UDP (según la configuración de tu servidor de syslog o Bindplane).
    3. Establece el Nivel de registro (por ejemplo, INFO).
  6. Haz clic en Aceptar para guardar la configuración.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
DST event.idm.read_only_udm.target.ip La dirección IP de destino se extrae del campo DST en el registro sin procesar.
ID event.idm.read_only_udm.metadata.product_log_id El ID del registro del producto se extrae del campo ID en el registro sin procesar.
MAC event.idm.read_only_udm.principal.mac La dirección MAC se extrae del campo MAC en el registro sin procesar.
ModuleName event.idm.read_only_udm.metadata.product_event_type El tipo de evento del producto se extrae del campo ModuleName en el registro sin procesar.
Operation event.idm.read_only_udm.principal.resource.attribute.labels.value La operación se extrae del campo Operation en el registro sin procesar y se agrega como una etiqueta con la clave "Operation".
PROTO event.idm.read_only_udm.network.ip_protocol El protocolo IP se extrae del campo PROTO en el registro sin procesar.
RES event.idm.read_only_udm.target.resource.name El nombre del recurso de destino se extrae del campo RES en el registro sin procesar.
SRC event.idm.read_only_udm.principal.ip La dirección IP de origen se extrae del campo SRC en el registro sin procesar.
SPT event.idm.read_only_udm.principal.port El puerto de origen se extrae del campo SPT en el registro sin procesar.
UserName event.idm.read_only_udm.principal.user.userid El ID del usuario se extrae del campo UserName en el registro sin procesar.
app_type event.idm.read_only_udm.principal.application La aplicación principal se extrae del campo app_type en el registro sin procesar.
application event.idm.read_only_udm.target.application La aplicación de destino se extrae del campo application en el registro sin procesar.
audit event.idm.read_only_udm.principal.resource.attribute.labels.value El valor de auditoría se extrae del campo audit en el registro sin procesar y se agrega como una etiqueta con la clave "audit".
cancelTimeUTC event.idm.read_only_udm.principal.resource.attribute.last_update_time La hora de la última actualización se obtiene del campo cancelTimeUTC en el registro sin procesar.
client event.idm.read_only_udm.principal.ip o event.idm.read_only_udm.principal.administrative_domain Si el campo client es una dirección IP, se asigna a la IP principal. De lo contrario, se asigna al dominio administrativo principal.
comp event.idm.read_only_udm.principal.resource.attribute.labels.value El valor del componente se extrae del campo comp en el registro sin procesar y se agrega como una etiqueta con la clave "Comp".
datetime event.idm.read_only_udm.metadata.event_timestamp La marca de tiempo del evento se extrae del campo datetime en el registro sin procesar.
description event.idm.read_only_udm.metadata.description La descripción se extrae del campo description en el registro sin procesar.
details event.idm.read_only_udm.principal.resource.attribute.labels Los detalles se extraen del campo details en el registro sin procesar y se agregan como etiquetas.
direction event.idm.read_only_udm.network.direction Si el campo direction es "OUT", se asigna a "OUTBOUND".
dst_ip event.idm.read_only_udm.target.ip La dirección IP de destino se extrae del campo dst_ip en el registro sin procesar.
DPT event.idm.read_only_udm.target.port El puerto de destino se extrae del campo DPT en el registro sin procesar.
errorCode event.idm.read_only_udm.security_result.detection_fields El código de error se extrae del campo errorCode en el registro sin procesar y se agrega como un campo de detección.
eventType event.idm.read_only_udm.metadata.product_event_type El tipo de evento del producto se extrae del campo eventType en el registro sin procesar.
filepath event.idm.read_only_udm.principal.process.file.full_path La ruta de acceso del archivo se extrae del campo filepath en el registro sin procesar.
hostname event.idm.read_only_udm.principal.ip El nombre de host se extrae del campo hostname en el registro sin procesar y, si es una dirección IP, se asigna a la IP principal.
kv_data Varios campos de UDM Los pares clave-valor de kv_data se asignan a varios campos de la AUA según sus claves.
kv_data1 Varios campos de UDM Los pares clave-valor de kv_data1 se asignan a varios campos de la AUA según sus claves.
kv_data2 Varios campos de UDM Los pares clave-valor de kv_data2 se asignan a varios campos de la AUA según sus claves.
kv_data3 Varios campos de UDM Los pares clave-valor de kv_data3 se asignan a varios campos de la AUA según sus claves.
kv_data4 Varios campos de UDM Los pares clave-valor de kv_data4 se asignan a varios campos de la AUA según sus claves.
level event.idm.read_only_udm.security_result.severity Si el campo level es "INFO", se asigna a "INFORMATIONAL". Si es "ERROR", se asigna a "ERROR".
managedExternally event.idm.read_only_udm.principal.resource.attribute.labels.value El valor de managedExternally se extrae del campo managedExternally en el registro sin procesar y se agrega como una etiqueta con la clave "managedExternally".
message Varios campos de UDM El campo de mensaje se analiza para extraer varios campos de la UDM.
message_data event.idm.read_only_udm.principal.resource.attribute.labels.value Los datos del mensaje se extraen del campo message_data en el registro sin procesar y se agregan como una etiqueta con la clave "message".
network_status event.idm.read_only_udm.additional.fields El estado de la red se extrae del campo network_status en el registro sin procesar y se agrega como un campo adicional con la clave "Network_Connection_Status".
new_value Varios campos event.idm.read_only_udm.target El valor nuevo se extrae del campo new_value en el registro sin procesar y se usa para propagar varios campos de destino.
node event.idm.read_only_udm.principal.resource.attribute.labels.value El valor del nodo se extrae del campo node en el registro sin procesar y se agrega como una etiqueta con la clave "nodo".
old_value Varios campos de UDM El valor anterior se extrae del campo old_value en el registro sin procesar y se usa para propagar varios campos de la AUA.
payload Varios campos de UDM La carga útil se extrae del campo payload en el registro sin procesar y se usa para propagar varios campos de la AUA.
pid event.idm.read_only_udm.target.process.pid El ID de proceso se extrae del campo pid en el registro sin procesar.
reqId event.idm.read_only_udm.metadata.product_log_id El ID del registro del producto se extrae del campo reqId en el registro sin procesar.
resourceId event.idm.read_only_udm.principal.resource.product_object_id El ID del objeto del producto se extrae del campo resourceId en el registro sin procesar.
s2comp event.idm.read_only_udm.principal.resource.attribute.labels.value El valor de s2comp se extrae del campo s2comp en el registro sin procesar y se agrega como etiqueta con la clave "s2comp".
ses event.idm.read_only_udm.network.session_id El ID de sesión se extrae del campo ses en el registro sin procesar.
src_host event.idm.read_only_udm.principal.hostname El nombre de host principal se extrae del campo src_host en el registro sin procesar.
src_ip event.idm.read_only_udm.principal.ip La dirección IP de origen se extrae del campo src_ip en el registro sin procesar.
src_ip1 event.idm.read_only_udm.principal.ip La dirección IP de origen se extrae del campo src_ip1 en el registro sin procesar.
src_port event.idm.read_only_udm.principal.port El puerto de origen se extrae del campo src_port en el registro sin procesar.
startTimeUTC event.idm.read_only_udm.principal.resource.attribute.creation_time La hora de creación se obtiene del campo startTimeUTC en el registro sin procesar.
subcomp event.idm.read_only_udm.network.application_protocol o event.idm.read_only_udm.principal.resource.attribute.labels.value Si el campo subcomp es "http", se asigna a "HTTP". De lo contrario, se agrega como una etiqueta con la clave "Sub Comp".
tname event.idm.read_only_udm.principal.resource.attribute.labels.value El valor de tname se extrae del campo tname en el registro sin procesar y se agrega como etiqueta con la clave "tname".
type event.idm.read_only_udm.metadata.product_event_type El tipo de evento del producto se extrae del campo type en el registro sin procesar.
uid event.idm.read_only_udm.principal.user.userid El ID de usuario se extrae del campo uid en el registro sin procesar.
update event.idm.read_only_udm.principal.resource.attribute.labels.value El valor de actualización se extrae del campo update en el registro sin procesar y se agrega como una etiqueta con la clave "update".
user event.idm.read_only_udm.principal.user.user_display_name El nombre visible del usuario se extrae del campo user en el registro sin procesar.
vmw_cluster event.idm.read_only_udm.target.resource.name El nombre del recurso de destino se extrae del campo vmw_cluster en el registro sin procesar.
vmw_datacenter event.idm.read_only_udm.target.resource.attribute.labels.value El valor de vmw_datacenter se extrae del campo vmw_datacenter en el registro sin procesar y se agrega como una etiqueta con la clave "vmw_datacenter".
vmw_host event.idm.read_only_udm.target.hostname o event.idm.read_only_udm.target.ip Si el campo vmw_host es un nombre de host, se asigna al nombre de host de destino. De lo contrario, si es una dirección IP, se asigna a la IP de destino.
vmw_object_id event.idm.read_only_udm.target.resource.product_object_id El ID del objeto del producto se extrae del campo vmw_object_id en el registro sin procesar.
vmw_product event.idm.read_only_udm.target.application La aplicación de destino se extrae del campo vmw_product en el registro sin procesar.
vmw_vcenter event.idm.read_only_udm.target.cloud.availability_zone La zona de disponibilidad se extrae del campo vmw_vcenter en el registro sin procesar.
vmw_vcenter_id event.idm.read_only_udm.target.resource.attribute.labels.value El valor vmw_vcenter_id se extrae del campo vmw_vcenter_id en el registro sin procesar y se agrega como una etiqueta con la clave "vmw_vcenter_id".
vmw_vr_ops_appname event.idm.read_only_udm.intermediary.application La aplicación intermedia se extrae del campo vmw_vr_ops_appname en el registro sin procesar.
vmw_vr_ops_clustername event.idm.read_only_udm.intermediary.resource.name El nombre del recurso intermedio se extrae del campo vmw_vr_ops_clustername en el registro sin procesar.
vmw_vr_ops_clusterrole event.idm.read_only_udm.intermediary.resource.attribute.roles.name El nombre del rol de recurso intermedio se extrae del campo vmw_vr_ops_clusterrole en el registro sin procesar.
vmw_vr_ops_hostname event.idm.read_only_udm.intermediary.hostname El nombre de host intermedio se extrae del campo vmw_vr_ops_hostname en el registro sin procesar.
vmw_vr_ops_id event.idm.read_only_udm.intermediary.resource.product_object_id El ID del objeto del producto intermedio se extrae del campo vmw_vr_ops_id en el registro sin procesar.
vmw_vr_ops_logtype event.idm.read_only_udm.intermediary.resource.attribute.labels.value El valor vmw_vr_ops_logtype se extrae del campo vmw_vr_ops_logtype en el registro sin procesar y se agrega como etiqueta con la clave "vmw_vr_ops_logtype".
vmw_vr_ops_nodename event.idm.read_only_udm.intermediary.resource.attribute.labels.value El valor vmw_vr_ops_nodename se extrae del campo vmw_vr_ops_nodename en el registro sin procesar y se agrega como etiqueta con la clave "vmw_vr_ops_nodename". Se determina mediante una serie de sentencias condicionales basadas en los valores de otros campos. Los valores posibles son USER_LOGIN, NETWORK_CONNECTION, STATUS_UPDATE y GENERIC_EVENT. Está codificado de forma fija en "VMWARE_NSX". Está codificado de forma fija en "VMWARE_NSX". Está codificado de forma fija en "VMWARE_NSX". Establece en "AUTHTYPE_UNSPECIFIED" si Operation es "LOGIN" y target_details no está vacío, o si message contiene "authentication failure" y application no está vacío. Se establece en "SSH" si PROTO es "ssh2" o en "HTTP" si subcomp es "http". Se determina mediante una serie de sentencias condicionales basadas en los valores de otros campos. Los valores posibles son ALLOW y BLOCK. Se establece en "VIRTUAL_MACHINE" si vmw_cluster no está vacío.

Cambios

2023-11-15

  • Mejora: En el campo "Valor anterior":
  • Se asignó "unique_id" a "principal.resource.product_object_id".
  • Se asignó "resource_type" a "principal.resource.sub_type".
  • Se asignaron "_create_user" y "_last_modified_user" a "principal.user.email_addresses".
  • Se asignó "action" a "security_result.action".
  • Se asignó "rule_id" a "security_result.rule_id".
  • Se asignó "display_name" a "principal.resource.name".
  • Se asignó "_last_modified_time" a "principal.resource.attribute.last_update_time".
  • Se asignó "_create_time" a "principal.resource.attribute.creation_time".
  • Se asignó "parent_path" a "principal.resource.parent".
  • Se asignó "path" a "principal.process.file.full_path".
  • Se asignó "id" a "principal.resource.id".
  • En el campo Valor nuevo, haz lo siguiente:
  • Se asignó "resource_type" a "target.resource.sub_type".
  • Se asignó "unique_id" a "target.resource.product_object_id".
  • Se asignó "path" a "target.process.file.full_path".
  • Se asignó "display_name" a "target.resource.name".
  • Se asignó "id" a "target.resource.id".
  • Se asignó "vmw_host" a "target_details.hostname o target_details.ip" según el valor en vmw_host.
  • Se asignó "vmw_product" a "target.application".
  • Se asignó "vmw_vcenter" a "target.cloud.availability_zone".
  • Se asignó "vmw_cluster" a "target.resource.name".
  • Se asignó "vmw_object_id" a "target.resource.product_object_id".
  • Se asignó "vmw_datacenter" a "target.resource.attribute.labels".
  • Se asignó "vmw_vcenter_id" a "target.resource.attribute.labels".
  • Se asignó "vmw_vr_ops_logtype" a "intermediary.resource.attribute.labels".
  • Se asignó "vmw_vr_ops_appname" a "intermediary.application".
  • Se asignó "vmw_vr_ops_hostname" a "intermediary.hostname".
  • Se asignó “vmw_vr_ops_nodename” a “intermediary.resource.attribute.labels”.
  • Se asignó "vmw_vr_ops_clustername" a "intermediary.resource.name".
  • Se asignó "vmw_vr_ops_clusterrole" a "intermediary.resource.attribute.labels.roles.name".
  • Se asignó "vmw_vr_ops_id" a "intermediary.resource.product_object_id".

2023-10-13

  • Mejora: Se modificó un patrón de Grok para analizar "sourceIp" con puertos.
  • Se asignaron "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" a "principal.resource.attribute.labels".
  • Se asignaron campos en "payload" a "principal.resource.attribute.labels".
  • Se asignó “cliente” a “principal.ip”
  • Se asignaron campos en "new_value" a "target.resource.attribute.labels".

2023-10-03

  • Mejora: Se agregó un patrón Grok para verificar si "sourceIp" es una dirección IP válida antes de asignarla al campo de la AUA.

2023-09-12

  • Mejora: Se agregó compatibilidad con registros de syslog que tienen campos "Valor nuevo" y "Valor anterior".

2023-06-26

  • Se asignaron los valores "PASS", "DROP", "REJECT", "NAT", "NONAT", "RDR", "NORDR", "PUNT", "REDIRECT" y "COPY" a la clave "additional.fields" como "Network_Status".

2023-03-07

  • Se asignó "errorCode" a "security_result.detection_fields".
  • Se asignó "app_type" a "principal.application".
  • Se asignaron "tname", "s2comp" y "node" a "principal.resource.attribute.labels".
  • Se asignó "exe" a "target.process.file.full_path".
  • Se asignó "dst_ip" a "target.ip".
  • Se asignó "ses" a "network.session_id".
  • Se asignó "hostname" a "principal.ip".
  • Se asignó "direction" a "network.direction".
  • Se asignó "reqId" a "metadata.product_log_id".

2022-06-10

  • Analizador creado recientemente