ご存知のとおり、人間は怠惰な生き物です。
強力なパスワードを選択する場合はさらに重要です。
すべての管理者は、軽量で標準的なパスワードを使用するという問題に直面したことがあると思います。 この現象は企業経営の上層部でよく起こります。 はい、はい、まさに機密情報や商業情報にアクセスできる人々の間で、パスワードの漏洩/ハッキングやさらなるインシデントの影響を排除することは非常に望ましくありません。
私の実務では、パスワード ポリシーが有効になっている Active Directory ドメインで、会計士が「Pas$w0rd1234」のようなパスワードがポリシー要件に完全に適合するという考えを独自に思いついたことがありました。 その結果、このパスワードがあらゆる場所で広く使用されるようになりました。 時には、一連の数字だけが異なることもありました。
私は、パスワード ポリシーを有効にして文字セットを定義するだけでなく、辞書によるフィルタリングもできるようにしたいと考えていました。 そのようなパスワードが使用される可能性を排除するため。
Microsoft は、コンパイラ、IDE を正しく手に持ち、C++ を正しく発音する方法を知っている人なら誰でも、必要なライブラリをコンパイルし、自分の理解に従って使用できることを、リンクを介して親切にも教えてくれました。 あなたの謙虚な僕にはそんなことはできないので、私は既製の解決策を探す必要がありました。
長い時間の検索の結果、問題を解決するための XNUMX つの選択肢が明らかになりました。 もちろん、私はオープンソース ソリューションについて話しています。 結局のところ、最初から最後まで有料オプションがあります。
オプション番号1。
約 2 年間コミットがありません。ネイティブ インストーラーが時々動作するため、手動で修正する必要があります。 独自の別のサービスを作成します。 パスワード ファイルを更新する場合、DLL は変更された内容を自動的に取得しないため、サービスを停止し、タイムアウトを待ってファイルを編集し、サービスを開始する必要があります。
氷はありません!
オプション番号2。
プロジェクトはアクティブで生き生きとしていて、冷えた体を蹴る必要さえありません。
フィルターをインストールするには、XNUMX つのファイルをコピーし、いくつかのレジストリ エントリを作成する必要があります。 パスワードファイルはロックされていません。つまり、編集可能であり、プロジェクトの作成者の考えによれば、XNUMX分にXNUMX回読み取られるだけです。 また、追加のレジストリ エントリを使用すると、フィルタ自体とパスワード ポリシーの微妙な違いの両方をさらに詳細に構成できます。
だから。
指定: Active Directory ドメイン test.local
テストワークステーション Windows 8.1(問題文には必須ではない)
パスワードフィルター PassFiltEx
- リンクから最新リリースをダウンロード
- コピー PassFiltEx.dll в C:WindowsSystem32 (または %SystemRoot%System32).
コピー PassFiltExBlacklist.txt в C:WindowsSystem32 (または %SystemRoot%System32)。 必要に応じて、独自のテンプレートで補完します
- レジストリ ブランチの編集: HKLMSYSTEMCurrentControlSetControlLsa => 通知パッケージ
追加 PassFiltEx リストの最後まで。 (拡張子を指定する必要はありません。) スキャンに使用されるパッケージの完全なリストは次のようになります。rassfm scecli PassFiltEx"
- ドメイン コントローラーを再起動します。
- すべてのドメイン コントローラーに対して上記の手順を繰り返します。
次のレジストリ エントリを追加することもできます。これにより、このフィルタをより柔軟に使用できるようになります。
セクション: HKLMSOFTWAREPassFiltEx — は自動的に作成されます。
- HKLMSOFTWAREPassFiltExBlacklistFileName、REG_SZ、デフォルト: PassFiltExBlacklist.txt
ブラックリストファイル名 — パスワード テンプレートを含むファイルへのカスタム パスを指定できます。 このレジストリ エントリが空であるか存在しない場合は、デフォルトのパスが使用されます。 %SystemRoot%System32。 ネットワーク パスを指定することもできますが、テンプレート ファイルには読み取り、書き込み、削除、変更に対する明確な権限が必要であることに注意してください。
- HKLMSOFTWAREPassFiltExTokenPercentageOfPassword、REG_DWORD、デフォルト: 60
トークンパスワードの割合 — 新しいパスワードのマスクの割合を指定できます。 デフォルト値は 60% です。 たとえば、出現率が 60 で、文字列 starwars がテンプレート ファイルにある場合、パスワードは スターウォーズ1! パスワードが入力されている間は拒否されます スターウォーズ1!ダースベイダー88 パスワードに含まれる文字列の割合が 60% 未満であるため、受け入れられます
- HKLMSOFTWAREPassFiltExRequireCharClasses、REG_DWORD、デフォルト: 0
RequireCharClasses — 標準の ActiveDirectory パスワードの複雑さの要件と比較して、パスワード要件を拡張できます。 組み込みの複雑さの要件では、大文字、小文字、数字、特殊文字、Unicode の 3 種類の文字のうち 5 つが必要です。 このレジストリ エントリを使用して、パスワードの複雑さの要件を設定できます。 指定できる値は、対応する XNUMX の累乗であるビットのセットです。
つまり、1 = 小文字、2 = 大文字、4 = 数字、8 = 特殊文字、16 = Unicode 文字です。
したがって、値が 7 の場合、要件は「大文字」になります。 そして 小文字 そして 数字」、値 31 - 「大文字」 そして 小文字 そして フィギュア そして 特殊な記号 そして Unicode 文字。」
- 19 = “大文字” を組み合わせることもできます。 そして 小文字 そして Unicode 文字。」
テンプレート ファイルを作成するときのいくつかのルール:
- テンプレートでは大文字と小文字が区別されません。 したがって、ファイルエントリは、 スターウォーズ и スターウォーズ 同じ値であると判断されます。
- ブラックリスト ファイルは 60 秒ごとに再読み取られるため、簡単に編集できます。XNUMX 分後に新しいデータがフィルタで使用されます。
- 現在、パターン マッチングに対する Unicode サポートはありません。 つまり、パスワードに Unicode 文字を使用できますが、フィルタは機能しません。 Unicode パスワードを使用するユーザーを見たことがないため、これは重要ではありません。
- テンプレート ファイルには空行を許可しないことをお勧めします。 デバッグでは、ファイルからデータをロードするときにエラーが発生することがわかります。 フィルターは機能しますが、なぜ余分な例外が発生するのでしょうか?
デバッグ用に、アーカイブにはバッチ ファイルが含まれており、これを使用してログを作成し、たとえば次のように解析できます。
このパスワードフィルタはイベントトレースを使用します Windows.
このパスワード フィルターの ETW プロバイダーは次のとおりです。 07d83223-7594-4852-babc-784803fdf6c5。 したがって、たとえば、次の再起動後にイベント トレースを構成できます。
logman create trace autosessionPassFiltEx -o %SystemRoot%DebugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets
トレースは、次回システムを再起動した後に開始されます。 止まる:
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
これらのコマンドはすべてスクリプトで指定されます StartTracingAtBoot.cmd и StopTracingAtBoot.cmd.
フィルター操作を XNUMX 回限りチェックするには、次を使用できます。 StartTracing.cmd и StopTracing.cmd.
このフィルタのデバッグ排気を簡単に読み取るために、 Microsoft Message Analyzer 次の設定を使用することをお勧めします。


