Este documento describe las funciones de caducidad de contraseña y cambio de contraseña en un túnel VPN de acceso remoto finalizado en un Cisco Adaptive Security Appliance (ASA). El documento abarca:
Cisco recomienda que tenga conocimiento sobre estos temas:
La información que contiene este documento se basa en las siguientes versiones de software y hardware.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Un ASA con usuarios definidos localmente no permite el uso de funciones de caducidad de contraseña o cambio de contraseña. Se requiere un servidor externo, como RADIUS, TACACS, LDAP o Windows NT.
ACS admite el vencimiento de la contraseña y el cambio de la contraseña para los usuarios definidos localmente. Por ejemplo, puede obligar a los usuarios recién creados a cambiar su contraseña en el siguiente inicio de sesión, o puede inhabilitar una cuenta en una fecha específica:
Puede configurar una política de contraseñas para todos los usuarios. Por ejemplo, después de que caduque una contraseña, puede desactivar la cuenta de usuario (bloquearla sin tener que iniciar sesión) o puede ofrecer la opción de cambiar la contraseña:
La configuración específica del usuario tiene prioridad sobre la configuración global.
ACS-RESERVED-Never-Expired es un atributo interno para la identidad del usuario.
Este atributo lo habilita el usuario y se puede utilizar para inhabilitar la configuración de vencimiento de la cuenta global. Con esta configuración, una cuenta no se inhabilita incluso si la política global indica que debe ser:
ACS se puede configurar para verificar los usuarios en una base de datos AD. La caducidad y el cambio de la contraseña se admiten cuando se utiliza Microsoft Challenge Handshake Authentication Protocol versión 2 (MSCHAPv2); consulte la guía del usuario de Cisco Secure Access Control System 5.4: Autenticación en ACS 5.4: Compatibilidad del protocolo de autenticación y del almacén de identidad para obtener más información.
En un ASA, puede utilizar la función de administración de contraseñas, como se describe en la siguiente sección, para forzar al ASA a utilizar MSCHAPv2.
ACS utiliza la llamada del entorno informático distribuido (CIFS) del sistema de archivos de Internet común/llamada de procedimiento remoto (DCE/RPC) cuando se pone en contacto con el directorio del controlador de dominio (DC) para cambiar la contraseña:
ASA puede utilizar los protocolos RADIUS y TACACS+ para contactar con el ACS para un cambio de contraseña AD.
El protocolo RADIUS no soporta nativamente la caducidad de la contraseña o el cambio de la contraseña. Normalmente, el protocolo de autenticación de contraseña (PAP) se utiliza para RADIUS. El ASA envía el nombre de usuario y la contraseña en texto sin formato, y la contraseña se cifra a continuación mediante el uso del secreto compartido RADIUS.
En un escenario típico cuando la contraseña de usuario ha caducado, ACS devuelve un mensaje de Rechazo de RADIUS al ASA. ACS observa que:
Para el ASA, se trata de un mensaje simple de rechazo de RADIUS y la autenticación falla.
Para resolver este problema, el ASA permite el uso del comando password-management bajo la configuración tunnel-group:
tunnel-group RA general-attributes
authentication-server-group ACS
password-management
El comando password-management cambia el comportamiento de modo que el ASA se vea obligado a utilizar MSCHAPv2, en lugar de PAP, en la Radius-Request.
El protocolo MSCHAPv2 admite el vencimiento de la contraseña y el cambio de la contraseña. Por lo tanto, si un usuario de VPN ha aterrizado en ese grupo de túnel específico durante la fase Xauth, la Radius-Request de ASA ahora incluye un Desafío MS-CHAP:
Si el ACS nota que el usuario necesita cambiar la contraseña, devuelve un mensaje Radius-Reject con el error MSCHAPv2 648.
El ASA entiende ese mensaje y utiliza MODE_CFG para solicitar la nueva contraseña del cliente VPN de Cisco:
Oct 02 06:22:26 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
Received Password Expiration from Auth server!
El cliente Cisco VPN presenta un cuadro de diálogo que solicita una nueva contraseña:
El ASA envía otra solicitud de radio con una carga útil MS-CHAP-CPW y MS-CHAP-NT-Enc-PW (la nueva contraseña):
El ACS confirma la solicitud y devuelve un Radius-Accept con MS-CHAP2-Success:
Esto se puede verificar en ACS, que informa que la '24204 Password ha cambiado correctamente':
A continuación, ASA informa de que la autenticación se ha realizado correctamente y continúa con el proceso de modo rápido (QM):
Oct 02 06:22:28 [IKEv1]Group = RA, Username = cisco, IP = 192.168.10.67,
User (cisco) authenticated.
Asimismo, TACACS+ puede utilizarse para la caducidad y el cambio de la contraseña. La función de administración de contraseñas no es necesaria, ya que ASA todavía utiliza TACACS+ con un tipo de autenticación de ASCII en lugar de MSCHAPv2.
Se intercambian varios paquetes y ACS pide una nueva contraseña:
El cliente Cisco VPN presenta un cuadro de diálogo (que difiere del diálogo utilizado por RADIUS) que solicita una nueva contraseña:
ACS solicita confirmación de la nueva contraseña:
El cliente Cisco VPN presenta una caja de confirmación:
Si la confirmación es correcta, ACS informa una autenticación exitosa:
ACS luego registra un evento que la contraseña se ha cambiado correctamente:
Las depuraciones de ASA muestran todo el proceso de intercambio y autenticación exitosa:
Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
Received challenge status!
Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
process_attr(): Enter!
Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
Processing MODE_CFG Reply attributes
Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
Received challenge status!
Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
process_attr(): Enter!
Oct 02 07:44:40 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
Processing MODE_CFG Reply attributes.
Oct 02 07:44:41 [IKEv1]Group = RA, Username = cisco, IP = 192.168.10.67,
User (cisco) authenticated.
Ese cambio de contraseña es completamente transparente para ASA. Es un poco más larga la sesión TACACS+ con más paquetes de solicitud y respuesta, los cuales son analizados por el cliente VPN y presentados al usuario que está cambiando la contraseña.
La caducidad y el cambio de la contraseña son totalmente compatibles con el esquema del servidor LDAP de Microsoft AD y Sun.
Para un cambio de contraseña, los servidores devuelven 'bindresponse = invalidCredentials' con 'error = 773'. Este error indica que el usuario debe restablecer la contraseña. Los códigos de error típicos incluyen:
Código de error | Error |
---|---|
525 | Usuario no encontrado |
52 sexies | Credenciales no válidas |
530 | No se permite el inicio de sesión en este momento |
531 | No se permite iniciar sesión en esta estación de trabajo |
532 | La contraseña ha caducado |
533 | Cuenta desactivada |
701 | La cuenta ha caducado |
773 | El usuario debe restablecer la contraseña |
775 | Cuenta de usuario bloqueada |
Configure el servidor LDAP:
aaa-server LDAP protocol ldap
aaa-server LDAP (outside) host 10.48.66.128
ldap-base-dn CN=USers,DC=test-cisco,DC=com
ldap-scope subtree
ldap-naming-attribute sAMAccountName
ldap-login-password *****
ldap-login-dn CN=Administrator,CN=users,DC=test-cisco,DC=com
server-type microsoft
Utilice esa configuración para el grupo de túnel y la función de administración de contraseñas:
tunnel-group RA general-attributes
address-pool POOL
authentication-server-group LDAP
default-group-policy MY
password-management
Configure el usuario de AD para que se requiera un cambio de contraseña:
Cuando el usuario intenta utilizar el cliente Cisco VPN, ASA informa una contraseña no válida:
ASA(config-tunnel-general)# debug ldap 255
<some output ommited for clarity>
[111] Session Start
[111] New request Session, context 0xbd835c10, reqType = Authentication
[111] Fiber started
[111] Creating LDAP context with uri=ldap://10.48.66.128:389
[111] Connect to LDAP server: ldap://10.48.66.128:389, status = Successful
[111] supportedLDAPVersion: value = 3
[111] supportedLDAPVersion: value = 2
[111] Binding as Administrator
[111] Performing Simple authentication for Administrator to 10.48.66.128
[111] LDAP Search:
Base DN = [CN=USers,DC=test-cisco,DC=com]
Filter = [sAMAccountName=cisco-test]
Scope = [SUBTREE]
[111] User DN = [CN=cisco-test,CN=Users,DC=test-cisco,DC=com]
[111] Talking to Active Directory server 10.48.66.128
[111] Reading password policy for cisco-test, dn:CN=cisco-test,CN=Users,
DC=test-cisco,DC=com
[111] Read bad password count 2
[111] Binding as cisco-test
[111] Performing Simple authentication for cisco-test to 10.48.66.128
[111] Simple authentication for cisco-test returned code (49) Invalid
credentials
[111] Message (cisco-test): 80090308: LdapErr: DSID-0C090334, comment:
AcceptSecurityContext error, data 773, vece
[111] Invalid password for cisco-test
Si las credenciales no son válidas, aparece el error 52e:
[110] Message (cisco-test): 80090308: LdapErr: DSID-0C090334, comment:
AcceptSecurityContext error, data 52e, vece
A continuación, el cliente VPN de Cisco solicita un cambio de contraseña:
Este cuadro de diálogo difiere del diálogo utilizado por TACACS o RADIUS porque muestra la política. En este ejemplo, la política es una longitud mínima de contraseña de siete caracteres.
Una vez que el usuario cambia la contraseña, el ASA podría obtener este mensaje de error del servidor LDAP:
[113] Modify Password for cisco-test successfully converted password to unicode
[113] modify failed, no SSL enabled on connection
La política de Microsoft requiere el uso de Secure Sockets Layer (SSL) para la modificación de la contraseña. Cambie la configuración:
aaa-server LDAP (outside) host 10.48.66.128
ldap-over-ssl enable
De forma predeterminada, Microsoft LDAP sobre SSL no funciona. Para habilitar esta función, debe instalar el certificado para la cuenta del equipo con la extensión de clave correcta. Consulte Cómo habilitar LDAP sobre SSL con una entidad de certificación de terceros para obtener más detalles.
El certificado puede incluso ser un certificado autofirmado porque el ASA no verifica el certificado LDAP. Consulte Cisco Bug ID CSCui40212, "Permitir que ASA valide el certificado del servidor LDAPS" para obtener una solicitud de mejora relacionada.
Para instalar el certificado, abra la consola mmc, seleccione Agregar/Quitar complemento, agregue el certificado y elija Cuenta de equipo:
Seleccione Equipo local, importe el certificado al almacén personal y mueva el certificado de autoridad certificadora (CA) asociado al almacén de confianza. Verifique que el certificado sea de confianza:
Hay un error en la versión 8.4.2 de ASA, donde este error puede ser devuelto cuando intenta utilizar LDAP sobre SSL:
ASA(config)# debug ldap 255
[142] Connect to LDAP server: ldaps://10.48.66.128:636, status = Successful
[142] supportedLDAPVersion: value = 3
[142] supportedLDAPVersion: value = 2
[142] Binding as Administrator
[142] Performing Simple authentication for Administrator to 10.48.66.128
[142] LDAP Search:
Base DN = [CN=Users,DC=test-cisco,DC=com]
Filter = [sAMAccountName=Administrator]
Scope = [SUBTREE]
[142] Request for Administrator returned code (-1) Can't contact LDAP server
La versión 9.1.3 de ASA funciona correctamente con la misma configuración. Hay dos sesiones LDAP. La primera sesión devuelve un error con el código 773 (la contraseña venció), mientras que la segunda sesión se utiliza para el cambio de contraseña:
[53] Session Start
[53] New request Session, context 0xadebe3d4, reqType = Modify Password
[53] Fiber started
[53] Creating LDAP context with uri=ldaps://10.48.66.128:636
[53] Connect to LDAP server: ldaps://10.48.66.128:636, status = Successful
[53] supportedLDAPVersion: value = 3
[53] supportedLDAPVersion: value = 2
[53] Binding as Administrator
[53] Performing Simple authentication for Administrator to 10.48.66.128
[53] LDAP Search:
Base DN = [CN=Users,DC=test-cisco,DC=com]
Filter = [sAMAccountName=cisco-test]
Scope = [SUBTREE]
[53] User DN = [CN=cisco-test,CN=Users,DC=test-cisco,DC=com]
[53] Talking to Active Directory server 10.48.66.128
[53] Reading password policy for cisco-test, dn:CN=cisco-test,CN=Users,
DC=test-cisco,DC=com
[53] Read bad password count 0
[53] Change Password for cisco-test successfully converted old password to
unicode
[53] Change Password for cisco-test successfully converted new password to
unicode
[53] Password for cisco-test successfully changed
[53] Retrieved User Attributes:
<....most attributes details ommitted for clarity>
accountExpires: value = 130256568000000000 <----- 100ns intervals since
January 1, 1601 (UTC)
Para verificar el cambio de contraseña, observe los paquetes. Wireshark puede utilizar la clave privada del servidor LDAP para descifrar el tráfico SSL:
Las depuraciones de Intercambio de claves de Internet (IKE)/Autenticación, Autorización y Contabilización (AAA) en ASA son muy similares a las presentadas en el escenario de autenticación RADIUS.
Para LDAP, puede utilizar una función que envía una advertencia antes de que caduque una contraseña. El ASA advierte al usuario 90 días antes del vencimiento de la contraseña con esta configuración:
tunnel-group RA general-attributes
password-management password-expire-in-days 90
Aquí la contraseña caduca en 42 días y el usuario intenta iniciar sesión:
ASA# debug ldap 255
<some outputs removed for clarity>
[84] Binding as test-cisco
[84] Performing Simple authentication for test-cisco to 10.48.66.128
[84] Processing LDAP response for user test-cisco
[84] Message (test-cisco):
[84] Checking password policy
[84] Authentication successful for test-cisco to 10.48.66.128
[84] now: Fri, 04 Oct 2013 09:41:55 GMT, lastset: Fri, 04 Oct 2013 09:07:23
GMT, delta=2072, maxage=1244139139 secs
[84] expire in: 3708780 secs, 42 days
[84] Password expires Sat, 16 Nov 2013 07:54:55 GMT
[84] Password expiring in 42 day(s),threshold 90 days
El ASA envía una advertencia y ofrece la opción de un cambio de contraseña:
Si el usuario decide cambiar la contraseña, se le solicita una nueva contraseña y se inicia el procedimiento normal de cambio de contraseña.
Los ejemplos anteriores presentaban IKE versión 1 (IKEv1) y una VPN IPSec.
Para el protocolo de túnel de capa 2 (L2TP) e IPSec, PPP se utiliza como transporte para la autenticación. Se requiere MSCHAPv2 en lugar de PAP para que funcione un cambio de contraseña:
ciscoasa(config-tunnel-general)# tunnel-group DefaultRAGroup ppp-attributes
ciscoasa(config-ppp)# authentication ms-chap-v2
Para la autenticación extendida en L2TP dentro de la sesión PPP, se negocia MSCHAPv2:
Cuando la contraseña de usuario ha caducado, se devuelve un error con el código 648:
A continuación, se necesita un cambio de contraseña. El resto del proceso es muy similar al escenario para RADIUS con MSCHAPv2.
Consulte Ejemplo de Configuración de L2TP a través de IPSec entre Windows 2000/XP PC y PIX/ASA 7.2 Usando Clave Previamente Compartida para obtener detalles adicionales sobre cómo configurar L2TP.
Los ejemplos anteriores se referían a IKEv1 y al cliente Cisco VPN, que es el fin de vida útil (EOL).
La solución recomendada para una VPN de acceso remoto es Cisco AnyConnect Secure Mobility, que utiliza los protocolos IKE versión 2 (IKEv2) y SSL. Las funciones de cambio de contraseña y caducidad funcionan exactamente igual para Cisco AnyConnect que para el cliente Cisco VPN.
Para IKEv1, los datos de cambio y vencimiento de la contraseña se intercambiaron entre el ASA y el cliente VPN en la fase 1.5 (Xauth/mode config).
Para IKEv2, es similar; el modo de configuración utiliza paquetes CFG_REQUEST/CFG_REPLY.
Para SSL, los datos se encuentran en la sesión de control Datagram Transport Layer Security (DTLS).
La configuración es la misma para el ASA.
Este es un ejemplo de configuración con Cisco AnyConnect y el protocolo SSL con un servidor LDAP sobre SSL:
aaa-server LDAP protocol ldap
aaa-server LDAP (outside) host win2003-mga.test-cisco.com
ldap-base-dn CN=Users,DC=test-cisco,DC=com
ldap-scope subtree
ldap-naming-attribute sAMAccountName
ldap-login-password *****
ldap-login-dn CN=Administrator,CN=users,DC=test-cisco,DC=com
ldap-over-ssl enable
server-type microsoft
webvpn
enable outside
anyconnect image disk0:/anyconnect-win-3.1.02040-k9.pkg 1
anyconnect enable
tunnel-group-list enable
group-policy MY internal
group-policy MY attributes
vpn-tunnel-protocol ikev1 ikev2 l2tp-ipsec ssl-client ssl-clientless
tunnel-group RA type remote-access
tunnel-group RA general-attributes
address-pool POOL
authentication-server-group LDAP
default-group-policy MY
password-management
tunnel-group RA webvpn-attributes
group-alias RA enable
without-csd
ip local pool POOL 192.168.11.100-192.168.11.105 mask 255.255.255.0
Una vez proporcionada la contraseña correcta (que ha caducado), Cisco AnyConnect intenta conectarse y solicita una nueva contraseña:
Los registros indican que las credenciales de usuario se ingresaron dos veces:
Hay registros más detallados disponibles en la herramienta Diagnostic AnyConnect Reporting Tool (DART).
El mismo proceso de inicio de sesión ocurre en el portal web:
Se produce el mismo proceso de caducidad y cambio de contraseña:
Si no es posible cambiar la contraseña a través de la VPN, puede utilizar el servicio web dedicado de cambio de contraseña de usuario ACS (UCP). Consulte la Guía del Desarrollador de Software para Cisco Secure Access Control System 5.4: Uso de los Servicios Web UCP.
Actualmente, no hay un procedimiento de verificación disponible para esta configuración.
Actualmente, no hay información específica de troubleshooting disponible para esta configuración.