Introducción
Este documento describe la reanudación de la sesión de seguridad de la capa de transporte (TLS) en Cisco Identity Services Engine (ISE).
Prerequisites
Requirements
- Conocimiento del proceso de enlace de seguridad de la capa de transporte (TLS).
- Conocimiento del flujo del protocolo de autenticación extensible protegido (PEAP)
- Conocimientos de Cisco Identity Services Engine
Componentes Utilizados
La información que contiene este documento se basa en estas versiones de software y hardware
- Cisco Identity Services Engine 3.2
- Máquina virtual (VM) ISE
- PC con Windows 10
La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Antecedentes
La reanudación de la sesión TLS es una técnica utilizada para eliminar la sobrecarga del intercambio de señales TLS inicial. Permite que un cliente y un servidor que hayan establecido previamente una sesión TLS reanuden esa sesión sin repetir el proceso de intercambio de señales que consume muchos recursos.
Ventajas
- Reduce la latencia al evitar los pasos que requieren muchos recursos del intercambio de señales inicial y el tiempo necesario para hacerlo.
- También reduce la carga computacional en el servidor al omitir los procesos intensivos de intercambio de claves y validación de certificados.
Configurar
En ISE, para habilitar la sesión TLS, reanude PEAP:
Administration > System > Settings > Protocols > PEAP > check the Enable PEAP Session Resume
De forma predeterminada, ISE mantiene la sesión durante 7200 segundos.
Opcionalmente, puede habilitar Enable Fast Reconnect, que a su vez omite el método interno de PEAP y permite una reautenticación aún más rápida. Es recomendable en aplicaciones como la itinerancia inalámbrica.
Configuración de reanudación de sesión de ISE PEAP
La reconexión rápida también debe estar habilitada en el solicitante.
Esta configuración es para que el suplicante nativo de Windows habilite Fast Reconnect.
Configuración de suplicante de Windows 10
Esta configuración es para que el editor de perfiles del módulo de acceso a la red (NAM) de AnyConnect habilite la reconexión rápida.
Configuración de NAM de AnyConnect
Verificación
Autenticación inicial
En la autenticación PEAP inicial, puede ver que el campo Id. de sesión está en blanco en el saludo del cliente durante el intercambio de señales TLS.
Protocolo de enlace TLS inicial
ISE responde con el saludo del servidor, que incluye un ID de sesión 869175266faf4eec5fb4334f819e25221fa0cf3cbf0e458806369063dba59207 junto con el certificado y la clave del servidor.
Saludo inicial del servidor con ID de sesión
En prrt-server.log, puede ver los mensajes de entrada en contacto junto con el ID de sesión y que se ha conservado en la memoria caché.
Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x14), ret: 1, long string: SSLv3/TLS read client hello,SSLConnection.cpp:4495
Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY received client hello message,SSLConnection.cpp:4498
Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 5,SSLConnection.cpp:4510
Eap,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,cntx=0000452308,sesn=labpan01/494696177/7940,CPMSessionID=0A6A25D0000000100030EDBC,user=host/LABPCSK.vmlab.local,CallingStationID=B4-96-91-26-DE-2E,FramedIPAddress=10.106.37.25,CLIENT HELLO, new session,EapTlsProtocol.cpp:1463
Eap,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,cntx=0000452308,sesn=labpan01/494696177/7940,CPMSessionID=0A6A25D0000000100030EDBC,user=host/LABPCSK.vmlab.local,CallingStationID=B4-96-91-26-DE-2E,FramedIPAddress=10.106.37.25,Session id
0000: 86 91 75 26 6f af 4e ec 5f b4 33 4f 81 9e 25 22 ..u&o.N._.3O..%"
0010: 1f a0 cf 3c bf 0e 45 88 06 36 90 63 db a5 92 07 ...<..E..6.c.... ,EapTlsProtocol.cpp:1473
Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x16), ret: 1, long string: SSLv3/TLS write server hello,SSLConnection.cpp:4495
Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server hello message,SSLConnection.cpp:4498
Crypto,2024-02-12 19:13:20,542,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 9,SSLConnection.cpp:4510
Crypto,2024-02-12 19:13:20,543,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x17), ret: 1, long string: SSLv3/TLS write certificate,SSLConnection.cpp:4495
Crypto,2024-02-12 19:13:20,543,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server certificate,SSLConnection.cpp:4498
Crypto,2024-02-12 19:13:20,543,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 11,SSLConnection.cpp:4510
Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x18), ret: 1, long string: SSLv3/TLS write key exchange,SSLConnection.cpp:4495
Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server key exchange message,SSLConnection.cpp:4498
Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 13,SSLConnection.cpp:4510
Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x1a), ret: 1, long string: SSLv3/TLS write server done,SSLConnection.cpp:4495
Crypto,2024-02-12 19:13:20,581,DEBUG,0x7f8f923fc700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server done message,SSLConnection.cpp:4498
Crypto,2024-02-12 19:13:20,737,DEBUG,0x7f8f91df9700,NIL-CONTEXT,shutting session id
0000: 86 91 75 26 6f af 4e ec 5f b4 33 4f 81 9e 25 22 ..u&o.N._.3O..%"
0010: 1f a0 cf 3c bf 0e 45 88 06 36 90 63 db a5 92 07 ...<..E..6.c.... ,SSLConnection.cpp:337
Crypto,2024-02-12 19:13:20,737,DEBUG,0x7f8f91df9700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.pvDone - session is being preserved in cache,SSLConnection.cpp:355
A continuación, el cliente responde con las especificaciones de intercambio de claves de cliente y cambio de cifrado.
Intercambio de claves de cliente y otros atributos
Por último, el servidor también responde con las especificaciones de cambio de cifrado y se completa el intercambio de señales TLS.
Cambio de las especificaciones de cifrado del lado del servidor
En los pasos del registro en vivo de RADIUS, puede ver que el intercambio de señales TLS completo ocurre durante la primera autenticación.
Pasos del intercambio de señales TLS de RADIUS Live Log
El método Inner también realiza la autenticación completa del Protocolo de autenticación por desafío mutuo de Microsoft (MSCHAPv2).
Pasos del método interno de Live Log de RADIUS
Durante la reautenticación
Durante la reautenticación, el cliente envía el mismo ID de sesión 869175266faf4eec5fb4334f819e25221fa0cf3cbf0e458806369063dba59207 en el Hello del cliente que ha aprendido de la autenticación inicial.
Saludo del cliente durante la reanudación de la sesión
A continuación, ISE confirma que esta ID de sesión está presente en la caché de sesiones de Secure Socket Layer (SSL) y que ambas atraviesan lo que se conoce como protocolo de enlace TLS abreviado. No se intercambia ningún certificado o información de clave durante el intercambio de señales TLS abreviado y las claves negociadas previamente se reutilizan.
Saludo del servidor en la reanudación de sesión
En prrt-server.log, puede ver que después de recibir el saludo del cliente, ISE confirmó que la sesión se está reutilizando y omite el certificado y el intercambio de claves.
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x14), ret: 1, long string: SSLv3/TLS read client hello,SSLConnection.cpp:4495
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY received client hello message,SSLConnection.cpp:4498
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 5,SSLConnection.cpp:4510
Eap,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,cntx=0000452772,sesn=labpan01/494696177/7949,CPMSessionID=0A6A25D0000000110043ACB0,user=host/LABPCSK.vmlab.local,CallingStationID=B4-96-91-26-DE-2E,FramedIPAddress=10.106.37.25,CLIENT HELLO, session reused,EapTlsProtocol.cpp:1463
Eap,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,cntx=0000452772,sesn=labpan01/494696177/7949,CPMSessionID=0A6A25D0000000110043ACB0,user=host/LABPCSK.vmlab.local,CallingStationID=B4-96-91-26-DE-2E,FramedIPAddress=10.106.37.25,Session id
0000: 86 91 75 26 6f af 4e ec 5f b4 33 4f 81 9e 25 22 ..u&o.N._.3O..%"
0010: 1f a0 cf 3c bf 0e 45 88 06 36 90 63 db a5 92 07 ...<..E..6.c.... ,EapTlsProtocol.cpp:1473
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x16), ret: 1, long string: SSLv3/TLS write server hello,SSLConnection.cpp:4495
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent server hello message,SSLConnection.cpp:4498
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 9,SSLConnection.cpp:4510
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x23), ret: 1, long string: SSLv3/TLS write change cipher spec,SSLConnection.cpp:4495
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent change cipher spec message,SSLConnection.cpp:4498
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Call TLS Notify Callback, event 1,SSLConnection.cpp:4510
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS LOG: where: (0x2001), ssl state (0x24), ret: 1, long string: SSLv3/TLS write finished,SSLConnection.cpp:4495
Crypto,2024-02-12 19:33:48,821,DEBUG,0x7f8f925fd700,NIL-CONTEXT,Crypto::Result=0, Crypto.SSLConnection.tlsNotifyLog - TLS log: TLS_NOTIFY sent finished message (server is ready to finish handshake),SSLConnection.cpp:4498
Por último, el cliente también responde con el cambio de las especificaciones de cifrado y se completa el intercambio de señales TLS.
Reanudación de sesión de especificación de cifrado de cambio de cliente
En los pasos del registro en vivo de RADIUS, puede ver que el intercambio de señales TLS abreviado ocurre durante la reautenticación.
Pasos para reanudar la sesión TLS de RADIUS Live Log
En la reautenticación, puede ver que se omite el método interno.
RADIUS Live Log PEAP Fast Reconnect
Preguntas Frecuentes
1) ¿Son independientes entre sí la reanudación de la sesión y la reconexión rápida?
Sí, la reconexión rápida es una función opcional en la que se omite el método interno de autenticación. No es obligatorio activar la reconexión rápida cuando se activa la reanudación de la sesión.
2) ¿La activación de la reanudación de la sesión causa algún riesgo de seguridad?
El servidor asigna un ID de sesión aleatorio durante el protocolo de enlace inicial con el explorador (cliente). El cliente y el servidor almacenan este ID de sesión junto con las claves de sesión y los estados de conexión. Para reanudar una sesión, el cliente envía el identificador de sesión almacenado con el primer mensaje de protocolo (ClientHello) al servidor. Si el servidor reconoce la conexión y está dispuesto a reanudar la sesión, responde con el mismo ID de sesión para restablecer la sesión respectiva. Esto permite establecer una conexión segura rápidamente y sin pérdida de seguridad, ya que se están reutilizando los datos de sesión negociados anteriormente.
3) ¿Se replican los ID de sesión de TLS en otros nodos?
No, los ID de sesión de TLS se almacenan en el propio PSN. No se replica en otros PSN. En caso de reinicio o reinicio del servicio de PSN, todos los ID de sesión se pueden perder de la memoria caché y la próxima vez debe producirse un intercambio de señales de TLS completo.