アカウントがロックアウトされる


アカウント ロックアウトポリシーは指定された期間内で間違ったパスワードを指定された回数入力された場合にアカウントを無効にする機能です。ユーザー アカウントはログオン等の通常のユーザーとしての用途のほか、サービスやアプリケーション等にも利用されます。


マイクロソフトには、意図せずアカウントがロックアウトされてしまうというお問い合わせ寄せられることがありますが、この問題は OS の機能で既にある監査ログ並びに一般公開されているツールにより原因を追究できることが多く、調査には内部ツールを必要としません。ここでは、意図しないアカウントロックアウトが繰り返し発生する場合の調査方法について説明します。


1. ロックアウトの原因となる認証の要求元を特定する。


アカウント ロックアウトの原因追及には認証要求の発生元システムを特定する必要がありますが、特定方法の前に Windows の認証時の動作について説明します。


クライアントからの認証要求はドメインコントローラにより処理されます。クライアントは接続するドメイン コントローラを DNS もしくは既に通信をしている場合にはキャッシュしている情報から取得し、取得したドメインコントローラに対して設定されたパスワードなどの情報を元に作成された情報を認証要求として送信します。情報が正しい場合にはドメイン コントローラから認証要求が正しい事がクライアントに伝えられ、認証は成功します。逆に認証要求の情報が間違っている場合には、他のドメインコントローラにてユーザーのパスワードが更新されたが、まだ複製がされてきていない事により自身の保持する情報が古くなっている可能性がある為、該当ドメイン コントローラは最新の情報を持つことが保証された PDC エミュレーターの役割を持つ DC (以降 PDC) に問い合わせます。PDC においてもパスワードが誤っていると判断された後、クライアントに認証要求の情報が誤っている事が通知されます。


クライアントからの認証要求はそれを処理したドメイン コントローラの監査ログ (アカウント ログオン<失敗>) に記録されます。通常はどのドメインコントローラが認証しているのかが分からない為、以下の手順にて全ドメイン コントローラにて監査ログを有効にします。


グループ ポリシーで監査ログを有効にする。


1. [Active Directory ユーザーとコンピュータ] を開き [Domain Controllers] OU を右クリックし、コンテキスト メニューから [プロパティ] を選択します。


image


2. [Domain Controllers のプロパティ] - [グループポリシー] タブ にて "Default Domain Controllers Policy" が選択されている状態で [編集] ボタンをクリックします。


image


3. [グループ ポリシー オブジェクト エディタ] 左ペインにて [コンピュータの構成] - [Windows の設定] - [ローカル ポリシー] - [監査ポリシー] の順で選択します。


4. 右ペインにて "アカウント ログオン イベントの監査" をダブル クリックし、[失敗] の監査を有効にします。


image


5. 全 DC にて gpupdate /force を実行し、変更したグループ ポリシーを適用します。


上記手順実施後、間違ったパスワードで認証要求を処理したドメイン コントローラでは、セキュリティ イベント ログに ID 675 等により事前認証の失敗が通知されます。クライアント (192.168.0.111) から PDC の役割を持たない DC (192.168.0.10) に対して送信した認証要求が失敗した場合、以下のようなログが記録されます。


image


また、認証要求が失敗する場合には PDC にも問い合わせるため、同じ認証要求の処理の過程にて PDC においても失敗の監査が記録されます。(PDC 側に記録されるイベントログの説明部分に記録されるクライアント アドレスは、認証要求を転送してきたドメイン コントローラとなります。)


image


上記イベントの説明部分にはユーザー名のほかに "失敗コード" が記録されています。有効なアカウントに対してパスワードが間違っている事により事前認証が失敗する場合、この失敗コードは KDC_ERR_PREAUTH_FAILED を表す 0x18 となります。アカウントが既にロックアウトされている事により認証要求が失敗する場合にはこの失敗コードは (KDC_ERR_CLIENT_REVOKED) を表す0x12 となります。最後にクライアントアドレスは認証要求を送信元を示しています。


今回はアカウント ロックアウトの原因となっている認証要求の発生元を確認する必要がある為、監査ログを有効にしロックアウトが発生した後のセキュリティイベント ログを確認し、アカウントがロックアウトされる原因となる認証要求 (失敗コードが 0x18 のイベント) の送信元 (クライアントアドレス) を特定します。


