Recopila registros del conmutador Arista
Este analizador extrae campos de los registros de conmutadores de Arista y controla los formatos JSON y syslog. Utiliza patrones de Grok para analizar varios tipos de mensajes de registro, asignar los campos extraídos al UDM y enriquecer los eventos con metadatos, como el tipo de evento, la gravedad y la información de la entidad principal o el objetivo, según los detalles extraídos.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de usar Windows 2016 o una versión posterior, o un host de Linux con
systemd
. - Si ejecutas la herramienta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
- Arista EOS 4.23.x y versiones posteriores instaladas y accesibles
- Asegúrate de tener acceso con privilegios en el conmutador Arista EOS.
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- 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 SIEM Settings > Profile.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
Instalación en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
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 raíz o sudo.
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
- 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
,vi
o Bloc de notas).
- Ubica el archivo
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: '/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 ingestion_labels: log_type: ARISTA_SWITCH raw_log_field: body 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_id>
por el ID de cliente real.Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Cómo obtener 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-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola de Servicios o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Cómo configurar Syslog en un conmutador Arista
- Accede al conmutador Arista.
Ve al modo de configuración:
Arista# config terminal
Proporciona el conmutador con la siguiente configuración para enviar registros al agente de Bindplane.
Arista(config)# logging host <bindplane-server-ip> <port-number> protocol [tcp/udp] Arista(config)# logging trap information Arista(config)# copy running-config startup-config
* Replace `<bindplane-server-ip>` with Bindplane agent IP address and `<port-number>` with the port configured to listen.
Ingresa la configuración adicional para los registros de ejecución de comandos:
Arista (config)# aaa accounting commands all console start-stop logging Arista (config)# aaa accounting commands all default start-stop logging Arista (config)# aaa accounting exec console start-stop logging Arista (config)# aaa accounting exec default start-stop logging Arista (config)# copy running-config startup-config
Ingresa la configuración adicional para los registros de acceso:
Arista (config)# aaa authentication policy on-success log Arista (config)# aaa authentication policy on-failure log Arista (config)# copy running-config startup-config
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
appname |
target.application |
Se asigna directamente desde el campo appname . |
description |
metadata.description |
Se asigna directamente desde el campo description , que se extrae del campo message con patrones de Grok basados en product_event_type . |
dst_ip |
target.ip , target.asset.ip |
Se asigna directamente desde el campo dst_ip , que se extrae del campo message con patrones de Grok. |
dst_mac |
target.mac |
Se asigna directamente desde el campo dst_mac , que se extrae del campo message con patrones de Grok. |
dst_port |
target.port |
Se asigna directamente desde el campo dst_port , que se extrae del campo message con patrones de Grok. |
facility |
additional.fields[facility].string_value |
Se asigna directamente desde el campo facility . |
hostname |
principal.hostname , principal.asset.hostname |
Se asigna directamente desde el campo hostname . |
inner_msg |
metadata.description |
Se asigna directamente desde el campo inner_msg , que se extrae del campo message con patrones de Grok. |
ip_protocol |
network.ip_protocol |
Se asigna directamente desde el campo ip_protocol , que se extrae del campo message con patrones de Grok. Si el valor es "tcp", se convierte en "TCP". Si el tipo de evento es "NO_IGMP_QUERIER", se establece en "IGMP". |
pid |
principal.process.pid |
Se asigna directamente desde el campo pid , que se extrae del campo message con patrones de Grok. |
prin_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo prin_ip , que se extrae del campo message con patrones de Grok. |
product_event_type |
metadata.product_event_type |
Se asigna directamente desde el campo product_event_type , que se extrae del campo message con patrones de Grok. |
proto |
network.application_protocol |
Si el campo proto es "sshd", el campo UDM se establece en "SSH". |
severity |
security_result.severity , security_result.severity_details |
El security_result.severity se deriva del campo severity según estas asignaciones: "DEFAULT", "DEBUG", "INFO", "NOTICE" -> "INFORMATIONAL"; "WARNING", "ERROR", "ERR", "WARN" -> "MEDIUM"; "CRITICAL", "ALERT", "EMERGENCY" -> "HIGH". El valor sin procesar de severity se asigna a security_result.severity_details . |
session_id |
network.session_id |
Se asigna directamente desde el campo session_id , que se extrae del campo message con patrones de Grok. |
source_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo source_ip , que se extrae del campo message con patrones de Grok. |
source_port |
principal.port |
Se asigna directamente desde el campo source_port , que se extrae del campo message con patrones de Grok. |
src_ip |
principal.ip , principal.asset.ip |
Se asigna directamente desde el campo src_ip , que se extrae del campo message con patrones de Grok. |
table_name |
target.resource.name |
Se asigna directamente desde el campo table_name , que se extrae del campo message con patrones de Grok. Si este campo se completa, target.resource.resource_type se establece en "TABLE". |
target_host |
target.hostname , target.asset.hostname |
Se asigna directamente desde el campo target_host , que se extrae del campo message con patrones de Grok. |
target_ip |
target.ip , target.asset.ip |
Se asigna directamente desde el campo target_ip , que se extrae del campo message con patrones de Grok. |
target_package |
target.process.command_line |
Se asigna directamente desde el campo target_package , que se extrae del campo message con patrones de Grok. |
target_port |
target.port |
Se asigna directamente desde el campo target_port , que se extrae del campo message con patrones de Grok. |
timestamp |
metadata.event_timestamp |
Se asigna directamente desde el campo timestamp después de analizarse en un objeto de marca de tiempo. |
user |
principal.user.userid |
Se asigna directamente desde el campo user , que se extrae del campo message con patrones de Grok. |
user_name |
target.user.userid |
Se asigna directamente desde el campo user_name , que se extrae del campo message con patrones de Grok. |
vrf |
additional.fields[vrf].string_value |
Se asigna directamente desde el campo vrf , que se extrae del campo message con patrones de Grok. Se deriva de una combinación de los campos has_principal , has_target , user , message , product_event_type y description con una lógica condicional compleja, como se describe en el código del analizador. El valor predeterminado es "GENERIC_EVENT". Se codifica de forma rígida como "ARISTA_SWITCH". Se codificó como "Arista Switch". Se codificó como "Arista". Se establece en "BLOCK" si el campo description contiene "connection rejected". |
dpid |
additional.fields[DPID].string_value |
Se asigna directamente desde el campo dpid . |
intf |
additional.fields[intf].string_value |
Se asigna directamente desde el campo intf . |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.