この記事では、リモート ドメイン コントローラーでパスワードを変更した後にユーザーがドメインにサインインできない問題の解決策を示します。
適用対象: Windows 2000
元の KB 番号: 318364
現象
プライマリ ドメイン コントローラー (PDC) フレキシブル シングル マスター操作 (FSMO) ロールを保持するリモート ドメイン コントローラーのユーザー アカウント パスワードを変更した後、ユーザーは新しいパスワードを入力してローカル ドメイン コントローラーにサインインできない場合があります。 ただし、ユーザーは以前のパスワードを使用してドメインにサインインできる場合があります。
原因
この動作は、次の条件に該当する場合に発生する可能性があります。
リモート ドメイン コントローラーは、ローカル ドメイン コントローラーでまだレプリケートされていません。
Kerberos は、ユーザー データグラム プロトコル (UDP) プロトコル (既定の構成) を使用するように構成されています。
ユーザーのセキュリティ トークンが大きすぎて UDP Kerberos メッセージに収まらない。
Note
ユーザーが多数のグループのメンバーである場合、ユーザーのセキュリティ トークンは大きくなる可能性があります。
この問題は、ローカル ドメイン コントローラーでの Kerberos 認証の再生防止機能が原因で発生します。 次の手順は、この動作を示しています。
- ユーザー アカウントのパスワードはリモート ドメイン コントローラーで変更されますが、その変更はまだローカル ドメイン コントローラーにレプリケートされていません。
- ユーザーは、新しいパスワードを使用してドメインにサインインしようとします。 Kerberos 認証サービス Exchange メッセージ (KRB_AS_REQ) は、UDP を使用してローカル ドメイン コントローラーに送信されます。
- ローカル ドメイン コントローラーは、新しいパスワード情報をまだ持っていないため、認証に失敗します。
- ローカル ドメイン コントローラーは、リモート PDC (
KDCSVC!FailedLogon
) に要求を転送します。 FailedLogon
関数では、要求のエントリが再生検出テーブルに入力され、KRB_AS_REQ メッセージがリモート PDC に送信されます。- リモート PDC は要求を正常に認証し、ローカル ドメイン コントローラーに肯定的な応答を返します。
- ローカル ドメイン コントローラーは、応答が UDP パケットに対して大きすぎることを検出します。そのため、伝送制御プロトコル (TCP) を使用して要求を再送信する要求をクライアント コンピューターに送信します。
- クライアント コンピューターは、TCP を使用して認証要求を再送信します。
- ローカル ドメイン コントローラーは、(手順 3 のように) 新しいパスワード情報をまだ持っていないため、認証に失敗します。
- ローカル ドメイン コントローラーは、(手順 4 のように) リモート PDC ドメイン コントローラー (
KDCSVC!FailedLogon
) に要求を転送します。 FailedLogon
関数の再生検出チェックでは、この要求のエントリが既に再生検出テーブルに存在するため、KRB_AP_ERR_REPEAT メッセージが返されます。 これは、手順 5 で作成されたエントリです。
認証の試行が失敗します。
解決方法
この問題を解決するには、Windows 2000 用の最新のサービス パックを入手します。
この修正プログラムの英語版には、次の表に示すファイル属性 (またはそれ以降) があります。 これらのファイルの日付と時刻は、協定世界時 (UTC) で一覧表示されます。 ファイル情報を表示すると、ローカル時刻に変換されます。 UTC と現地時刻の違いを見つけるには、コントロール パネルの [日付と時刻] ツールの [タイム ゾーン] タブを使用します。
Date Time Version Size File name
-----------------------------------------------------------
22-Mar-2002 23:55 5.0.2195.4959 123,664 Adsldp.dll
30-Jan-2002 00:52 5.0.2195.4851 130,832 Adsldpc.dll
30-Jan-2002 00:52 5.0.2195.4016 62,736 Adsmsext.dll
22-Mar-2002 23:55 5.0.2195.5201 356,624 Advapi32.dll
22-Mar-2002 23:55 5.0.2195.4985 135,952 Dnsapi.dll
22-Mar-2002 23:55 5.0.2195.4985 95,504 Dnsrslvr.dll
22-Mar-2002 23:56 5.0.2195.5013 521,488 Instlsa5.dll
22-Mar-2002 23:55 5.0.2195.5246 145,680 Kdcsvc.dll
22-Mar-2002 23:50 5.0.2195.5246 199,952 Kerberos.dll
07-Feb-2002 19:35 5.0.2195.4914 71,024 Ksecdd.sys
02-Mar-2002 21:32 5.0.2195.5013 503,568 Lsasrv.dll
02-Mar-2002 21:32 5.0.2195.5013 33,552 Lsass.exe
08-Dec-2001 00:05 5.0.2195.4745 107,280 Msv1_0.dll
22-Mar-2002 23:55 5.0.2195.4917 306,960 Netapi32.dll
22-Mar-2002 23:55 5.0.2195.4979 360,208 Netlogon.dll
22-Mar-2002 23:55 5.0.2195.5221 917,264 Ntdsa.dll
22-Mar-2002 23:55 5.0.2195.5201 386,832 Samsrv.dll
30-Jan-2002 00:52 5.0.2195.4874 128,784 Scecli.dll
22-Mar-2002 23:55 5.0.2195.4968 299,792 Scesrv.dll
30-Jan-2002 00:52 5.0.2195.4600 48,400 W32time.dll
06-Nov-2001 19:43 5.0.2195.4600 56,592 W32tm.exe
22-Mar-2002 23:55 5.0.2195.5011 125,712 Wldap32.dll
回避策
この問題を回避するには、ローカル ドメイン コントローラーでユーザー アカウントのパスワードを変更するか、KERBERos で UDP (ユーザー データグラム プロトコル) ではなく TCP (伝送制御プロトコル) を使用するように強制します。
詳細については、「 Windows で UDP ではなく TCP を Kerberos に強制的に使用させる方法を参照してください。
状態
Microsoft は、この記事の冒頭に記載されている Microsoft 製品の問題であることを確認しました。 この問題は、Windows 2000 Service Pack 3 で最初に修正されました。
詳細
Kerberos の再生防止機能により、認証サーバーが同じパケットを 2 回受信できなくなります。 リプレイ攻撃とは、有効なデータ転送が悪意を持って、または不正に繰り返される攻撃です。これは、発信元またはデータを傍受して再送信する敵対者によって行われます。 攻撃者は、そのユーザーの資格情報を使用して認証を試みる際に、有効なユーザーのユーザー名とパスワードを "再生" しようとする可能性があります。