Azure AD Password Protectionを使用して組織から脆弱なパスワードを排除する


 

本日の記事は、先日パブリックプレビューとなったAzure AD Password Protection 及び Smart Lockoutを使用した、クラウド及び、オンプレミス環境へのセキュリティ対策についての記事です。これらの強力なアカウント保護機能を使用する事で、禁止リストに設定された脆弱なパスワードを組織内から排除する事が可能です。

 

Azure ADが高度な資格情報保護の技術を使用して、アカウント保護をしている事は既にご存知かもしれません。しかしどれだけ強力な保護機能も、パスワード自体が脆弱性の高いものであっては、効果は半減してしまうかもしれません。組織の IT セキュリティ担当者が、ユーザーに対して不適切なパスワードを登録しないように指示しても、実際にユーザーがどのようなパスワードを設定しているかについて、管理者が把握し、それを是正していくことは私はとても難しい事だと思っています。

 

そのような状況を改善する為に、このAzure AD Password Protectionは有用な機能です。 Azure AD だけの保護ではなく、パブリックプレビューとして発表された “Azure AD password protection for Windows Server Active Directory”を使用することでオンプレミス Active Directoryに対しても、組織で事前に指定した禁止パスワードリストなどを使用したアカウント保護が可能です。

 

 

 

 

 

機能概要

 

組織内から不適切なパスワードを排除する為には、まずこの機能の仕組みをざっくりと知っていただく必要があります。この機能では、2つのパスワードリストを使用して脆弱なパスワードを排除していきます。

 

グローバル禁止パスワード リスト

よく使用され、侵害される可能性が高いパスワードをMicrosoftが設定している非公開のパスワードリストです。このリストに設定されているパスワードは、その脆弱性がユーザーにとって現実的な脅威となる前にブロックされます。

 

※私が調べた限りでは、このグローバル禁止パスワードリストをON / OFFにする方法が見つかりませんでした。どうやら規定で有効のようです。有効化・無効化の方法についてご存知の方がおられましたら、コメント欄からメッセージいただけるとありがたいです。

 

カスタム禁止パスワードリスト(プレビュー機能)

 

組織が独自に設定可能な禁止パスワードリストです。このリストを使用して、組織は独自に禁止したいパスワードを設定できます。

 

※現在カスタムリストには、最大1000個までのワードを設定できます。

※大文字と小文字は区別されません。後述する機能によって、近似一致のような形でそれらはブロックされます。

※最短文字数は4文字で、最長は16文字です。

 

 

禁止されたパスワードのブロックのされ方について

 

本機能では、カスタムリストに登録されたパスワードは完全一致の形ではなく、近似一致のような形でブロックをされます。具体的には、禁止されたパスワードリストは、文字列を小文字に変換し、編集距離が1以内の既知の禁止パスワードとファジーマッチングで比較することで、リストのパスワードと一致させます。

 

例: 組織のパスワードpasswordがブロックされている

 

  • ユーザーがパスワードを “P@ssword”に設定しようとしました。これは “password”に変換され、passwordの変種であるためブロックされます。

 

  • 管理者は、ユーザーのパスワードを「Password123!」に設定しようとします。これは、”password123!”に変換され passwordの変種であるためブロックされます。

 

 

 

ライセンス要件

 

グローバル禁止パスワードリストは、Azure Active Directory(Azure AD)のすべてのユーザーに適用されます。

 

カスタム禁止パスワードリストには、Azure AD Basicライセンスが必要です。

 

Azure AD Password Protection for Windows Server Active Direcotryには、Azure AD Premiumライセンスが必要です。

 

※特にAzure AD Premium のP1、P2のどちらが必要かについては、明記されていませんが、私はAzure AD Premium P1のライセンスを使用して検証を行っています。

 

 

 

オンプレミス展開の計画

 

Microsoftは、すべての展開を監査モードで開始することを推奨しています。監査モードは、デフォルトの初期設定であり、ブロックされるパスワードはイベントログにエントリを作成します。プロキシサーバーとDCエージェントが監査モードで完全に展開されたら、パスワードポリシーの実行がユーザーと環境に与える影響を判断するために、定期的な監視を行う必要があります。(今回の検証では監査設定は行いません。)

 

 

既知の制限

 

Azure AD Password Protectionのプレビュー版には既知の制限があります。MFAを必要とするテナント管理者アカウントの使用は現時点ではサポートされていません。Azure AD Password Protectionの今後のアップデートでは、MFAを必要とする管理者アカウントでの登録がサポートされる予定のようです。

 

 

 

