Recoger registros de la plataforma de servicios de fibra de ADVA

Disponible en:

En este documento se explica cómo ingerir registros de la plataforma de servicios de fibra (FSP) de ADVA en Google Security Operations mediante Bindplane. El analizador extrae campos de los mensajes syslog del conmutador y del router, y los convierte en pares clave-valor. A continuación, asigna estos campos extraídos y sus valores a los campos correspondientes del esquema UDM de Chronicle, lo que enriquece los datos para el análisis de seguridad.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Un host con Windows 2012 SP2 o versiones posteriores, o Linux con systemd
  • Si se ejecuta a través de un proxy, asegúrese de que los puertos del cortafuegos estén abiertos según los requisitos del agente de Bindplane.
  • Acceso con privilegios a la consola de gestión de dispositivos ADVA FSP

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 Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.

Instalación de Windows

  1. Abre la petición de comando 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 root 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. A continuación, se muestran dos opciones de receptor que funcionan. Elige la que se ajuste a la forma en que tu dispositivo envía los registros:

    • Opción A: receptor de registros UDP (UDP simple)
    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'ADVA_FSP'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/adva-fsp:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
    • Opción B: receptor Syslog (recomendada para un encuadre estricto de Syslog)
    receivers:
      syslog:
        tcp:
          listen_address: "0.0.0.0:514"
        protocol: rfc5424   # or rfc3164 if your device uses BSD syslog
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        customer_id: <CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'ADVA_FSP'
        raw_log_field: body
        ingestion_labels:
          source: 'adva-fsp'
          env: 'production'
    
    service:
      pipelines:
        logs/adva-fsp:
          receivers:
            - syslog
          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 el reenvío de Syslog en ADVA FSP

  1. Inicia sesión en la consola de gestión de FSP de ADVA.
  2. Ve a Nodo > General > Controles.
  3. En la sección Destinatarios de eventos remotos (SysLog), haga clic en Añadir.
  4. Proporcione los siguientes detalles de configuración:
    • Dirección IPv4/v6: introduce la dirección IP del agente de Bindplane.
    • Puerto: introduce el número de puerto del agente de Bindplane (por ejemplo, 514).
    • Protocolo: selecciona UDP o TCP, en función de la configuración del agente de Bindplane.
    • Extensión de mensaje: opcional. Haz clic en Añadir etiqueta de usuario para incluir identificadores adicionales en los mensajes.
  5. Haz clic en Guardar para activar la configuración.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
