Windows Server 2012 R2 の AD FS では、エクストラネット ロックアウトと呼ばれるセキュリティ機能が導入されました。 この機能により、AD FS は一定期間、外部から "悪意のある" ユーザー アカウントの認証を "停止" します。 これにより、Active Directory でユーザー アカウントがロックアウトされなくなります。 AD FS エクストラネット ロックアウトは、ユーザーを AD アカウントロックアウトから保護するだけでなく、ブルート フォース パスワード推測攻撃からも保護します。
注
この機能は、認証要求が Web アプリケーション プロキシ経由で送信され、ユーザー名とパスワード認証にのみ適用されるエクストラネット シナリオでのみ機能します。
エクストラネット ロックアウトの利点
エクストラネット ロックアウトには、次の主な利点があります。
- 攻撃者が認証要求を継続的に送信してユーザーのパスワードを推測しようとする ブルート フォース攻撃 からユーザー アカウントを保護します。 この場合、AD FS は悪意のあるユーザー アカウントをエクストラネット アクセス用にロックアウトします
- 不正なパスワードで認証要求を送信することで、攻撃者がユーザー アカウントをロックアウトする 悪意のあるアカウント ロックアウト からユーザー アカウントを保護します。 この場合、ユーザー アカウントはエクストラネット アクセスのために AD FS によってロックアウトされますが、AD の実際のユーザー アカウントはロックアウトされず、ユーザーは組織内の企業リソースに引き続きアクセスできます。 これは ソフト ロックアウトと呼ばれます。
動作方法
AD FS には、この機能を有効にするために構成する必要がある 3 つの設定があります。
- EnableExtranetLockout <ブール値> エクストラネット ロックアウトを有効にする場合は、このブール値を True に設定します。
- ExtranetLockoutThreshold <整数> 不正なパスワード試行の最大数を定義します。 しきい値に達すると、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 が使用されます。
警告
サーバー 2012 R2 の AD FS エクストラネット ロックアウトが有効になっている場合、WAP を介するすべての認証要求は、PDC 上の AD FS によって検証されます。 PDC が使用できない場合、ユーザーはエクストラネットから認証できなくなります。
Server 2016 には、PDC が使用できないときに 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 によってアカウントがロックアウトされるまでに時間がかかる場合があります。
詳細については、「 アカウント ロックアウトの構成」を参照してください。
既知の問題
ADFS がクエリを実行しているドメイン コントローラーに badPwdCount 属性がレプリケートされないため、AD ユーザー アカウントが AD FS で認証できないという既知の問題があります。 詳細については、 2971171 を参照してください。 これまでにリリースされたすべての AD FS QFE については、 こちらをご覧ください。
覚えておくべき重要なポイント
- エクストラネット ロックアウト機能は、認証要求が Web アプリケーション プロキシ経由で送信される エクストラネット シナリオ でのみ機能します。
- エクストラネット ロックアウト機能は、ユーザー名とパスワード認証にのみ適用されます
- AD FS では、 badPwdCount またはソフト ロックアウトされているユーザーは追跡されません。AD FS では、すべての状態追跡に AD が使用されます
- AD FS は、認証の試行ごとに PDC でユーザーの LDAP 呼び出しを介して badPwdCount 属性の検索を実行します
- PDC にアクセスできない場合、2016 より前の AD FS は失敗します。 AD FS 2016 では、PDC が利用できない場合に AD FS を他のドメイン コントローラーにフォールバックできるようにする機能強化が導入されました。
- badPwdCount < ExtranetLockoutThreshold の場合、AD FS はエクストラネットからの認証要求を許可します
- badPwdCount>= ExtranetLockoutThreshold AND badPasswordTime + ExtranetObservationWindow< 現在の時刻の場合、AD FS はエクストラネットからの認証要求を拒否します
- 悪意のあるアカウントロックアウトを回避するには、ExtranetLockoutThreshold<Account Lockout Threshold and ExtranetObservationWindow>Reset Account Lockout Counter を確認する必要があります