【AD運用】イベント4740からアカウントロック発信元PCを特定する手順
※本記事には広告を含みます。
はじめに
社内のActive Directory環境で、「パスワードを変更したばかりの特定社員のアカウントが、作業もしていないのに数分おきに勝手にロックされる」という問い合わせ対応に追われた経験はないでしょうか。
私も過去に、役員のアカウントが何度もロックされ、解除しては数分後に再ロックされるという無限ループに陥り、冷や汗を流しながら原因調査をした経験があります。
原因のほとんどは、そのユーザーが過去にサインインしたどこかの端末やスマートフォンに「古いパスワード」が記憶されており、バックグラウンドで認証試行を繰り返して失敗していることです。
この記事では、ドメインコントローラー(DC)のセキュリティログから「イベントID 4740」を抽出し、ロックを引き起こしている犯人端末を特定する手順と、端末側に潜む古い資格情報の除去テクニックを徹底解説します。
読み終えるころには、アカウントロックの無限ループを最短時間で根本解決できるようになります。
この記事の要点
- アカウントロックの発生源は、ドメインコントローラーのセキュリティイベントログ「イベントID 4740」に記録される
- アカウントロックイベントは、ドメイン内のFSMO役割を持つ 「PDCエミュレーター」 に集約される
- 発信元端末を特定した後は、「資格情報マネージャー」「スケジュールタスク」「常駐サービス」の3箇所を点検する
| 項目 | 動作確認・検証環境 |
|---|---|
| 検証年月 | 2026年3月 |
| 対象OS | Windows Server 2022 / Windows 11 Pro 23H2・24H2 |
| 監視対象ログ | セキュリティイベントログ(Security.evtx) |
| 対象イベントID | 4740(ユーザー アカウントがロックされました) |
| 実行権限 | Domain Admins または Event Log Readers |
結論:イベントID 4740の「呼び出し元コンピューター名」を確認する
結論からお伝えすると、アカウントロックの原因調査は 「PDCエミュレーターのセキュリティログからイベントID 4740を検索し、『呼び出し元コンピューター名(Caller Computer Name)』を突き止める」 のが最速です。
認証エラー(イベントID 4625)自体は各ドメインコントローラーに分散して記録されますが、アカウントが規定の失敗回数に達して「ロック状態」に遷移したイベント4740は、必ずPDCエミュレーターに集約される仕様になっています。
【実機調査】PowerShellでロック発生元端末を一撃で特定するコマンド
イベントビューアーを手動で開いて探すのは時間がかかるため、PowerShellから一括検索するのが現場のベストプラクティスです。
1. PDCエミュレーターを特定してイベント4740を検索
以下のスクリプトを実行すると、現在ロックされているユーザー名と、ロックを誘発した端末ホスト名が一覧出力されます。
# 1. ドメイン内のPDCエミュレーターを取得
$PDC = (Get-ADDomainController -Discover -Service PrimaryDC).HostName
Write-Host "PDCエミュレーター: $PDC からイベント4740を検索中..." -ForegroundColor Cyan
# 2. 直近24時間のイベントID 4740を抽出
$Filter = @{
LogName = 'Security'
Id = 4740
StartTime = (Get-Date).AddDays(-1)
}
$Events = Get-WinEvent -ComputerName $PDC -FilterHashtable $Filter -ErrorAction SilentlyContinue
# 3. ユーザー名と発信元端末名を整形表示
$Results = foreach ($Event in $Events) {
[PSCustomObject]@{
TimeCreated = $Event.TimeCreated
UserName = $Event.Properties[0].Value
CallerPC = $Event.Properties[1].Value
}
}
$Results | Out-GridView -Title "アカウントロック発信元一覧"
実行結果の CallerPC 列に表示されるコンピューター名が、古いパスワードでアタックを仕掛けている「発信元端末」です。
犯人端末が判明したあとの「古い資格情報」除去チェックリスト
発信元端末(PCやサーバー)にログインし、どこに古いパスワードが残っているかを以下の順序で点検します。
1. Windows 資格情報マネージャー(Credential Manager)
最も多い原因がここです。共有フォルダや社内Webサイトへの接続パスワードがキャッシュされています。
- 確認手順:
「コントロール パネル」>「資格情報マネージャー」>「Windows 資格情報」を開き、該当ドメインの資格情報(TERMSRV/、共有サーバー名等)を削除します。
2. スケジュールタスクの実行ユーザー
そのユーザーが過去に作成したバッチ処理などが、古いパスワードのままタスクスケジューラに登録されているケースです。
# 該当ユーザーの権限で登録されているタスクを一覧表示
Get-ScheduledTask | Where-Object { $_.Principal.UserId -like "*該当ユーザー名*" } | Select-Object TaskName, State
3. Windows サービスのログオンアカウント
開発端末などで、ローカルサービス(SQL Server、Apache、自作エージェント等)のログオンユーザーに個人アカウントを設定していた場合、サービス起動時や再試行時にロックが発生します。
# 該当ユーザーで動作しているサービスを検索
Get-CimInstance Win32_Service | Where-Object { $_.StartName -like "*該当ユーザー名*" } | Select-Object Name, StartName, State
4. モバイル端末のWi-Fi・メールアカウント
CallerPC が空欄、または社内のRadiusサーバー/プロキシサーバー名になっている場合、原因はPCではなく 社員のスマートフォン(iPhone/Android) です。
- 社内Wi-Fi(802.1X認証)に古いドメインパスワードが保存されたままになっている
- 標準メールアプリでExchange ActiveSyncの同期エラーが起きている
端末のWi-Fiを一度オフにしてもらい、ロックが止まるかを確認してください。
よくある質問(FAQ)
Q: CallerPC(呼び出し元コンピューター名)が空欄になっていることがあります。なぜですか?
A: NTLM認証においてクライアント名がネゴシエーションで渡されなかった場合や、外部のVPNゲートウェイ・Webアプリケーション経由で認証が行われた場合に空欄になります。その場合は、イベントID 4625(ログオン失敗)の「ネットワーク情報(送信元ネットワーク アドレス / 送信元IP)」を追跡して端末を特定します。
Q: PowerShellでユーザーのアカウントロックを解除するコマンドは?
A: ActiveDirectoryモジュールを使用して、以下の1行で即時解除できます。
Unlock-ADAccount -Identity "ユーザーアカウント名"
まとめ
Active Directoryにおけるアカウントロック多発トラブルの解決フローは以下の通りです。
- ロック調査は PDCエミュレーターのイベントID 4740 を最優先で確認する
- イベント詳細の 「呼び出し元コンピューター名(Caller Computer Name)」 から発信元を突き止める
- 端末側では 「資格情報マネージャー」「タスクスケジューラ」「サービス」「Wi-Fi/スマホ」 の順に古いパスワードを点検・除去する
- 発信元が特定できない場合は イベント4625の送信元IPアドレス から追跡する
この手順をマニュアル化しておくことで、突発的なアカウントロック対応に費やす時間を数分で終わらせることができます。
関連記事
この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。
また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。
またお会いしましょう!
著者のおすすめ教材 & note実践記事
PowerShell実務スクリプト50選
AD・Windows運用・障害対応をコマンド一発で自動化する現役SEの実務スクリプト集。
ググっても出ない実務テク20選
社内SE現場の地味で細かすぎる面倒作業を一撃で解消する実践テクニック集。