In diesem Dokument werden die Funktionen zum Kennwortablauf und zur Kennwortänderung in einem VPN-Tunnel mit Remote-Zugriff beschrieben, der auf einer Cisco Adaptive Security Appliance (ASA) terminiert wird. Gegenstand des Dokuments:
Cisco empfiehlt, über Kenntnisse in folgenden Bereichen zu verfügen:
Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Eine ASA mit lokal definierten Benutzern lässt die Verwendung von Funktionen zum Ablauf von Kennwörtern oder zur Kennwortänderung nicht zu. Es ist ein externer Server wie RADIUS, TACACS, LDAP oder Windows NT erforderlich.
ACS unterstützt sowohl Kennwortablauf als auch Kennwortänderung für lokal definierte Benutzer. Sie können beispielsweise neu erstellte Benutzer zwingen, ihr Kennwort bei der nächsten Anmeldung zu ändern, oder Sie können ein Konto an einem bestimmten Datum deaktivieren:
Sie können eine Kennwortrichtlinie für alle Benutzer konfigurieren. Nach Ablauf eines Kennworts können Sie beispielsweise das Benutzerkonto deaktivieren (ohne Anmeldungsmöglichkeit blockieren) oder die Option zum Ändern des Kennworts anbieten:
Benutzerspezifische Einstellungen haben Vorrang vor globalen Einstellungen.
ACS-RESERVED-Never-Expired ist ein internes Attribut für die Benutzeridentität.
Dieses Attribut wird vom Benutzer aktiviert und kann verwendet werden, um die globalen Kontoablaufeinstellungen zu deaktivieren. Bei dieser Einstellung ist ein Konto nicht deaktiviert, selbst wenn die globale Richtlinie Folgendes angibt:
ACS kann so konfiguriert werden, dass die Benutzer in einer AD-Datenbank überprüft werden. Kennwortablauf und Kennwortänderung werden unterstützt, wenn das Microsoft Challenge Handshake Authentication Protocol Version 2 (MSCHAPv2) verwendet wird. Siehe Benutzerhandbuch für Cisco Secure Access Control System 5.4: Authentifizierung in ACS 5.4: Authentifizierungsprotokoll- und Identitätsspeicherkompatibilität für Details.
Auf einer ASA können Sie die Passwortverwaltungsfunktion verwenden, wie im nächsten Abschnitt beschrieben, um die ASA zur Verwendung von MSCHAPv2 zu zwingen.
ACS verwendet den Common Internet File System (CIFS) Distributed Computing Environment/Remote Procedure Call (DCE/RPC)-Anruf, wenn er das Verzeichnis Domain Controller (DC) kontaktiert, um das Kennwort zu ändern:
ASA kann sowohl das RADIUS- als auch das TACACS+-Protokoll verwenden, um mit dem ACS Kontakt aufzunehmen, um eine AD-Kennwortänderung vorzunehmen.
Das RADIUS-Protokoll unterstützt keine native Kennwortablaufzeit oder Kennwortänderung. In der Regel wird das Password Authentication Protocol (PAP) für RADIUS verwendet. Die ASA sendet Benutzername und Kennwort als Klartext, und das Kennwort wird anschließend mithilfe des gemeinsam genutzten geheimen RADIUS-Codes verschlüsselt.
In einem typischen Szenario, in dem das Benutzerkennwort abgelaufen ist, gibt ACS eine RADIUS-Reject-Nachricht an die ASA zurück. ACS bemerkt, dass:
Bei der ASA handelt es sich um eine einfache Radius-Reject-Nachricht, und die Authentifizierung schlägt fehl.
Um dieses Problem zu beheben, ermöglicht die ASA die Verwendung des Befehls für die Kennwortverwaltung unter der Tunnelgruppenkonfiguration:
tunnel-group RA general-attributes
authentication-server-group ACS
password-management
Der Befehl für die Kennwortverwaltung ändert das Verhalten, sodass die ASA in der Radius-Request MSCHAPv2 anstelle von PAP verwenden muss.
Das MSCHAPv2-Protokoll unterstützt Kennwortablauf und Kennwortänderung. Wenn also ein VPN-Benutzer während der Xauth-Phase in diese spezifische Tunnelgruppe gelandet ist, beinhaltet die Radius-Request von ASA jetzt eine MS-CHAP-Challenge:
Wenn der ACS bemerkt, dass der Benutzer das Kennwort ändern muss, gibt er eine Radius-Reject-Nachricht mit dem MSCHAPv2-Fehler 648 zurück.
Die ASA versteht diese Nachricht und verwendet MODE_CFG, um das neue Kennwort vom Cisco VPN-Client anzufordern:
Oct 02 06:22:26 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
Received Password Expiration from Auth server!
Der Cisco VPN-Client zeigt ein Dialogfeld an, in dem Sie zur Eingabe eines neuen Kennworts aufgefordert werden:
Die ASA sendet eine weitere Radius-Request mit MS-CHAP-CPW und MS-CHAP-NT-Enc-PW-Payload (dem neuen Kennwort):
Der ACS bestätigt die Anforderung und gibt einen Radius-Accept mit MS-CHAP2-Success zurück:
Dies kann im ACS überprüft werden, der die Meldung '24204 Password has successfully' (Kennwort erfolgreich geändert 24204) meldet:
Die ASA meldet dann eine erfolgreiche Authentifizierung und fährt mit dem Quick Mode (QM)-Prozess fort:
Oct 02 06:22:28 [IKEv1]Group = RA, Username = cisco, IP = 192.168.10.67,
User (cisco) authenticated.
Ebenso kann TACACS+ für das Ablaufdatum und die Änderung von Kennwörtern verwendet werden. Die Funktion zur Kennwortverwaltung ist nicht erforderlich, da die ASA noch immer TACACS+ mit einem Authentifizierungstyp von ASCII anstelle von MSCHAPv2 verwendet.
Mehrere Pakete werden ausgetauscht, und ACS fordert ein neues Kennwort an:
Der Cisco VPN-Client zeigt ein Dialogfeld an (das sich von dem von RADIUS verwendeten Dialogfeld unterscheidet), in dem Sie zur Eingabe eines neuen Kennworts aufgefordert werden:
ACS fordert Bestätigung des neuen Kennworts an:
Der Cisco VPN-Client stellt ein Bestätigungsfeld bereit:
Wenn die Bestätigung richtig ist, meldet der ACS eine erfolgreiche Authentifizierung:
ACS protokolliert dann ein Ereignis, dass das Kennwort erfolgreich geändert wurde:
Die ASA-Debugger zeigen den gesamten Austauschprozess und die erfolgreiche Authentifizierung an:
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.
Diese Kennwortänderung ist für ASA vollkommen transparent. Die TACACS+-Sitzung mit mehr Anforderungs- und Antwortpaketen, die vom VPN-Client analysiert und dem Benutzer angezeigt werden, der das Kennwort ändert, ist etwas länger.
Kennwortablauf und Kennwortänderungen werden vollständig vom Microsoft AD- und Sun LDAP-Serverschema unterstützt.
Bei einer Kennwortänderung geben die Server 'bindresponse = invalidCredentials' mit 'error = 773' zurück. Dieser Fehler weist darauf hin, dass der Benutzer das Kennwort zurücksetzen muss. Typische Fehlercodes sind:
Fehlercode | Fehler |
---|---|
525 | Benutzer nicht gefunden |
52 e | Ungültige Anmeldeinformationen |
530 | Derzeit ist die Anmeldung nicht gestattet. |
531 | Anmeldung an dieser Workstation nicht gestattet |
532 | Kennwort abgelaufen |
533 | Konto deaktiviert |
701 | Konto abgelaufen |
773 | Benutzer muss Kennwort zurücksetzen |
775 | Benutzerkonto gesperrt |
Konfigurieren Sie den LDAP-Server:
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
Verwenden Sie diese Konfiguration für die Tunnelgruppe und die Kennwortverwaltungsfunktion:
tunnel-group RA general-attributes
address-pool POOL
authentication-server-group LDAP
default-group-policy MY
password-management
Konfigurieren Sie den AD-Benutzer so, dass eine Kennwortänderung erforderlich ist:
Wenn der Benutzer versucht, den Cisco VPN-Client zu verwenden, meldet die ASA ein ungültiges Kennwort:
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
Wenn die Anmeldeinformationen ungültig sind, wird der Fehler 52e angezeigt:
[110] Message (cisco-test): 80090308: LdapErr: DSID-0C090334, comment:
AcceptSecurityContext error, data 52e, vece
Anschließend fordert der Cisco VPN-Client eine Kennwortänderung an:
Dieses Dialogfeld unterscheidet sich vom Dialogfeld, das von TACACS oder RADIUS verwendet wird, da die Richtlinie angezeigt wird. In diesem Beispiel ist die Richtlinie eine Kennwortlänge von mindestens sieben Zeichen.
Sobald der Benutzer das Kennwort ändert, erhält die ASA möglicherweise die folgende Fehlermeldung vom LDAP-Server:
[113] Modify Password for cisco-test successfully converted password to unicode
[113] modify failed, no SSL enabled on connection
Microsoft-Richtlinien erfordern die Verwendung von SSL (Secure Sockets Layer) zur Kennwortänderung. Ändern Sie die Konfiguration:
aaa-server LDAP (outside) host 10.48.66.128
ldap-over-ssl enable
Standardmäßig funktioniert Microsoft LDAP über SSL nicht. Um diese Funktion zu aktivieren, müssen Sie das Zertifikat für das Computerkonto mit der richtigen Schlüsselerweiterung installieren. Weitere Informationen finden Sie unter Aktivieren von LDAP über SSL bei einer Zertifizierungsstelle eines Drittanbieters.
Das Zertifikat kann auch ein selbstsigniertes Zertifikat sein, da die ASA das LDAP-Zertifikat nicht prüft. Eine entsprechende Erweiterungsanforderung finden Sie unter Cisco Bug ID CSCui40212, "Allow ASA to validate certificate from LDAPS server".
Um das Zertifikat zu installieren, öffnen Sie die MMC-Konsole, wählen Sie Snap-In hinzufügen/entfernen, fügen Sie das Zertifikat hinzu, und wählen Sie Computerkonto:
Wählen Sie Lokaler Computer aus, importieren Sie das Zertifikat in den persönlichen Speicher, und verschieben Sie das entsprechende Zertifikat der Zertifizierungsstelle (Certificate Authority, CA) in den vertrauenswürdigen Speicher. Überprüfen Sie, ob das Zertifikat vertrauenswürdig ist:
In ASA Version 8.4.2 gibt es einen Fehler, der bei der Verwendung von LDAP über SSL zurückgegeben werden kann:
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
ASA Version 9.1.3 funktioniert mit derselben Konfiguration ordnungsgemäß. Es gibt zwei LDAP-Sitzungen. Die erste Sitzung gibt einen Fehler mit dem Code 773 (Kennwort abgelaufen) zurück, während die zweite Sitzung für die Kennwortänderung verwendet wird:
[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)
Überprüfen Sie die Pakete, um die Kennwortänderung zu überprüfen. Der private Schlüssel des LDAP-Servers kann von Wireshark zum Entschlüsseln von SSL-Datenverkehr verwendet werden:
Die Debug-Fehler für Internet Key Exchange (IKE)/Authentifizierung, Autorisierung und Abrechnung (AAA) auf der ASA ähneln denen im RADIUS-Authentifizierungsszenario.
Für LDAP können Sie eine Funktion verwenden, die eine Warnung sendet, bevor ein Kennwort abläuft. Die ASA warnt den Benutzer 90 Tage vor Ablauf des Kennworts mit der folgenden Einstellung:
tunnel-group RA general-attributes
password-management password-expire-in-days 90
In diesem Fall läuft das Kennwort in 42 Tagen ab und der Benutzer versucht, sich anzumelden:
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
Die ASA sendet eine Warnung und bietet die Möglichkeit einer Kennwortänderung:
Wenn der Benutzer das Kennwort ändern möchte, wird eine Aufforderung zur Eingabe eines neuen Kennworts angezeigt, und die normale Kennwortänderung wird gestartet.
In den vorherigen Beispielen wurden IKE-Version 1 (IKEv1) und ein IPSec-VPN vorgestellt.
Für das Layer 2 Tunneling Protocol (L2TP) und IPSec wird PPP als Transport für die Authentifizierung verwendet. MSCHAPv2 ist anstelle von PAP erforderlich, damit eine Kennwortänderung funktioniert:
ciscoasa(config-tunnel-general)# tunnel-group DefaultRAGroup ppp-attributes
ciscoasa(config-ppp)# authentication ms-chap-v2
Für erweiterte Authentifizierung in L2TP in der PPP-Sitzung wird MSCHAPv2 ausgehandelt:
Wenn das Benutzerkennwort abgelaufen ist, wird ein Fehler mit dem Code 648 zurückgegeben:
Anschließend muss das Kennwort geändert werden. Der restliche Prozess ähnelt dem Szenario für RADIUS mit MSCHAPv2.
Siehe L2TP Over IPsec Between Windows 200/XP PC and PIX/ASA 7.2 Using Pre-shared Key Configuration Example for additional details on how to configure L2TP.
Die vorherigen Beispiele beziehen sich auf IKEv1 und den Cisco VPN-Client, der End-of-Life (EOL) ist.
Die empfohlene Lösung für ein VPN mit Remote-Zugriff ist Cisco AnyConnect Secure Mobility, die die Protokolle IKE Version 2 (IKEv2) und SSL verwendet. Die Funktionen für Kennwortänderung und Ablaufdatum sind für Cisco AnyConnect identisch mit denen für den Cisco VPN-Client.
Für IKEv1 wurden die Kennwortänderungs- und Ablaufdaten in Phase 1.5 (Xauth/Mode-Konfiguration) zwischen ASA und VPN-Client ausgetauscht.
Für IKEv2 ist dies ähnlich. Der Konfigurationsmodus verwendet CFG_REQUEST/CFG_REPLY-Pakete.
Bei SSL befinden sich die Daten in der Datagram Transport Layer Security (DTLS)-Sitzung.
Die Konfiguration ist für die ASA identisch.
Dies ist eine Beispielkonfiguration mit Cisco AnyConnect und dem SSL-Protokoll mit einem LDAP-Server über 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
Sobald das richtige Kennwort (das abgelaufen ist) eingegeben wurde, versucht Cisco AnyConnect eine Verbindung herzustellen und fordert ein neues Kennwort an:
Die Protokolle zeigen an, dass die Benutzeranmeldeinformationen zweimal eingegeben wurden:
Ausführlichere Protokolle finden Sie im Diagnostic AnyConnect Reporting Tool (DART).
Der gleiche Anmeldeprozess findet im Webportal statt:
Der Kennwortablauf und der gleiche Kennwortänderungsprozess erfolgen:
Wenn es nicht möglich ist, das Kennwort über das VPN zu ändern, können Sie den dedizierten Webservice für das ACS User Change Password (UCP) verwenden. Siehe Software Developer's Guide for Cisco Secure Access Control System 5.4: Verwenden der UCP-Webdienste.
Für diese Konfiguration ist derzeit kein Überprüfungsverfahren verfügbar.
Für diese Konfiguration sind derzeit keine spezifischen Informationen zur Fehlerbehebung verfügbar.