Active Directoryのセキュリティ管理は、時に頭を悩ませる厄介な問題になることがあります。特に、パスワードが空白のアカウントがどこかに潜んでいるかもしれないと気づいた場合はなおさらです。パスワードポリシーを厳格に管理していても、注意を怠るとパスワードが空白のユーザーを紛れ込ませてしまう可能性があります。これはあまり知られていないため、見落としがちです。このような不正なアカウントをチェックし、セキュリティホールにならないようにする方法を知ることは非常に重要です。特に、1つの弱点が大きな問題を引き起こす可能性のある大規模なドメインではなおさらです。
ユーザーまたは管理者がPASSWD_NOTREQD属性を有効にしている場合(多くの場合、userAccountControlビットマスクを操作することで)、パスワード入力の要件を回避できます。これは、注意を払っていないとすり抜けてしまう可能性のある類のものです。問題に気付いた時には手遅れになっている可能性もあるため、このステップバイステップの手順は、安全でない設定の可能性があるアカウントを監視し、必要に応じてその設定を無効にする方法を理解するのに役立ちます。
Active Directoryでパスワードが空白のユーザーを識別して修正する方法
PasswordNotRequiredが有効になっているアカウントを確認する方法
この部分は、パスワードの要否を含め、属性に多くのフラグが格納されているのが少々奇妙であるため、役立ちますuserAccountControl。一部のアカウントでこのフラグが有効になっている(つまりパスワードが不要になっている)可能性がある場合は、簡単なPowerShellコマンドを実行するだけで、誰がこのフラグを有効にしているかがわかります。これは主に、脆弱なアカウントを管理したい場合、特に疑わしいログオンが確認された場合や、セキュリティを強化したい場合などに当てはまります。
PowerShell を管理者として開き、次のように実行します。
Get-ADUser -Filter {PasswordNotRequired -eq $true} -Properties LastLogonTimestamp, PasswordNotRequired | ft SamAccountName, enabled, PasswordNotRequired, @{n='LastLogon';e={[DateTime]::FromFileTime($_. LastLogonTimestamp)}}
このコマンドは、PasswordNotRequiredがtrueに設定されているすべてのユーザーを取得します。ここに予期しないアカウントが見つかった場合は、調査する価値があります。古いドメインや設定ミスにより、このフラグが誤って、あるいはセキュリティへの影響を考慮しない管理者によって意図的に設定されている場合があります。
PasswordNotRequired設定を無効にしてパスワードを強制的にリセットする方法
この設定が有効になっているアカウントを見つけた場合は、通常は無効にして、ユーザーに新しいパスワードの設定を強制することをお勧めします。これは、次のような別のPowerShellコマンドで実行できます。
Get-ADUser -Identity username | Set-ADUser -PasswordNotRequired $false -ChangePasswordAtLogon $true
修正したいアカウント名に置き換えてくださいusername。保護したいアカウントごとにこの操作を行うか、危険なアカウントが多数存在する場合はスクリプト化してください。これにより、空のパスワードでの新規ログインが阻止され、次回のログイン時に安全なパスワードの入力を求められます。
GUI側では、Active Directory ユーザーとコンピューターを開き、ユーザーを見つけて右クリックし、パスワードのリセット を選択し、パスワードフィールドを空白のままにして、何が起こるかを確認できます。ただし、 PasswordNotRequired が有効になっている状態でこれを行うと、アカウントがパスワードなしで使用できてしまうため、注意が必要です。これは、注意しないと悪夢のような事態になります。
これらのアカウントをクリーンアップするまでは、ドメイン管理者権限を持つユーザー、あるいは委任された権限を持つユーザーでさえ、パスワードをリセットしてこの抜け穴を悪用できるため、深刻なセキュリティリスクとなります。そのため、アカウントを常に監視し、デフォルトのポリシーが適用され、設定ミスの可能性が最小限に抑えられていることを確認してください。
最終チェックと安全の確保
環境によっては、この設定全体が古い管理者の手によるものや忘れ去られたスクリプトの名残になっている可能性があります。ベストプラクティスとして、このPowerShellスニペットを使用してユーザーを定期的に監査し、特別な理由がない限りPasswordNotRequiredフラグを無効にしてください。Windowsはセキュリティを必要以上に複雑にする必要があるためです。これにより、誰かが空のパスワードで侵入し、重要なリソースにアクセスするリスクを防ぐことができます。