Introducción
Este documento describe el flujo de eventos entre AnyConnect y el gateway seguro durante un establecimiento de conexión SSLVPN.
Antecedentes
AnyConnect
AnyConnect es el cliente VPN de Cisco diseñado para los protocolos Secure Socket Layer (SSL) e Internet Key Exchange (IKEv2). Está disponible para la mayoría de las plataformas de escritorio y móviles. AnyConnect establece principalmente conexiones seguras con Firepower Threat Defence (FTD), Adaptive Security Appliances (ASA) o routers Cisco IOS® y Cisco IOS® XE llamados gateways seguros.
Gateway seguro
En la terminología de Cisco, un servidor VPN SSL se denomina gateway seguro, mientras que un servidor (IPSec) IKEv2 se conoce como gateway VPN de acceso remoto. Cisco admite la terminación del túnel SSL VPN en las siguientes plataformas:
- Cisco ASA (ASAv, 5500 y 5500-X Series)
- Cisco FTD (Series FTDv, 1000, 2100, 3100, 4100, 4200 y 9300)
- Cisco ISR serie 4000 e ISR G2
- Cisco CSR 1000v
- Cisco Catalyst 8000v
Flujo de conexión VPN SSL de AnyConnect
Los eventos que tienen lugar entre AnyConnect y el gateway seguro durante un establecimiento de conexión VPN SSL se dividen en seis fases:
1. Protocolo de enlace SSL
2. POST - Selección de grupo
3. POST - Autenticación de usuario con nombre de usuario/contraseña (Opcional)
4. Descargador VPN (opcional)
5. CONEXIÓN CSTP
6. Conexión DTLS (opcional)
Protocolo de enlace SSL
AnyConnect Client inicia el protocolo de enlace SSL después de completar el protocolo de control de transmisión (TCP) de enlace de 3 vías con un mensaje de saludo del cliente. El flujo de eventos y los puntos clave son los mencionados:
Hola de cliente
La sesión SSL comienza cuando el cliente envía un mensaje de saludo del cliente. En este mensaje:
- El ID de sesión SSL se establece en 0, lo que indica el inicio de una nueva sesión.
- La carga útil incluye los conjuntos de cifrado admitidos por el cliente y un nonce aleatorio generado por el cliente.
Hola de servidor
El servidor responde con un mensaje de saludo, que incluye:
- El conjunto de cifrado seleccionado de la lista proporcionada por el cliente.
- El servidor generó un ID de sesión SSL y un nombre aleatorio.
Certificado de servidor
Después del saludo del servidor, el servidor transmite su certificado SSL, que sirve como su identidad. Los puntos clave son:
- Si este certificado no supera una comprobación de validación estricta, AnyConnect bloquea el servidor de forma predeterminada.
- El usuario tiene la opción de deshabilitar este bloque, pero las conexiones subsiguientes muestran una advertencia hasta que se resuelven los errores notificados.
Solicitud de certificado de cliente
El servidor también puede solicitar un certificado de cliente, enviando una lista de nombre de sujeto de todos los certificados de las autoridades de certificados (CA) cargados en el gateway seguro. Esta solicitud tiene dos fines:
- Ayuda al cliente (usuario) a elegir el certificado de identidad correcto si hay varios certificados de ID disponibles.
- Asegura que el gateway seguro confía en el certificado devuelto, aunque debe seguir produciéndose la validación del certificado.
Intercambio de claves de cliente
A continuación, el cliente envía un mensaje de intercambio de claves de cliente, que incluye una clave secreta anterior a la maestra. Esta clave se cifra mediante:
- La clave pública del servidor desde el certificado del servidor, si el conjunto de cifrado seleccionado está basado en RSA (por ejemplo, TLS_RSA_WITH_AES_128_CBC_SHA)
- La clave pública DH del servidor proporcionada en el mensaje de saludo del servidor, si el conjunto de cifrado seleccionado está basado en DHE (por ejemplo, TLS_DHE_DSS_WITH_AES_256_CBC_SHA).
Basándose en el secreto anterior al maestro, el nonce aleatorio generado por el cliente y el nonce aleatorio generado por el servidor, tanto el cliente como el gateway seguro generan independientemente un secreto maestro. Este secreto principal se utiliza para derivar claves de sesión, lo que garantiza una comunicación segura entre el cliente y el servidor.
Sesión SSL 1
POST - Selección de grupo
Durante esta operación, el cliente no posee información sobre el perfil de conexión a menos que lo especifique explícitamente el usuario. El intento de conexión se dirige a la URL de gateway seguro (asa.example.com), como indica el elemento de acceso de grupo en la solicitud. El cliente indica su compatibilidad con la versión 2 de autenticación agregada, lo que representa una mejora significativa con respecto a la versión anterior, especialmente en lo que respecta a transacciones XML eficaces. Tanto el gateway seguro como el cliente deben coincidir en la versión que se va a utilizar. En los escenarios en los que el gateway seguro no admite la versión 2, se activa una operación POST adicional, lo que hace que el cliente recurra a la versión anterior.
En la respuesta HTTP, el gateway seguro indica lo siguiente:
- Versión de autenticación agregada que admite el gateway seguro.
- Lista de grupos de túneles y formulario de nombre de usuario/contraseña.
Nota: El formulario incluye un elemento select, que enumera los alias de grupo de todos los perfiles de conexión configurados en el gateway seguro. De forma predeterminada, uno de estos alias de grupo se resalta con el atributo booleano seleccionado = "true". Los elementos tunnel-group y group-alias corresponden a este perfil de conexión seleccionado.
POST - Selección de grupo 1
Si el usuario elige un perfil de conexión diferente de esta lista, se realiza otra operación POST. En este caso, el cliente envía una solicitud POST con el elemento group-select actualizado para reflejar el perfil de conexión elegido, como se ve en esta imagen.
POST - Selección de grupo 2
POST: autenticación de usuario
En esta operación, AnyConnect envía esta información al gateway seguro:
- Información de perfil de conexión seleccionada: Esto incluye el nombre del grupo de túnel y el alias del grupo tal como lo indicó el gateway seguro en la operación anterior.
- Nombre de usuario y contraseña: Las credenciales de autenticación del usuario.
Nota: Dado que este flujo es específico de la autenticación AAA, puede diferir de otros métodos de autenticación.
En respuesta a la operación POST, Secure Gateway envía un archivo XML que contiene esta información:
- ID de Sesión: No es lo mismo que el ID de sesión SSL.
- Token de sesión: Este token es utilizado posteriormente por el cliente como cookie de WebVPN.
- Estado de autenticación: Indicado por un elemento auth con id = success.
- Hash de certificado de servidor: Este hash se almacena en caché en el archivo preferences.xml.
- Elemento vpn-core-manifest: Este elemento indica la ruta y la versión del paquete principal de AnyConnect, junto con otros componentes como Dart, Postura, Postura de ISE, etc. El descargador de VPN lo utiliza en la siguiente sección.
- Elemento vpn-profile-manifest: Este elemento indica la ruta (el nombre del perfil) y el hash SHA-1 del perfil.
Nota: Si el cliente no tiene el perfil, el Descargador VPN en la siguiente sección lo descarga. Si el cliente ya tiene el perfil, el hash SHA-1 del perfil del cliente se compara con el del servidor. En caso de una discordancia, el Descargador de VPN sobrescribe el perfil del cliente con el de la puerta de enlace segura. Esto garantiza que el perfil de la puerta de enlace segura se aplica en el cliente después de la autenticación.
POST: autenticación de usuario
Descargador AnyConnect
AnyConnect Downloader siempre inicia una nueva sesión SSL, por lo que los usuarios pueden encontrar una segunda advertencia de certificado si el certificado de Secure Gateway no es de confianza. Durante esta fase, realiza operaciones GET independientes para cada elemento que se debe descargar.
Nota: Si el perfil del cliente se carga en Secure Gateway, es obligatorio descargarlo; de lo contrario, se finaliza todo el intento de conexión.
Descargador de VPN
CONEXIÓN CSTP
AnyConnect realiza una operación CONNECT como el paso final para establecer un canal seguro. Durante la operación CONNECT, el cliente AnyConnect envía varios atributos X-CSTP y X-DTLS para el gateway seguro para procesar. Secure Gateway responde con atributos X-CSTP y X-DTLS adicionales que el cliente aplica al intento de conexión actual. Este intercambio incluye X-CSTP-Post-Auth-XML, acompañado de un archivo XML, que es en gran medida similar al que se ve en el paso de autenticación POST-Usuario.
Después de recibir una respuesta satisfactoria, AnyConnect inicia el canal de datos TLS. Simultáneamente, la interfaz del adaptador virtual de AnyConnect se activa con un valor de MTU igual a X-DTLS-MTU, suponiendo que el intercambio de señales DTLS subsiguiente sea exitoso.
Conexión CSTP
Protocolo de enlace DTLS
Este intercambio de señales es relativamente rápido debido a los atributos intercambiados entre el cliente y el servidor durante el evento CONNECT. El intercambio de señales de seguridad de la capa de transporte del datagrama (DTLS) se realiza como sigue:
Cliente
X-DTLS-Master-Secret: El secreto principal DTLS lo genera el cliente y lo comparte con el servidor. Esta clave es crucial para establecer una sesión DTLS segura.
X-DTLS-CipherSuite: La lista de conjuntos de cifrado DTLS soportados por el cliente, indicando las capacidades de cifrado del cliente.
Servidor
X-DTLS-Session-ID: ID de sesión DTLS asignada por el servidor para que la utilice el cliente, lo que garantiza la continuidad de la sesión.
X-DTLS-CipherSuite: Conjunto de cifrado seleccionado por el servidor de la lista proporcionada por el cliente, lo que garantiza que ambas partes utilizan un método de cifrado compatible.
Nota: Mientras el intercambio de señales DTLS está en curso, el canal de datos TLS continúa funcionando. Esto garantiza que la transmisión de datos sea uniforme y segura durante el proceso de intercambio de señales. Una transición sin problemas al canal de cifrado de datos DTLS solo se produce después de que se haya completado el intercambio de señales DTLS.
Protocolo de enlace DTLS
Puerto DTLS bloqueado
En el caso de que el puerto DTLS se bloquee o el gateway seguro no pueda responder a los paquetes Hello del cliente DTLS, AnyConnect realiza un backoff exponencial con hasta cinco reintentos, comenzando con un retardo de 1 segundo y aumentando hasta 16 segundos.
Si estos intentos no tienen éxito, AnyConnect aplica la MTU de TLS real, según lo especificado por el valor X-CSTP-MTU devuelto por el gateway seguro durante la operación CONNECT, al adaptador virtual de AnyConnect. Dado que esta MTU difiere de la MTU aplicada anteriormente (X-DTLS-MTU), es necesario volver a configurar el adaptador virtual. Esta reconfiguración aparece para el usuario final como un intento de reconexión, aunque no se producen nuevas negociaciones durante el proceso. Una vez reconfigurado el adaptador virtual, el canal de datos TLS continúa funcionando.
Bloque de puerto DTLS
Información Relacionada