共用方式為


設定 AD FS 外部網路鎖定保護

在 Windows Server 2012 R2 上的 AD FS 中,我們引進了稱為外部網路鎖定的安全性功能。 透過這項功能,AD FS 會「停止」驗證來自外部的「惡意」用戶帳戶一段時間。 這可防止您的用戶帳戶在 Active Directory 中遭到鎖定。 除了保護使用者免於 AD 帳戶鎖定之外,AD FS 外部網路鎖定也會防止暴力密碼破解密碼猜測攻擊。

備註

此功能僅適用於外部 網路案例 ,其中驗證要求是透過 Web 應用程式 Proxy,且僅適用於 使用者名稱和密碼驗證

外部網路鎖定的優點

外部網路鎖定提供下列主要優點:

  • 它可保護您的用戶帳戶免受 暴力密碼破解攻擊 ,攻擊者會持續傳送驗證要求來嘗試猜測用戶的密碼。 在此情況下,AD FS 會鎖定惡意用戶帳戶以防止外部網路存取。
  • 它可保護您的用戶帳戶免於 惡意帳戶鎖定 ,攻擊者想要藉由傳送驗證要求錯誤密碼來鎖定用戶帳戶。 在此情況下,雖然 AD FS 會鎖定使用者帳戶以進行外部網路存取,但 AD 中的實際用戶帳戶不會遭到鎖定,而且使用者仍然可以存取組織內的公司資源。 這稱為 軟鎖定

運作方式

AD FS 中有三個設定,您需要設定才能啟用此功能:

  • 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 外部網路鎖定啟用時,PDC 上的 AD FS 會驗證所有透過 WAP 的驗證要求。 當 PDC 無法使用時,使用者將無法從外部網路進行驗證。

Server 2016 提供額外的參數,可讓 AD FS 在 PDC 無法使用時回復到另一個域控制器:

  • ExtranetLockoutRequirePDC <布爾值> - 啟用時:外部網路鎖定需要主要網域控制器(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 中有三個關於鎖定原則的設定:

  • 帳戶鎖定閾值:此設定類似於 AD FS 中的 ExtranetLockoutThreshold 設定。 它會判斷會導致用戶帳戶遭到鎖定的失敗登入嘗試次數。為了保護您的用戶帳戶免於惡意帳戶鎖定攻擊,您想要在AD FS < 中設定ExtranetLockoutThreshold的值,AD中的帳戶鎖定閾值
  • 帳戶鎖定持續時間:此設定會決定使用者帳戶鎖定的時間長度。此設定在這次討論中並不重要,因為如果設定正確,應該一律在 AD 鎖定發生之前,先發生外部網路鎖定。
  • 重設帳戶鎖定計數器之後:此設定會決定在 badPwdCount 重設為 0 之前,使用者上次登入失敗必須經過多少時間。 為了讓 AD FS 中的外部網路鎖定功能能與 AD 鎖定原則良好搭配運作,您需要確保 AD FS > 中的 ExtranetObservationWindow 值在 AD 中重設帳戶鎖定計數器之後的值。 下列範例將說明原因。

讓我們看看兩個範例,並查看在不同設定和狀態下,badPwdCount 隨著時間的變化方式。 假設這兩個範例 帳戶鎖定閾值 = 4 和 ExtranetLockoutThreshold = 2。 紅色箭號代表錯誤的密碼嘗試,綠色箭號代表良好的密碼嘗試。 在範例 #1 中,ExtranetObservationWindow>重設帳戶鎖定計數器之後。 在範例 #2 中,ExtranetObservationWindow<重設帳戶鎖定計數器後

範例 1

此圖顯示根據不同設定和狀態,隨著時間而變更 badPwdCount 的方式。

範例 2

範例 1

如上所示, badPwdCount 將重設為 0 時有兩個條件。 其中一個是成功登入時。 另一個是是時候重設此計數器,如 [ 重設帳戶鎖定計數器之後 ] 設定中所定義。 在重設帳戶鎖定計數器<後的 ExtranetObservationWindow 時,帳戶沒有被 AD(Active Directory)鎖定的任何風險。 不過,如果在ExtranetObservationWindow 之後>重設帳戶鎖定計數器,可能會讓AD鎖定帳戶,但以「延遲的方式」鎖定帳戶。 視您的設定而定,讓 AD 鎖定帳戶可能需要一段時間,因為 AD FS 只會在其觀察期間允許一個不正確的密碼嘗試,直到 badPwdCount 達到 帳戶鎖定閾值為止。

如需詳細資訊,請參閱 設定帳戶鎖定

已知問題

因為 badPwdCount 屬性未被複寫到 ADFS 正在查詢的域控制器,所以已知問題是 AD 使用者帳戶無法使用 AD FS 驗證。 如需詳細資訊 ,請參閱2971171 。 您可以在這裡找到所有已 發行的AD FS QFE。

須留意的重點

  • 外部網路鎖定功能僅適用於透過 Web 應用程式 Proxy 進行驗證要求的額外網路案例
  • 外部網路鎖定功能僅適用於 使用者名稱和密碼驗證
  • AD FS 不會追蹤 badPwdCount或那些暫時被鎖定的使用者。AD FS 使用AD來追蹤所有狀態。
  • AD FS 會透過 PDC 上使用者的 LDAP 呼叫,針對每次驗證嘗試執行 badPwdCount 屬性的查閱
  • 如果 AD FS 無法存取 PDC,則 2016 年之前的 AD FS 將會失敗。 AD FS 2016 引入了一些改進,使 AD FS 能夠在 PDC 無法使用時,自動切換回其他域控制器。
  • 如果 badPwdCount < ExtranetLockoutThreshold,則 AD FS 將允許來自外部網域的驗證請求。
  • 如果 badPwdCount>= ExtranetLockoutThreshold AND badPasswordTime + ExtranetObservationWindow< 目前時間,AD FS 將會拒絕來自外部網路的驗證要求
  • 若要避免惡意帳戶鎖定,您應該確定 ExtranetLockoutThreshold<帳戶鎖定閾值ExtranetObservationWindow>重設帳戶鎖定計數器