Recoger registros de un switch Brocade

Disponible en:

Este analizador extrae campos de los registros de switches Brocade mediante patrones grok que coinciden con varios formatos de registro. A continuación, asigna estos campos extraídos a campos de UDM, gestiona diferentes estructuras de registro y enriquece los datos con metadatos, como información del proveedor y del producto. El analizador también realiza transformaciones de datos, como convertir niveles de gravedad y gestionar mensajes repetidos, antes de generar el resultado final de UDM.

Antes de empezar

  • Asegúrate de que tienes una instancia de Google Security Operations.
  • Asegúrate de que usas 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.
  • Asegúrate de que tienes acceso de administrador a la CLI del switch Brocade.

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.

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

  1. Para instalar en 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 instalar 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 consultar otras opciones de instalación en esta guía de instalación.

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

  1. Accede al equipo en el 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: Brocade_Switch
            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:

    sudo systemctl restart bindplane
    

Configurar la exportación de Syslog desde un switch Brocade

  1. Conéctate al switch Brocade mediante SSH o Telnet con las credenciales adecuadas.
  2. Ejecuta el siguiente comando para especificar la dirección IP o el nombre de host y el puerto del servidor syslog (Bindplane):

    syslogadmin --set -ip <IP> -port <Port>
    

    Por ejemplo:

    syslogadmin --set -ip 10.10.10.10 -port 54525
    
  3. Ejecuta el siguiente comando para mostrar los servidores syslog configurados:

    syslogadmin --show -ip
    

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
application additional.fields[].key: "application"
additional.fields[].value.string_value:
Valor extraído del campo application@1588 del registro sin procesar cuando existe el campo KV_DATA.
class additional.fields[].key: "class"
additional.fields[].value.string_value:
Valor extraído del campo class@1588 del registro sin procesar cuando existe el campo KV_DATA.
domain principal.administrative_domain Valor extraído del patrón grok que coincide con el campo domain.
Event additional.fields[].key: "event_category"
additional.fields[].value.string_value:
Valor extraído del campo arg0@1588 del registro sin procesar cuando existe el campo KV_DATA.
event_id metadata.product_log_id Valor extraído del patrón grok que coincide con el campo event_id.
event_type metadata.product_event_type Valor extraído del patrón grok que coincide con el campo event_type.
flags additional.fields[].key: "flags"
additional.fields[].value.string_value:
Valor extraído del patrón grok que coincide con el campo flags.
Info metadata.description Valor extraído del campo Info, analizado con grok.
interface app_protocol_src Valor extraído del campo interface@1588 del registro sin procesar cuando existe el campo KV_DATA. Se usa para derivar network.application_protocol.
ip principal.ip Valor extraído del campo ip, analizado con grok. Se combina con principal.ip si no es la misma que la IP extraída del campo Info.
Info, IP Addr principal.ip Valor extraído del campo IP Addr del campo Info, analizado con grok.
log additional.fields[].key: "log"
additional.fields[].value.string_value:
Valor extraído del campo log@1588 del registro sin procesar cuando existe el campo KV_DATA.
msg metadata.description Valor extraído del campo msg, analizado con grok.
msgid additional.fields[].key: "msgid"
additional.fields[].value.string_value:
Valor extraído del campo msgid@1588 del registro sin procesar cuando existe el campo KV_DATA.
prin_host principal.hostname
principal.asset.hostname
Valor extraído del patrón grok que coincide con el campo prin_host.
product_version metadata.product_version Valor extraído del patrón grok que coincide con el campo product_version.
repeat_count additional.fields[].key: "repeat_count"
additional.fields[].value.string_value:
Valor extraído del campo msg, analizado con grok.
role, user_role principal.user.attribute.roles[].name Valor extraído del campo role@1588 o user_role. Si el valor es "admin", se sustituye por "Admin".
sequence_number additional.fields[].key: "sequence_number"
additional.fields[].value.string_value:
Valor extraído del patrón grok que coincide con el campo sequence_number.
severity security_result.severity Valor extraído del campo severity, analizado con grok. Se asigna a los valores de gravedad de UDM (INFORMATIONAL, ERROR, CRITICAL y MEDIUM).
Status security_result.summary Valor extraído del campo Status.
switch_name additional.fields[].key: "switch_name"
additional.fields[].value.string_value:
Valor extraído del patrón grok que coincide con el campo switch_name.
target_application target.application Valor extraído del patrón grok que coincide con el campo target_application.
time additional.fields[].key: "time"
additional.fields[].value.string_value:
Valor extraído del campo time del campo kv_data3.
timestamp metadata.event_timestamp.seconds Valor extraído del campo timestamp, analizado con el filtro de fecha.
user principal.user.userid
principal.user.user_display_name
Valor extraído del campo user o user@1588, analizado con grok. Copiado de principal.hostname. Copiado de principal.ip. Copiado de metadata.product_event_type o definido como "STATUS_UPDATE" en función de las condiciones. Copiado del create_time.nanos del registro. Determinado por la lógica del analizador en función de los valores de has_principal, has_target, has_userid y event_type. Puede ser "SYSTEM_AUDIT_LOG_UNCATEGORIZED", "STATUS_UPDATE" o "GENERIC_EVENT". Codificado como "BROCADE_SWITCH". Codificado como "BROCADE". Codificado como "BROCADE_SWITCH". Se deriva del campo interface o se define como "SSH" si el campo interface contiene "SSH".

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