Azure AD password protection for Windows Server Active

Directory展開方法   ( シングルフォレストの場合 )

 

Azure ADパスワード保護プロキシサービスをホストする1つ以上のサーバーを選択します。

  • Azure ADパスワード保護プロキシサービスをテスト目的でドメインコントローラにインストールして実行することはサポートされていますが、インターネット接続が必要です。

 

制限事項:パブリックプレビューは、フォレストごとに最大2つのプロキシサーバーをサポートします。

 

※今回の記事では、このAzure AD password protection for Windows Server Active Directoryを使用してオンプレミス環境に対して保護を実装します。

必ず事前にAzure AD Password Protection & Lockoutの設定をAzure Portalから行ってください。カスタムリストの作成やオンプレミスADとの連携設定の手順については、以下Docsを参照してください。

 

□カスタムの禁止パスワード リストを構成する

https://docs.microsoft.com/ja-jp/azure/active-directory/authentication/howto-password-ban-bad

 

1. パスワードポリシープロキシサービスソフトウェアをインストールする

 

事前にインストーラーを以下Microsoftのサイトからダウンロードしてください

 

Azure AD Password Protection for windows server

https://www.microsoft.com/en-us/download/details.aspx?id=57071

 

 

1.AzureADPasswordProtectionProxy.msi MSIパッケージを使用して、パスワードポリシープロキシサービスソフトウェアをインストールします。

  • ソフトウェアを再インストールする必要はありません。ソフトウェアのインストールは、MSIを使用して自動化することができます。

 

 msiexec.exe /i AzureADPasswordProtectionProxy.msi /quiet /qn

 

※私の環境では、この後再起動を挟まないと、次のモジュールインポートコマンドでエラーになりました。

 

2.  PowerShellウィンドウを管理者として開きます。

  • Azure ADパスワード保護Proxyソフトウェアには、AzureADPasswordProtectionという名前の新しいPowerShellモジュールが含まれています。次の手順は、このPowerShellモジュールからさまざまなコマンドレットを実行することに基づいています。新しいPowerShellウィンドウを開いて、次のコマンドで新しいモジュールをインポートします。

 

Import-Module AzureADPasswordProtection

 

 

制限事項:インストールソフトウェアは、ホストマシンのPSModulePath環境変数を変更します。この変更を有効にしてAzureADPasswordProtection powershellモジュールをインポートして使用できるようにするには、新しいPowerShellコンソールウィンドウを開く必要があります。

 

 

3. 次のPowerShellコマンドを使用して、サービスが実行されていることを確認します

 

Get-Service AzureADPasswordProtectionProxy | fl

  • ステータスが「実行中」の結果を返す結果を生成するはずです。

 

※以下のように表示されます。Status が Running となっていれば起動中です。

 

4. プロキシを登録します。

  • 手順3が完了すると、Azure ADパスワード保護プロキシサービスがマシン上で実行されていますが、Azure ADと通信するために必要な資格情報はまだありません。Register-AzureADPasswordProtectionProxyPowerShellコマンドレットを使用してその機能を有効にするには、Azure ADによる登録が必要です。コマンドレットには、Azureテナントのグローバル管理者資格情報と、フォレストルートドメイン内のオンプレミスActive Directoryドメイン管理者権限が必要です。特定のプロキシサービスに成功すると、追加の呼び出しは成功し続けますが、追加の呼び出しは不要です。

 

  • Register-AzureADPasswordProtectionProxy

 

コマンドレットは次のように実行されます。

$tenantAdminCreds = Get-Credential

Register-AzureADPasswordProtectionProxy -AzureCredential $tenantAdminCreds

 

※この例は、現在ログインしているユーザーがルートドメインのActive Directoryドメイン管理者でもある場合にのみ機能します。代替方法として、-ForestCredential パラメータを使用して必要なドメイン資格情報を提供する方法があります。

 

 

 

ヒント:このコマンドレットが実行を完了する前に、このコマンドレットが特定のAzureテナントに対して最初に実行されると、かなりの遅延が発生する可能性があります。障害が報告されない限り、この遅延は警戒しなくても大丈夫です。(私の環境ではそんなに長い遅延は発生しませんでした。)

 

5. フォレストを登録します。

 

  • オンプレミスのActive Directoryフォレストは、Register-AzureADPasswordProtectionForestPowershellコマンドレットを使用してAzureと通信するために必要な資格情報で初期化する必要があります。コマンドレットには、Azureテナントのグローバル管理者資格情報と、フォレストルートドメイン内のオンプレミス Active Directoryドメイン管理者権限が必要です。この手順は、フォレストごとに1回実行されます。

 

  • コマンドレットは次のように実行されます。(先ほどの工程と連続してコマンドを入力する場合には、” $tenantAdminCreds = Get-Credential  “の入力は不要です)

