Recoger registros de VMware Networking and Security Virtualization (NSX) Manager
En este documento se describe cómo puede recoger los registros de VMware Networking and Security Virtualization (NSX) Manager. El analizador extrae campos mediante varios patrones grok basados en el formato del mensaje. A continuación, realiza un análisis de pares clave-valor y de JSON, así como una lógica condicional para asignar los campos extraídos al UDM, gestionar diferentes formatos de registro y enriquecer los datos con contexto adicional.
Antes de empezar
- Asegúrate de que tienes una instancia de Google Security Operations.
- Asegúrate de usar Windows 2016 o una versión posterior, o un host Linux con
systemd
. - Si se ejecuta a través de un proxy, asegúrate de que los puertos del cortafuegos estén abiertos.
- Asegúrate de que tienes acceso de administrador a VMWare NSX.
Obtener el archivo de autenticación de ingestión de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará el agente de Bindplane.
Obtener el ID de cliente de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instalar el agente de Bindplane
Instalación de ventanas
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre un terminal con privilegios de superusuario o sudo.
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
- Para ver otras opciones de instalación, consulta esta guía de instalación.
Configurar el agente de Bindplane para ingerir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- Busca el archivo
config.yaml
. Normalmente, 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).
- Busca el archivo
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
Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
Sustituye
<customer_id>
por el ID de cliente real.Actualiza
/path/to/ingestion-authentication-file.json
a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión 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 Servicios o introducir el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configuración de Syslog para NSX Edge
- Inicia sesión en vSphere Web Client.
- Ve a Redes y seguridad > NSX Edges.
- Selecciona la instancia de NSX Edge específica que quieras configurar.
- Ve a Configuración de Syslog:
- Para NSX 6.4.4 y versiones posteriores:
- Ve a Gestionar > Ajustes > Ajustes del electrodoméstico.
- Haz clic en Configuración > Cambiar configuración de Syslog.
- En NSX 6.4.3 y versiones anteriores:
- Vaya a Gestionar > Configuración > Configuración.
- En el cuadro de diálogo Detalles, haga clic en Cambiar.
- Para NSX 6.4.4 y versiones posteriores:
- Configura los detalles del servidor Syslog:
- Servidor: introduce la dirección IP o el nombre de host del servidor Syslog (Bindplane).
- Protocolo: selecciona UDP o TCP (en función de la configuración de Bindplane).
- Puerto: introduce el número de puerto (depende de tu configuración de Bindplane).
- Haz clic en Aceptar para guardar la configuración.
Configuración de Syslog para NSX Manager
- Inicia sesión en la interfaz web de NSX Manager con las credenciales de administrador de la siguiente manera:
https://<NSX-Manager-IP>
ohttps://<NSX-Manager-Hostname>
.
- Ve a Gestionar ajustes del dispositivo > General.
- Haz clic en Editar para configurar los ajustes del servidor Syslog.
- Introduce los detalles del servidor Syslog:
- Servidor: introduce la dirección IP o el nombre de host del servidor Syslog (Bindplane).
- Protocolo: selecciona UDP o TCP (en función de la configuración de Bindplane).
- Puerto: introduce el número de puerto (depende de tu configuración de Bindplane).
- Haz clic en Aceptar para guardar la configuración.
Configuración de Syslog para el controlador de NSX
- Inicia sesión en vSphere Web Client.
- Vaya a Redes y seguridad > Instalación y actualización > Gestión > Nodos de controlador de NSX.
- Selecciona el NSX Manager que gestiona los nodos del controlador.
- Haz clic en Editar atributos de controlador comunes.
- En el cuadro de diálogo Servidores Syslog, haga clic en Añadir:
- Introduce el nombre o la dirección IP del servidor Syslog.
- Selecciona el protocolo UDP (en función de tu configuración de Bindplane).
- Define el Nivel de registro (por ejemplo,
INFO
).
- 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 del registro sin procesar. |
ID |
event.idm.read_only_udm.metadata.product_log_id |
El ID de registro del producto se extrae del campo ID del registro sin procesar. |
MAC |
event.idm.read_only_udm.principal.mac |
La dirección MAC se extrae del campo MAC del registro sin procesar. |
ModuleName |
event.idm.read_only_udm.metadata.product_event_type |
El tipo de evento de producto se extrae del campo ModuleName del registro sin procesar. |
Operation |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
La operación se extrae del campo Operation del registro sin procesar y se añade como una etiqueta con la clave "Operation". |
PROTO |
event.idm.read_only_udm.network.ip_protocol |
El protocolo IP se extrae del campo PROTO del registro sin procesar. |
RES |
event.idm.read_only_udm.target.resource.name |
El nombre de recurso de destino se extrae del campo RES del registro sin procesar. |
SRC |
event.idm.read_only_udm.principal.ip |
La dirección IP de origen se extrae del campo SRC del registro sin procesar. |
SPT |
event.idm.read_only_udm.principal.port |
El puerto de origen se extrae del campo SPT del registro sin procesar. |
UserName |
event.idm.read_only_udm.principal.user.userid |
El ID de usuario se extrae del campo UserName del registro sin procesar. |
app_type |
event.idm.read_only_udm.principal.application |
La aplicación principal se extrae del campo app_type del registro sin procesar. |
application |
event.idm.read_only_udm.target.application |
La aplicación de destino se extrae del campo application del registro sin procesar. |
audit |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
El valor de auditoría se extrae del campo audit del registro sin procesar y se añade 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 del 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 asignará al dominio administrativo principal. |
comp |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
El valor del componente se extrae del campo comp del registro sin procesar y se añade 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 del registro sin procesar. |
description |
event.idm.read_only_udm.metadata.description |
La descripción se extrae del campo description del registro sin procesar. |
details |
event.idm.read_only_udm.principal.resource.attribute.labels |
Los detalles se extraen del campo details del registro sin procesar y se añaden 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 del registro sin procesar. |
DPT |
event.idm.read_only_udm.target.port |
El puerto de destino se extrae del campo DPT del registro sin procesar. |
errorCode |
event.idm.read_only_udm.security_result.detection_fields |
El código de error se extrae del campo errorCode del registro sin procesar y se añade como campo de detección. |
eventType |
event.idm.read_only_udm.metadata.product_event_type |
El tipo de evento de producto se extrae del campo eventType del registro sin procesar. |
filepath |
event.idm.read_only_udm.principal.process.file.full_path |
La ruta del archivo se extrae del campo filepath del registro sin procesar. |
hostname |
event.idm.read_only_udm.principal.ip |
El nombre de host se extrae del campo hostname del 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 UDM en función de sus claves. |
kv_data1 |
Varios campos de UDM | Los pares clave-valor de kv_data1 se asignan a varios campos de UDM en función de sus claves. |
kv_data2 |
Varios campos de UDM | Los pares clave-valor de kv_data2 se asignan a varios campos de UDM en función de sus claves. |
kv_data3 |
Varios campos de UDM | Los pares clave-valor de kv_data3 se asignan a varios campos de UDM en función de sus claves. |
kv_data4 |
Varios campos de UDM | Los pares clave-valor de kv_data4 se asignan a varios campos de UDM en función de 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 del registro sin procesar y se añade como etiqueta con la clave "managedExternally". |
message |
Varios campos de UDM | El campo de mensaje se analiza para extraer varios campos de UDM. |
message_data |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
Los datos del mensaje se extraen del campo message_data del registro sin procesar y se añaden 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 del registro sin procesar y se añade como un campo adicional con la clave "Network_Connection_Status". |
new_value |
Varios campos event.idm.read_only_udm.target |
El nuevo valor se extrae del campo new_value del registro sin procesar y se usa para rellenar varios campos de destino. |
node |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
El valor del nodo se extrae del campo node del registro sin procesar y se añade como una etiqueta con la clave "node". |
old_value |
Varios campos de UDM | El valor antiguo se extrae del campo old_value del registro sin procesar y se usa para rellenar varios campos de UDM. |
payload |
Varios campos de UDM | La carga útil se extrae del campo payload del registro sin procesar y se usa para rellenar varios campos de UDM. |
pid |
event.idm.read_only_udm.target.process.pid |
El ID de proceso se extrae del campo pid del registro sin procesar. |
reqId |
event.idm.read_only_udm.metadata.product_log_id |
El ID de registro del producto se extrae del campo reqId del registro sin procesar. |
resourceId |
event.idm.read_only_udm.principal.resource.product_object_id |
El ID de objeto de producto se extrae del campo resourceId del registro sin procesar. |
s2comp |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
El valor de s2comp se extrae del campo s2comp del registro sin procesar y se añade como una etiqueta con la clave "s2comp". |
ses |
event.idm.read_only_udm.network.session_id |
El ID de sesión se extrae del campo ses del registro sin procesar. |
src_host |
event.idm.read_only_udm.principal.hostname |
El nombre de host principal se extrae del campo src_host del registro sin procesar. |
src_ip |
event.idm.read_only_udm.principal.ip |
La dirección IP de origen se extrae del campo src_ip del registro sin procesar. |
src_ip1 |
event.idm.read_only_udm.principal.ip |
La dirección IP de origen se extrae del campo src_ip1 del registro sin procesar. |
src_port |
event.idm.read_only_udm.principal.port |
El puerto de origen se extrae del campo src_port del registro sin procesar. |
startTimeUTC |
event.idm.read_only_udm.principal.resource.attribute.creation_time |
La hora de creación se obtiene del campo startTimeUTC del 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 añade 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 del registro sin procesar y se añade como etiqueta con la clave "tname". |
type |
event.idm.read_only_udm.metadata.product_event_type |
El tipo de evento de producto se extrae del campo type del registro sin procesar. |
uid |
event.idm.read_only_udm.principal.user.userid |
El ID de usuario se extrae del campo uid del registro sin procesar. |
update |
event.idm.read_only_udm.principal.resource.attribute.labels.value |
El valor de actualización se extrae del campo update del registro sin procesar y se añade 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 del registro sin procesar. |
vmw_cluster |
event.idm.read_only_udm.target.resource.name |
El nombre de recurso de destino se extrae del campo vmw_cluster del 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 del registro sin procesar y se añade como 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 se trata de 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 de objeto de producto se extrae del campo vmw_object_id del registro sin procesar. |
vmw_product |
event.idm.read_only_udm.target.application |
La aplicación de destino se extrae del campo vmw_product del registro sin procesar. |
vmw_vcenter |
event.idm.read_only_udm.target.cloud.availability_zone |
La zona de disponibilidad se extrae del campo vmw_vcenter del registro sin procesar. |
vmw_vcenter_id |
event.idm.read_only_udm.target.resource.attribute.labels.value |
El valor de vmw_vcenter_id se extrae del campo vmw_vcenter_id del registro sin procesar y se añade como etiqueta con la clave "vmw_vcenter_id". |
vmw_vr_ops_appname |
event.idm.read_only_udm.intermediary.application |
La aplicación intermediaria se extrae del campo vmw_vr_ops_appname del registro sin procesar. |
vmw_vr_ops_clustername |
event.idm.read_only_udm.intermediary.resource.name |
El nombre del recurso intermediario se extrae del campo vmw_vr_ops_clustername del registro sin procesar. |
vmw_vr_ops_clusterrole |
event.idm.read_only_udm.intermediary.resource.attribute.roles.name |
El nombre del rol de recurso intermediario se extrae del campo vmw_vr_ops_clusterrole del registro sin procesar. |
vmw_vr_ops_hostname |
event.idm.read_only_udm.intermediary.hostname |
El nombre de host intermediario se extrae del campo vmw_vr_ops_hostname del registro sin procesar. |
vmw_vr_ops_id |
event.idm.read_only_udm.intermediary.resource.product_object_id |
El ID del objeto de producto intermediario se extrae del campo vmw_vr_ops_id del registro sin procesar. |
vmw_vr_ops_logtype |
event.idm.read_only_udm.intermediary.resource.attribute.labels.value |
El valor de vmw_vr_ops_logtype se extrae del campo vmw_vr_ops_logtype del registro sin procesar y se añade 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 de vmw_vr_ops_nodename se extrae del campo vmw_vr_ops_nodename del registro sin procesar y se añade como etiqueta con la clave "vmw_vr_ops_nodename". Se determina mediante una serie de instrucciones condicionales basadas en los valores de otros campos. Los valores posibles son USER_LOGIN, NETWORK_CONNECTION, STATUS_UPDATE y GENERIC_EVENT. Codificado como "VMWARE_NSX". Codificado como "VMWARE_NSX". Codificado como "VMWARE_NSX". Se asigna el valor "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 asigna el valor "SSH" si PROTO es "ssh2" o "HTTP" si subcomp es "http". Se determina mediante una serie de instrucciones condicionales basadas en los valores de otros campos. Los valores posibles son ALLOW y BLOCK. Se asigna el valor "VIRTUAL_MACHINE" si vmw_cluster no está vacío. |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.