Windows 7 でパスワードが変更できない
こんにちは。プラットフォーム サポートです。
ドメインに所属している Windows 7 に「2016 年 4 月」以降のセキュリティ更新プログラムを適用後、下記のメッセージが表示されてパスワードを変更することができなくなる場合があることが報告されております。
「サーバーのセキュリティ データベースにこのワークステーションの信頼関係に対するコンピューター アカウントがありません。」
本事象は、ドメインメンバーが Windows Update などを実施し Kerberos 関連モジュールが更新される一方で、ドメインコントローラー側では Windows Update がなされておらず、Kerberos 認証の互換性に問題が生じるために発生します。
発生条件
この事象は、下記の 5 つの条件が重なったときに発生します。
- ドメイン コントローラーの OS に Windows Server 2008 もしくは Windows Server 2008 R2 が存在している
- 過去にドメインで権限のあるリストア (Authoritative Restore) を実施したことがある
- クライアントの Kerberos.dll のファイル バージョンの下 5 桁が 22320 以上となっている
- クライアントで Ctrl + Alt + Del 等からパスワード変更を行う
- ドメイン コントローラーの Kdcsvc.dll のバージョンが、特定のものよりも古い (詳細なバージョンの確認方法は文末をご覧ください)
「2016 年 4 月」に公開された下記の更新プログラムの中に Kerberos.dll のファイル バージョンの下 5 桁が 22320 のものが含まれているため、上記の (1) や (2) に該当する環境では、本事象が発生する場合があります。
https://support.microsoft.com/ja-jp/kb/3149090
- Kerberos.dll 6.1.7601.23390 731,136 16-Mar-2016 00:14 x64
- Kerberos.dll 6.1.7601.23390 553,984 15-Mar-2016 23:52 x86
https://support.microsoft.com/ja-jp/kb/3146706
- Kerberos.dll 6.1.7601.23392 553,984 17-Mar-2016 22:26 x86
- Kerberos.dll 6.1.7601.23392 553,984 17-Mar-2016 22:26 x86
https://support.microsoft.com/ja-jp/kb/3147071
- Kerberos.dll 6.1.7601.23376 553,984 10-Mar-16 20:02 x86
- Kerberos.dll 6.1.7601.23376 731,136 10-Mar-16 18:51 x64
この問題は、クライアント側のプログラムに追加された canonicalize フラグをドメイン コントローラー側が認識することができず、パスワード変更要求を適切に処理できないために発生します。
*補足
パスワード変更時に同じメッセージが表示される別の報告もございます。詳細は下記のサイトで説明しておりますので、上記の発生条件に合致しない場合には、下記の内容も併せてご確認ください。
パスワード変更時のエラーメッセージについて
https://blogs.technet.microsoft.com/jpntsblog/2016/03/03/1832/
対処策
本問題の対処策は、下記の修正プログラムを全てのドメイン コントローラーに適用する方法となります。
(暫定的な対処としては、クライアント側で上記の更新プログラムをアンインストールする方法でも構いませんが、セキュリティを考慮すると、極力ドメインコントローラー側に下記プログラムを適用されることをお勧めします。)
■ ドメイン コントローラーが Windows Server 2008 の場合
Error code when the kpasswd protocol fails after you perform an authoritative restore: "KDC_ERROR_S_PRINCIPAL_UNKNOWN"
https://support.microsoft.com/en-us/kb/976424
■ ドメイン コントローラーが Windows Server 2008 R2 の場合
Domain users cannot change or reset their passwords when KRBTGT account is restored in Windows client
https://support.microsoft.com/en-us/kb/2910686
※ いずれもインストールを行った後に、ドメイン コントローラー側で OS の再起動が必要です。
※ クライアント側での作業は不要です。
※ Windows Server 2008 R2 向けの KB2910686 の修正プログラムを適用するためには、事前に Service Pack 1 (SP1) が適用されている必要があります。SP1 が未適用の Windows Server 2008 R2 については、SP1 を適用した上で、KB2910686 の修正プログラムを適用してください。
確認方法
以下、確認方法を記載します。
■ クライアントの .dll のバージョンの確認方法
1. クライアントにログオンを行い、エクスプローラーを起動します。
2. %windir%\System32 を開きます。
3. kerberos.dll を右クリックして [プロパティ] を開きます。
4. [詳細] タブを開き、ファイル バージョンを確認します。
ファイル バージョンの下 5 桁が 22320 以上となっている場合に該当します。
■ 過去に「権限のあるリストア」を実施したことがあるかどうかの確認方法
1. ドメイン コントローラーのいずれか 1 台にログオンします。
2. コマンド プロンプトを起動して、下記のコマンドを実行します。repadmin /showobjmeta <My_DC> "CN=krbtgt,CN=Users,<ドメインの識別名>" > krbtgt.txt
例えば、ドメイン コントローラー名が DC1、ドメイン名が contoso.com の場合は次のようになります。
repadmin /showobjmeta DC1 "CN=krbtgt,CN=Users,DC=contoso,DC=com" > krbtgt.txt
3. 出力された krbtgt.txt を開き、pwdLastSet の Ver (バージョン) が 100002 以上の値の場合は、過去に「権限のある復元」を実施したことがある環境となります。
権限のあるリストアについては、以下をご参照ください。
削除された AD DS オブジェクトの権限のある復元の実行
https://technet.microsoft.com/ja-jp/library/cc755296(v=ws.10).aspx
■ ドメイン コントローラーにおける修正プログラムの .dll のバージョンの確認方法
1. すべてのドメイン コントローラーにログオンを行い、下記の確認を行います。
2. エクスプローラーを起動します。
3. %windir%\System32 を開きます。
4. Kdcsvc.dll を右クリックして [プロパティ] を開きます。
5. [詳細] タブを開き、ファイル バージョンを確認します。
ドメイン コントローラーの Kdcsvc.dll のバージョンが、下記よりも古い場合に本事象が発生します。
上記は、Windows Server 2008 R2 SP1 の例で、ファイル バージョンが 6.1.7601.17514 となっており、下記のバージョンより古い状態を示します。
Windows Server 2008 (KB976424)
Kdcsvc.dll 6.0.6002.22313 312,832 15-Jan-2010 19:56 x86
Kdcsvc.dll 6.0.6002.22313 406,528 15-Jan-2010 19:49 x64
Windows Server 2008 R2 (KB2910686)
Kdcsvc.dll 6.1.7601.18321 430,080 15-Nov-2013 08:40 x64
Kdcsvc.dll 6.1.7601.22515 434,688 14-Nov-2013 09:06 x64
- Windows Server 2008 R2 では、Kdcsvc.dll のファイル バージョンの下 5 桁が、1万番台の場合と、2 万番台の場合があります。
- 1 万番台の場合は、18321 よりも古い場合に、2 万番台の場合は、22515 よりも古い場合に本事象が発生する条件に該当します。
- 変更履歴
2016 年 5 月 30 日 初回投稿
2016 年 6 月 17 日 画像追加
2017 年 8 月 24 日Windows Server 2008 R2 の SP1 適用について追記