Recoger registros de VMware vCenter

Disponible en:

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

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. 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

  1. Inicia sesión en 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.

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

  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 un terminal con privilegios de superusuario 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

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

  1. 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).
  2. 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
    

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

  1. Inicia sesión en la interfaz de usuario web de vCenter Server Management.
  2. Ve a Syslog > Configuración de reenvío > Configurar.
  3. Selecciona Crear configuración de reenvío e introduce la dirección IP del agente de Bindplane.
  4. En el menú desplegable Protocol (Protocolo), selecciona UDP o TCP, según la configuración real del agente de Bindplane.
  5. En la sección Puerto, introduce el número de puerto del agente de Bindplane.
  6. Haz clic en Guardar.
  7. 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.