2. 認証要求を投げているコンポーネントを特定する


1. でどこからの認証要求が原因でアカウント ロックアウトが発生したのかを特定できたので、次はその端末の中のどのコンポーネント (サービスやアプリケーション) が認証要求を投げているのかを特定します。これには以下のリンクからダウンロードできる alockout.dll を利用します。


Account Lockout and Management Tools
http://www.microsoft.com/downloads/details.aspx?FamilyID=7AF2E69C-91F3-4E63-8629-B999ADDE0B9E&displaylang=en


- インストール手順 -


1) 上記リンクからダウンロードした ALTools.exe に含まれる AlockoutXP.zip を解凍します。
2) ALockout.dllを%Systemroot%\System32フォルダにコピーします。
3) Appinit.regファイルを実行し、ALockout.dllファイルに関してレジストリを更新し、再起動します。


- アンインストール手順 -


1) 次のレジストリキーからAlockout.dll値を削除し、再起動します。

   HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

2) %Systemroot%\System32フォルダからAlockout.dllファイルを削除します。


alockout.dll をインストールする事により、 C:\Windows\Debug\alockout.txt が出力されるようになり、このログから認証要求を送信する可能性があるプロセスの起動 (DLL_PROCESS_ATTACH) 並びに終了 (DLL_PROCESS_DETATCH) が確認できます。ここから不正な認証要求がどのプロセスから送信されているのかを推定します。


例えば net use コマンドにて入力したパスワードが誤っていた状況を例として紹介します。この場合、まず 1. の手順にてドメイン コントローラ側のセキュリティ イベント ログに以下のようなイベントが記録されている事が確認できます。


image


上記イベントでは 192.168.0.71 からの Repro\UserB の認証要求が失敗している事が確認できます。ID675 が記録された 22:28:58 前後の192.168.0.71 にて採取した Alockout.txt  には以下のログが記録されていて、これから net.exe が認証要求を送信している事が確認できます。


  Fri Feb 20 22:28:53 2009, PID:  3800, Thread:  3804, 
    Image net,ALOCKOUT.DLL - DLL_PROCESS_ATTACH
  Fri Feb 20 22:28:58 2009, PID:  3800, Thread:  3804, 
    Image net,***WNetUseConnectionW Failed!*** (1), 
  Fri Feb 20 22:28:58 2009, PID:  3800, Thread:  3804, 
    Image net,ALOCKOUT.DLL - dll_process_detatch



3. 補足


- アカウント ロックアウトが発生したタイミングの特定方法


アカウントがロックアウトされたタイミングはイベント ログの ID 644 として記録されます。アカウントのロックアウトのしきい値が 10 回となっている場合、ID 675 により事前認証の失敗が 10 回記録された後、ID 644 でアカウントがロックアウトされた旨が通知されます。


image


- eventcombMT でイベントを収集する


ドメイン コントローラの台数が多いほど、1. の手順は手間を要します。そのため、そうした場合には eventcombMT.exe を利用します。eventcombMT.exe は複数台の端末から特定のイベントログだけを採取します。利用方法は以下の技術情報に記載されています。


EventCombMT ユーティリティを使用して、イベント ログでアカウント ロックアウトを検索する方法
http://support.microsoft.com/kb/824209


- alockout.dll ではなく監査ログから認証要求を送信しているプロセスを特定する。


Windows Server 2003 の環境であれば Alockout.dll を利用する事なく原因となっているプロセスを特定できる場合があります。これには、まず 1. にて特定した認証要求の送信元にてログオン イベントの失敗の監査を有効にします。これにより失敗したログオン要求が確認されると、該当端末のセキュリティイベント ログには ID 529 のイベントが記録されます。


image


このイベントの説明箇所に "呼び出し側プロセス ID:" があります。これが認証要求を送信しているプロセス ID となります。このプロセス ID に該当するプロセス名を探すにはコマンドプロンプトにて tasklist コマンドを実行し、該当プロセス ID を探します。ここではプロセス ID 364 が services.exe である事が確認できます。


image


- リンク:


Account Passwords and Policies in Windows Server 2003
http://technet.microsoft.com/en-us/library/cc783860.aspx











Comments (0)

Skip to main content