Recoger registros de switches Arista

Disponible en:

Este analizador extrae campos de los registros de los conmutadores Arista y gestiona los formatos JSON y syslog. Utiliza patrones grok para analizar varios tipos de mensajes de registro, asignar los campos extraídos al modelo de datos unificado y enriquecer los eventos con metadatos como el tipo de evento, la gravedad y la información principal o de destino en función de los detalles extraídos.

Antes de empezar

  • Asegúrate de que tienes una instancia de Google SecOps.
  • 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.
  • Arista EOS 4.23.x y versiones posteriores instaladas y accesibles.
  • Asegúrate de tener acceso con privilegios en el switch Arista EOS.

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

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

Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    1. 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.
    2. 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: '/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
            ingestion_labels:
                log_type: ARISTA_SWITCH
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.

  4. Sustituye <customer_id> por el ID de cliente real.

  5. 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 en un switch de Arista

  1. Inicia sesión en el switch Arista.
  2. Ve al modo de configuración:

    Arista# config terminal
    
  3. Proporciona al conmutador la siguiente configuración para enviar registros al agente de Bindplane.

    Arista(config)# logging host <bindplane-server-ip> <port-number> protocol [tcp/udp]
    Arista(config)# logging trap information
    Arista(config)# copy running-config startup-config
    
    * Replace `<bindplane-server-ip>` with Bindplane agent IP address and `<port-number>` with the port configured to listen.
    
  4. Introduce la configuración adicional de los registros de ejecución de comandos:

    Arista (config)# aaa accounting commands all console start-stop logging
    Arista (config)# aaa accounting commands all default start-stop logging
    Arista (config)# aaa accounting exec console start-stop logging
    Arista (config)# aaa accounting exec default start-stop logging
    Arista (config)# copy running-config startup-config
    
  5. Introduce la configuración adicional de los registros de inicio de sesión:

    Arista (config)# aaa authentication policy on-success log
    Arista (config)# aaa authentication policy on-failure log
    Arista (config)# copy running-config startup-config
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
appname target.application Se asigna directamente desde el campo appname.
description metadata.description Se asigna directamente desde el campo description, que se extrae del campo message mediante patrones grok basados en product_event_type.
dst_ip target.ip, target.asset.ip Se asigna directamente desde el campo dst_ip, que se extrae del campo message mediante patrones grok.
dst_mac target.mac Se asigna directamente desde el campo dst_mac, que se extrae del campo message mediante patrones grok.
dst_port target.port Se asigna directamente desde el campo dst_port, que se extrae del campo message mediante patrones grok.
facility additional.fields[facility].string_value Se asigna directamente desde el campo facility.
hostname principal.hostname, principal.asset.hostname Se asigna directamente desde el campo hostname.
inner_msg metadata.description Se asigna directamente desde el campo inner_msg, que se extrae del campo message mediante patrones grok.
ip_protocol network.ip_protocol Se asigna directamente desde el campo ip_protocol, que se extrae del campo message mediante patrones grok. Si el valor es "tcp", se convierte en "TCP". Si el tipo de evento es "NO_IGMP_QUERIER", se establece en "IGMP".
pid principal.process.pid Se asigna directamente desde el campo pid, que se extrae del campo message mediante patrones grok.
prin_ip principal.ip, principal.asset.ip Se asigna directamente desde el campo prin_ip, que se extrae del campo message mediante patrones grok.
product_event_type metadata.product_event_type Se asigna directamente desde el campo product_event_type, que se extrae del campo message mediante patrones grok.
proto network.application_protocol Si el campo proto es "sshd", el campo UDM se define como "SSH".
severity security_result.severity, security_result.severity_details El security_result.severity se deriva del campo severity en función de estas asignaciones: "DEFAULT", "DEBUG", "INFO", "NOTICE" -> "INFORMATIONAL"; "WARNING", "ERROR", "ERR", "WARN" -> "MEDIUM"; "CRITICAL", "ALERT", "EMERGENCY" -> "HIGH". El valor sin formato de severity se asigna a security_result.severity_details.
session_id network.session_id Se asigna directamente desde el campo session_id, que se extrae del campo message mediante patrones grok.
source_ip principal.ip, principal.asset.ip Se asigna directamente desde el campo source_ip, que se extrae del campo message mediante patrones grok.
source_port principal.port Se asigna directamente desde el campo source_port, que se extrae del campo message mediante patrones grok.
src_ip principal.ip, principal.asset.ip Se asigna directamente desde el campo src_ip, que se extrae del campo message mediante patrones grok.
table_name target.resource.name Se asigna directamente desde el campo table_name, que se extrae del campo message mediante patrones grok. Si este campo se rellena, target.resource.resource_type tiene el valor "TABLE".
target_host target.hostname, target.asset.hostname Se asigna directamente desde el campo target_host, que se extrae del campo message mediante patrones grok.
target_ip target.ip, target.asset.ip Se asigna directamente desde el campo target_ip, que se extrae del campo message mediante patrones grok.
target_package target.process.command_line Se asigna directamente desde el campo target_package, que se extrae del campo message mediante patrones grok.
target_port target.port Se asigna directamente desde el campo target_port, que se extrae del campo message mediante patrones grok.
timestamp metadata.event_timestamp Se asigna directamente desde el campo timestamp después de analizarse en un objeto de marca de tiempo.
user principal.user.userid Se asigna directamente desde el campo user, que se extrae del campo message mediante patrones grok.
user_name target.user.userid Se asigna directamente desde el campo user_name, que se extrae del campo message mediante patrones grok.
vrf additional.fields[vrf].string_value Se asigna directamente desde el campo vrf, que se extrae del campo message mediante patrones grok. Se deriva de una combinación de los campos has_principal, has_target, user, message, product_event_type y description mediante una lógica condicional compleja, tal como se describe en el código del analizador. El valor predeterminado es "GENERIC_EVENT". Codificado como "ARISTA_SWITCH". Codificado como "Arista Switch". Codificado como "Arista". Se define como "BLOCK" si el campo description contiene "connection rejected".
dpid additional.fields[DPID].string_value Se asigna directamente desde el campo dpid.
intf additional.fields[intf].string_value Se asigna directamente desde el campo intf.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.