$tenantAdminCreds = Get-Credential

Register-AzureADPasswordProtectionForest -AzureCredential $tenantAdminCreds

 

 

 

6.【オプション】:Azure ADパスワード保護プロキシサービスを設定して、特定のポートでリッスン場合には以下の手順が必要です。

 

  • RPC over TCPは、Azure ADパスワード保護プロキシサービスと通信するために、ドメインコントローラ上のAzure ADパスワード保護DCエージェントソフトウェアによって使用されます。デフォルトでは、Azure ADパスワード保護パスワードポリシープロキシサービスは、利用可能なダイナミックRPCエンドポイントをリッスンします。必要に応じてネットワークトポロジやファイアウォールの要件により、サービスは特定のTCPポートでリッスンするように構成できます。(つまり、特定のポートでリッスンさせるときにのみ本工程を実行してください。今回はテストの為に、ADに直接サービスをインストールしているので本工程はスキップします。)

 

  • 静的ポートで実行するようにサービスを構成するには、Set-AzureADPasswordProtectionProxyConfigurationコマンドレットを使用します。

 

Set-AzureADPasswordProtectionProxyConfiguration –StaticPort <portnumber>

 

 

警告:これらの変更を有効にするには、サービスを停止して再起動する必要があります。

 

  • サービスを動的ポートで実行するように設定するには、同じ手順を使用しますが、StaticPortを0に戻します。

 

Set-AzureADPasswordProtectionProxyConfiguration –StaticPort 0

 

警告:これらの変更を有効にするには、サービスを停止して再起動する必要があります。

 

注意:Azure ADパスワード保護プロキシサービスは、ポート設定の変更後に手動で再起動する必要があります。このような構成変更を行った後、ドメインコントローラ上で実行されているDCエージェントサービスソフトウェアを再起動する必要はありません。

 

 

7.Get-AzureADPasswordProtectionProxyConfigurationを使用すれば、次の例に示すようにサービスの現在の構成を照会することができます。

 

 

 

 

2.Azure ADパスワード保護DCエージェントサービスをインストールする

 

 

  • AzureADPasswordProtectionDCAgent.msiMSIパッケージを使用して、Azure ADパスワード保護DCエージェントサービスソフトウェアをインストールします。

 

  • ソフトウェアのインストールでは、パスワードフィルターDLLが再起動時にのみロードまたはアンロードされるというオペレーティングシステム要件のため、インストールおよびアンインストール時にリブートする必要があります。

 

  • まだドメインコントローラではないマシンにDCエージェントサービスをインストールすることがサポートされています。この場合、サービスは開始され実行されますが、それ以外の場合は、マシンがドメインコントローラに昇格されるまで非アクティブになります。

 

ソフトウェアのインストールは、自動化することもできます。

 msiexec.exe /i AzureADPasswordProtectionDCAgent.msi /quiet /qn

 

注意:上記msiexecコマンドの例では、即座に再起動されます。これは/norestartフラグを指定することで回避できます。

 

ドメインコントローラにインストールして再起動すると、Azure ADパスワード保護DCエージェントソフトウェアのインストールが完了します。その他の構成については任意です。複数フォレストへの展開や、高可用性を持たせたい場合の手順について本記事の最後に記載をしているリンク先を参照してください。

 

 

動作イメージ

 

・カスタムリストで禁止したパスワード(及び本機能でマッチするワード)をオンプレミスADのアカウントに対して設定しようとした場合、以下のような画面が表示されて禁止されたパスワードの変更が出来なくなります。

 

 

 

 

【参考情報】

Azure ADパスワード保護の導入

https://docs.microsoft.com/ja-jp/azure/active-directory/authentication/howto-password-ban-bad-on-premises-operations

Azure ADパスワード保護の監視、レポート、トラブルシューティング

https://docs.microsoft.com/ja-jp/azure/active-directory/authentication/howto-password-ban-bad-on-premises-troubleshoot

Azure ADパスワード保護を展開する

https://docs.microsoft.com/ja-jp/azure/active-directory/authentication/howto-password-ban-bad-on-premises

 

 

あわせて読みたい

1件の返信

  1. 2018-07-17

    […] Azure AD Password Protectionを使用して組織から脆弱なパスワードを排除する […]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください