Recopila registros de Nutanix Prism

Compatible con:

Descripción general

Este analizador procesa los registros de Nutanix Prism y controla los formatos JSON y syslog. Extrae campos de varias estructuras de registro, los normaliza en la UDM y enriquece los datos con contexto adicional, como información del usuario, detalles de la red y gravedad de la seguridad. El analizador también realiza acciones específicas según el método HTTP y el nivel de registro, y clasifica los eventos en tipos de eventos de la AUA, como USER_LOGIN, STATUS_UPDATE y GENERIC_EVENT.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener acceso con privilegios a Nutanix Prism Central.
  • Asegúrate de tener un host de Windows 2012 SP2 o una versión posterior, o bien Linux con systemd.
  • Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.

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.

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

  1. Para la instalación de Windows, ejecuta la siguiente secuencia de comandos: msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet.
  2. Para la instalación de Linux, ejecuta la siguiente secuencia de comandos: sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh.
  3. Puedes encontrar opciones de instalación adicionales en esta guía de instalación.

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

  1. Accede a la máquina en la que está instalado BindPlane.
  2. Edita el archivo config.yaml de la siguiente manera:

    receivers:
      tcplog:
        # 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: Namespace
            raw_log_field: body
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Reinicia el agente de BindPlane para aplicar los cambios con el siguiente comando: sudo systemctl bindplane restart

Cómo exportar Syslog desde Nutanix Prism

  1. Accede a Prism Central con una cuenta con privilegios.
  2. Selecciona Prism Central Settings en el menú.
  3. Ve a Servidor de Syslog.
  4. Haz clic en + Configure Syslog Server.
  5. Especifica valores para los parámetros de entrada en el diálogo Servidores de Syslog:
    • Nombre del servidor: Ingresa un nombre para el servidor (por ejemplo, Servidor de BindPlane de SecOps de Google).
    • Dirección IP: Ingresa la IP de tu agente de BindPlane.
    • Puerto: Ingresa el puerto en el que escucha el agente de BindPlane.
    • Protocolo de transporte: Selecciona TCP.
    • Haz clic en Configurar.
  6. Haz clic en + Editar en la opción Fuentes de datos.
  7. Especifica los valores para los parámetros de entrada en el diálogo Fuentes de datos y nivel de gravedad correspondiente:
    • Selecciona Auditoría de API, Auditoría y Flujo.
    • Establece el nivel de gravedad para cada uno en 6: Informativo.
    • Haz clic en Guardar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
