Recopila registros del interruptor Cisco
En este documento, se explica cómo transferir registros de interruptores Cisco a Google Security Operations con un agente de Bindplane. El analizador extrae campos de los mensajes de SYSLOG y los asigna a un modelo de datos unificado (UDM) según patrones y palabras clave identificados. Controla una amplia variedad de eventos, como DHCP, SSH, intentos de acceso, tráfico de red y actualizaciones de estado del sistema, los clasifica y enriquece los datos con detalles de seguridad relevantes.
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 se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
- Asegúrate de tener acceso de administrador a un interruptor Cisco.
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
Instalación de 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 de 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: CISCO_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 Obtén el archivo de autenticación de transferencia 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 Services o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura Syslog en un switch Cisco
- Accede al interruptor Cisco.
Para escalar privilegios, ingresa el comando
enable
:Switch> enable Switch#
Para cambiar al modo de configuración, ingresa el comando
conf t
:Switch# conf t Switch(config)#
Ingresa los siguientes comandos:
logging host <bindplane-server-ip> transport <tcp/udp> port <port-number> logging source-interface <interface>
- Reemplaza
<bindplane-server-ip>
por la dirección IP del agente de Bindplane y<port-number>
por el puerto configurado. - Reemplaza
<tcp/udp>
por el protocolo de escucha configurado en el agente de Bindplane. (Por ejemplo,udp
). - Reemplaza
<interface>
por el ID de la interfaz de Cisco.
- Reemplaza
Para establecer el nivel de prioridad, ingresa el siguiente comando:
logging trap Informational logging console Informational logging severity Informational
Establece la facilidad de syslog:
logging facility local6
Ingresa el siguiente comando para habilitar las marcas de tiempo:
service timestamps log datetime
Guarda y cierra.
Para configurar la configuración para que sobreviva al reinicio, ingresa el siguiente comando:
copy running-config startup-config
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
acción | security_result.action_details | El valor de este campo se deriva del campo action en el registro sin procesar. |
día | ||
descripción | metadata.description | El valor de este campo se deriva del campo description en el registro sin procesar. |
descripción | security_result.description | El valor de este campo se deriva del campo description en el registro sin procesar. |
destination_ip | target.asset.ip | El valor de este campo se deriva del campo destination_ip en el registro sin procesar. |
destination_ip | target.ip | El valor de este campo se deriva del campo destination_ip en el registro sin procesar. |
destination_port | target.port | El valor de este campo se deriva del campo destination_port en el registro sin procesar. |
dispositivo | principal.asset.hostname | El valor de este campo se deriva del campo device en el registro sin procesar. |
dispositivo | principal.hostname | El valor de este campo se deriva del campo device en el registro sin procesar. |
dispositivo | target.asset.hostname | El valor de este campo se deriva del campo device en el registro sin procesar. |
dispositivo | target.hostname | El valor de este campo se deriva del campo device en el registro sin procesar. |
device_ip | principal.asset.ip | El valor de este campo se deriva del campo device_ip en el registro sin procesar. |
device_ip | principal.ip | El valor de este campo se deriva del campo device_ip en el registro sin procesar. |
device_ip | target.asset.ip | El valor de este campo se deriva del campo device_ip en el registro sin procesar. |
device_ip | target.ip | El valor de este campo se deriva del campo device_ip en el registro sin procesar. |
instalación | principal.resource.type | El valor de este campo se deriva del campo facility en el registro sin procesar. |
header_data | metadata.product_log_id | El valor de este campo se deriva del campo header_data en el registro sin procesar. |
header_data | target.asset.ip | El valor de este campo se deriva del campo header_data en el registro sin procesar. |
header_data | target.ip | El valor de este campo se deriva del campo header_data en el registro sin procesar. |
Nombre de host | principal.asset.hostname | El valor de este campo se deriva del campo hostname en el registro sin procesar. |
Nombre de host | principal.hostname | El valor de este campo se deriva del campo hostname en el registro sin procesar. |
ip | principal.asset.ip | El valor de este campo se deriva del campo ip en el registro sin procesar. |
ip | principal.ip | El valor de este campo se deriva del campo ip en el registro sin procesar. |
ip_address | principal.asset.ip | El valor de este campo se deriva del campo ip_address en el registro sin procesar. |
ip_address | principal.ip | El valor de este campo se deriva del campo ip_address en el registro sin procesar. |
ip_protocol | network.ip_protocol | El valor de este campo se deriva del campo ip_protocol en el registro sin procesar. |
mac | principal.mac | El valor de este campo se deriva del campo mac en el registro sin procesar. |
mnemotécnico | network.dhcp.opcode | El valor de este campo se deriva del campo mnemonic en el registro sin procesar. |
mnemotécnico | metadata.product_event_type | El valor de este campo se deriva del campo mnemonic en el registro sin procesar. |
mes | ||
p_ip | principal.asset.ip | El valor de este campo se deriva del campo p_ip en el registro sin procesar. |
p_ip | principal.ip | El valor de este campo se deriva del campo p_ip en el registro sin procesar. |
puerto | target.port | El valor de este campo se deriva del campo port en el registro sin procesar. |
priority | ||
protocol | network.ip_protocol | El valor de este campo se deriva del campo protocol en el registro sin procesar. |
Reason | ||
regla | security_result.rule_id | El valor de este campo se deriva del campo rule en el registro sin procesar. |
sec_result_action | security_result.action | El valor de este campo se deriva del campo sec_result_action en el registro sin procesar. |
gravedad, | ||
source | principal.asset.ip | El valor de este campo se deriva del campo source en el registro sin procesar. |
source | principal.ip | El valor de este campo se deriva del campo source en el registro sin procesar. |
source_ip | network.dhcp.ciaddr | El valor de este campo se deriva del campo source_ip en el registro sin procesar. |
source_ip | principal.asset.ip | El valor de este campo se deriva del campo source_ip en el registro sin procesar. |
source_ip | principal.ip | El valor de este campo se deriva del campo source_ip en el registro sin procesar. |
source_mac | network.dhcp.chaddr | El valor de este campo se deriva del campo source_mac en el registro sin procesar. |
source_port | principal.port | El valor de este campo se deriva del campo source_port en el registro sin procesar. |
resumen | security_result.summary | El valor de este campo se deriva del campo summary en el registro sin procesar. |
hora | ||
Zona horaria | ||
usuario | principal.user.userid | El valor de este campo se deriva del campo user en el registro sin procesar. |
usuario | target.user.userid | El valor de este campo se deriva del campo user en el registro sin procesar. |
cuando | ||
año | ||
extensions.auth.type | MACHINE | |
metadata.log_type | CISCO_SWITCH | |
metadata.vendor_name | Cisco | |
metadata.product_name | Switch Cisco | |
network.application_protocol | DHCP | |
network.dhcp.type | SOLICITUD |
Cambios
2025-02-18
Mejora:
- Se agregó compatibilidad con el nuevo patrón de registros SYSLOG.
2025-01-22
Mejora:
- Si
facility
esSEC_LOGIN
ymnemonic
esLOGIN_SUCCESS
, se asignadevice
aprinciple.hostname
yprincipal.asset.hostname
. - Si
facility
esSEC_LOGIN
ymnemonic
esLOGIN_FAILED
, se asignadevice
aprincipal.hostname
yprincipal.asset.hostname
.
2024-11-27
Mejora:
- Se agregaron nuevos patrones de Grok para analizar los registros de syslog con errores.
- Se asignó
username3
aprincipal.user.userid
. - Se asignó
login_status
asecurity_result.summary
.
2024-11-20
Mejora:
- Se agregó compatibilidad con el nuevo patrón de registros SYSLOG.
2024-11-06
Mejora:
- Se asignó
ecs.version
ametadata.product_version
. - Se asignaron
fileset.name
,flow.locality
,flow.id
,input.type
,netflow.exporter.source_id
ynetflow.exporter.uptime_millis
aadditional.fields
. - Se asignó
network.transport
anetwork.ip_protocol
. - Se asignó
netflow.post_nat_source_ipv4_address
aprincipal.ip
. - Se asignó
netflow.source_transport_port
aprincipal.port
. - Se asignó
network.direction
anetwork.direction
.
2024-10-22
Mejora:
- Se agregó un patrón Grok para analizar registros sin analizar.
- Se asignó
intermediary_ip
aintermediary.ip
- Se asignó
intermediary_hostname
aintermediary.hostname
2024-10-03
Mejora:
- Se agregó compatibilidad con el nuevo patrón de registros SYSLOG.
2024-09-24
Mejora:
- Se agregó compatibilidad con un nuevo formato de registros de syslog.
2024-08-26
Mejora:
- Cuando
principal_host
está vacío, solo se asignadevice
aprincipal.hostname
.
2024-07-01
Mejora:
- Se agregó un patrón Grok para analizar registros descartados válidos con un patrón nuevo.
- Además, se agregó un patrón Grok para recuperar
target_ip
del campoheader_data
.
2024-05-29
Mejora:
- Se agregó un patrón Grok para analizar registros descartados válidos con un patrón nuevo.
- Se agregó un patrón Grok para recuperar
principal_host
del campoheader_data
. - Se agregó un patrón Grok para recuperar
destination_ip
,src_mac
yhostname
del campodescription
. - Se asignó
principal_host
aprincipal.hostname
. - Se asignó
src_mac
aprincipal.mac
. - Se asignó
eventSummary
ametadata.product_event_type
. - Se asignó
description
asecurity_result.description
. - Se asignó
error_msg
asecurity_result.detection_fields
.
2024-05-22
Mejora:
- Se agregó un patrón de Grok para recuperar el nombre de host.
2024-05-08
Mejora:
- Se agregó un patrón de Grok para admitir registros en formato SYSLOG procesados.
- Se asignó
pid
aprincipal.process.pid
. - Se asignó
srcPort
aprincipal.port
. - Se asignó
device_ip
aprincipal.ip
yprincipal.asset.ip
. - Se asignó
srcUser
aprincipal.user.userid
. - Se asignó
username1
atarget.user.userid
. - Se asignó
command
atarget.process.command_line
. - Se asignó
PWD
atarget.process.file.full_path
. - Se asignó
host_name
a principal.hostnameand
principal.asset.hostname`. - Se asignaron
node_id
,cluster_id
,exception
,UniqueId
yapp_id
aadditional.fields
.
2023-12-08
Mejora:
- Se agregó compatibilidad con el nuevo patrón de registros SYSLOG y registros de par clave-valor.
- Se asignó
DEVICE
aprincipal.mac
. - Se asignó
SRC
aprincipal.ip
. - Se asignó
SPT
aprincipal.port
. - Se asignó
DST
atarget.ip
. - Se asignó
DPT
atarget.port
. - Se asignó
ID
anetwork.session_id
. - Se asignó
LEN
anetwork.session_duration.seconds
. - Se asignó
PROTO
anetwork.ip_protocol
. - Se asignaron
IN
,OUT
,PHYSIN
,WINDOW
,RES,
TOS,
PREC,
TTL,
URGP,
MAC,
radio,
vap,
auth_type,
sugg_band,
ssid_id,
ssid_profile_nameand
protocolto
additional.fields`. - Se asignó
client_mac
aprincipal.mac
. - Se asignó
aid
anetwork.session_id
. - Se asignó
rssi
aintermediary.asset.product_object_id
. - Se asignó
channel
asecurity_result.detection_fields
.
2023-11-05
Mejora:
- Se modificaron y agregaron nuevos patrones de Grok para analizar los registros de syslog con errores.
- Se agregó el filtro KV para analizar los registros de KV.
- Se asignaron
eventSummary
,dhcp_ip
,client_mac
,aid
yip_src
ametadata.product_event_type
,target.ip
,network.dhcp.chaddr
,network.session_id
yprincipal.ip
, respectivamente. - Se asignaron
mac
,src
,sport
,dst
,dport
,action
,protocol
,url
ysignature
aprincipal.mac
,principal.ip
,principal.port
,target.ip
,target.port
,security_result.action
,network.ip_protocol
,principal.url
y "additional.fields", respectivamente. - Para eventSummary,
splash_auth
asignómetadata.event_type
yextensions.auth.type
aUSER_LOGIN
yMACHINE
, respectivamente. - Para eventSummary,
association
asignóeventSummary
,aid
,rssi
,channel
,last_known_client_ip
yevent_type
asecurity_result.summary
,network.session_id
,intermediary.asset.product_object_id
,security_result.detection_fields
,principal.ip
ySTATUS_UPDATE
, respectivamente.
2023-04-27
Mejora:
- Se redujo el porcentaje genérico.
- Se quitaron los patrones de Grok innecesarios.
- Se agregó el patrón Grok para analizar los registros de syslog.
- Se agregó una verificación condicional para
source_ip
,destination_ip
. - Si
source_ip
ydestination_ip
están presentes, asignaevent_type
aNETWORK_CONNECTION
. - Si
source_ip
está presente ydestination_ip
no, asignaevent_type
aSTATUS_UPDATE
. - Se asignó
pid
atarget.process.pid
. - Se asignó
app_name
atarget.application
.
24-3-2023
Corrección de errores:
- Se agregó el patrón y la asignación de Grok para los registros en los que los tipos de mensajes son
FILECPY
,REJECT
,CONNECT
oDISCONNECT
.
2023-01-24
Mejora:
- Se modificaron los patrones de Grok para admitir registros con zona horaria.
- Se asignó "ip_address" a "principal.ip".
- Cuando
mnemonic
esNBR_RESET
y ip_address está presente ,metadata.event_type
se establece comoSTATUS_UPDATE
.
2022-07-21
Mejora:
- Se agregó el patrón grok y se mejoró el analizador para analizar los registros que se descartaban (registros sin "%--").
- Se asignó "hostname" a "principal.hostname".
- Se asignó "source_ip" a "principal.ip"
- Se asignó "destination_ip" a "target.ip".
- Se asignó "ip_protocol" a "network.ip_protocol".
- Se asignó "summary" a "security_result.summary".
- Se asignó "header_data" a "metadata.product_log_id".
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.