Recoger registros de VPN de Cisco

Disponible en:

En este documento se explica cómo ingerir registros de VPN de Cisco ASA en Google Security Operations mediante Bindplane. El analizador extrae campos de los mensajes syslog mediante patrones grok, que gestionan tanto los formatos syslog estándar como las estructuras de mensajes alternativas. Después, asigna los campos extraídos al modelo de datos unificado (UDM), categoriza los eventos en función de 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 gestiona IDs de evento específicos, aplica patrones y lógica de grok adicionales para extraer detalles relevantes y asignarlos a los campos de UDM correspondientes.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Un host Windows 2016 o posterior, o un host Linux con systemd
  • Si se ejecuta a través de un proxy, los puertos del cortafuegos están abiertos
  • Acceso privilegiado a Cisco ASA

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. Copia y guarda el ID de cliente de la sección Detalles de la organización.

Instalar el agente de Bindplane

Instala el agente de Bindplane en tu sistema operativo Windows o Linux siguiendo las instrucciones que se indican a continuación.

Instalación de ventanas

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el siguiente comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre un terminal con privilegios de superusuario o sudo.
  2. 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 ver más opciones de instalación, consulta la guía de instalación.

Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:
    • Busca el archivo config.yaml. Normalmente, 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).
  2. 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
    

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 Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar Syslog para Cisco ASA VPN

  1. Abre Cisco ASDM.
  2. Vaya a Configuración > Funciones > Propiedades > Registro > Configuración de registro.
  3. Selecciona la casilla Habilitar registro para habilitar syslog.
  4. Selecciona Servidores Syslog en Registro y haz clic en Añadir.
  5. Introduce los siguientes detalles de configuración en la ventana Add Syslog Server (Añadir servidor Syslog):
    • Interfaz: selecciona la interfaz para la comunicación saliente.
    • Dirección IP: introduce la dirección IP del agente de Bindplane.
    • Protocolo: selecciona UDP.
    • Puerto: introduce el número de puerto del agente de Bindplane.
    • Haz clic en Aceptar.
  6. Selecciona Filtros de registro en la sección Registro.
  7. Selecciona Servidores Syslog y haz clic en Editar.
  8. Selecciona Informativa en la lista como Filtrar por gravedad.
  9. Haz clic en Aceptar.
  10. 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 Derivada por el analizador en función de las palabras clave del mensaje de registro (por ejemplo, Denegar, Rechazar, Permitir o Aceptar. Maps para PERMITIR o BLOQUEAR.
action security_result.action_details Valor de cadena sin formato de la acción realizada (por ejemplo, "permitted" ("permitido"), "denied" ("denegado") o "disconnected" ("desconectado").
app_name principal.application El nombre de la aplicación utilizada por la entidad (por ejemplo, "CLI"). Extraído 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 IDM en el UDM.
assigned_ipv6 N/A Aunque se analiza, este campo no se asigna al objeto IDM en el UDM.
bytes_rcv network.received_bytes Número de bytes recibidos en la sesión. Extraído de log_mssg para el ID de evento 113019.
bytes_sent network.sent_bytes Número de bytes enviados en la sesión. Extraído de log_mssg para el ID de evento 113019.
cipher network.tls.cipher El cifrado usado en la sesión SSL. Extraído de message_info para el tipo de evento 725012.
cisco_message_number security_result.rule_name El número de mensaje de Cisco, extraído del campo eventtype.
cisco_severity security_result.severity_details 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 IDM en el UDM.
cumulative_total_count.key security_result.outcomes.key La clave "cumulative_total_count" se añade a la matriz security_result.outcomes.
cumulative_total_count.value security_result.outcomes.value El valor del recuento total acumulado, extraído de message_info.
current_average_rate.key security_result.outcomes.key La clave "current_average_rate" se añade a la matriz security_result.outcomes.
current_average_rate.value security_result.outcomes.value Valor de la tarifa media actual, extraído de message_info.
current_burst_rate.key security_result.outcomes.key La clave "current_burst_rate" se añade a la matriz security_result.outcomes.
current_burst_rate.value security_result.outcomes.value Valor de la tasa de ráfaga actual, extraído de message_info.
desc metadata.description Descripción del evento, extraída del mensaje de registro. Se usa cuando no hay una descripción más específica.
description metadata.description Una descripción más detallada del evento, extraída del mensaje de registro cuando está disponible.
destination_ip target.ip, target.asset.ip Dirección IP de destino, extraída de varios formatos de mensajes de registro.
destination_ip_port target.port o network.application_protocol Puerto de destino, extraído de varios formatos de mensajes de registro. Si el valor extraído no es un número, se trata como el protocolo de aplicación.
dst_email target.user.email_addresses o target.user.userid Dirección de correo electrónico o ID de usuario de destino, extraído de message_info. Si el valor coincide con un formato de correo electrónico, se añade a email_addresses. De lo contrario, se usa como userid.
dst_host target.hostname Nombre de host de destino, extraído de message_info.
dst_ip target.ip, target.asset.ip Dirección IP de destino, extraída del patrón grok principal u otros patrones específicos.
dst_port target.port Puerto de destino, extraído del patrón grok principal u 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 La fecha y la hora del evento, que se obtienen a partir de varios campos de marca de tiempo del registro sin procesar y se analizan mediante 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 obtener 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 Cadena del tipo de evento que se usa para obtener 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 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 Variable interna usada para la lógica, no asignada a UDM.
has_target_ip N/A Variable interna usada para la lógica, no asignada a UDM.
hostname principal.hostname, principal.asset.hostname Nombre de host de la entidad de seguridad, extraído de varios formatos de mensajes de registro.
hostname2 principal.hostname, principal.asset.hostname Nombre de host de la entidad principal, extraído como alternativa cuando hostname no está disponible.
icmp_code N/A Aunque se analiza, este campo no se asigna al objeto IDM en el UDM.
icmp_dst_ip target.ip, target.asset.ip Dirección IP de destino de un mensaje de error ICMP.
icmp_id N/A Aunque se analiza, este campo no se asigna al objeto IDM en el UDM.
icmp_src_ip principal.ip, principal.asset.ip Dirección IP de origen de un mensaje de error ICMP.
icmp_type N/A Aunque se analiza, este campo no se asigna al objeto IDM en el UDM.
intermediary_ip principal.ip, principal.asset.ip Dirección IP intermediaria, extraída de message_info para el ID de evento 111010.
invalid_ip N/A Variable interna usada para la lógica, no asignada a UDM.
ip_1 principal.ip, principal.asset.ip Dirección IP de origen extraída como alternativa cuando las IPs de origen y de 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 de destino son las mismas.
ipprotocol network.ip_protocol Protocolo IP, extraído de varios formatos de mensajes de registro y convertido a mayúsculas.
issuer network.tls.client.certificate.issuer Emisor del certificado de peer, extraído 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 rellenar el campo security_result.description y extraer acciones de autenticación.
login security_result.summary Estado de inicio de sesión, extraído de message_info.
max_configured_rate.key security_result.outcomes.key La clave "max_configured_rate" se añade a la matriz security_result.outcomes.
max_configured_rate.value security_result.outcomes.value Valor de la tasa máxima configurada, extraído de message_info.
message_details Varios campos La parte principal del mensaje de registro, que contiene detalles sobre el evento. Se analiza con varios patrones grok en función del ID de evento.
message_info metadata.description Se usa para rellenar el campo metadata.description cuando está disponible.
observer observer.hostname o observer.ip Nombre de host o dirección IP del observador, extraído del mensaje de registro.
observer_ip observer.ip Dirección IP del observador, extraída del campo observer.
peer_type N/A Aunque se analiza, este campo no se asigna al objeto 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 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 IDM en el UDM.
privilege_level_to N/A Aunque se analiza, este campo no se asigna al objeto 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 Protocolo usado en el evento, extraído de varios formatos de mensajes de registro. Si el protocolo es un protocolo IP estándar (ICMP, TCP, UDP o ESP), se asigna a network.ip_protocol. De lo contrario, se asigna a network.application_protocol.
reason security_result.description Motivo del evento, extraído de message_details para el ID de evento 113016.
remote_proxy_ip intermediary.ip Dirección IP del proxy remoto, extraída de message_details para el ID de evento 713041.
retrieved_file target.file.full_path Ruta del archivo recuperado, extraída de message_info.
security_action security_result.action Acción de seguridad, derivada por el analizador en función del contexto del evento.
security_category security_result.category Categoría de seguridad, derivada por el analizador en función del contexto del evento.
security_result.description security_result.description Descripción del resultado de seguridad, extraída o derivada del mensaje de registro.
security_result.severity security_result.severity Gravedad del resultado de seguridad, derivada del campo event_severity.
security_result.summary security_result.summary Resumen del resultado de seguridad, extraído o derivado del mensaje de registro.
sent_bytes network.sent_bytes Número de bytes enviados, extraído 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 usado como nombre de host cuando hostname no está disponible.
source_ip principal.ip, principal.asset.ip Dirección IP de origen, extraída de varios formatos de mensajes de registro.
source_ip_port principal.port Puerto de origen, extraído 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 origen, extraído de message_info. Si el valor coincide con un formato de correo electrónico, se añade a email_addresses. De lo contrario, se usa como userid.
src_ip principal.ip, principal.asset.ip Dirección IP de origen, extraída del patrón grok principal u otros patrones específicos.
src_port principal.port Puerto de origen, extraído del patrón grok principal u otros patrones específicos.
src_user principal.user.user_display_name Nombre visible del usuario de origen, extraído de message_details para los IDs de evento 713049 y 713120.
subject network.tls.client.certificate.subject Asunto del certificado de peer, 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 Dirección IP de destino, extraída de message_details para el ID de evento 113004.
target_user target.user.userid ID de 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 IDM en el UDM.
tcp_dst_ip target.ip, target.asset.ip Dirección IP de destino de la carga útil TCP original de un mensaje de error ICMP.
tcp_dst_port N/A Aunque se analiza, este campo no se asigna al objeto IDM en el UDM.
tcp_src_ip principal.ip, principal.asset.ip Dirección IP de origen de la carga útil TCP original de un mensaje de error ICMP.
tcp_src_port N/A Aunque se analiza, este campo no se asigna al objeto IDM en el UDM.
threshold N/A Aunque se analiza, este campo no se asigna al objeto 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 Marca de tiempo del evento, analizada mediante el filtro date.
ts_day @timestamp (parte de) Día del mes de la marca de tiempo, que se usa para crear el campo @timestamp.
ts_month @timestamp (parte de) Mes de la marca de tiempo, que se usa para crear el campo @timestamp.
ts_time @timestamp (parte de) Tiempo desde la marca de tiempo, que se usa para crear el campo @timestamp.
ts_year @timestamp (parte de) Año de la marca de tiempo, que se usa para crear el campo @timestamp.
tunnel_type N/A Aunque se analiza, este campo no se asigna al objeto IDM en el UDM.
user principal.user.userid, target.user.userid ID de usuario, extraído de varios formatos de mensajes de registro.
user_agent network.http.user_agent Cadena de user-agent extraída de message_details para el ID de evento 722055.
user_attr.key principal.user.attribute.labels.key Clave de un atributo de usuario, extraída de message_details para los IDs de evento 734003 y 734001.
user_attr.value principal.user.attribute.labels.value Valor de un atributo de usuario, extraído de message_details para los IDs de evento 734003 y 734001.
userid principal.user.userid 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 Codificado como "CISCO".
N/A metadata.product_name Codificado como "ASA VPN" o "VPN".
N/A metadata.event_type Determinado por la lógica del analizador en función de la presencia de determinados campos e IDs de evento. 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 Codificado como "CISCO_VPN".
N/A metadata.event_timestamp Copiado del campo @timestamp analizado.
N/A extensions.auth.type Se define como "VPN", "AUTHTYPE_UNSPECIFIED" o "MACHINE" en función del contexto del evento.
N/A security_result.about.resource.type Asigna el valor "PACKET FRAGMENT" al ID de evento 209005.
N/A is_alert Se asigna el valor true a los eventos de gravedad alta (event_severity 0 u 1).
N/A is_significant Se asigna el valor true a los eventos de gravedad alta (event_severity 0 u 1).

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.