@timestamp metadata.event_timestamp La marca de tiempo del evento se analiza a partir del campo @timestamp. Se admiten los formatos yyyy-MM-dd HH:mm:ss.SSS, yyyy-MM-ddTHH:mm:ssZ y ISO8601.
agent.id observer.asset_id Se combina con agent.type para formar el ID del recurso de observador en el formato "agent.type:agent.id".
agent.type observer.application Es la aplicación que se usa para la observación.
agent.version observer.platform_version Es la versión de la aplicación del observador.
alertUid security_result.detection_fields.value El valor del UID de la alerta se asigna al campo value dentro de detection_fields. El key se establece en "Alert Uid".
api_version metadata.product_version La versión de la API.
clientIp principal.ip, principal.asset.ip Dirección IP del cliente.
client_type principal.labels.value Es el valor del tipo de cliente. El key se establece en "client_type".
defaultMsg metadata.description El mensaje predeterminado.
entity_uuid metadata.product_log_id UUID de la entidad.
http_method network.http.method El método HTTP. Se convierte en mayúsculas.
host.architecture principal.asset.hardware.cpu_platform La arquitectura del host
host.id principal.asset_id Debe tener el prefijo "NUTANIX:" para crear el ID del activo principal.
host.ip principal.ip, principal.asset.ip Dirección IP del host.
host.mac principal.mac Dirección MAC del host
host.os.kernel principal.platform_patch_level Es la versión del kernel del sistema operativo del host.
host.os.platform principal.platform Es la plataforma del sistema operativo del host. Se asigna a LINUX, WINDOWS, MAC o UNKNOWN_PLATFORM.
host.os.version principal.platform_version Es la versión del sistema operativo del host.
input.type network.ip_protocol El protocolo de red Se asignan a "UDP" o "TCP".
log.source.address principal.ip, principal.asset.ip, principal.port Se analiza para extraer la IP y el puerto de origen.
logstash.collect.host observer.ip La dirección IP del recopilador de Logstash.
logstash.collect.timestamp metadata.collected_timestamp Es la marca de tiempo del momento en que se recopiló el registro.
logstash.ingest.host intermediary.hostname Es el nombre de host del servidor de transferencia de Logstash.
logstash.ingest.timestamp metadata.ingested_timestamp Es la marca de tiempo cuando se transfirió el registro.
logstash.irm_environment principal.labels.value El valor del entorno de irm. key se establece en "irm_environment".
logstash.irm_region principal.labels.value Es el valor de la región de IRM. key se establece en "irm_region".
logstash.irm_site principal.labels.value Es el valor del sitio de irm. key se establece en "irm_site".
logstash.process.host intermediary.hostname Es el nombre de host del servidor de procesamiento de Logstash.
operationType metadata.product_event_type El tipo de operación.
originatingClusterUuid additional.fields.value.string_value El UUID del clúster de origen El key se establece en "Originating Cluster Uuid".
params.mac_address target.mac La dirección MAC de los parámetros
params.requested_ip_address target.ip, target.asset.ip La dirección IP solicitada de los parámetros
params.vm_name target.resource.name El nombre de la VM de los parámetros
program metadata.product_event_type Es el nombre del programa.
rest_endpoint target.url El extremo de REST
sessionId additional.fields.value.string_value El ID de la sesión. El key se establece en "ID de sesión".
syslog_host principal.hostname, principal.asset.hostname Host de Syslog
timestamp metadata.event_timestamp La marca de tiempo del evento.
username principal.user.user_display_name o principal.user.userid Nombre de usuario. Se usa como ID de usuario si http_method es "POST".
uuid metadata.product_log_id UUID
N/A metadata.vendor_name Se codifica de forma fija en "Nutanix_Prism".
N/A metadata.product_name Se codifica de forma fija en "Nutanix_Prism".
N/A metadata.event_type Se determina según la lógica del analizador en función de los valores de has_principal, has_target, audit_log, network_set y http_method. Puede ser GENERIC_EVENT, USER_LOGIN, STATUS_UPDATE, USER_RESOURCE_ACCESS, RESOURCE_CREATION, USER_RESOURCE_UPDATE_CONTENT o USER_RESOURCE_DELETION.
N/A metadata.log_type Está codificado de forma fija en "NUTANIX_PRISM".
N/A extensions.auth.type Se establece en "AUTHTYPE_UNSPECIFIED" si metadata.event_type es USER_LOGIN.
N/A security_result.severity Se determina según la lógica del analizador basada en log_level y syslog_pri. Puede ser CRITICAL, ERROR, HIGH, MEDIUM o INFORMATIONAL.

Cambios

2024-02-21

  • Cuando "inner_message" no esté vacío y "not_json" sea "true", establece "audit_log" en "true" para admitir registros JSON abandonados.
  • Se alinearon las asignaciones de "principal.ip" y "principal.asset.ip".
  • Se alinearon las asignaciones "target.ip" y "target.asset.ip".
  • Se alinearon las asignaciones de "principal.hostname" y "principal.asset.hostname".
  • Cuando "network_set" sea "false", "has_principal" sea "true", "has_target" sea "false" y "audit_log" sea "false", establece "metadata.event_type" en "STATUS_UPDATE".
  • Cuando "network_set" sea "true", "has_principal" sea "true", "has_target" sea "false" y "audit_log" sea "false", establece "metadata.event_type" en "GENERIC_EVENT".

2024-01-12

  • Se agregó compatibilidad con el nuevo formato de registros de syslog.
  • Se agregó una verificación condicional nula antes de asignar "logstash.ingest.host" a "intermediary.hostname".
  • Se agregó una verificación condicional nula antes de asignar "logstash.process.host" a "intermediary.hostname".
  • Se agregó una verificación condicional nula antes de asignar "logstash.collect.host" a "observer.ip".

2023-12-23

  • Se agregó compatibilidad con un nuevo tipo de registros de auditoría.
  • Se agregaron nuevos patrones de Grok para analizar registros SYSLOG+JSON.
  • Se asignaron "affectedEntityList" y "alertUid" a "security_result.detection_fields".
  • Se asignaron "clientIp" y "params.requested_ip_address" a "principal.ip".
  • Se asignó "defaultMsg" a "metadata.description".
  • Se asignó "operationType" a "metadata.product_event_type".
  • Se asignaron "originatingClusterUuid" y "sessionId" a "additional.fields".
  • Se asignó "params.mac_address" a "principal.mac".
  • Se asignó "uuid" a "metadata.product_log_id".
  • Se asignó "userName" a "principal.user.user_display_name".
  • Se asignó "params.vm_name" a "target.resource.name".

2023-01-23

  • Se asignó "logstash.ingest.host" a "intermediary[0].hostname" en lugar de "observer.hostname".
  • Se asignó "logstash.collect.host" a "observer.ip".
  • Se agregó la verificación de nulo para "logstash.ingest.host".

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.