Recoger registros de VMware vCenter
En este documento se explica cómo ingerir registros de VMware vCenter en Google Security Operations mediante Bindplane. El analizador transforma los registros sin procesar en un modelo de datos unificado (UDM). Primero intenta analizar los datos de registro como JSON y, si no lo consigue, trata los datos como un mensaje syslog, extrae los campos mediante patrones grok y los asigna al esquema de UDM.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps
- Windows 2016 o versiones posteriores, 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.
- Acceso privilegiado a VMware vCenter
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á 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
Instala el agente de Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.
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 más opciones de instalación, consulta la 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 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_VCENTER' raw_log_field: body ingestion_labels: 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
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar Syslog para VMware vCenter
- Inicia sesión en la interfaz de usuario web de vCenter Server Management.
- Ve a Syslog > Configuración de reenvío > Configurar.
- Selecciona Crear configuración de reenvío e introduce la dirección IP del agente de Bindplane.
- En el menú desplegable Protocol (Protocolo), selecciona UDP o TCP, según la configuración real del agente de Bindplane.
- En la sección Puerto, introduce el número de puerto del agente de Bindplane.
- Haz clic en Guardar.
- Haga clic en Enviar mensaje de prueba y compruebe que lo ha recibido.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
Access Mask |
principal.process.access_mask | Convertido a decimal desde hexadecimal. |
Account Domain |
principal.administrative_domain | |
Account Name |
principal.user.userid | |
ApplicationProtocol |
additional.fields | |
Authentication Package |
security_result.about.resource.name | |
Client Address |
principal.ip, principal.asset.ip | Analizada como IP. |
Client Port |
principal.port | Se ha convertido en un número entero. |
cmd |
target.process.command_line | |
date |
timestamp | Se analiza como aaaa-MM-dd y se combina con la hora como aaaa-MM-dd HH:mm:ss para cuando se analiza como fecha. |
date_time |
timestamp | Se analiza como fecha con los formatos RFC 3339, TIMESTAMP_ISO8601 y SYSLOGTIMESTAMP. |
desc |
metadata.description | |
eventid |
metadata.product_event_type | Se ha combinado con la tarea como eventid - task. |
host_name |
principal.hostname, principal.asset.hostname | |
http_method |
network.http.method | |
ip |
target.ip, target.asset.ip | |
kv_data1 |
Se analizan como pares clave-valor. | |
kv_data2 |
Se analizan como pares clave-valor. | |
kv_msg1.cipher |
network.tls.cipher | |
kv_msg1.ctladdr |
intermediary.labels | |
kv_msg1.daemon |
security_result.about.labels | |
kv_msg1.from |
network.email.from | Si mail_from no contiene @, se añade @local. |
kv_msg1.msgid |
network.email.mail_id | |
kv_msg1.proto |
security_result.about.labels | |
kv_msg1.relay |
intermediary.hostname, intermediary.ip | ¿Se ha analizado como (HOSTNAME)? [IP] o HOSTNAME. Si relay_domain está presente, se asigna a intermediary.hostname. Si relay_ip está presente, se combina con intermediary.ip. |
kv_msg1.size |
network.sent_bytes | Se ha convertido en un número entero sin signo. |
kv_msg1.stat |
security_result.summary | |
kv_msg1.verify |
security_result.description, security_result.action | Si kv_msg1.verify es FAIL, security_result.action se define como BLOCK. |
kv_msg1.version |
network.tls.version | |
labels.log_type |
metadata.product_event_type | |
labels.net.host.ip |
principal.ip, principal.asset.ip | |
labels.net.host.port |
principal.port | |
labels.net.peer.ip |
target.ip, target.asset.ip | |
labels.net.peer.port |
target.port | |
labels.net.transport |
network.ip_protocol | Si labels.net.transport es TCP, entonces TCP. |
level |
security_result.severity | Si el nivel es INFO/Informational/DEBUG/info/Information, se asigna el valor INFORMATIONAL. Si el nivel es ERROR/error, se asigna el valor ERROR. Si el nivel es WARNING, se asigna el valor LOW. |
log.file.path |
target.process.file.full_path | |
logName |
security_result.category_details | |
Logon Account |
principal.user.userid | |
Logon Type |
extensions.auth.mechanism | Si logon_type es 2/Interactive, el valor es INTERACTIVE. Si logon_type es 3/8, el valor es NETWORK. Si logon_type es 4, el valor es BATCH. Si logon_type es 5, el valor es SERVICE. Si logon_type es 7, el valor es UNLOCK. Si logon_type es 9, el valor es NEW_CREDENTIALS. Si logon_type es 10, el valor es REMOTE_INTERACTIVE. Si logon_type es 11, el valor es CACHED_INTERACTIVE. En el resto de los casos, el valor es MECHANISM_UNSPECIFIED. |
mail_from |
network.email.from | Si mail_from no contiene @, se añade @local. |
mail_to |
network.email.to | Si mail_to no contiene @, se añade @local. |
message |
Analizado con patrones grok. | |
namespace |
principal.namespace | |
port |
target.port | Se ha convertido en un número entero. |
process_id |
target.process.pid | |
providername |
principal.application | |
Relative Target Name |
target.file.full_path | |
resource.labels.project_id |
src.cloud.project.id | |
resource.type |
src.labels | |
response_status |
network.http.response_code | Se ha convertido en un número entero. |
sec_desc |
security_result.description | |
Security ID |
target.user.windows_sid | |
security_result_action_detail |
security_result.action_details | |
server_name |
target.hostname, target.asset.hostname | |
Share Name |
target.resource.name | |
Source Network Address |
principal.ip, principal.asset.ip | Analizada como IP. |
Source Port |
principal.port | Se ha convertido en un número entero. |
summary |
security_result.summary | |
target_host |
target.hostname, target.asset.hostname | |
target_url |
target.url | |
target_userid |
target.user.userid | |
time |
timestamp | Se analiza como HH:mm:ss y se combina con la fecha como yyyy-MM-dd HH:mm:ss para cuando se analiza como fecha. |
upn_name |
intermediary.url | |
URL |
target.url | |
User ID |
target.user.windows_sid | |
user_id |
principal.user.userid | |
UserAgent |
network.http.user_agent | |
metadata.event_type | Se asigna el valor STATUS_UPDATE si msg contiene API_HEALTH o JobDispatcher; se asigna el valor USER_LOGIN si msg contiene logged in as y target_userid no está vacío; se asigna el valor SCAN_HOST si msg contiene Leave Validate.; se asigna el valor NETWORK_UNCATEGORIZED si msg contiene Getting IP Address from host; se asigna el valor RESOURCE_WRITTEN si msg contiene Wrote vpxd health; se asigna el valor NETWORK_HTTP si has_principal y has_target son true y application_protocol no está vacío; se asigna el valor PROCESS_LAUNCH si process_id y cmd no están vacíos; se asigna el valor USER_UNCATEGORIZED si user_id no está vacío o eventid es 4776; se asigna el valor USER_LOGIN si eventid es 4624, 4768 o 4769; se asigna el valor USER_LOGOUT si eventid es 4634 o 4647; se asigna el valor USER_RESOURCE_ACCESS si eventid es 5145; se asigna el valor STATUS_UPDATE si host_name no está vacío; se asigna el valor GENERIC_EVENT en los demás casos. | |
extensions.auth.type | Se establece en MACHINE si eventid es 4624, 4768 o 4769. | |
metadata.log_type | Su valor debe ser VMWARE_VCENTER. | |
metadata.vendor_name | Definido como VMWARE. | |
metadata.product_name | Definir como VCENTER. | |
security_result.action | Se asigna el valor ALLOW si response_status es 200 o si action es Allow. |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.