AD FS エクストラネット ロックアウト保護を構成する
Windows Server 2012 R2 の AD FS では、エクストラネットのロックアウトと呼ばれるセキュリティ機能が導入されました。 この機能を使用すると、AD FS では、外部からの "悪意のある" ユーザー アカウントの認証が一定期間 "停止" されます。 これにより、お使いのユーザー アカウントが Active Directory でロックアウトされるのを防止できます。 AD FS エクストラネット ロックアウトは、AD アカウントのロックアウトからユーザーを保護するだけでなく、ブルート フォース パスワード推測攻撃からも保護します。
注意
この機能は、認証要求が Web アプリケーション プロキシ 経由で送信され、ユーザー名とパスワードの認証のみに適用されるエクストラネット シナリオでのみ有効です。
エクストラネットのロックアウトの利点
エクストラネットのロックアウトには、次の主な利点があります。
- 攻撃者が認証要求を連続して送信してユーザーのパスワードを推測しようとするブルート フォース攻撃から、お使いのユーザー アカウントを保護します。 この場合、AD FS では、エクストラネット アクセスに対して悪意のあるユーザー アカウントがロックアウトされます
- 攻撃者が間違ったパスワードで認証要求を送信してユーザー アカウントをロックアウトする悪意のあるアカウント ロックアウトから、お使いのユーザー アカウントを保護します。 この場合、ユーザー アカウントはエクストラネット アクセスに対して AD FS によってロックアウトされますが、AD の実際のユーザー アカウントはロックアウトされません。ユーザーは組織内の会社のリソースに引き続きアクセスできます。 これはソフト ロックアウトと呼ばれます。
しくみ
この機能を有効にするには、AD FS で以下の 3 つの設定を構成する必要があります。
- EnableExtranetLockout <Boolean> エクストラネットのロックアウトを有効にする場合は、このブール値を True に設定します。
- ExtranetLockoutThreshold <Integer> これは、間違ったパスワードの最大試行回数を定義します。 しきい値に達すると、AD FS は、エクストラネット監視期間が経過するまで、パスワードが正しいかどうかに関係なく、認証のためにドメイン コントローラーに接続しようとせずに、直ちにエクストラネットからの要求を拒否します。 つまり、アカウントがソフト ロックアウトされている間は、AD アカウントの badPwdCount 属性の値は増えません。
- ExtranetObservationWindow <TimeSpan> これは、ユーザー アカウントがソフト ロックアウトされる期間を決定します。期間が経過したら、AD FS は、ユーザー名とパスワードの認証を再開します。 AD FS では、エクストラネット監視期間が経過したかどうかを判断するための参照として、AD 属性 badPasswordTime を使用します。 現在の時刻 > badPasswordTime + ExtranetObservationWindow の場合は、期間が経過しました。
注意
AD FS エクストラネット ロックアウトは、AD ロックアウト ポリシーとは無関係に機能します。 ただし、ExtranetLockoutThreshold パラメーター値を、AD アカウントのロックアウトしきい値より小さい値に設定するように強くお勧めします。 そうしないと、AD FS は、アカウントが Active Directory でロックアウトされないように保護することができません。
間違ったパスワードの試行回数が最大 15 回、ソフト ロックアウト期間が 30 分のエクストラネット ロックアウト機能を有効にする例は次のとおりです。
Set-AdfsProperties -EnableExtranetLockout $true -ExtranetLockoutThreshold 15 -ExtranetObservationWindow (new-timespan -Minutes 30)
これらの設定は、AD FS サービスが認証できるすべてのドメインに適用されます。 この方法では、AD FS が認証要求を受信すると、LDAP 呼び出しを介してプライマリ ドメイン コントローラー (PDC) にアクセスし、PDC でユーザーに対して badPwdCount 属性の参照を実行します。 AD FS で badPwdCount の値 >= ExtranetLockoutThreshold 設定が見つかり、エクストラネット監視期間で定義されている時間がまだ経過していない場合、AD FS は要求を直ちに拒否します。つまり、ユーザーがエクストラネットから入力したパスワードが正しいか、正しくないかに関係なく、AD FS が AD に資格情報を送信しないのでログオンは失敗します。 AD FS では、BadPwdCount またはロックアウトされたユーザー アカウントに関する状態は維持されません。 AD FS は、すべての状態追跡に AD を使用します。
警告
Server 2012 R2 の AD FS エクストラネット ロックアウトが有効になっている場合、WAP 経由のすべての認証要求は、PDC 上で AD FS によって検証されます。 PDC が使用できない場合、ユーザーはエクストラネットから認証できません。
PDC が使用できない場合、Server 2016 には、AD FS が別のドメイン コントローラーにフォールバックできるようにする追加のパラメーターが用意されています。
- ExtranetLockoutRequirePDC <>Boolean - 有効な場合、エクストラネット ロックアウトにはプライマリ ドメイン コントローラー (PDC) が必要です。 無効にすると、PDC が使用できない場合、エクストラネット ロックアウトは別のドメイン コントローラーにフォールバックされます。
次の Windows PowerShell コマンドを使用して、Server 2016 で AD FS エクストラネット ロックアウトを構成できます。
Set-AdfsProperties -EnableExtranetLockout $true -ExtranetLockoutThreshold 15 -ExtranetObservationWindow (new-timespan -Minutes 30) -ExtranetLockoutRequirePDC $false
Active Directory ロックアウト ポリシーの使用
AD FS のエクストラネット ロックアウト機能は、AD ロックアウト ポリシーとは無関係に機能します。 ただし、AD ロックアウト ポリシーを使用してセキュリティの目的を果たすことができるように、エクストラネット ロックアウトの設定が正しく構成されていることを確認する必要があります。
最初に AD ロックアウト ポリシーを見てみましょう。 AD のロックアウト ポリシーには、次の 3 つの設定があります。
- アカウントのロックアウトのしきい値: この設定は、AD FS の ExtranetLockoutThreshold 設定に似ています。 これは、ユーザー アカウントがロックアウトされる原因となるログオン試行の失敗回数を決定します。悪意のあるアカウント ロックアウト攻撃からお使いのユーザー アカウントを保護するには、AD FS の ExtranetLockoutThreshold < AD の "アカウントのロックアウトのしきい値" の値を設定できます。
- アカウントのロックアウト期間: この設定は、ユーザー アカウントがロックアウトされる期間を決定します。この状況では、この設定はあまり重要ではありません。正しく構成されていれば、AD ロックアウトが発生する前にエクストラネット ロックアウトが常に行われるからです。
- アカウント ロックアウト カウンターをリセットするまでの経過時間: この設定は、badPwdCount が 0 にリセットされるまでに、ユーザーの最後のログオン エラーから経過する必要がある時間を決定します。 AD FS のエクストラネット ロックアウト機能が AD ロックアウト ポリシーとうまく連携するには、AD FS の ExtranetObservationWindow の値 > AD の "アカウント ロックアウト カウンターをリセットするまでの経過時間" 値であることを確認する必要があります。 以下の例では、その理由について説明します。
2 つの例を見て、さまざまな設定と状態に基づいて badPwdCount が時間の経過につれてどのように変化するかを確認しましょう。 両方の例で、アカウントのロックアウトのしきい値 = 4、ExtranetLockoutThreshold = 2 と仮定します。 赤い矢印は間違ったパスワードの試行を表し、緑色の矢印は正しいパスワードの試行を表します。 例 1 では、ExtranetObservationWindow>アカウント ロックアウト カウンターをリセットするまでの経過時間です。 例 2 では、ExtranetObservationWindow<アカウント ロックアウト カウンターをリセットするまでの経過時間です。
例 1
例 2
上記から分かるように、badPwdCount が 0 にリセットされる場合の 2 つの条件があります。 1 つは、ログオンが成功したときです。 もう 1 つは、アカウント ロックアウト カウンターをリセットするまでの経過時間の設定で定義されたとおりにこのカウンターをリセットするときです。 アカウント ロックアウト カウンターをリセットするまでの経過時間<ExtranetObservationWindow の場合、アカウントには AD によってロックアウトされるリスクはありません。 ただし、アカウント ロックアウト カウンターをリセットするまでの経過時間>ExtranetObservationWindow の場合、アカウントが AD によって、ただし "遅れて" ロックアウトされる可能性があります。 AD FS では、badPwdCount がアカウントのロックアウトのしきい値に達するまで、監視期間中に許可される間違ったパスワードの試行回数は 1 回だけのため、構成によっては AD によってアカウントがロックアウトされるまでに時間がかかる場合があります。
詳細については、アカウント ロックの構成に関するページを参照してください。
既知の問題
AD FS がクエリを実行しているドメイン コントローラーに badPwdCount 属性がレプリケートされないので、AD ユーザー アカウントが AD FS で認証できないという既知の問題があります。 詳細については、2971171 を参照してください。 これまでにリリースされた AD FS の QFE はすべて、ここで検索できます。
主な注意点
- エクストラネット ロックアウト機能は、認証要求が Web アプリケーション プロキシで送信されるエクストラネット シナリオでのみ有効です
- エクストラネット ロックアウト機能は、ユーザー名パスワード認証にのみ適用されます
- AD FS では、badPwdCount や、ソフト ロックアウトされているユーザーは追跡されません。AD FS は、すべての状態追跡に AD を使用します
- AD FS は、すべての認証の試行について、PDC 上のユーザーに対する LDAP 呼び出しを介して badPwdCount 属性の参照を実行します
- 2016 より前の AD FS は、PDC にアクセスできないと失敗します。 AD FS 2016 では、PDC が使用できない場合に AD FS が他のドメイン コントローラーにフォール バックできるようにする機能強化が導入されました。
- BadPwdCount < ExtranetLockoutThreshold の場合、AD FS では、エクストラネットからの認証要求が許可されます
- badPwdCount>= ExtranetLockoutThreshold かつ badPasswordTime + ExtranetObservationWindow< 現在の時刻の場合、AD FS はエクストラネットからの認証要求を拒否します
- 悪意のあるアカウント ロックアウトを回避するには、ExtranetLockoutThreshold<アカウントのロックアウトのしきい値かつ ExtranetObservationWindow>アカウント ロックアウト カウンターをリセットするまでの経過時間を確認する必要があります