イベントログを開いたら、4624(ログオン成功)が1日に数千件、多いときは数万件記録されることがあります。
これによって量に埋もれて本当に見るべきログを見逃すのは避けたいところです。
この記事では、4624を切り分けて見る考え方を整理します。
4624が多いこと自体は異常ではない
イベントID 4624
アカウントのログオンが正常に成功したことを記録するイベント。ユーザーの対話ログオンだけでなく、コンピューターアカウント自体の認証、サービスアカウントの定期認証、ファイル共有・プリンタへのアクセスなど、あらゆる「認証が成功した」瞬間に記録される。
「あらゆる認証成功」が対象になるため、そもそも記録される母数が桁違いに多いイベントです。1台のサーバーで1日数千件になることも珍しくありません。
まず前提として、 件数の多さを異常なサインインとして扱わない ことが重要になります。
まず確認すべき3つの内訳
大量の4624を漠然と眺めても判断できません。
以下の3つの軸で内訳を分けると、状況が整理しやすくなります。
- アカウント種別:ユーザーアカウントか、コンピューターアカウント(末尾
$)か、サービスアカウントか - ログオンタイプ(Logon Type):どんな手段でログオンしたか(後述)
- 送信元(IPアドレス/ワークステーション名):どこから来た認証か
ログオンタイプ(Logon Type) イベント4624のプロパティに含まれる番号で、ログオンの手段を示す。代表的なものは以下の通り。
- 2:対話ログオン(コンソールから直接)
- 3:ネットワークログオン(ファイル共有等へのアクセス)
- 4:バッチ(スケジュールタスク)
- 5:サービス(サービスアカウントの起動)
- 10:リモートデスクトップ(RDP)
正常な「大量発生源」の代表例
以下は、件数が多くても基本的に心配しなくてよいパターンです。
- サービスアカウントの定期認証(ログオンタイプ5):バックエンドサービスが一定間隔で認証を繰り返す
- スケジュールタスクの実行(ログオンタイプ4):定時実行のたびに記録される
- ファイル共有・プリンタへのアクセス(ログオンタイプ3):ユーザーが日常的にアクセスするたびに発生
- コンピューターアカウント自体の認証:末尾
$のアカウントによる、端末とDC間の定期的な認証
これらは業務が動いている証拠でもあり、絞り込みの段階で除外対象として扱うのが基本です。
注意が必要なパターン
一方で、以下のようなパターンは、件数の多さとは別に、内容として注意が必要です。
- 深夜・休日など、通常業務時間外の対話ログオン(タイプ2・10)
- 同一アカウントが、短時間で複数の端末に次々とログオンしている(横展開の兆候)
- 管理者アカウントが、普段ログオンしないはずの一般端末に対話ログオンしている
- 想定外の送信元IPアドレス(社内IPレンジ外・海外IP等)からのネットワークログオン
これらは件数の多寡にかかわらず、内容そのものが普段のパターンから逸脱しているかどうかで判断します。「量」ではなく「質」で見るのがポイントです。

絞り込んで見る方法(PowerShellでの実例)
コンピューターアカウント(末尾$)を除外し、対話ログオン・RDPログオンだけに絞り込む例です。
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4624} |
Where-Object {
$_.Properties[5].Value -notlike '*$' -and
($_.Properties[8].Value -eq 2 -or $_.Properties[8].Value -eq 10)
} |
Select-Object TimeCreated, @{N='Account';E={$_.Properties[5].Value}}, @{N='LogonType';E={$_.Properties[8].Value}}
$_.Properties[5]がアカウント名、$_.Properties[8]がログオンタイプに対応します(インデックス番号は環境・OSバージョンによって前後することがあるため、実行結果を見ながら調整してください)。
絞り込んで見る方法(イベントビューアーでの実例)
PowerShellを使わず、イベントビューアーのカスタムビューでも同様の絞り込みができます。「フィルターの編集」からXMLタブを開き、以下のようなXPathクエリを指定します。
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4624)]]
and
*[EventData[Data[@Name='LogonType']='2' or Data[@Name='LogonType']='10']]
</Select>
</Query>
</QueryList>
このカスタムビューを保存しておけば、対話ログオン・RDPログオンだけを毎回同じ条件ですぐに確認できます。
現場で確認しておくべきこと
自分の環境で、一度4624をログオンタイプ別に集計してみてください。
「サービスアカウントの定期認証が全体の大半を占めている」といった日常のベースラインを把握しておくと、次に異常なパターンに出会ったときに「これはいつもと違う」とすぐ気づけるようになります。ベースラインを知らないまま監視しても、何が異常かの判断基準が持てません。
集約したログを外部で分析したい場合は、「ADのログをsyslogに転送する方法とは」もあわせてご覧ください。


コメント