ACCESSORDER additional.fields.value.string_value El valor se toma del campo ACCESSORDER del registro sin procesar.
DIRECCIÓN principal.ip El valor se toma del campo ADDRESS del registro sin procesar y se analiza como una dirección IP.
ADMINSTATE additional.fields.value.string_value El valor se toma del campo ADMINSTATE del registro sin procesar.
AISCLIENTMDLEVEL additional.fields.value.string_value El valor se toma del campo AISCLIENTMDLEVEL del registro sin procesar.
AISGENENABLED additional.fields.value.string_value El valor se toma del campo AISGENENABLED del registro sin procesar.
AISPRIORITY additional.fields.value.string_value El valor se toma del campo AISPRIORITY del registro sin procesar.
AISTXPERIOD additional.fields.value.string_value El valor se toma del campo AISTXPERIOD del registro sin procesar.
AISTRIGGERTYPES additional.fields.value.string_value El valor se toma del campo AISTRIGGERTYPES del registro sin procesar.
BUFFERSIZE additional.fields.value.string_value El valor se toma del campo BUFFERSIZE del registro sin procesar.
CCIENABLED additional.fields.value.string_value El valor se toma del campo CCIENABLED del registro sin procesar.
CCMINTERFACESTATUSTLVCONTROL additional.fields.value.string_value El valor se toma del campo CCMINTERFACESTATUSTLVCONTROL del registro sin procesar.
CCMLTMPRIORITY additional.fields.value.string_value El valor se toma del campo CCMLTMPRIORITY del registro sin procesar.
CFMTAGETHERTYPE additional.fields.value.string_value El valor se toma del campo CFMTAGETHERTYPE del registro sin procesar.
CIR additional.fields.value.string_value El valor se toma del campo CIR del registro sin procesar.
COS additional.fields.value.string_value El valor se toma del campo COS del registro sin procesar.
CT metadata.description El valor se toma del campo CT del registro sin procesar.
DESTBMAC target.mac El valor se toma del campo DESTBMAC del registro sin procesar y se analiza como una dirección MAC.
DHCPCIDENABLED additional.fields.value.string_value El valor se toma del campo DHCPCIDENABLED del registro sin procesar.
DHCPENABLED additional.fields.value.string_value El valor se toma del campo DHCPENABLED del registro sin procesar.
DHCPHOSTNAME network.dhcp.client_hostname El valor se toma del campo DHCPHOSTNAME del registro sin procesar.
DHCPHOSTNAMEENABLED additional.fields.value.string_value El valor se toma del campo DHCPHOSTNAMEENABLED del registro sin procesar.
DHCPHOSTNAMETYPE additional.fields.value.string_value El valor se toma del campo DHCPHOSTNAMETYPE del registro sin procesar.
DHCPLOGSERVERENABLED additional.fields.value.string_value El valor se toma del campo DHCPLOGSERVERENABLED del registro sin procesar.
DHCPNTPSERVERENABLED additional.fields.value.string_value El valor se toma del campo DHCPNTPSERVERENABLED del registro sin procesar.
DHCPV6CIDENABLED additional.fields.value.string_value El valor se toma del campo DHCPV6CIDENABLED del registro sin procesar.
DHCPV6ENABLED additional.fields.value.string_value El valor se toma del campo DHCPV6ENABLED del registro sin procesar.
DHCPV6ROLE additional.fields.value.string_value El valor se toma del campo DHCPV6ROLE del registro sin procesar.
DHCPVENDORINFOTYPE additional.fields.value.string_value El valor se toma del campo DHCPVENDORINFOTYPE del registro sin procesar.
DIR additional.fields.value.string_value El valor se toma del campo DIR del registro sin procesar.
DIRECCIÓN network.direction El valor se define como "OUTBOUND" si el campo DIRECTION del registro sin procesar es "UP" (sin distinción entre mayúsculas y minúsculas), "INBOUND" si es "DOWN" y se deja vacío en los demás casos.
ENCAPSULATIONTYPE additional.fields.value.string_value El valor se toma del campo ENCAPSULATIONTYPE del registro sin procesar.
GUARANTEEDA2NBW additional.fields.value.string_value El valor se toma del campo GUARANTEEDA2NBW del registro sin procesar.
HCOSMGMTENABLED additional.fields.value.string_value El valor se toma del campo HCOSMGMTENABLED del registro sin procesar.
INT additional.fields.value.string_value El valor se toma del campo INT del registro sin procesar.
IPMODE additional.fields.value.string_value El valor se toma del campo IPMODE del registro sin procesar.
IPV6ADDR principal.ip El valor se toma del campo IPV6ADDR del registro sin procesar y se analiza como una dirección IP.
IPV6ADDRPREFIXLENGTH additional.fields.value.string_value El valor se toma del campo IPV6ADDRPREFIXLENGTH del registro sin procesar.
IPV6MTU additional.fields.value.string_value El valor se toma del campo IPV6MTU del registro sin procesar.
ITAG additional.fields.value.string_value El valor se toma del campo ITAG del registro sin procesar.
ITAGENABLED additional.fields.value.string_value El valor se toma del campo ITAGENABLED del registro sin procesar.
LBMTXDESTTYPE additional.fields.value.string_value El valor se toma del campo LBMTXDESTTYPE del registro sin procesar.
LBMTXNUMMSGS additional.fields.value.string_value El valor se toma del campo LBMTXNUMMSGS del registro sin procesar.
LBMTXVLANDROPENABLE additional.fields.value.string_value El valor se toma del campo LBMTXVLANDROPENABLE del registro sin procesar.
LBMTXVLANPRIORITY additional.fields.value.string_value El valor se toma del campo LBMTXVLANPRIORITY del registro sin procesar.
LLRESPONDERENABLED additional.fields.value.string_value El valor se toma del campo LLRESPONDERENABLED del registro sin procesar.
LLVIDLIST additional.fields.value.string_value El valor se toma del campo LLVIDLIST del registro sin procesar.
LMDUALENDEDCOUNTALLPRIOS additional.fields.value.string_value El valor se toma del campo LMDUALENDEDCOUNTALLPRIOS del registro sin procesar.
LMINPROFILEONLY additional.fields.value.string_value El valor se toma del campo LMINPROFILEONLY del registro sin procesar.
LMRXCOUNTALLPRIOS additional.fields.value.string_value El valor se toma del campo LMRXCOUNTALLPRIOS del registro sin procesar.
LMTXCOUNTALLPRIOS additional.fields.value.string_value El valor se toma del campo LMTXCOUNTALLPRIOS del registro sin procesar.
LOC additional.fields.value.string_value El valor se toma del campo LOC del registro sin procesar.
LOCN additional.fields.value.string_value El valor se toma del campo LOCN del registro sin procesar.
LOGINTIMEOUT additional.fields.value.string_value El valor se toma del campo LOGINTIMEOUT del registro sin procesar.
LOOPBACKBLOCKINGENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKBLOCKINGENABLED del registro sin procesar.
LOOPBACKCONFIG additional.fields.value.string_value El valor se toma del campo LOOPBACKCONFIG del registro sin procesar.
LOOPBACKDESTMAC target.mac El valor se toma del campo LOOPBACKDESTMAC del registro sin procesar y se analiza como una dirección MAC.
LOOPBACKDESTMACCONTROL additional.fields.value.string_value El valor se toma del campo LOOPBACKDESTMACCONTROL del registro sin procesar.
LOOPBACKINNERVLAN1 additional.fields.value.string_value El valor se toma del campo LOOPBACKINNERVLAN1 del registro sin procesar.
LOOPBACKINNERVLAN1ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKINNERVLAN1ENABLED del registro sin procesar.
LOOPBACKINNERVLAN2 additional.fields.value.string_value El valor se toma del campo LOOPBACKINNERVLAN2 del registro sin procesar.
LOOPBACKINNERVLAN2ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKINNERVLAN2ENABLED del registro sin procesar.
LOOPBACKINNERVLAN3 additional.fields.value.string_value El valor se toma del campo LOOPBACKINNERVLAN3 del registro sin procesar.
LOOPBACKINNERVLAN3ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKINNERVLAN3ENABLED del registro sin procesar.
LOOPBACKOUTERITAG1 additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERITAG1 del registro sin procesar.
LOOPBACKOUTERITAG1ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERITAG1ENABLED del registro sin procesar.
LOOPBACKOUTERITAG2 additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERITAG2 del registro sin procesar.
LOOPBACKOUTERITAG2ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERITAG2ENABLED del registro sin procesar.
LOOPBACKOUTERITAG3 additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERITAG3 del registro sin procesar.
LOOPBACKOUTERITAG3ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERITAG3ENABLED del registro sin procesar.
LOOPBACKOUTERVLAN1 additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERVLAN1 del registro sin procesar.
LOOPBACKOUTERVLAN1ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERVLAN1ENABLED del registro sin procesar.
LOOPBACKOUTERVLAN2 additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERVLAN2 del registro sin procesar.
LOOPBACKOUTERVLAN2ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERVLAN2ENABLED del registro sin procesar.
LOOPBACKOUTERVLAN3 additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERVLAN3 del registro sin procesar.
LOOPBACKOUTERVLAN3ENABLED additional.fields.value.string_value El valor se toma del campo LOOPBACKOUTERVLAN3ENABLED del registro sin procesar.
LOOPBACKSOURCEMAC principal.mac El valor se toma del campo LOOPBACKSOURCEMAC del registro sin procesar y se analiza como una dirección MAC.
LOOPBACKSWAPSADA additional.fields.value.string_value El valor se toma del campo LOOPBACKSWAPSADA del registro sin procesar.
LOOPBACKTIMER additional.fields.value.string_value El valor se toma del campo LOOPBACKTIMER del registro sin procesar.
LOWESTPRIODEFECT additional.fields.value.string_value El valor se toma del campo LOWESTPRIODEFECT del registro sin procesar.
LTMTXDESTTYPE additional.fields.value.string_value El valor se toma del campo LTMTXDESTTYPE del registro sin procesar.
LTMTXEGRESSID metadata.product_log_id El valor se toma del campo LTMTXEGRESSID del registro sin procesar.
LTMTXFLAGS additional.fields.value.string_value El valor se toma del campo LTMTXFLAGS del registro sin procesar.
LTMTXTTL additional.fields.value.string_value El valor se toma del campo LTMTXTTL del registro sin procesar.
MT additional.fields.value.string_value El valor se toma del campo MT del registro sin procesar.
MAXIMUMA2NBW additional.fields.value.string_value El valor se toma del campo MAXIMUMA2NBW del registro sin procesar.
MVAL additional.fields.value.string_value El valor se toma del campo MVAL del registro sin procesar.
NOMBRE additional.fields.value.string_value El valor se toma del campo NAME del registro sin procesar.
NC additional.fields.value.string_value El valor se toma del campo NC del registro sin procesar.
PORTEID additional.fields.value.string_value El valor se toma del campo PORTEID del registro sin procesar.
PORTLLENABLED additional.fields.value.string_value El valor se toma del campo PORTLLENABLED del registro sin procesar.
PRIMARYSERVER target.ip El valor se toma del campo PRIMARYSERVER del registro sin procesar y se analiza como una dirección IP.
PRIMARYVID additional.fields.value.string_value El valor se toma del campo PRIMARYVID del registro sin procesar.
QUEUEPROFILEID additional.fields.value.string_value El valor se toma del campo QUEUEPROFILEID del registro sin procesar.
RXSHAPEREID additional.fields.value.string_value El valor se toma del campo RXSHAPEREID del registro sin procesar.
SATRESPONDENABLED additional.fields.value.string_value El valor se toma del campo SATRESPONDENABLED del registro sin procesar.
SE additional.fields.value.string_value El valor se toma del campo SE del registro sin procesar.
SHAREDVIM additional.fields.value.string_value El valor se toma del campo SHAREDVIM del registro sin procesar.
SVLANENABLED additional.fields.value.string_value El valor se toma del campo SVLANENABLED del registro sin procesar.
SVLANID additional.fields.value.string_value El valor se toma del campo SVLANID del registro sin procesar.
SYSLOCATION principal.location.country_or_region El valor se toma del campo SYSLOCATION del registro sin procesar.
THVAL additional.fields.value.string_value El valor se toma del campo THVAL del registro sin procesar.
TIPO additional.fields.value.string_value El valor se toma del campo TYPE del registro sin procesar.
USERACCESSTYPE additional.fields.value.string_value El valor se toma del campo USERACCESSTYPE del registro sin procesar.
USERAUTHKEY additional.fields.value.string_value El valor se toma del campo USERAUTHKEY del registro sin procesar.
USERAUTHKEYLOCAL additional.fields.value.string_value El valor se toma del campo USERAUTHKEYLOCAL del registro sin procesar.
USERAUTHPROTOCOL additional.fields.value.string_value El valor se toma del campo USERAUTHPROTOCOL del registro sin procesar.
USERENGINEID additional.fields.value.string_value El valor se toma del campo USERENGINEID del registro sin procesar.
USERKEYSLOCAL additional.fields.value.string_value El valor se toma del campo USERKEYSLOCAL del registro sin procesar.
NOMBRE DE USUARIO principal.user.userid El valor se toma del campo USERNAME del registro sin procesar.
USERPRIVKEY additional.fields.value.string_value El valor se toma del campo USERPRIVKEY del registro sin procesar.
USERPRIVKEYLOCAL additional.fields.value.string_value El valor se toma del campo USERPRIVKEYLOCAL del registro sin procesar.
USERPRIVPROTOCOL additional.fields.value.string_value El valor se toma del campo USERPRIVPROTOCOL del registro sin procesar.
USERSECURITYLEVEL additional.fields.value.string_value El valor se toma del campo USERSECURITYLEVEL del registro sin procesar.
USERSECURITYNAME principal.user.user_display_name El valor se toma del campo USERSECURITYNAME del registro sin procesar.
página principal.application El valor se toma del campo de aplicación extraído por el analizador grok.
description security_result.description El valor se toma del campo de descripción extraído por el analizador grok.
metadata.description El valor es "Backup NTP Server Failed" si el campo CT del registro sin procesar es "Backup NTP Server Failed".
metadata.event_timestamp.seconds El valor se toma del campo de marca de tiempo extraído por el analizador grok y se convierte a segundos de época.
metadata.event_type El valor se define según la siguiente lógica:
- NETWORK_DHCP si network_dhcp_present es true y principal_present o target_present es true.
- NETWORK_CONNECTION si target_present y principal_present son true.
- USER_RESOURCE_ACCESS si user_present es true.
- STATUS_UPDATE si principal_present es true.
- GENERIC_EVENT en cualquier otro caso.
metadata.product_log_id El valor se toma del campo LTMTXEGRESSID del registro sin procesar.
metadata.product_name El valor se establece como "ADVA_FSP".
metadata.vendor_name El valor se establece como "ADVA_FSP".
network.application_protocol El valor se define como "DHCP" si network_dhcp_present es true y principal_present o target_present es true.
principal.hostname El valor se toma del campo principal_hostname extraído por el analizador grok, con los guiones bajos eliminados.
principal.ip El valor se toma del campo IPADDR del registro sin procesar y se analiza como una dirección IP.
timestamp.seconds El valor se toma del campo de marca de tiempo extraído por el analizador grok y se convierte a segundos de época.

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