取引先のセキュリティチェックや、監査の場で「誰が、いつ、どのPCに入ったかの記録を出してください」と言われることが増えています。チェックシートに「ログを取っていますか」と書かれているだけでなく、実際の記録を見せてほしいと言われる場面です。
この記事では、何を出せばよいか、Windowsの標準機能での出し方、出そうとしたら記録が残っていなかったという問題、いつ聞かれてもすぐ出せる状態にしておく方法を順に説明します。
記録を出すまでの順番
- 1
何を出すか確かめる
対象のPC・期間・項目
- 2
PCの一覧を作る
対象のPCをそろえる
- 3
ログオン記録を出す
4624・4625・接続元
- 4
まとめて渡す
CSVと説明を添える
求められやすい記録は5つ
「ログイン記録」と言われたときに、中身として求められやすいのは次の5つです。
- ログオンの成功:誰が、いつ、どのPCに入ったか。Windowsのセキュリティログのイベント ID 4624です。
- ログオンの失敗:パスワードの間違いなどで入れなかった記録。イベント ID 4625です。
- リモートデスクトップの接続元:離れた場所から入った場合に、どのPC・どのIPアドレスから来たか。
- PCの一覧:記録の対象になっているPCが、社内のPCのすべてかどうか。
- 2要素認証の設定状況:パスワードだけで入れるPCや利用者が残っていないか。
先に「何を・いつからいつまで」を確かめる
PC版 月1,800円/台(初期費用0円)・サーバー版 月20,000円/台。初月無料ではじめられます(税別・目安)
Windows標準での出し方
手順1:ログオンの監査が有効か確かめる
4624・4625は、「ログオンの監査」が有効なときに記録されます。管理者として開いたコマンドプロンプトで次を実行し、「ログオン」の行が「成功および失敗」になっているかを確かめます。
auditpol /get /category:*変える場合は、グループポリシー(gpedit.msc)の「コンピューターの構成 > Windows の設定 > セキュリティの設定 > 監査ポリシーの詳細な構成 > ログオン/ログオフ > ログオンの監査」で、成功と失敗の両方を選びます。
手順2:ログオンの成功(4624)をCSVに出す
PowerShellを管理者として開き、次を実行すると、直近90日分の「人がPCに入った記録」をデスクトップにCSVで出せます。ログオンの種類は、2がPCの前でのログオン、7が画面ロックの解除、10がリモートデスクトップ、11が保存された資格情報でのログオンです。共有フォルダへのアクセス(種類3)は件数が多いので外しています。
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4624; StartTime = (Get-Date).AddDays(-90) } |
Where-Object { $_.Properties[8].Value -in 2, 7, 10, 11 } |
ForEach-Object {
[pscustomobject]@{
日時 = $_.TimeCreated
PC名 = $env:COMPUTERNAME
利用者 = $_.Properties[5].Value
種類 = $_.Properties[8].Value
接続元PC = $_.Properties[11].Value
接続元IP = $_.Properties[18].Value
}
} | Export-Csv "$env:USERPROFILE\Desktop\logon-$env:COMPUTERNAME.csv" -NoTypeInformation -Encoding UTF8手順3:ログオンの失敗(4625)も出す
失敗の記録は、項目の位置が4624と少し違います。
Get-WinEvent -FilterHashtable @{ LogName = 'Security'; Id = 4625; StartTime = (Get-Date).AddDays(-90) } |
ForEach-Object {
[pscustomobject]@{
日時 = $_.TimeCreated
PC名 = $env:COMPUTERNAME
利用者 = $_.Properties[5].Value
種類 = $_.Properties[10].Value
接続元PC = $_.Properties[13].Value
接続元IP = $_.Properties[19].Value
}
} | Export-Csv "$env:USERPROFILE\Desktop\logon-failed-$env:COMPUTERNAME.csv" -NoTypeInformation -Encoding UTF8手順4:リモートデスクトップの接続元を確かめる
手順2の種類10の行に、接続元のIPアドレスが入ります。あわせて、イベントビューアーの「アプリケーションとサービス ログ > Microsoft > Windows > TerminalServices-RemoteConnectionManager > Operational」のイベント ID 1149 にも、リモートデスクトップで認証された利用者と接続元のIPアドレスが残ります。詳しくはリモートデスクトップの接続履歴を確認する方法にまとめています。
手順5:PCの一覧と、2要素認証の設定状況をそろえる
PCの一覧は、台帳があれば台帳を、なければ各PCで Get-CimInstance Win32_OperatingSystem | Select-Object CSName, Caption, Version を実行して集めます。2要素認証の設定状況は、Windowsの標準機能には一覧で出す仕組みがありません。導入している製品の管理画面で確かめるか、利用者ごとに確かめて表にします。
出そうとしたら記録が残っていないことがある
いちばん多いつまずきが、古い記録が上書きされて消えていることです。Windowsのセキュリティログは、既定の容量がいっぱいになると古いものから消えていきます。何日分残るかは、PCの使われ方によって変わります。
今の容量は、管理者として開いたコマンドプロンプトで確かめられます。
wevtutil gl Security「maxSize」が上限(バイト)です。増やすには、グループポリシーの「コンピューターの構成 > 管理用テンプレート > Windows コンポーネント > イベント ログのサービス > セキュリティ > ログの最大サイズ」を変えます。容量を増やしても、PCが壊れたり初期化されたりすると記録は一緒に消えます。保存の考え方はWindowsのイベントログの保存期間にまとめています。
1台ずつ集めるときの限界
手順2〜5は、どれもPC1台ごとの作業です。台数が増えると、次の手間がかかります。
- 全台を回るのに時間がかかる。聞かれてから集め始めると、回答の期限に間に合わないことがあります。
- PCごとに残っている期間がばらばら。よく使うPCほど早く上書きされ、同じ期間で出せません。
- 持ち出しや在宅のPCは、その場で集められない。
- 2要素認証の設定状況は、標準の機能では一覧にならない。
- IDの貸し借りがあると、記録に残る名前が本人とは限らない。
いつ聞かれてもすぐ出せる状態にしておく
1台ずつ集める場合と、1か所で管理する場合
1台ずつ集める
- 聞かれてから全PCを回ってCSVを集める
- 古い記録は上書きされて残っていない
- 2要素認証の設定状況は別に調べて表にする
1か所で管理する
- 全PC・サーバーのログイン記録を1画面で絞り込み、CSVで出せる
- ログは10年間残る
- PCの一覧と2要素認証の設定状況も同じ画面で見られる
アプリップリキーを使うと、アプリップリキーを入れた全PC・サーバーについて、次のことができます。
- ログイン記録をそのまま出せる:日時・利用者・接続元のPC名とIPアドレス・使ったスマホで絞り込み、CSVで出せます。ログは10年間残るので、さかのぼって聞かれても出せます。
- 使ったスマホまで分かる:ログインに使ったスマホの機種が残り、ワンタッチログインしたときの位置も直近30日分見られます。スマホとPCをセットで認証するので、ログインしたときのPCの場所の目安になります。
- PCの一覧を出せる:全PC・サーバーの台数・オンラインかどうか・OS・空き容量・利用者が1画面に並びます。24時間通信がないPCは「要確認」、7日以上連絡のないPCは一覧で分かります。
- 2要素認証の設定状況を出せる:ユーザーごとに、回復キー・ワンタイムパスワード・ワンタッチログイン・LINEの設定状況が分かり、設定漏れが見つかります。
さらに、アプリップリキーはPC及びサーバーのログインを本人のスマホを鍵にしたワンタッチログインにします(PC版・サーバー版。リモートデスクトップでのログインも対象)。鍵になる本人のスマホがなければログインできないので、パスワードの貸し借りでは入れず、記録が本人のものだと示せます。毎回の操作はスマホでワンタッチなので、社員の手間はほとんど増えません。ADは要りません。
こうしておくと、チェックシートや監査のたびに慌てて全PCを回る作業がなくなります。聞かれたその日に画面で絞り込み、CSVを添えて返せるので、回答の期限を気にせずに済みます。経営層に報告するときも、同じ画面やCSVをそのまま見せられます。
対象は、アプリップリキーを入れたPC・サーバーで、インターネットにつながっていないPCは対象外です。
ログイン履歴の見方そのものはWindowsのログイン履歴を確認する方法にまとめています。
よくある質問
Q. 「ログイン記録を出して」と言われたら、まず何を出せばよいですか?
A. 基本は、PCへのログオンの成功(イベントID 4624)と失敗(4625)の記録です。日時・利用者・PC名・接続元が分かる形でCSVなどにまとめます。リモートデスクトップを使っているなら接続元のIPアドレス、あわせて対象のPCの一覧と、2要素認証の設定状況を求められることも多いです。何を・いつからいつまで出すかは、先に先方に確認すると手戻りがありません。
Q. 古い記録が残っていませんでした。どうすればよいですか?
A. Windowsのセキュリティログは、既定の容量がいっぱいになると古い記録から上書きされます。消えた記録は取り戻せないので、残っている期間を正直に伝え、今後はログの容量を増やすか、定期的にCSVで保存するなど、さかのぼれる状態にしておくことを説明します。
Q. PCが何十台もあります。1台ずつ集めるしかありませんか?
A. Windowsの標準機能だけでは、基本的に1台ずつ集めることになります。ADがあればイベントの転送などの方法もありますが、設定と運用に手間がかかります。アプリップリキーを使うと、アプリップリキーを入れた全PC・サーバーのログイン記録を1画面で絞り込み、CSVで出せます。
Q. 記録が本人のものだと、どう示せばよいですか?
A. IDを共有していたり、パスワードを教え合っていたりすると、記録に残る利用者名が本人とは限りません。1人1つのIDにしたうえで、ログインに本人だけが持つもの(本人のスマホなど)を使う2要素認証にしておくと、記録が本人のものだと説明しやすくなります。
参考
- Microsoft Learn「4624(S): An account was successfully logged on.」
- Microsoft Learn「4625(F): An account failed to log on.」
- Microsoft Learn「Audit Logon」
- IPA「中小企業の情報セキュリティ対策ガイドライン」
