PowerShell を使用して Active Directory アカウントのロックアウトを修正する方法
kras99 - Stock.adobe.com
事故が起こる可能性はありますが、ログイン試行の失敗に関しては、IT 部門の誰かが助けに来るまで、仕事用のラップトップからフリーズしてしまう可能性があります。
多くの組織では、ログオン試行が一定回数失敗すると、ユーザー アカウントをロックします。 目標は、ユーザーのパスワードを強引に見つけようとするハッカーからの攻撃を防ぐことです。 ただし、すべてのロックアウトが悪意のあるソースから行われるわけではなく、さらにはパスワードを忘れたユーザーによっても行われるわけではありません。
アプリケーションによってアカウントのロックアウトが発生する場合があります。 アプリケーションは多くの場合、機能するために必要なアクセス許可をサービス アカウントに依存します。 ただし、サービス アカウントのパスワードが変更され、アプリケーションが更新されたパスワードを取得しない場合、サービス アカウントがロックされる可能性があります。
冗長なログオン情報も、アカウント ロックアウトの一般的な原因です。 企業ユーザーは、共通のユーザー名に関連付けられた十数セットの資格情報を持っている場合があります。 これらすべてのアカウントを追跡するには、ある程度の労力が必要です。 誰かが誤って間違った資格情報のセットを複数回使用し、アカウントのロックアウトを引き起こすことを予見するのは難しくありません。
アカウントのロックアウトは、ユーザーが勤務地を変更したときにも発生する可能性があります。 一般的なシナリオは、ユーザーがオフィスのドメインに参加している Windows デスクトップでの作業から、現在ネットワークに接続されていない自宅の別の Windows マシンに切り替える場合です。 ラップトップはオフラインであるため、パスワードの変更が記録されていません。 ユーザーは古いパスワードを使用してログインする必要があります。 ユーザーがラップトップをオフィスに持ち込んでネットワークにアクセスしようとすると、パスワードの不一致とエンドユーザーの混乱により、アカウントのロックアウトが発生する可能性があります。
アカウントのロックアウトが非常に問題になりやすい主な理由の 1 つは、アカウントのロックアウトがサイレントに発生する傾向があることです。 管理者は、ユーザーが電話をかけてくるか、Windows イベント ログにアカウント ロックアウト イベントが記録されているのを見ない限り、アカウント ロックアウトが発生したことに気付かないかもしれません。 ただし、PowerShell 自動化を使用すると、アカウント ロックアウト イベントをより適切に処理できます。
このようなロックアウトの状況に先手を打つには、PowerShell を使用して次のコマンドでイベント ログのロックアウトをチェックすることが 1 つのオプションです。
のGet-WinEventコマンドレットはイベント ログをクエリします。 のフィルターハッシュテーブル部分は、ログ内で検索する項目を指定します。 この場合、ログ名パラメータポイントGet-WinEvent Windows セキュリティ ログを検索するコマンドレット。 さらに、ID パラメーターは、アカウント ロックアウト イベントを指すイベント ID 4740 のインスタンスを探します。
結果はパイプで渡されます。オブジェクトの選択イベントの作成時刻とイベント メッセージを表示するコマンドレット。 通常、PowerShell はアカウント ロックアウト メッセージを切り捨てますが、フォーマットテーブルコマンドレットとともに、包むパラメータを指定すると、PowerShell にすべての関連情報が表示されます。
運用環境では、この Active Directory アカウント ロックアウト クエリは、イベントがいつ発生したかに関係なく、イベント ID 4740 のすべてのインスタンスについてセキュリティ イベント ログをチェックするため、過剰な数の結果を返す可能性があります。 この問題に対処する最善の方法は、始まる時間フィルター。 たとえば、次のコマンドは、過去 24 時間に発生したイベントを調べます。
最初のコマンドは、という名前の変数を作成します。$スタートそしてそれを過去 24 時間に設定します日数を追加(-1) 。 前週分のログを確認するには、次を使用します。日数を追加(-7)。
2 番目のコマンドは、次の点を除いて前のコードと同じです。StartTime=$Startフィルタハッシュテーブルに追加されます。 これは、PowerShell に、ファイル内の日付とタイムスタンプよりも古い結果を無視するように指示します。$スタート変数。
PowerShell が Active Directory アカウントのロックアウトを支援するもう 1 つの方法は、Get-ADUserアカウントのロックアウト状態を確認するコマンドレット。 次のコマンドを使用して、Active Directory ユーザー アカウントに関連する属性を取得します。
の身元パラメータには、ユーザーが調査するアカウント名を指定します。 この場合、アカウントのすべてのプロパティを取得してから、オブジェクトの選択コマンドレットを使用して、ロックアウトの状態、ロックアウトが発生した時期、および失敗したログイン試行の回数を表示します。 ちなみに、ロックアウトされプロパティには true または false の値が含まれます。ロックされたアカウントは true を示し、ロックされていないアカウントは false を示します。
アカウントのロックを解除するには、次の PowerShell コマンドを使用します。<ユーザー名>アカウントのロックを解除したいユーザーの名前を入力します。
PowerShellのGet-ADUserコマンドレットは、ユーザーのアカウントのロックアウト状態を取得します。 この場合、値 true はユーザーのアカウントがロックされていることを示します。 のADアカウントのロックを解除するコマンドレットによりアカウントのロックが解除されます。 使用できますGet-ADUserコマンドレットを使用して、ロック解除が成功したことを確認します。
PowerShell は、アカウント ロックアウト イベントを検出して解決するための基本的なツールを提供します。 この記事のコマンドとテクニックを使用して自動スクリプトを構築し、大規模なアカウント ロックアウト イベントの解決に役立てることができます。
Get-WinEvent FilterHashTable LogName Get-WinEvent Select-Object Format-Table Wrap StartTime $Start AddDays(-1) AddDays(-7) StartTime=$Start $Start Get-ADUser Identity Select-Object LockedOut <ユーザー名> Get-ADUser Unlock- ADAccount Get-ADUser