Recopila registros de la plataforma de servicios de fibra de ADVA
En este documento, se explica cómo transferir registros de la plataforma de servicios de fibra (FSP) de ADVA a las Operaciones de seguridad de Google con Bindplane. El analizador extrae campos de los mensajes de syslog del conmutador y el router, y los convierte en pares clave-valor. Luego, asigna estos campos extraídos y sus valores a los campos correspondientes dentro del esquema del UDM de Chronicle, lo que enriquece los datos para el análisis de seguridad.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Un host de Windows 2012 SP2 o posterior, o Linux con
systemd - Si se ejecuta 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 privilegiado a la consola de administración de dispositivos FSP de ADVA
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.yaml. A continuación, se muestran dos opciones de receptor que funcionan. Elige la que coincida con la forma en que tu dispositivo envía 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 de Syslog (recomendado 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- Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
- Reemplaza
<CUSTOMER_ID>por 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 BindPlaneAgentConfigura el reenvío de Syslog en ADVA FSP
- Accede a la Consola de administración de ADVA FSP.
- Ve a Nodo > General > Controles.
- En la sección Remote Event Recipients (SysLog), haz clic en Add.
- Proporciona los siguientes detalles de configuración:
- Dirección IPv4/v6: Ingresa la dirección IP del agente de Bindplane.
- Puerto: Ingresa el número de puerto del agente de Bindplane (por ejemplo,
514). - Protocol: Selecciona UDP o TCP, según la configuración real del agente de Bindplane.
- Extensión de mensaje: Opcional: Haz clic en Agregar etiqueta de usuario para incluir identificadores adicionales en los mensajes.
- 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 en el registro sin procesar. |
| DIRECCIÓN | principal.ip | El valor se toma del campo ADDRESS en el registro sin procesar y se analiza como una dirección IP. |
| ADMINSTATE | additional.fields.value.string_value | El valor se toma del campo ADMINSTATE en el registro sin procesar. |
| AISCLIENTMDLEVEL | additional.fields.value.string_value | El valor se toma del campo AISCLIENTMDLEVEL en el registro sin procesar. |
| AISGENENABLED | additional.fields.value.string_value | El valor se toma del campo AISGENENABLED en el registro sin procesar. |
| AISPRIORITY | additional.fields.value.string_value | El valor se toma del campo AISPRIORITY en el registro sin procesar. |
| AISTXPERIOD | additional.fields.value.string_value | El valor se toma del campo AISTXPERIOD en el registro sin procesar. |
| AISTRIGGERTYPES | additional.fields.value.string_value | El valor se toma del campo AISTRIGGERTYPES en el registro sin procesar. |
| BUFFERSIZE | additional.fields.value.string_value | El valor se toma del campo BUFFERSIZE en el registro sin procesar. |
| CCIENABLED | additional.fields.value.string_value | El valor se toma del campo CCIENABLED en el registro sin procesar. |
| CCMINTERFACESTATUSTLVCONTROL | additional.fields.value.string_value | El valor se toma del campo CCMINTERFACESTATUSTLVCONTROL en el registro sin procesar. |
| CCMLTMPRIORITY | additional.fields.value.string_value | El valor se toma del campo CCMLTMPRIORITY en el registro sin procesar. |
| CFMTAGETHERTYPE | additional.fields.value.string_value | El valor se toma del campo CFMTAGETHERTYPE en el registro sin procesar. |
| CIR | additional.fields.value.string_value | El valor se toma del campo CIR en el registro sin procesar. |
| COS | additional.fields.value.string_value | El valor se toma del campo COS en el registro sin procesar. |
| CT | metadata.description | El valor se toma del campo CT en el registro sin procesar. |
| DESTBMAC | target.mac | El valor se toma del campo DESTBMAC en el registro sin procesar y se analiza como una dirección MAC. |
| DHCPCIDENABLED | additional.fields.value.string_value | El valor se toma del campo DHCPCIDENABLED en el registro sin procesar. |
| DHCPENABLED | additional.fields.value.string_value | El valor se toma del campo DHCPENABLED en el registro sin procesar. |
| DHCPHOSTNAME | network.dhcp.client_hostname | El valor se toma del campo DHCPHOSTNAME en el registro sin procesar. |
| DHCPHOSTNAMEENABLED | additional.fields.value.string_value | El valor se toma del campo DHCPHOSTNAMEENABLED en el registro sin procesar. |
| DHCPHOSTNAMETYPE | additional.fields.value.string_value | El valor se toma del campo DHCPHOSTNAMETYPE en el registro sin procesar. |
| DHCPLOGSERVERENABLED | additional.fields.value.string_value | El valor se toma del campo DHCPLOGSERVERENABLED en el registro sin procesar. |
| DHCPNTPSERVERENABLED | additional.fields.value.string_value | El valor se toma del campo DHCPNTPSERVERENABLED en el registro sin procesar. |
| DHCPV6CIDENABLED | additional.fields.value.string_value | El valor se toma del campo DHCPV6CIDENABLED en el registro sin procesar. |
| DHCPV6ENABLED | additional.fields.value.string_value | El valor se toma del campo DHCPV6ENABLED en el registro sin procesar. |
| DHCPV6ROLE | additional.fields.value.string_value | El valor se toma del campo DHCPV6ROLE en el registro sin procesar. |
| DHCPVENDORINFOTYPE | additional.fields.value.string_value | El valor se toma del campo DHCPVENDORINFOTYPE en el registro sin procesar. |
| DIR | additional.fields.value.string_value | El valor se toma del campo DIR en el registro sin procesar. |
| DIRECCIÓN | network.direction | El valor se establece en "OUTBOUND" si el campo DIRECTION del registro sin procesar es "UP" (sin distinción entre mayúsculas y minúsculas), en "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 en el registro sin procesar. |
| GUARANTEEDA2NBW | additional.fields.value.string_value | El valor se toma del campo GUARANTEEDA2NBW en el registro sin procesar. |
| HCOSMGMTENABLED | additional.fields.value.string_value | El valor se toma del campo HCOSMGMTENABLED en el registro sin procesar. |
| INT | additional.fields.value.string_value | El valor se toma del campo INT en el registro sin procesar. |
| IPMODE | additional.fields.value.string_value | El valor se toma del campo IPMODE en el registro sin procesar. |
| IPV6ADDR | principal.ip | El valor se toma del campo IPV6ADDR en el registro sin procesar y se analiza como una dirección IP. |
| IPV6ADDRPREFIXLENGTH | additional.fields.value.string_value | El valor se toma del campo IPV6ADDRPREFIXLENGTH en el registro sin procesar. |
| IPV6MTU | additional.fields.value.string_value | El valor se toma del campo IPV6MTU en el registro sin procesar. |
| ITAG | additional.fields.value.string_value | El valor se toma del campo ITAG en el registro sin procesar. |
| ITAGENABLED | additional.fields.value.string_value | El valor se toma del campo ITAGENABLED en el registro sin procesar. |
| LBMTXDESTTYPE | additional.fields.value.string_value | El valor se toma del campo LBMTXDESTTYPE en el registro sin procesar. |
| LBMTXNUMMSGS | additional.fields.value.string_value | El valor se toma del campo LBMTXNUMMSGS en el registro sin procesar. |
| LBMTXVLANDROPENABLE | additional.fields.value.string_value | El valor se toma del campo LBMTXVLANDROPENABLE en el registro sin procesar. |
| LBMTXVLANPRIORITY | additional.fields.value.string_value | El valor se toma del campo LBMTXVLANPRIORITY en el registro sin procesar. |
| LLRESPONDERENABLED | additional.fields.value.string_value | El valor se toma del campo LLRESPONDERENABLED en el registro sin procesar. |
| LLVIDLIST | additional.fields.value.string_value | El valor se toma del campo LLVIDLIST en el registro sin procesar. |
| LMDUALENDEDCOUNTALLPRIOS | additional.fields.value.string_value | El valor se toma del campo LMDUALENDEDCOUNTALLPRIOS en el registro sin procesar. |
| LMINPROFILEONLY | additional.fields.value.string_value | El valor se toma del campo LMINPROFILEONLY en el registro sin procesar. |
| LMRXCOUNTALLPRIOS | additional.fields.value.string_value | El valor se toma del campo LMRXCOUNTALLPRIOS en el registro sin procesar. |
| LMTXCOUNTALLPRIOS | additional.fields.value.string_value | El valor se toma del campo LMTXCOUNTALLPRIOS en el registro sin procesar. |
| UBICACIÓN | additional.fields.value.string_value | El valor se toma del campo LOC en el registro sin procesar. |
| LOCN | additional.fields.value.string_value | El valor se toma del campo LOCN en el registro sin procesar. |
| LOGINTIMEOUT | additional.fields.value.string_value | El valor se toma del campo LOGINTIMEOUT en el registro sin procesar. |
| LOOPBACKBLOCKINGENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKBLOCKINGENABLED en el registro sin procesar. |
| LOOPBACKCONFIG | additional.fields.value.string_value | El valor se toma del campo LOOPBACKCONFIG en el registro sin procesar. |
| LOOPBACKDESTMAC | target.mac | El valor se toma del campo LOOPBACKDESTMAC en el registro sin procesar y se analiza como una dirección MAC. |
| LOOPBACKDESTMACCONTROL | additional.fields.value.string_value | El valor se toma del campo LOOPBACKDESTMACCONTROL en el registro sin procesar. |
| LOOPBACKINNERVLAN1 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKINNERVLAN1 en el registro sin procesar. |
| LOOPBACKINNERVLAN1ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKINNERVLAN1ENABLED en el registro sin procesar. |
| LOOPBACKINNERVLAN2 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKINNERVLAN2 en el registro sin procesar. |
| LOOPBACKINNERVLAN2ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKINNERVLAN2ENABLED en el registro sin procesar. |
| LOOPBACKINNERVLAN3 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKINNERVLAN3 en el registro sin procesar. |
| LOOPBACKINNERVLAN3ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKINNERVLAN3ENABLED en el registro sin procesar. |
| LOOPBACKOUTERITAG1 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERITAG1 en el registro sin procesar. |
| LOOPBACKOUTERITAG1ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERITAG1ENABLED en el registro sin procesar. |
| LOOPBACKOUTERITAG2 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERITAG2 en el registro sin procesar. |
| LOOPBACKOUTERITAG2ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERITAG2ENABLED en el registro sin procesar. |
| LOOPBACKOUTERITAG3 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERITAG3 en el registro sin procesar. |
| LOOPBACKOUTERITAG3ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERITAG3ENABLED en el registro sin procesar. |
| LOOPBACKOUTERVLAN1 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERVLAN1 en el registro sin procesar. |
| LOOPBACKOUTERVLAN1ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERVLAN1ENABLED en el registro sin procesar. |
| LOOPBACKOUTERVLAN2 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERVLAN2 en el registro sin procesar. |
| LOOPBACKOUTERVLAN2ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERVLAN2ENABLED en el registro sin procesar. |
| LOOPBACKOUTERVLAN3 | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERVLAN3 en el registro sin procesar. |
| LOOPBACKOUTERVLAN3ENABLED | additional.fields.value.string_value | El valor se toma del campo LOOPBACKOUTERVLAN3ENABLED en el registro sin procesar. |
| LOOPBACKSOURCEMAC | principal.mac | El valor se toma del campo LOOPBACKSOURCEMAC en el registro sin procesar y se analiza como una dirección MAC. |
| LOOPBACKSWAPSADA | additional.fields.value.string_value | El valor se toma del campo LOOPBACKSWAPSADA en el registro sin procesar. |
| LOOPBACKTIMER | additional.fields.value.string_value | El valor se toma del campo LOOPBACKTIMER en el registro sin procesar. |
| LOWESTPRIODEFECT | additional.fields.value.string_value | El valor se toma del campo LOWESTPRIODEFECT en el registro sin procesar. |
| LTMTXDESTTYPE | additional.fields.value.string_value | El valor se toma del campo LTMTXDESTTYPE en el registro sin procesar. |
| LTMTXEGRESSID | metadata.product_log_id | El valor se toma del campo LTMTXEGRESSID en el registro sin procesar. |
| LTMTXFLAGS | additional.fields.value.string_value | El valor se toma del campo LTMTXFLAGS en el registro sin procesar. |
| LTMTXTTL | additional.fields.value.string_value | El valor se toma del campo LTMTXTTL en el registro sin procesar. |
| MT | additional.fields.value.string_value | El valor se toma del campo MT en el registro sin procesar. |
| MAXIMUMA2NBW | additional.fields.value.string_value | El valor se toma del campo MAXIMUMA2NBW en el registro sin procesar. |
| MVAL | additional.fields.value.string_value | El valor se toma del campo MVAL en el registro sin procesar. |
| NOMBRE | additional.fields.value.string_value | El valor se toma del campo NAME en el registro sin procesar. |
| NC | additional.fields.value.string_value | El valor se toma del campo NC en el registro sin procesar. |
| PORTEID | additional.fields.value.string_value | El valor se toma del campo PORTEID en el registro sin procesar. |
| PORTLLENABLED | additional.fields.value.string_value | El valor se toma del campo PORTLLENABLED en el registro sin procesar. |
| PRIMARYSERVER | target.ip | El valor se toma del campo PRIMARYSERVER en el registro sin procesar y se analiza como una dirección IP. |
| PRIMARYVID | additional.fields.value.string_value | El valor se toma del campo PRIMARYVID en el registro sin procesar. |
| QUEUEPROFILEID | additional.fields.value.string_value | El valor se toma del campo QUEUEPROFILEID en el registro sin procesar. |
| RXSHAPEREID | additional.fields.value.string_value | El valor se toma del campo RXSHAPEREID en el registro sin procesar. |
| SATRESPONDENABLED | additional.fields.value.string_value | El valor se toma del campo SATRESPONDENABLED en el registro sin procesar. |
| SE | additional.fields.value.string_value | El valor se toma del campo SE en el registro sin procesar. |
| SHAREDVIM | additional.fields.value.string_value | El valor se toma del campo SHAREDVIM en el registro sin procesar. |
| SVLANENABLED | additional.fields.value.string_value | El valor se toma del campo SVLANENABLED en el registro sin procesar. |
| SVLANID | additional.fields.value.string_value | El valor se toma del campo SVLANID en el registro sin procesar. |
| SYSLOCATION | principal.location.country_or_region | El valor se toma del campo SYSLOCATION en el registro sin procesar. |
| THVAL | additional.fields.value.string_value | El valor se toma del campo THVAL en el registro sin procesar. |
| TIPO | additional.fields.value.string_value | El valor se toma del campo TYPE en el registro sin procesar. |
| USERACCESSTYPE | additional.fields.value.string_value | El valor se toma del campo USERACCESSTYPE en el registro sin procesar. |
| USERAUTHKEY | additional.fields.value.string_value | El valor se toma del campo USERAUTHKEY en el registro sin procesar. |
| USERAUTHKEYLOCAL | additional.fields.value.string_value | El valor se toma del campo USERAUTHKEYLOCAL en el registro sin procesar. |
| USERAUTHPROTOCOL | additional.fields.value.string_value | El valor se toma del campo USERAUTHPROTOCOL en el registro sin procesar. |
| USERENGINEID | additional.fields.value.string_value | El valor se toma del campo USERENGINEID en el registro sin procesar. |
| USERKEYSLOCAL | additional.fields.value.string_value | El valor se toma del campo USERKEYSLOCAL en el registro sin procesar. |
| NOMBRE DE USUARIO | principal.user.userid | El valor se toma del campo USERNAME en el registro sin procesar. |
| USERPRIVKEY | additional.fields.value.string_value | El valor se toma del campo USERPRIVKEY en el registro sin procesar. |
| USERPRIVKEYLOCAL | additional.fields.value.string_value | El valor se toma del campo USERPRIVKEYLOCAL en el registro sin procesar. |
| USERPRIVPROTOCOL | additional.fields.value.string_value | El valor se toma del campo USERPRIVPROTOCOL en el registro sin procesar. |
| USERSECURITYLEVEL | additional.fields.value.string_value | El valor se toma del campo USERSECURITYLEVEL en el registro sin procesar. |
| USERSECURITYNAME | principal.user.user_display_name | El valor se toma del campo USERSECURITYNAME en el registro sin procesar. |
| aplicación | principal.application | El valor se toma del campo de aplicación que extrae el analizador de grok. |
| descripción | security_result.description | El valor se toma del campo de descripción que extrae el analizador de grok. |
| metadata.description | El valor se establece en "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 que extrae el analizador de grok y se convierte en segundos de época. | |
| metadata.event_type | El valor se establece según la siguiente lógica: - NETWORK_DHCP si network_dhcp_present es verdadero y principal_present o target_present es verdadero. : NETWORK_CONNECTION si target_present y principal_present son verdaderos. : USER_RESOURCE_ACCESS si user_present es verdadero. : STATUS_UPDATE si principal_present es verdadero. ; de lo contrario, GENERIC_EVENT |
|
| metadata.product_log_id | El valor se toma del campo LTMTXEGRESSID en el registro sin procesar. | |
| metadata.product_name | El valor se establece en "ADVA_FSP". | |
| metadata.vendor_name | El valor se establece en "ADVA_FSP". | |
| network.application_protocol | El valor se establece en "DHCP" si network_dhcp_present es verdadero y principal_present o target_present es verdadero. | |
| principal.hostname | El valor se toma del campo principal_hostname que extrae el analizador de grok, con los guiones bajos quitados. | |
| principal.ip | El valor se toma del campo IPADDR en el registro sin procesar y se analiza como una dirección IP. | |
| timestamp.seconds | El valor se toma del campo de marca de tiempo que extrae el analizador de grok y se convierte en segundos de época. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.