Active Directory とは依然として仲良しにはなれていないのですが、そうも言っていられない日々が続いています…。
今日はコンピュータアカウントのパスワードについて。
コンピュータアカウントのパスワードはセキュリティポリシーの
– [ドメイン メンバー: 最大コンピュータ アカウントのパスワード有効期間]
の設定値で定期的に変更され、ドメイン コントローラーでも保持しているパスワードと一致しない場合は、
セキュアチャネルの確立ができず、ドメイン ログオンに失敗する仕組みになっています。
パスワードは 1 世代前のものも保持されており、現在のパスワードと 1 世代前のパスワードの両方を使用して
セキュアチャネルが確立できないと NG になります。
Netdom.exe を使用して Windows 2000 ドメイン コントローラのコンピュータ アカウントのパスワードをリセットする方法
セキュアチャネルについては Microsoft の Network & AD サポートチームの以下の記事がとても参考になります。
ドメインにログオンできない ~ セキュア チャネルの破損 ~
パスワードを無期限にする方法に関しては Microsoft エバンジェリスト 安納さんがまとめてくださっています。
【Hyper-V】スナップショットとコンピュータアカウントパスワードの微妙な関係
ちなみに、パスワード不整合が起きたかどうかはドメイン コントローラで対象のコンピュータアカウントの
– [badPwdCount]
– [badPasswordTime]
を見るとわかります。
ドメインコントローラーのイベントビューアでイベント ID [5722] で見る方法も。
ドメインコントローラー側は Active Directory 上にパスワードを持っているとして、クライアント側の場合は
どこにパスワードを持っているのかというと [LSA (ローカル セキュリティ 機関)] に格納されています。
LSA の内容は以下のレジストリで内容を見ることができます。
– [HKEY_LOCAL_MACHINESECURITY]
デフォルトの状態ではこのレジストリには [SYSTEM] しか読み取りの権限がありませんので他のユーザーで内容を確認したい場合は、
[SECURITY] を右クリックして [アクセス許可] を選択し、読み取り権限を明示的に付与する必要があります。
- [アクセス許可] を選択
- 操作しているユーザーに [読み取り] を追加
Windows 2000 の場合は [regedit.exe] からはアクセス許可の設定ができないため、[regedt32.exe] を使用します。
アクセス許可を設定すると [SECURITY] が展開できるようになります。
?
コンピュータアカウントの情報は以下の場所に格納されています。
– [HKEY_LOCAL_MACHINESECURITYPolicySecret.s$MACHINE.ACC]
?
このレジストリキーを展開すると以下の階層が表示されます。
[CurVal] [OldVal] がコンピュータアカウントのパスワードの値になるようです。
# [CupdTime] [OupdTime] がそれぞれの値の変更されたタイミングになります。
ただし、世代移動のタイミングで両方の値が更新されるようで、変更されたタイミングは同じ値が入っていました。
意図的にコンピュータアカウントのパスワード不整合を発生させたい場合は、[CurVal] [OldVal] を書き換えると現象を発生させることが可能です。
あまりにも変な値を入力するとログオンできないだけでなく、ドメインからはずせなくなりますのでご利用は計画的に。
次回は意図的にパスワード不整合を発生させ、ログオンできない状態にさせてみたいと思います。