Recopila registros del conmutador Ubiquiti Unifi
En este documento, se explica cómo transferir registros de conmutadores Ubiquiti Unifi a Google Security Operations con Bindplane. El analizador extrae campos de los mensajes de syslog con patrones de Grok, lo que convierte los datos de registro sin procesar en un formato estructurado que se ajusta al modelo de datos unificado (UDM). Maneja 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 final del UDM.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Un host de Windows 2016 o posterior, o Linux con
systemd - Si ejecutas el agente detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de BindPlane.
- Acceso con privilegios a la IU de Ubiquiti Controller
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el comando siguiente:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación en Linux
- Abre una terminal con privilegios de administrador o sudo.
Ejecuta el comando siguiente:
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
- Para obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- Ubica el archivo
config.yaml. Por lo general, se encuentra en el directorio/etc/bindplane-agent/en Linux o en el directorio de instalación en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano,vio Bloc de notas).
- Ubica el archivo
Edita el archivo
config.yamlde 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- Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
- Reemplaza
<CUSTOMER_IDpor el ID de cliente real. - Actualiza
/path/to/ingestion-authentication-file.jsona la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de la transferencia de datos 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-agentPara reiniciar el agente de Bindplane en Windows, puedes usar la consola de Servicios o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura el conmutador Ubiquiti para enviar el registro del sistema del plano de control
- Accede a la IU de Unifi Controller.
- Abre Unifi Network.
- Ve a Configuración > Plano de control > pestaña Integraciones.
- Busca la sección Activity Logging (Syslog).
- Habilita la opción Servidor SIEM.
- Proporciona los siguientes detalles de configuración:
- Haz clic en Editar categorías y agrega las categorías de registro necesarias.
- Dirección del servidor: Ingresa la dirección IP del agente de BindPlane.
- Puerto: Ingresa el número de puerto del agente de Bindplane (se requiere UDP).
- Haz clic en Aplicar cambios.
Configura el conmutador Ubiquiti para enviar el registro del sistema de CyberSecure
- Accede a la IU de Unifi Controller.
- Abre Unifi Network.
- Ve a Configuración > CyberSecure > pestaña Registro de tráfico.
- Busca la sección Activity Logging (Syslog).
- Habilita la opción Servidor SIEM.
- Proporciona los siguientes detalles de configuración:
- Haz clic en Editar categorías y agrega las categorías de registro necesarias.
- Dirección del servidor: Ingresa la dirección IP del agente de BindPlane.
- Puerto: Ingresa el número de puerto del agente de Bindplane (se requiere UDP).
- Inhabilita Registros de depuración.
- 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: Valor de anomalies del registro |
Se asigna directamente desde el campo anomalies en el registro sin procesar. |
application |
observer.application |
Se asigna directamente desde el campo application en el registro sin procesar. |
assoc_status |
security_result.detection_fields[].key: "assoc_status"security_result.detection_fields[].value: Valor de assoc_status del registro |
Se asigna directamente desde el campo assoc_status en el registro sin procesar. |
asset_details |
observer.asset.product_object_id: Se extrajo con el patrón de grok %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version}asset_software.version: Se extrajo con el patrón de grok %{GREEDYDATA:asset_id},%{GREEDYDATA:asset_version} |
El campo asset_details se analiza con un patrón de 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 en el registro sin procesar. |
description |
metadata.description |
Se asigna directamente desde el campo description en el registro sin procesar. |
device |
metadata.product_name |
Se asigna directamente desde el campo device en el 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 de dns_resp_seen del registro |
Se asigna directamente desde el campo dns_resp_seen en el registro sin procesar. |
DST |
target.ip |
Se asigna directamente desde el campo DST en el registro sin procesar. |
DPT |
principal.port |
Se asigna directamente desde el campo DPT en el 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: Valor de event_type del registro |
Se asigna directamente desde el campo event_type en el registro sin procesar. |
host |
principal.hostname |
Se asigna directamente desde el campo host en el registro sin procesar. |
ID |
additional.fields[].key: "ID"additional.fields[].value.string_value: Valor de ID del registro |
Se asigna directamente desde el campo ID en el registro sin procesar. |
IN |
additional.fields[].key: "IN"additional.fields[].value.string_value: Valor de IN del registro |
Se asigna directamente desde el campo IN en el registro sin procesar. |
interface |
additional.fields[].key: "interface"additional.fields[].value.string_value: Valor de interface del registro |
Se asigna directamente desde el campo interface en el registro sin procesar. |
LEN |
additional.fields[].key: "LEN"additional.fields[].value.string_value: Valor de LEN del registro |
Se asigna directamente desde el campo LEN en el registro sin procesar. |
mac |
principal.mac |
Se asigna directamente desde el campo mac en el registro sin procesar. |
metadata.event_type |
metadata.event_type |
Se deriva de la lógica del analizador. Se establece en "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 verdadero, y "GENERIC_EVENT" en los demás casos. |
metadata.log_type |
metadata.log_type: "UBIQUITI_SWITCH" |
Es el valor constante que establece el analizador. |
metadata.vendor_name |
metadata.vendor_name: "UBIQUITI" |
Es el valor constante que establece el analizador. |
principal_ip |
principal.ip |
Se asigna directamente desde el campo principal_ip en el registro sin procesar. |
process_id |
observer.process.pid |
Se asigna directamente desde el campo process_id en el registro sin procesar. |
product_event_type |
metadata.product_event_type |
Se asigna directamente desde el campo product_event_type en el registro sin procesar. |
PROTO |
network.ip_protocol |
Se asigna directamente desde el campo PROTO en el registro sin procesar. Si PROTO es "ICMPv6", el valor se cambia a "ICMP". |
query_1 |
target.administrative_domain |
Se asigna directamente desde el campo query_1 en el registro sin procesar. |
query_server_1 |
target.ip |
Se asigna directamente desde el campo query_server_1 en el registro sin procesar. |
radio |
security_result.detection_fields[].key: "radio"security_result.detection_fields[].value: Valor de radio del registro |
Se asigna directamente desde el campo radio en el 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 en el registro sin procesar. |
source_port |
principal.port |
Se asigna directamente desde el campo source_port en el registro sin procesar después de convertirlo en un número entero. |
SPT |
target.port |
Se asigna directamente desde el campo SPT en el registro sin procesar después de convertirlo en un número entero. |
SRC |
principal.ip, principal.hostname |
Se asigna directamente desde el campo SRC en el registro sin procesar. |
sta |
principal.mac |
Se asigna directamente desde el campo sta en el registro sin procesar. |
state |
additional.fields[].key: "state"additional.fields[].value.string_value: Valor de state del registro |
Se asigna directamente desde el campo state en el registro sin procesar. |
timestamp |
metadata.event_timestamp |
Se asigna directamente desde el campo timestamp en el registro sin procesar después de que el filtro de fecha lo analiza. |
TTL |
additional.fields[].key: "TTL"additional.fields[].value.string_value: Valor de TTL del registro |
Se asigna directamente desde el campo TTL en el registro sin procesar. |
vap |
metadata.ingestion_labels[].key: "Vap"metadata.ingestion_labels[].value: Valor de vap del registro |
Se asigna directamente desde el campo vap en el registro sin procesar. |
version |
metadata.product_version |
Se asigna directamente desde el campo version en el registro sin procesar. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.