ログインと解析を停止する場合 Microsoft Message Analyzer すべては次のようになります。

ここでは、ユーザーのパスワードを設定しようとしたことがわかります。魔法の言葉がこれを教えてくれます。 セット デバッグ中。 そして、パスワードはテンプレート ファイルに存在し、入力されたテキストと 30% 以上一致するため拒否されました。
パスワードの変更が成功すると、次のように表示されます。

エンドユーザーにとっては不便な点もある。 テンプレート ファイルのリストに含まれているパスワードを変更しようとすると、画面に表示されるメッセージは、パスワード ポリシーが渡されていない場合の標準メッセージと変わりません。

したがって、「パスワードを正しく入力したのに、機能しません」という電話や叫び声に備えてください。
まとめ。
このライブラリを使用すると、Active Directory ドメインでの単純なパスワードまたは標準のパスワードの使用を禁止できます。 「ノー!」と言いましょう。 パスワードは「P@ssw0rd」、「Qwerty123」、「ADm1n098」などです。
はい、もちろん、セキュリティにこれほど気を配り、驚くようなパスワードを考え出す必要があることで、ユーザーはあなたをさらに気に入るでしょう。 そしておそらく、パスワードに関する問い合わせや問い合わせの数も増えるでしょう。 しかし、セキュリティには代償が伴います。
使用したリソースへのリンク:
カスタム パスワード フィルター ライブラリに関する Microsoft の記事:
PassFiltEx:
リリースリンク:
パスワードリスト:
ダニエル・ミースラー氏は次のようにリストしています。
weakpass.com のワードリスト:
berzerk0 リポジトリのワードリスト:
Microsoft メッセージ アナライザー:
出所: habr.com
