デフォルトの Active Directory パスワード ポリシーでは、ドメイン ユーザーに対して最も基本的なパスワードの長さ、頻度、および複雑さの要件のみを有効にできます。パスワードに大文字、小文字、数字、特殊文字を組み合わせて使用することを要求するパスワードの複雑さの必須オプションを有効にしても、ユーザーが次のような推測しやすいパスワードを使用することは妨げられません。Qwerty123456、P@ssw0rd、March2025これらのパスワードは複雑さの基準を満たしていますが、予測可能性があるため、依然として攻撃に対して脆弱です。
このガイドでは、オンプレミスの Active Directory ドメインで禁止パスワード リストを作成および強制し、ユーザーが弱いパスワードや侵害されたパスワードを設定するのを防ぎ、辞書攻撃やブルート フォース攻撃からアカウントを保護する方法について説明します。
コンテンツ:
AD パスワード フィルターを使用した禁止パスワード リスト (PassFiltEx)
まず、見てみましょうPassFiltEx、Active Directory で一般的な脆弱なパスワードをブロックするためのシンプルなソリューションを提供する軽量のオープンソース ライブラリ
AD ユーザーがパスワードを変更すると、ドメイン コントローラー上の LSA プロセスは、パスワードが登録されているパスワードと一致するかどうかを確認します。パスワードフィルター。 PassFiltEx ライブラリは、新しいパスワードをチェックするときに追加のフィルターとして透過的に使用できます。
PassFiltEx を実装するには、プロジェクトの GitHub ページから 2 つのファイルをダウンロードします (https://github.com/ryanries/PassFiltEx) にコピーします。%SystemRoot%System32ドメインコントローラー上のディレクトリ。
- PassFiltEx.dll – PassFiltEx ライブラリ ファイル
- PassFiltExBlacklist.txt – AD で拒否するパスワードを含むプレーン テキスト ファイル
いくつかの重要な点:
- PassFiltEx は 60 秒ごとにブロックリスト ファイルをリロードします
- PassFiltExBlacklist.txt ファイル内の拒否されたパスワード パターンでは、大文字と小文字が区別されません。 (
MyPasswordDそしてmypassword値は等しいものとして定義されます) - Unicode 文字は現在サポートされていません

次に、レジストリ エディターを開き、HKLMSYSTEMCurrentControlSetControlLsaキーを入力し、PassFiltExの最後までの値通知パッケージ複数文字列パラメータ。


ドメイン コントローラーを再起動して、新しいパスワード フィルターを適用します。 lsass プロセスが PassFiltEx ライブラリをロードすることを確認します。
tasklist /m PassFiltEx.dll


ここで、ユーザーがパスワードをパスワード ブラックリストのパターンのいずれかに一致するものに変更しようとすると、パスワードがパスワード ポリシーの要件を満たしていないことを示すエラーが表示されます。


複数のドメイン コントローラーを展開している場合は、それぞれのドメイン コントローラーに同じパスワード フィルターを構成します。
でのレジストリ オプションの使用HKLMSOFTWAREPassFiltExreg キー (自動的に作成される) を使用すると、追加の PassFiltEx パスワード フィルター設定を構成できます。
- ブラックリストファイル名(REG_SZ) – 禁止されたパスワードを含むファイルへのパス。 (デフォルトは
%SystemRoot%System32PassFiltExBlacklist.txt)。ここでは UNC パスを使用できます。これにより、ファイルを SYSVOL に保存できます (DC 間で自動的に複製される単一のパスワード ブラックリスト ファイルを使用するため)。 - トークンパスワードの割合(REG_DWORD) – ブラックリストに登録されたテンプレートに一致する新しいパスワードのうち、パスワードが拒否される最小割合です (デフォルトでは 60%)。たとえば、パターン MyPasswd の行をブラックリストに追加すると、ユーザーはパスワード MyPasswd2025 を使用できなくなります。
- デバッグ– に設定されている場合1、デバッグ モードが有効になります (すべてのアクションがテキスト ファイルに記録されます)。
- BlockSequentialChars– abcd や 1234 などの文字シーケンスのパスワードでの使用をブロックします。
- 繰り返し文字をブロックする— AAAA、2222 のような同一文字のブロック シーケンス。
他のレジストリ オプションに関する情報は、プロジェクトの GitHub ページで見つけることができます。
Lithnet パスワード保護で脆弱なパスワードや危険にさらされたパスワードをブロック
Active Directory 用の Lithnet パスワード保護 (LPP)は、Active Directory 内の脆弱なパスワードや侵害されたパスワードをブロックするためのエンタープライズ ソリューションです。その基本機能により、AD パスワード ポリシー要件を拡張し、テンプレートまたはパスワード ハッシュを使用してパスワードをブロックできます (侵害されたパスワードのデータベースを外部辞書からインポートできます)。 Lithnet Password Protection は、グループ ポリシーと PowerShell による管理をサポートしています。
Lithnet Password Protection for Active Directory エージェントは、各ドメイン コントローラーにインストールする必要があります (https://github.com/lithnet/ad-password-protection)。


次に、PowerShell を使用して、禁止されたパスワードとキーワードを Lithnet パスワード ボールトに追加します。モジュールを PowerShell セッションにインポートします。
Import-Module LithnetPasswordProtection
AD ユーザーのパスワードでの使用を禁止する単語を追加します。
Add-BannedWord -Value "admin"
禁止キーワードのリストをテキスト ファイルからインポートできます。
Import-BannedWords -Filename "c:tempblacklistpwd.txt"
LPP データベースに禁止語がないか確認します。
Test-IsBannedWord -value admin


Get-PasswordFilterResult コマンドレットを使用して、入力したパスワードがパスワード ポリシーに準拠しているかどうかをテストします。
Get-PasswordFilterResult -Password "Admin321" -Username jsmith -Fullname "John Smith"
Compromised


Get-PasswordFilterResult -Password "Adm123n!" -Username jsmith -Fullname "John Smith"
Approved


最初のケースでは、パスワードにキーワード Admin と完全に一致するものが含まれており、パスワード ポリシーによりその使用が禁止されています。
LPP のパスワード ボールトは、ファイルベースのパスワード ハッシュ データベースです (バイナリ形式のため、このようなデータベースの検索は高速です)。デフォルトでは、DB ファイルは次の場所に保存されます。C:Program FilesLithnetActive Directory Password ProtectionStorev3pディレクトリ。DFS-Rは、禁止されたパスワードの Lithnet パスワード保護データベースをドメイン コントローラー間で複製するために使用されます。
Lithnet Password Protection (LPP) を使用すると、管理者は侵害されたパスワードを「Have I Been Pwned」(HIBP 購入) サービスをローカル データベースに追加し、データ侵害で公開されたパスワードをユーザーが選択できないようにすることでセキュリティを強化します。これには約8GBハッシュ ディクショナリを保存するための DC 上のディスク領域。
Sync-HashesFromHibp


ローカル データベースを HIBP と自動的に同期するには、タスク スケジューラを使用して Sync-HashesFromHibp PowerShell コマンドを定期的に実行します。
または、テキスト ファイルからハッシュをインポートします。Import-CompromisedPasswordHashes -Filename "c:pspwned-ntlm-hashs.txt"
特定のパスワードまたはユーザーの UPN が侵害されたパスワードのデータベースにあるかどうかを確認します。
Test-IsCompromisedPassword -value MyAdminl0veSme
Test-IsADUserPasswordCompromised -upn [email protected]
管理用テンプレート ファイル (ADMX) を使用して、GPO 経由で LPP 設定を管理できます。デフォルトでは、ADMX テンプレートは次の場所にあります。%WINDIR%PolicyDefinitionsLPP エージェントを備えた DC 上のディレクトリ (中央の GPO ストアにコピーできます):
- lithnet.activedirectory.passwordfilter.admx
- リスネット.admx
- en-uslithnet.activedirectory.passwordfilter.adml
- en-uslithnet.adml
ユーザーがパスワードを変更するときに LPP エージェントにユーザーのパスワードをブラックリストのパスワード辞書と照合させるには、[コンピューターの構成] -> [管理用テンプレート] -> [Lithnet] -> [Active Directory のパスワード保護] -> [既定のポリシー] セクションで、次の最小限の設定を使用してドメイン コントローラーの GPO を作成します。
- 侵害されたパスワード ストアで見つかったパスワードを拒否する–
Enable、オプションのチェックを外しますパスワード設定を有効にするそしてパスワード変更操作を有効にします。 - 侵害されたパスワード ストアで見つかった正規化されたパスワードを拒否する(正規化されたパスワードを拒否します。たとえば、WOSHub や woshub)


セキュリティのニーズに応じて、他の GPO オプションを有効または無効にすることができます。
ドメイン コントローラーを再起動して、GPO 設定を更新します。これにより、lithnetpwdf上で指定したレジストリ キーにパスワード フィルターを適用します。


現在、AD ユーザーのパスワードを変更 (リセット) しようとすると、そのパスワードが禁止されたパスワードの辞書に含まれているかどうかを確認する追加のチェックが実行されます。たとえば、Windows 11 では次のエラーが表示されます。
The password on this account cannot be changed at this time
ユーザーにとって、自分のパスワードがパスワード ポリシー チェックに合格しなかったことが明らかではないため、これは明らかに不便です。


持っている場合は、Entra ID P1 または P2 サブスクリプションオンプレミスの Active Directory と同期すると、Microsoft クラウドで禁止されたパスワードのリストを作成できます。 Microsoft Entra Password Protection Proxy Service および Microsoft Entra Password Protection DC Agent は、これらのセキュリティ設定をオンプレミス AD アカウントに適用できます。 「Entra ID (旧 Azure AD) のパスワード ポリシー」を参照してください。
通常はデフォルトの AD パスワード ポリシーではブロックされない、脆弱なパスワード、漏洩したパスワード、または一般的なパスワードの使用を防止するオープンソース ソリューションを実装することで、Active Directory のセキュリティを向上させる方法を検討してきました。












