Recopila registros de VMware vCenter
En este documento, se explica cómo transferir registros de VMware vCenter a Google Security Operations con 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 logra, trata los datos como un mensaje de syslog, extrae los campos con patrones de Grok y los asigna al esquema de UDM.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Windows 2016 o versiones posteriores, o un host de Linux con
systemd
- Si ejecutas la herramienta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
- Acceso con privilegios a VMware vCenter
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- 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
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Profile.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- 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 en Linux
- Abre una terminal con privilegios de raíz 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 obtener más opciones de instalación, consulta la guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
- 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).
- Ubica 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
- Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
- Reemplaza
<customer_id>
por el ID de cliente real. - 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 Cómo obtener el archivo de autenticación de la transferencia 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 de Servicios o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura Syslog para VMware vCenter
- Accede a la IU web de vCenter Server Management.
- Ve a Syslog > Forwarding Configuration > Configure.
- Selecciona Crear configuración de reenvío y, luego, ingresa la dirección IP del agente de Bindplane.
- En el menú desplegable Protocol, selecciona UDP o TCP, según la configuración real del agente de Bindplane.
- En la sección Puerto, ingresa el número de puerto del agente de Bindplane.
- Haz clic en Guardar.
- Haz clic en Enviar mensaje de prueba y verifica que se haya recibido.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
Access Mask |
principal.process.access_mask | Se convirtió de hexadecimal a decimal. |
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 | Se analiza como IP. |
Client Port |
principal.port | Se convirtió 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 combinó 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 agrega @local. |
kv_msg1.msgid |
network.email.mail_id | |
kv_msg1.proto |
security_result.about.labels | |
kv_msg1.relay |
intermediary.hostname, intermediary.ip | ¿Se analizó como (HOSTNAME)? [IP] o HOSTNAME. Si relay_domain está presente, se establece en intermediary.hostname. Si relay_ip está presente, se combina con intermediary.ip. |
kv_msg1.size |
network.sent_bytes | Se convirtió 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 establece en 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 es TCP. |
level |
security_result.severity | Si el nivel es INFO/Informativo/DEBUG/info/Information, entonces es INFORMATIONAL; si el nivel es ERROR/error, entonces es ERROR; si el nivel es WARNING, entonces es 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, entonces INTERACTIVE; si logon_type es 3/8, entonces NETWORK; si logon_type es 4, entonces BATCH; si logon_type es 5, entonces SERVICE; si logon_type es 7, entonces UNLOCK; si logon_type es 9, entonces NEW_CREDENTIALS; si logon_type es 10, entonces REMOTE_INTERACTIVE; si logon_type es 11, entonces CACHED_INTERACTIVE; de lo contrario, MECHANISM_UNSPECIFIED. |
mail_from |
network.email.from | Si mail_from no contiene @, se agrega @local. |
mail_to |
network.email.to | Si mail_to no contiene @, se agrega @local. |
message |
Se analizó con patrones de Grok. | |
namespace |
principal.namespace | |
port |
target.port | Se convirtió 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 convirtió 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 | Se analiza como IP. |
Source Port |
principal.port | Se convirtió 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 aaaa-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 establece en STATUS_UPDATE si msg contiene API_HEALTH o JobDispatcher, en USER_LOGIN si msg contiene logged in as y target_userid no está vacío, en SCAN_HOST si msg contiene Leave Validate., en NETWORK_UNCATEGORIZED si msg contiene Getting IP Address from host, en RESOURCE_WRITTEN si msg contiene Wrote vpxd health, en NETWORK_HTTP si has_principal y has_target son verdaderos y application_protocol no está vacío, en PROCESS_LAUNCH si process_id y cmd no están vacíos, en USER_UNCATEGORIZED si user_id no está vacío o eventid es 4776, en USER_LOGIN si eventid es 4624/4768/4769, en USER_LOGOUT si eventid es 4634/4647, en USER_RESOURCE_ACCESS si eventid es 5145, en STATUS_UPDATE si host_name no está vacío y en GENERIC_EVENT en cualquier otro caso. | |
extensions.auth.type | Se establece en MACHINE si eventid es 4624/4768/4769. | |
metadata.log_type | Se establece en VMWARE_VCENTER. | |
metadata.vendor_name | Se debe establecer en VMWARE. | |
metadata.product_name | Se establece en VCENTER. | |
security_result.action | Se establece en ALLOW si response_status es 200 o si la acción es Allow. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.