Recoger registros de un switch Ubiquiti Unifi

Disponible en:

En este documento se explica cómo ingerir registros de switches Ubiquiti Unifi en Google Security Operations mediante Bindplane. El analizador extrae campos de los mensajes syslog mediante patrones grok, lo que convierte los datos de registro sin procesar en un formato estructurado conforme al modelo de datos unificado (UDM). Gestiona varios formatos de registro, extrae información clave, como marcas de tiempo, nombres de host, descripciones y detalles de la red, y enriquece los datos con contexto adicional antes de combinarlos en el evento UDM final.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Un host Windows 2016 o posterior, 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 BindPlane.
  • Acceso con privilegios a la interfaz de usuario de Ubiquiti Controller

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 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: 'UBIQUITI_SWITCH'
        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 el switch de Ubiquiti para enviar Syslog del plano de control

  1. Inicia sesión en la interfaz de usuario de UniFi Controller.
  2. Abre Unifi Network.
  3. Ve a Configuración > Plano de control > pestaña Integraciones.
  4. Busca la sección Registro de actividad (Syslog).
  5. Habilita la opción Servidor SIEM.
  6. Proporcione los siguientes detalles de configuración:
    • Haga clic en Editar categorías y añada las categorías de registro necesarias.
    • Dirección del servidor: introduce la dirección IP del agente de Bindplane.
    • Puerto: introduce el número de puerto del agente de Bindplane (es obligatorio usar UDP).
  7. Haz clic en Aplicar cambios.

Configurar el switch de Ubiquiti para enviar Syslog de CyberSecure

  1. Inicia sesión en la interfaz de usuario de UniFi Controller.
  2. Abre Unifi Network.
  3. Ve a Ajustes > CyberSecure > pestaña Registro de tráfico.
  4. Busca la sección Registro de actividad (Syslog).
  5. Habilita la opción Servidor SIEM.
  6. Proporcione los siguientes detalles de configuración:
    • Haga clic en Editar categorías y añada las categorías de registro necesarias.
    • Dirección del servidor: introduce la dirección IP del agente de Bindplane.
    • Puerto: introduce el número de puerto del agente de Bindplane (es obligatorio usar UDP).
    • Inhabilita Registros de depuración.
  7. Haz clic en Aplicar cambios.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
anomalies security_result.detection_fields[].key: "anomalies"
security_result.detection_fields[].value: anomalies valor del registro
Se asigna directamente desde el campo anomalies del registro sin procesar.
application observer.application Se asigna directamente desde el campo application del registro sin procesar.
assoc_status security_result.detection_fields[].key: "assoc_status"
security_result.detection_fields[].value: valor assoc_status del registro
Se asigna directamente desde el campo assoc_status del registro sin procesar.
asset_details observer.asset.product_object_id: extraído con el patrón grok %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version}
asset_software.version: extraído con el patrón grok %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version}
El campo asset_details se analiza con un patrón grok para extraer asset_id y asset_version.
asset_id observer.asset.product_object_id Se asigna directamente desde el campo asset_id extraído de asset_details.
asset_version observer.asset.software.version Se asigna directamente desde el campo asset_version extraído de asset_details.
bssid principal.mac Se asigna directamente desde el campo bssid del registro sin procesar.
description metadata.description Se asigna directamente desde el campo description del registro sin procesar.
device metadata.product_name Se asigna directamente desde el campo device del registro sin procesar. Si device no está presente, se usa el valor "UBIQUITI_SWITCH".
dns_resp_seen security_result.detection_fields[].key: "dns_resp_seen"
security_result.detection_fields[].value: valor dns_resp_seen del registro
Se asigna directamente desde el campo dns_resp_seen del registro sin procesar.
DST target.ip Se asigna directamente desde el campo DST del registro sin procesar.
DPT principal.port Se asigna directamente desde el campo DPT del registro sin procesar después de convertirlo en un número entero.
event_type security_result.detection_fields[].key: "event_type"
security_result.detection_fields[].value: event_type valor del registro
Se asigna directamente desde el campo event_type del registro sin procesar.
host principal.hostname Se asigna directamente desde el campo host del registro sin procesar.
ID additional.fields[].key: "ID"
additional.fields[].value.string_value: valor ID del registro
Se asigna directamente desde el campo ID del registro sin procesar.
IN additional.fields[].key: "IN"
additional.fields[].value.string_value: valor IN del registro
Se asigna directamente desde el campo IN del registro sin procesar.
interface additional.fields[].key: "interface"
additional.fields[].value.string_value: valor interface del registro
Se asigna directamente desde el campo interface del registro sin procesar.
LEN additional.fields[].key: "LEN"
additional.fields[].value.string_value: valor LEN del registro
Se asigna directamente desde el campo LEN del registro sin procesar.
mac principal.mac Se asigna directamente desde el campo mac del registro sin procesar.
metadata.event_type metadata.event_type Derivado de la lógica del analizador. Se asigna el valor "STATUS_SHUTDOWN" si state es "Down", "STATUS_STARTUP" si state es "Up", "STATUS_UPDATE" si kv_msg y DST están presentes o principal_present es true, y "GENERIC_EVENT" en los demás casos.
metadata.log_type metadata.log_type: "UBIQUITI_SWITCH" Valor constante definido por el analizador.
metadata.vendor_name metadata.vendor_name: "UBIQUITI" Valor constante definido por el analizador.
principal_ip principal.ip Se asigna directamente desde el campo principal_ip del registro sin procesar.
process_id observer.process.pid Se asigna directamente desde el campo process_id del registro sin procesar.
product_event_type metadata.product_event_type Se asigna directamente desde el campo product_event_type del registro sin procesar.
PROTO network.ip_protocol Se asigna directamente desde el campo PROTO del registro sin procesar. Si PROTO es "ICMPv6", el valor cambia a "ICMP".
query_1 target.administrative_domain Se asigna directamente desde el campo query_1 del registro sin procesar.
query_server_1 target.ip Se asigna directamente desde el campo query_server_1 del registro sin procesar.
radio security_result.detection_fields[].key: "radio"
security_result.detection_fields[].value: valor radio del registro
Se asigna directamente desde el campo radio del registro sin procesar.
satisfaction_now security_result.detection_fields[].key: "satisfaction_now"
security_result.detection_fields[].value: valor de satisfaction_now del registro
Se asigna directamente desde el campo satisfaction_now del registro sin procesar.
source_port principal.port Se asigna directamente desde el campo source_port del registro sin procesar después de convertirlo en un número entero.
SPT target.port Se asigna directamente desde el campo SPT del registro sin procesar después de convertirlo en un número entero.
SRC principal.ip, principal.hostname Se asigna directamente desde el campo SRC del registro sin procesar.
sta principal.mac Se asigna directamente desde el campo sta del registro sin procesar.
state additional.fields[].key: "state"
additional.fields[].value.string_value: state valor del registro
Se asigna directamente desde el campo state del registro sin procesar.
timestamp metadata.event_timestamp Se asigna directamente desde el campo timestamp del registro sin procesar después de que el filtro de fecha lo haya analizado.
TTL additional.fields[].key: "TTL"
additional.fields[].value.string_value: valor TTL del registro
Se asigna directamente desde el campo TTL del registro sin procesar.
vap metadata.ingestion_labels[].key: "Vap"
metadata.ingestion_labels[].value: valor vap del registro
Se asigna directamente desde el campo vap del registro sin procesar.
version metadata.product_version Se asigna directamente desde el campo version del registro sin procesar.

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