Recopila registros de VPN de Cisco
En este documento, se explica cómo transferir registros de VPN de Cisco ASA a Google Security Operations con Bindplane. El analizador extrae campos de los mensajes de syslog con patrones de Grok, y controla tanto los formatos de syslog estándar como las estructuras de mensajes alternativos. Luego, asigna los campos extraídos al Modelo de datos unificado (UDM), categoriza los eventos según los IDs y la información extraída, y enriquece los datos con metadatos como el proveedor, el producto y el tipo de evento. El analizador también controla IDs de eventos específicos, aplica patrones y lógica de grok adicionales para extraer detalles relevantes y asignarlos a los campos correspondientes del UDM.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Un host de Windows 2016 o posterior, o un host de Linux con
systemd
- Si se ejecuta detrás de un proxy, los puertos de firewall están abiertos.
- Acceso privilegiado a Cisco ASA
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
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 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 la 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_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: 'CISCO_VPN' 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_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 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
Configura Syslog para la VPN de Cisco ASA
- Abre Cisco ASDM.
- Ve a Configuration > Features > Properties > Logging > Logging Setup.
- Selecciona la casilla de verificación Habilitar registro para habilitar syslog.
- Selecciona Syslog Servers en Logging y haz clic en Add.
- Ingresa los siguientes detalles de configuración en la ventana Agregar servidor Syslog:
- Interfaz: Selecciona la interfaz para la comunicación saliente.
- Dirección IP: Ingresa la dirección IP del agente de Bindplane.
- Protocolo: Selecciona UDP.
- Puerto: Ingresa el número de puerto del agente de Bindplane.
- Haz clic en Aceptar.
- Selecciona Logging Filters en la sección logging.
- Selecciona Servidores Syslog y haz clic en Editar.
- Selecciona Informativo en la lista como el Filtro por gravedad.
- Haz clic en Aceptar.
- Haz clic en Aplicar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
accesslist |
target.resource.name |
Se extrae de message_info cuando eventtype es "ASA-4-106103". Representa el nombre de la lista de acceso. |
action |
security_result.action |
El analizador lo deriva en función de las palabras clave del mensaje de registro (p.ej., "Denegar", "Rechazar", "Permitir", "Aceptar"). Se asigna a ALLOW o BLOCK. |
action |
security_result.action_details |
Es el valor de cadena sin procesar de la acción realizada (p.ej., "permitido", "denegado", "desconectado"). |
app_name |
principal.application |
Nombre de la aplicación que usa el principal (p.ej., "CLI"). Se extrajo de message_details para los IDs de evento 111008, 111009 y 111010. |
assigned_ipv4 |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
assigned_ipv6 |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
bytes_rcv |
network.received_bytes |
Es la cantidad de bytes recibidos en la sesión. Se extrajo de log_mssg para el ID de evento 113019. |
bytes_sent |
network.sent_bytes |
Es la cantidad de bytes enviados en la sesión. Se extrajo de log_mssg para el ID de evento 113019. |
cipher |
network.tls.cipher |
Es el algoritmo de cifrado que se usa para la sesión SSL. Se extrajo de message_info para el tipo de evento 725012. |
cisco_message_number |
security_result.rule_name |
Es el número de mensaje de Cisco, que se extrae del campo eventtype . |
cisco_severity |
security_result.severity_details |
Es el nivel de gravedad sin procesar de Cisco, extraído del campo eventtype . |
command |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
cumulative_total_count.key |
security_result.outcomes.key |
La clave "cumulative_total_count" se agrega al array security_result.outcomes . |
cumulative_total_count.value |
security_result.outcomes.value |
Es el valor del recuento total acumulativo, extraído de message_info . |
current_average_rate.key |
security_result.outcomes.key |
La clave "current_average_rate" se agrega al array security_result.outcomes . |
current_average_rate.value |
security_result.outcomes.value |
Es el valor de la tasa promedio actual, extraído de message_info . |
current_burst_rate.key |
security_result.outcomes.key |
La clave "current_burst_rate" se agrega al array security_result.outcomes . |
current_burst_rate.value |
security_result.outcomes.value |
Es el valor de la tasa de ráfaga actual, extraído de message_info . |
desc |
metadata.description |
Es la descripción del evento, extraída del mensaje de registro. Se usa cuando no hay una descripción más específica disponible. |
description |
metadata.description |
Es una descripción más detallada del evento, extraída del mensaje de registro cuando está disponible. |
destination_ip |
target.ip , target.asset.ip |
Es la dirección IP de destino, que se extrae de varios formatos de mensajes de registro. |
destination_ip_port |
target.port o network.application_protocol |
Es el puerto de destino, que se extrae de varios formatos de mensajes de registro. Si el valor extraído no es un número, se trata como el protocolo de la aplicación. |
dst_email |
target.user.email_addresses o target.user.userid |
Es la dirección de correo electrónico o el ID de usuario de destino, extraídos de message_info . Si el valor coincide con un formato de correo electrónico, se agrega a email_addresses ; de lo contrario, se usa como userid . |
dst_host |
target.hostname |
Es el nombre de host de destino, que se extrae de message_info . |
dst_ip |
target.ip , target.asset.ip |
Es la dirección IP de destino, que se extrae del patrón grok principal o de otros patrones específicos. |
dst_port |
target.port |
Es el puerto de destino, que se extrae del patrón de Grok principal o de otros patrones específicos. |
duration |
network.session_duration |
Duración de la sesión, extraída de message_details y convertida a segundos. |
event_date |
@timestamp |
Fecha y hora del evento, que se construye a partir de varios campos de marca de tiempo en el registro sin procesar y se analiza con el filtro date . |
event_id |
metadata.product_event_type (parte de) |
Se usa en combinación con event_severity para formar el campo metadata.product_event_type . |
event_name |
metadata.product_event_type (parte de) |
Se usa en combinación con event_severity y event_type para formar el campo metadata.product_event_type cuando está disponible. |
event_severity |
metadata.product_event_type (parte de), security_result.severity , is_alert , is_significant |
Se usa en combinación con event_id o event_name y event_type para formar el campo metadata.product_event_type . También se usa para derivar los campos security_result.severity , is_alert y is_significant . |
event_type |
metadata.product_event_type (parte de) |
Se usa en combinación con event_name y event_severity para formar el campo metadata.product_event_type cuando está disponible. |
eventtype |
metadata.product_event_type , security_result.rule_name , security_result.severity_details , security_result.severity |
Es la cadena del tipo de evento que se usa para derivar los campos metadata.product_event_type , security_result.rule_name , security_result.severity_details y security_result.severity . |
fragment_id |
security_result.about.resource.id |
Es el ID del fragmento de IP, extraído de message_details para el ID de evento 209005. |
group |
principal.group.group_display_name , principal.user.group_identifiers , target.user.group_identifiers |
Nombre del grupo, extraído de varios formatos de mensajes de registro. |
group_name |
principal.group.group_display_name |
Nombre del grupo extraído del campo group cuando es un nombre de host. |
has_principal_ip |
N/A | Es una variable interna que se usa para la lógica y no se asigna al UDM. |
has_target_ip |
N/A | Es una variable interna que se usa para la lógica y no se asigna al UDM. |
hostname |
principal.hostname , principal.asset.hostname |
Es el nombre de host de la entidad principal, que se extrae de varios formatos de mensajes de registro. |
hostname2 |
principal.hostname , principal.asset.hostname |
Es el nombre de host del principal, que se extrae como alternativa cuando hostname no está disponible. |
icmp_code |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
icmp_dst_ip |
target.ip , target.asset.ip |
Es la dirección IP de destino de un mensaje de error de ICMP. |
icmp_id |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
icmp_src_ip |
principal.ip , principal.asset.ip |
Es la dirección IP de origen de un mensaje de error de ICMP. |
icmp_type |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
intermediary_ip |
principal.ip , principal.asset.ip |
Dirección IP intermedia, extraída de message_info para el ID de evento 111010. |
invalid_ip |
N/A | Es una variable interna que se usa para la lógica y no se asigna al UDM. |
ip_1 |
principal.ip , principal.asset.ip |
Dirección IP de origen extraída como alternativa cuando las IPs de origen y destino son las mismas. |
ip_2 |
target.ip , target.asset.ip |
Dirección IP de destino extraída como alternativa cuando las IPs de origen y destino son las mismas. |
ipprotocol |
network.ip_protocol |
Protocolo de IP, extraído de varios formatos de mensajes de registro y convertido a mayúsculas. |
issuer |
network.tls.client.certificate.issuer |
Es la entidad emisora del certificado de la entidad par, que se extrae de message_details para el ID de evento 717037. |
local_proxy_ip |
intermediary.ip |
Dirección IP del proxy local, extraída de message_details para el ID de evento 713041. |
log_mssg |
security_result.description , sr.action |
Se usa para completar el campo security_result.description y extraer acciones de autenticación. |
login |
security_result.summary |
Estado de acceso, extraído de message_info . |
max_configured_rate.key |
security_result.outcomes.key |
La clave "max_configured_rate" se agrega al array security_result.outcomes . |
max_configured_rate.value |
security_result.outcomes.value |
Es el valor de la tasa máxima configurada, extraído de message_info . |
message_details |
Varios campos | Es la parte principal del mensaje de registro, que contiene detalles sobre el evento. Se analiza con varios patrones de Grok según el ID del evento. |
message_info |
metadata.description |
Se usa para propagar el campo metadata.description cuando está disponible. |
observer |
observer.hostname o observer.ip |
Es el nombre de host o la dirección IP del observador, que se extrae del mensaje de registro. |
observer_ip |
observer.ip |
Es la dirección IP del observador, que se extrae del campo observer . |
peer_type |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
policy |
target.resource.name |
Nombre de la política, extraído de message_details para el ID de evento 113003. |
policy_name |
target.resource.name |
Nombre de la política, extraído de message_details para los IDs de evento 113009 y 113011. |
principal_ip |
principal.ip , principal.asset.ip |
Es la dirección IP principal, extraída de message_details para el ID de evento 113009. |
privilege_level_from |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
privilege_level_to |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
process |
principal.process.command_line |
Nombre del proceso, extraído de message_details para el ID de evento 711004. |
protocol |
network.ip_protocol o network.application_protocol |
Es el protocolo que se usó en el evento, extraído de varios formatos de mensajes de registro. Si el protocolo es un protocolo IP estándar (ICMP, TCP, UDP, ESP), se asigna a network.ip_protocol ; de lo contrario, se asigna a network.application_protocol . |
reason |
security_result.description |
Es el motivo del evento, extraído de message_details para el ID de evento 113016. |
remote_proxy_ip |
intermediary.ip |
Es la dirección IP del proxy remoto, extraída de message_details para el ID de evento 713041. |
retrieved_file |
target.file.full_path |
Es la ruta de acceso al archivo recuperado, extraída de message_info . |
security_action |
security_result.action |
Es la acción de seguridad que deriva el analizador en función del contexto del evento. |
security_category |
security_result.category |
Es la categoría de seguridad que deriva el analizador en función del contexto del evento. |
security_result.description |
security_result.description |
Es la descripción del resultado de seguridad, extraída o derivada del mensaje de registro. |
security_result.severity |
security_result.severity |
Es la gravedad del resultado de seguridad, que se deriva del campo event_severity . |
security_result.summary |
security_result.summary |
Es el resumen del resultado de seguridad, extraído o derivado del mensaje de registro. |
sent_bytes |
network.sent_bytes |
Cantidad de bytes enviados, extraída de message_info . |
ses_id |
network.session_id |
ID de sesión, extraído de message_info . |
session_id |
network.session_id |
ID de sesión, extraído de message_info . |
sess_type |
principal.hostname , principal.asset.hostname |
Tipo de sesión, extraído de log_mssg y utilizado como nombre de host cuando hostname no está disponible. |
source_ip |
principal.ip , principal.asset.ip |
Es la dirección IP de origen, que se extrae de varios formatos de mensajes de registro. |
source_ip_port |
principal.port |
Es el puerto de origen, que se extrae de varios formatos de mensajes de registro. |
src_email |
principal.user.email_addresses o principal.user.userid |
Dirección de correo electrónico o ID de usuario de la fuente, extraídos de message_info . Si el valor coincide con un formato de correo electrónico, se agrega a email_addresses ; de lo contrario, se usa como userid . |
src_ip |
principal.ip , principal.asset.ip |
Es la dirección IP de origen, que se extrae del patrón grok principal o de otros patrones específicos. |
src_port |
principal.port |
Es el puerto de origen, que se extrae del patrón grok principal o de otros patrones específicos. |
src_user |
principal.user.user_display_name |
Nombre visible del usuario fuente, extraído de message_details para los IDs de evento 713049 y 713120. |
subject |
network.tls.client.certificate.subject |
Es el asunto del certificado de la entidad de certificación, extraído de message_details para el ID de evento 717037. |
summary |
security_result.summary |
Resumen del evento, extraído de message_details para el ID de evento 113016. |
target_host |
target.hostname |
Nombre de host de destino, extraído de message_details para el ID de evento 113004. |
target_ip |
target.ip , target.asset.ip |
Es la dirección IP de destino, extraída de message_details para el ID de evento 113004. |
target_user |
target.user.userid |
Es el ID del usuario objetivo, extraído de message_details para el ID de evento 113003. |
task_duration |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
tcp_dst_ip |
target.ip , target.asset.ip |
Es la dirección IP de destino de la carga útil TCP original de un mensaje de error de ICMP. |
tcp_dst_port |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
tcp_src_ip |
principal.ip , principal.asset.ip |
Es la dirección IP de origen de la carga útil TCP original de un mensaje de error de ICMP. |
tcp_src_port |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
threshold |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
tls_version |
network.tls.version |
Versión de TLS, extraída de message_details para el ID de evento 725002. |
ts |
@timestamp |
Es la marca de tiempo del evento, analizada con el filtro date . |
ts_day |
@timestamp (parte de) |
Día del mes de la marca de tiempo, que se usa para construir el campo @timestamp . |
ts_month |
@timestamp (parte de) |
Mes de la marca de tiempo, que se usa para construir el campo @timestamp . |
ts_time |
@timestamp (parte de) |
Es la hora de la marca de tiempo, que se usa para construir el campo @timestamp . |
ts_year |
@timestamp (parte de) |
Año de la marca de tiempo, que se usa para construir el campo @timestamp . |
tunnel_type |
N/A | Aunque se analiza, este campo no se asigna al objeto del IDM en el UDM. |
user |
principal.user.userid , target.user.userid |
Es el ID de usuario, que se extrae de varios formatos de mensajes de registro. |
user_agent |
network.http.user_agent |
Es la cadena del usuario-agente, extraída de message_details para el ID de evento 722055. |
user_attr.key |
principal.user.attribute.labels.key |
Es la clave de un atributo del usuario, extraída de message_details para los IDs de evento 734003 y 734001. |
user_attr.value |
principal.user.attribute.labels.value |
Es el valor de un atributo del usuario, extraído de message_details para los IDs de evento 734003 y 734001. |
userid |
principal.user.userid |
Es el ID de usuario, extraído de message_details para el ID de evento 106103. |
username |
principal.user.userid |
Nombre de usuario, extraído de message_details para los IDs de evento 111008, 111009, 111010 y 113008. |
N/A | metadata.vendor_name |
Se codifica como "CISCO". |
N/A | metadata.product_name |
Se codifica como "VPN de ASA" o "VPN". |
N/A | metadata.event_type |
La lógica del analizador la determina en función de la presencia de ciertos campos y IDs de eventos. Puede ser GENERIC_EVENT, NETWORK_CONNECTION, STATUS_UPDATE, NETWORK_FTP, USER_LOGIN, USER_LOGOUT, NETWORK_UNCATEGORIZED, USER_UNCATEGORIZED o NETWORK_FLOW. |
N/A | metadata.log_type |
Se codifica como "CISCO_VPN". |
N/A | metadata.event_timestamp |
Se copió del campo @timestamp analizado. |
N/A | extensions.auth.type |
Se establece como "VPN", "AUTHTYPE_UNSPECIFIED" o "MACHINE" según el contexto del evento. |
N/A | security_result.about.resource.type |
Se establece en "PACKET FRAGMENT" para el ID de evento 209005. |
N/A | is_alert |
Se establece en verdadero para los eventos de gravedad alta (event_severity 0 o 1). |
N/A | is_significant |
Se establece en verdadero para los eventos de gravedad alta (event_severity 0 o 1). |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.