Active Directoryのロック状態のユーザーを調べる【自動化】
弊社ではWindowsログインの総当たり攻撃を防ぐためにロックアウトの設定をしています。ロックアウトとはログインパスワードを数回間違えたらログインできなくなる仕組みのことです。
ときどき「ロックされたー」と連絡がきて解除することがあるんですが、ロックされたまま黙っている人もいます。そこでロック状態のユーザーを積極的に調べることにしました。
Active Directoryのロック状態のユーザーを調べる
ロック状態のユーザーを調べるには、Active Directoryのユーザー情報のLockoutTimeが0より大きいかどうかで分かります。0より大きかったらロックされているので、LockoutTimeを一ユーザーづつ確認して調べます。手動で調べると大変なのでPowerShellを使います。
手順:
1.Active Directory管理ツールをインストールする
Active Directoryから情報を取ってくるにはActive Directory管理ツールが必要です。これらはWindows 10 または 11 には標準状態ではインストールされていません。
Windows 10 または 11 で次のPowerShellコマンドを実行して管理ツールをインストールします。
PowerShellを管理者モードで立ち上げて次のコマンドを実行
Add-WindowsCapability -online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
↑これは初めてのとき1回だけです。
2.ロック状態のアカウントを調べるコマンド
Get-ADUser -Filter * -Properties LastLogonDate, Description ,LockoutTime | Where-Object { $_.LockoutTime -gt 0 }
ロックされているアカウントがあれば表示されます。なにも出てこなければロックされているアカウントはありません。
解説:
Get-ADUser -Filter * -Properties LastLogonDate, Description ,LockoutTime
このコマンドでユーザーの一覧を取得します
Where-Object { $_.LockoutTime -gt 0 }
このコマンドで項目LockoutTimeが0より大きい条件で絞り込みます。
3.自動化する
タスクスケジューラーで「2.ロック状態のアカウントを調べるコマンド」を定期的に実行してロックされているアカウントがあれば通知するようにします。1日に2回くらいおこなえばいいと思います。
通知方法はメール通知したり、Slackに投稿など(ここは割愛します)
#PowerShell #ロックアウト #ADサーバ #ActiveDirectory #業務効率化