このドキュメントでは、終端に Cisco 適応型セキュリティ アプライアンス(ASA)を使用したリモート アクセス VPN トンネルの有効期限およびパスワード変更機能について説明します。 このドキュメントでは、次を対象としています。
次の項目に関する知識があることが推奨されます。
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
ローカルに定義されたユーザの ASA では、パスワードの有効期限またはパスワードの変更機能は使用できません。RADIUS、TACACS、LDAP、または Windows NT などの外部サーバが必要になります。
ACS では、ローカルに定義されたユーザに対するパスワードの有効期限とパスワードの変更機能の両方をサポートしています。たとえば、新しく作成されたユーザが次回ログインする際にパスワードを変更するよう強制したり、指定した日付にアカウントを無効にしたりすることができます。
すべてのユーザのパスワード ポリシーを設定できます。たとえば、パスワードの有効期限が切れるとユーザ アカウントを無効にしたり(ログイン機能なしでブロック)、パスワードを変更するオプションを提示したりすることができます。
ユーザ固有の設定はグローバル設定よりも優先されます。
ACS-RESERVED-Never-Expired はユーザ ID の内部属性です。
この属性はユーザによって有効にされ、グローバル アカウントの有効期限の設定を無効にするために使用できます。グローバル ポリシーによって無効にされる予定でも、この設定を使用するとそのアカウントは無効になりません。
ACS は、AD データベースでユーザを確認するように設定できます。Microsoft チャレンジ ハンドシェイク認証プロトコル バージョン 2(MSCHAPv2)を使用する場合、パスワードの有効期限とパスワードの変更がサポートされます。詳細については、『Cisco Secure Access Control System 5.4 ユーザ ガイド』の「ACS 5.4 での認証」にある「認証プロトコルと ID ストアの互換性」を参照してください。
次の項で説明するように、ASA では、パスワード管理機能を使用して MSCHAPv2 が強制的に使われるように ASA を設定できます。
ACS はドメイン コントローラ(DC)のディレクトリに接続してパスワードを変更する際に、Common Internet File System(CIFS)分散コンピューティング環境およびリモート プロシージャ コール(DCE/RPC)のコールを使用します。
ASA は AD パスワードを変更するために RADIUS と TACACS+ 両方のプロトコルを使用して ACS に接続できます。
RADIUS プロトコルはパスワードの有効期限またはパスワードの変更をネイティブでサポートしていません。通常、Password Authentication Protocol(PAP)は RADIUS で使用されます。ASA はユーザ名とパスワードをプレーン テキストで送信し、パスワードは RADIUS 共有秘密を使用して暗号化されます。
一般的なシナリオでは、ユーザのパスワードが期限切れになると、ACS は ASA に Radius-Reject メッセージを返します。ACS には次のように表示されます。
ASA では、これは単純な Radius-Reject メッセージであり、認証に失敗します。
この問題を解決するために、ASA では、tunnel-group 設定で password-management コマンドを使用できます。
tunnel-group RA general-attributes
authentication-server-group ACS
password-management
password-management コマンドは、PAP ではなく MSCHAPv2 が強制的に ASA で使用されるように Radius-Request で動作を変更します。
MSCHAPv2 プロトコルはパスワードの期限切れおよびパスワードの変更をサポートしています。そのため、Xauth フェーズ中に VPN ユーザが特定の tunnel-group にアクセスすると、ASA による Radius-Request に MS-CHAP-Challenge が含まれるようになります。
パスワードを変更する必要があることが ACS で認識されると、MSCHAPv2 エラー 648 の Radius-Reject メッセージが返されます。
ASA はそのメッセージを認識し、Cisco VPN Client から新しいパスワードを要求するために MODE_CFG を使用します。
Oct 02 06:22:26 [IKEv1 DEBUG]Group = RA, Username = cisco, IP = 192.168.10.67,
Received Password Expiration from Auth server!
Cisco VPN Client に、新しいパスワードの入力を求めるダイアログボックスが表示されます。
ASA は MS-CHAP-CPW および MS-CHAP-NT-Enc-PW ペイロード(新しいパスワード)とともに別の Radius-Request を送信します。
ACS は要求を確認し、MS-CHAP2-Success とともに Radius-Accept を返します。
ACS で「24204 Password changed successfully」がレポートされ、この動作を確認できます。
ASA は認証が正常に行われたことをレポートし、クイック モード(QM)プロセスを続行します。
Oct 02 06:22:28 [IKEv1]Group = RA, Username = cisco, IP = 192.168.10.67,
User (cisco) authenticated.
同様に、TACACS+ をパスワードの有効期限とパスワードの変更に使用できます。ASA では MSCHAPv2 ではなく ASCII の認証タイプで TACACS+ を使用するため、password-management 機能は必要ありません。
複数のパケットが交換され、ACS は新しいパスワードを要求します。
Cisco VPN Client に、新しいパスワードの入力を求めるダイアログボックス(RADIUS が使用するダイアログとは異なります)が表示されます。
ACS は新規パスワードの確認を要求します。
Cisco VPN Client に確認ボックスが表示されます。
確認が正しい場合、ACS は正常に認証が行われたことをレポートします。
ACS は次に、パスワードが正常に変更されたイベントをログに記録します。
ASA のデバッグに、交換プロセス全体と認証が正常に行われたことが表示されます。
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.
このパスワードの変更は ASA に対して完全に透過的に行われます。要求パケットと応答パケットがより多く使用されるため TACACS+ セッションは少し長くなります。これは VPN クライアントで解析され、パスワードを変更するユーザに表示されます。
パスワードの有効期限とパスワードの変更は Microsoft AD と Sun LDAP サーバのスキーマで完全にサポートされます。
パスワードを変更すると、サーバは「error = 773」で「bindresponse = invalidCredentials」を返します。 このエラーは、ユーザがパスワードをリセットする必要があることを示します。一般的なエラー コードには次のようなものがあります。
エラー コード | エラー |
---|---|
525 | User not found |
52e | 証明書が無効です |
530 | Not permitted to logon at this time |
531 | Not permitted to logon at this workstation |
532 | Password expired |
533 | Account disabled |
701 | Account expired |
773 | User must reset password |
775 | ユーザ アカウントのロック |
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
tunnel-group および password-management 機能でこの設定を使用します。
tunnel-group RA general-attributes
address-pool POOL
authentication-server-group LDAP
default-group-policy MY
password-management
パスワード変更が必要になる AD ユーザを設定します。
ユーザが Cisco VPN Client を使用しようとすると、ASA は無効なパスワードをレポートします。
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
資格情報が無効な場合、52e エラーが表示されます。
[110] Message (cisco-test): 80090308: LdapErr: DSID-0C090334, comment:
AcceptSecurityContext error, data 52e, vece
次に、Cisco VPN Client はパスワードの変更を要求します。
このダイアログボックスにはポリシーが表示されるため、TACACS または RADIUS が使用するダイアログとは異なります。この例のポリシーでは、パスワードの最小長は 7 文字です。
ユーザがパスワードを変更すると、このエラー メッセージが LDAP サーバから ASA に表示される可能性があります。
[113] Modify Password for cisco-test successfully converted password to unicode
[113] modify failed, no SSL enabled on connection
Microsoft ポリシーではパスワードの変更にセキュア ソケット レイヤ(SSL)を使用する必要があります。設定を変更します。
aaa-server LDAP (outside) host 10.48.66.128
ldap-over-ssl enable
デフォルトで、SSL 経由の Microsoft LDAP は機能しません。この機能を有効にするには、正しいキーの拡張を使用してコンピュータのアカウントの証明書をインストールする必要があります。詳細については、『How to enable LDAP over SSL with a third-party certification authority(サードパーティの証明機関が SSL 経由の LDAP を有効にする方法)』を参照してください。
ASA は LDAP 証明書を検証しないため、証明書は自己署名証明書です。関連する機能拡張の要求の詳細については、Cisco Bug ID CSCui40212 の『Allow ASA to validate certificate from LDAPS server(ASA で LDAPS サーバからの証明書の検証を許可する)』を参照してください。
証明書をインストールするには、mmc コンソールを開いて、[Add/Remove Snap-in] を選択し、証明書を追加したら、[Computer Account] を選択します。
[Local computer] を選択し、個人ストアに証明書をインポートして、関連する認証局(CA)を信頼済みストアに移動します。証明書が信頼されていることを検証します。
ASA バージョン 8.4.2 にはバグがあり、SSL 経由で LDAP を使用しようとするとこのエラーが返される可能性があります。
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 バージョン 9.1.3 では同じ設定で正しく機能します。2 つの LDAP セッションがあります。最初のセッションはコード 773(Password expired)のエラーを返し、2 番目のセッションはパスワードの変更で使用されます。
[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)
パスワードの変更を検証するには、パケットを参照してください。LDAP サーバの秘密キーは、SSL トラフィックを復号化するために Wireshark で使用できます。
ASA でのインターネット キー エクスチェンジ(IKE)/認証、許可、アカウンティング(AAA)デバッグは、RADIUS 認証シナリオで使用されるものとよく似ています。
LDAP では、パスワードの有効期限が切れる前に警告を送信する機能を使用できます。この設定を使用して、ASA はパスワードの有効期限が切れる 90 日前にユーザに警告します。
tunnel-group RA general-attributes
password-management password-expire-in-days 90
パスワードの有効期限が切れる 42 日前にユーザがログインを試行する場合の例は次のとおりです。
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
ASA は警告を送信し、パスワードを変更するオプションを提示します。
ユーザがパスワードを変更した場合、新しいパスワードの入力を求めるプロンプトが表示され、通常のパスワード変更手順が開始されます。
前の例では、IKE バージョン 1(IKEv1)と IPSec VPN を示しました。
Layer 2 Tunneling Protocol(L2TP)と IPSec、PPP は認証用のトランスポートとして使用されます。パスワードの変更を機能させるためには、PAP ではなく MSCHAPv2 が必要です。
ciscoasa(config-tunnel-general)# tunnel-group DefaultRAGroup ppp-attributes
ciscoasa(config-ppp)# authentication ms-chap-v2
PPP セッション内の L2TP の拡張認証では、MSCHAPv2 がネゴシエートされます。
ユーザのパスワードの有効期限が切れると、コード 648 のエラーが返されます。
パスワードを変更する必要があります。残りのプロセスは、MSCHAPv2 を使用した RADIUS のシナリオとよく似ています。
L2TP の設定方法に関する詳細については、事前共有キーを使用した Windows 2000/XP PC と PIX/ASA 7.2 の間の L2TP Over IPSec 設定例を参照してください。
前の例では、サポート終了(EOL)の IKEv1 と Cisco VPN Client を参照しました。
リモート アクセス VPN で推奨されるソリューションは、IKE バージョン 2(IKEv2)および SSL プロトコルを使用する Cisco AnyConnect セキュア モビリティです。パスワードの変更とパスワードの有効期限機能は、Cisco VPN Client で実行される Cisco AnyConnect とまったく同様に動作します。
IKEv1 では、パスワードの変更とパスワードの有効期限データは、フェーズ 1.5 において ASA と VPN クライアントの間で交換されました(Xauth/モード設定)。
IKEv2 でも同様に、コンフィギュレーション モードで CFG_REQUEST/CFG_REPLY パケットを使用します。
SSL の場合、データは制御 Datagram Transport Layer Security(DTLS)セッションで保存されます。
設定は ASA と同じです。
この設定例は、SSL 経由の LDAP サーバで Cisco AnyConnect と 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
正しいパスワード(期限切れのパスワード)を指定すると、Cisco AnyConnect は接続を試み、新しいパスワードを要求します。
このログはユーザの資格情報が 2 回入力されたことを示しています。
より詳細なログは、Diagnostic AnyConnect Reporting Tool(DART)から入手できます。
同じログイン プロセスが Web ポータルでも行われます。
同じパスワードの期限切れとパスワードの変更プロセスが行われます。
VPN 経由でパスワードは変更できませんが、ACS User Change Password(UCP)専用の Web サービスを使用できます。詳細については、『Cisco Secure Access Control System 5.4 ソフトウェア開発者ガイド』の「UCP Web サービスの使用」を参照してください。
現在、この設定に使用できる確認手順はありません。
現在、この設定に関する特定のトラブルシューティング情報はありません。