Active Directory(AD)を使っている会社では、ドメインのアカウントでのログオンをドメインコントローラー(DC)が認証しています。そのため、「誰が・いつ・どのPCからログオンしたか」は、各PCを1台ずつ見なくても、DCのログでまとめて調べられます。1台のPCの中の履歴を見る方法はWindowsのログイン履歴を確認する方法で扱っています。
ADのログオン履歴を調べる順番
- 1
監査が有効か確認
アカウント ログオンの監査
- 2
DCで4768を見る
誰がどのPCから
- 3
失敗を数える
4771・4776
- 4
ロックアウトの発生元
4740(PDCエミュレーター)
- 5
最終ログオン日時
LastLogonDate
DCで見るべきイベントID
| イベントID | 意味 | 分かること |
|---|---|---|
| 4768 | Kerberos 認証チケット(TGT)の要求 | ユーザー名と、接続元のIPアドレス。成功・失敗は「結果コード」で分かる |
| 4771 | Kerberos の事前認証に失敗 | パスワード誤り(エラー コード 0x18)。総当たりの痕跡 |
| 4776 | 資格情報の確認(NTLM) | Kerberosを使わない古い方式の認証。接続元のコンピューター名 |
| 4740 | アカウントがロックアウトされた | ロックの原因になった呼び出し元のコンピューター名 |
PCの前に座ってログオンした記録(4624)は、そのPC自身のログに残ります。DCに残るのは「そのアカウントの認証を受け付けた」という記録です。両方を組み合わせると、どのPCで誰がログオンしたかが分かります。
PC版 月1,800円/台(初期費用0円)・サーバー版 月20,000円/台。初月無料ではじめられます(税別・目安)
Windowsのログインは、パスワードを知っていれば誰でも本人として入れます
ADのログオン履歴に残るのは「パスワードが合っていたかどうか」です。漏れたパスワードで入った人も、記録の上では本人のログオンになります。
パスワードだけのログイン
漏れた・推測された・メモを見られたパスワードで、そのまま本人として入れます。記録の上でも本人と区別できません。
2要素認証のログイン
パスワードに加えて、本人だけが持つもの(スマホなど)が必要です。パスワードを知っているだけでは入れません。
- VPNや社内Wi-Fiから社内に入られたあと、被害がPC・サーバーへ広がるかどうかは、このログインの部分で決まります。
- 顔・指紋・PIN(Windows Hello)は、ログインを簡単にする仕組みで、2要素認証ではありません。
- 2要素認証というと手間が増えそうですが、本人のスマホを鍵にしたワンタッチログインなら、初回の設定のあとはPINもWindowsのパスワードも打たずに、スマホのワンタッチで入れます。長いパスワードを覚えて打つ手間は、むしろなくなります。
記録されていないときは:監査の設定
4768・4771・4776が出ない場合は、DCで監査が無効になっています。Default Domain Controllers Policy(またはDC向けのGPO)で、次の項目の「成功」「失敗」を有効にします。
監査の設定場所
- 1
gpmc.msc でDC向けGPOを編集
Default Domain Controllers Policy など
- 2
監査ポリシーの詳細な構成
コンピューターの構成 → ポリシー → Windows の設定 → セキュリティの設定
- 3
アカウント ログオン
「Kerberos 認証サービスの監査」「資格情報の確認の監査」
- 4
アカウント管理
「ユーザー アカウント管理の監査」(4740 用)
DCのセキュリティログは記録が多く、すぐに上書きされます。必要な期間が残るように、ログの保存サイズの上限もあわせて見直してください。
PowerShellで抽出する
DCの上で、管理者のPowerShellから実行します。
あるユーザーの認証(4768)を一覧にする
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4768; StartTime=(Get-Date).AddDays(-7)} | Where-Object { $_.Properties[0].Value -eq 'yamada' } | ForEach-Object { [pscustomobject]@{ 日時=$_.TimeCreated; ユーザー=$_.Properties[0].Value; 結果=$_.Properties[6].Value; 接続元=$_.Properties[9].Value } }yamada を調べたいユーザー名に変えます。「結果」が 0x0 なら成功です。接続元のIPアドレスからPCを特定するには、DHCPの払い出し記録やDNSと照らし合わせます。
パスワード誤り(4771)を接続元ごとに数える
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4771; StartTime=(Get-Date).AddDays(-7)} | ForEach-Object { [pscustomobject]@{ ユーザー=$_.Properties[0].Value; コード=$_.Properties[4].Value; 接続元=$_.Properties[6].Value } } | Group-Object ユーザー, 接続元 | Sort-Object Count -Descending | Select-Object -First 20DCが複数あるときは全台を見る
Get-ADDomainController -Filter * でDCの一覧を出し、-ComputerName を付けて順に調べます。ロックアウトの発生元を調べる
ロックアウトの記録(4740)は、PDCエミュレーターの役割を持つDCに集まります。どのDCかは (Get-ADDomain).PDCEmulator で分かります。4740の「呼び出し元コンピューター名」が、誤ったパスワードを送り続けている機器です。
Get-WinEvent -ComputerName (Get-ADDomain).PDCEmulator -FilterHashtable @{LogName='Security'; ID=4740; StartTime=(Get-Date).AddDays(-1)} | ForEach-Object { [pscustomobject]@{ 日時=$_.TimeCreated; ユーザー=$_.Properties[0].Value; 呼び出し元=$_.Properties[1].Value } }原因の切り分けと解除の手順はアカウントロックアウトの原因を特定する手順とロックアウトを解除する方法にまとめています。
最終ログオン日時を確認する
「最後にいつログオンしたか」だけを知りたい場合は、ユーザーの属性を見ます。
Get-ADUser yamada -Properties LastLogonDate, lastLogon | Select-Object Name, LastLogonDate, @{n='lastLogon(このDC)';e={[datetime]::FromFileTime($_.lastLogon)}}| 属性 | 特徴 | 向いている使い方 |
|---|---|---|
| LastLogonDate(lastLogonTimestamp) | 全DCで同じ値になるが、更新は最大で約2週間遅れる | 長く使われていないアカウントの洗い出し |
| lastLogon | 正確だが、DCごとに値が違う(他のDCに伝わらない) | 直近のログオンを正確に知りたいとき。全DCの最大値を取る |
何か月も使われていないアカウントは、退職者や異動者のものが残っていることが多く、入られても気づきにくい入口です。整理の進め方は退職者アカウントの削除・棚卸しで扱っています。
DCに残らないログオン
| ログオンの種類 | どこを見るか |
|---|---|
| ローカルアカウント(PCの中だけのアカウント) | そのPCのセキュリティログ(4624・4625) |
| 社外などDCにつながらない状態でのログオン(キャッシュされた資格情報) | そのPCのログ。4624のログオン タイプ 11 |
| Microsoft Entra ID(クラウド)だけのサインイン | Entraのサインイン ログ(確認方法) |
履歴で分からないこと
ADのログオン履歴で分かること・分からないこと
分からない(次の場合)
- パスワードを知っている別の人が、そのアカウントでログオンした
- 管理者アカウントを複数人で共有している
- 漏れたパスワードで、社内に入った攻撃者がログオンした
分かること
- どのアカウントの認証が、いつ行われたか
- どのPC・IPアドレスから認証が来たか
- パスワード誤りやロックアウトがどこで起きたか
DCが確かめているのは「パスワードが合っているか」だけです。パスワードが漏れていれば、攻撃者のログオンも記録上は本人のログオンと区別がつきません。VPNや社内Wi-Fiから社内に入られたあと、ドメインのアカウントでPC・サーバーを渡り歩かれるのは、この仕組みのためです。
全PC・サーバーをADなしで1か所にまとめて管理する方法はADなしで社内のPC・サーバーをまとめて管理する方法、さらに社内のPC・サーバーのログインを2要素認証にする考え方はOSログイン・PCログインの二要素認証、管理者アカウントの扱いはWindows Serverの特権アカウント管理にまとめています。盗まれた正規アカウントで入られると、記録上は通常のログオンと見分けにくくなります。委託先の正規アカウントで顧客のシステムに入られた実例は大阪公立大学・NEC委託先の不正アクセスで整理しています。
普段の管理が楽になると何が変わるか
この記事の手順は、DCが複数あれば全台を回り、IPアドレスからPCをDHCPの記録で照らし合わせ、PCに残るローカルのログオンは別に調べる、という手間がかかります。全PC・サーバーのログイン記録(日時・利用者・接続元のPC名とIPアドレス)が1か所にまとまっていれば、ユーザー名や期間で絞り込むだけで済み、ログは10年間残ります。
監査や取引先のチェックシートで「ログイン記録を出してください」と言われても、その日のうちにCSVで出せます。DCのログが上書きされる前に急いで集める、という作業もなくなります。
よくある質問
Active Directoryでユーザーのログオン履歴はどこで確認できますか
ドメインコントローラーのセキュリティログで確認します。Kerberosの認証はイベントID 4768、パスワード誤りは4771、NTLMの認証は4776に記録されます。DCが複数ある場合は、すべてのDCを調べます。
ADで最終ログオン日時を確認するには
PowerShellの Get-ADUser で LastLogonDate を表示します。全DCで同じ値ですが、更新が最大で約2週間遅れます。正確な日時が必要な場合は、各DCの lastLogon を調べて最も新しい値を使います。
ロックアウトの原因になっているPCはどう探しますか
PDCエミュレーターの役割を持つDCで、イベントID 4740を確認します。「呼び出し元コンピューター名」が、誤ったパスワードを送り続けている機器です。
いまの運用を棚卸ししてみる
履歴を見て「誰が入ったか分からない」記録が出てきた場合、原因の多くはアカウントの共有や、パスワードだけで入れるログインにあります。applippliの無料チェックでは、10問・約3分で、PCログインまわりの対応状況を「解決済み/一部解決/人手で対応/未解決」に仕分けた一覧にできます。個人情報の入力は不要で、会員登録もありません。
参考・出典
- Microsoft Learn「4768(S, F): Kerberos 認証チケット (TGT) が要求されました」
- Microsoft Learn「4771(F): Kerberos の事前認証に失敗しました」
- Microsoft Learn「4776(S, F): コンピューターがアカウントの資格情報の検証を試みました」
- Microsoft Learn「4740(S): ユーザー アカウントがロックアウトされました」
※ 本記事は2026年11月時点の一般的な解説です。イベントの項目の並びは、Windows Serverのバージョンや更新によって変わることがあります。PowerShellの例で使っている項目の番号(Properties[n])が合わない場合は、イベントの詳細(XML表示)で位置を確認してください。
