共用方式為


AD FS 的安全規劃和部署的最佳實踐

本主題提供最佳做法資訊,協助您在設計 Active Directory 同盟服務 (AD FS) 部署時規劃及評估安全性。 本主題是檢視和評估影響您使用 AD FS 整體安全性相關考量的起始點。 本主題中的資訊旨在補充和擴充您現有的安全性規劃和其他設計最佳做法。

AD FS 的核心安全性最佳做法

下列核心最佳做法適用於您想要改善或擴充設計或部署安全性的所有 AD FS 安裝:

  • 將AD FS保護為「第0層」系統

    由於AD FS基本上是驗證系統,因此應該被視為「第0層」系統,就像網路上的其他身分識別系統一樣。 如需詳細資訊,請參閱 Active Directory 系統管理層模型

  • 使用 [安全性設定精靈] 將AD FS特定的安全性最佳做法套用至同盟伺服器和同盟伺服器 Proxy 計算機

    安全性設定精靈 (SCW) 是預安裝於所有 Windows Server 2008、Windows Server 2008 R2 和 Windows Server 2012 計算機上的工具。 您可以使用它來套用安全性最佳做法,以根據您要安裝的伺服器角色,協助減少伺服器的受攻擊面。

    當您安裝 AD FS 時,安裝程式會建立可搭配 SCW 使用的角色擴充檔案來建立安全策略,以套用至您在安裝期間所選擇的特定 AD FS 伺服器角色(同盟伺服器或同盟伺服器 Proxy)。

    所安裝的每個角色擴充檔案都代表每部計算機設定的角色和子角色類型。 下列角色擴充檔案會安裝在 C:WindowsADFSScw 目錄中:

    • Farm.xml

    • SQLFarm.xml

    • StandAlone.xml

    • Proxy.xml (只有在您在同盟伺服器 Proxy 角色中設定計算機時,才會顯示此檔案。

    若要在 SCW 中套用 AD FS 角色擴充功能,請依序完成下列步驟:

    1. 安裝AD FS,並為該電腦選擇適當的伺服器角色。 如需詳細資訊,請參閱AD FS部署指南中的 安裝同盟服務 Proxy角色服務

    2. 使用 Scwcmd 命令行工具註冊適當的角色擴充檔案。 如需了解在計算機配置的角色中如何使用此工具的詳細資訊,請參閱下表。

    3. 檢查位於 WindowssecurityMsscwLogs 目錄中的 SCWRegister_log.xml 檔案,確認命令已順利完成。

    您必須在每個要套用AD FS型SCW安全策略的同盟伺服器或同盟伺服器 Proxy 電腦上執行所有這些步驟。

    下表說明如何根據您在安裝AD FS之電腦上所選擇的AD FS 伺服器角色,註冊適當的SCW角色擴充功能。

    AD FS 伺服器角色 使用的AD FS組態資料庫 在命令提示字元中輸入下列命令:
    獨立同盟伺服器 Windows 內部資料庫 scwcmd register /kbname:ADFS2Standalone /kbfile:"WindowsADFSscwStandAlone.xml"
    伺服器農場同盟伺服器 Windows 內部資料庫 scwcmd register /kbname:ADFS2Standalone /kbfile:"WindowsADFSscwFarm.xml"
    伺服器農場同盟伺服器 SQL Server scwcmd register /kbname:ADFS2Standalone /kbfile:"WindowsADFSscwSQLFarm.xml"
    同盟伺服器 Proxy N/A scwcmd register /kbname:ADFS2Standalone /kbfile:"WindowsADFSscwProxy.xml"

    如需您可以搭配AD FS使用之資料庫的詳細資訊,請參閱 AD FS組態資料庫的角色

  • 在安全性非常重要的情況下,使用令牌重播偵測,例如,當使用自助服務亭時。 令牌重播偵測是 AD FS 的一項功能,確保能夠偵測並捨棄任何嘗試向同盟服務重播令牌請求的行為。 預設會啟用令牌重播偵測。 它適用於 WS-Federation 被動設定檔和安全聲明標記語言 (SAML) WebSSO 設定檔,確保相同的權杖不會被重複使用。

    當同盟服務啟動時,它會開始建立所有滿足的令牌要求的快取。 隨著後續的令牌請求被添加到快取中,同盟服務對於偵測任何多次重複執行令牌請求的嘗試的能力會隨之提高。 如果您停用令牌重播偵測,並在稍後選擇重新啟用,請記住,聯盟服務仍會在一段時間內接受可能已先前使用的令牌,直到重播快取有足夠的時間來重建其內容為止。 如需詳細資訊,請參閱 The Role of the AD FS Configuration Database

  • 使用令牌加密,特別是當您使用 SAML 引證解析時。

    強烈建議您加密令牌,以增加安全性,並防範可能針對AD FS部署嘗試的潛在中間人攻擊。 使用加密可能會對整個環境造成輕微的影響,但一般而言,通常不應該注意到,而且在許多部署中,安全性的好處會超過伺服器效能的任何成本。

    若要啟用令牌加密,請先為信賴方信任設定新增加密憑證。 您可以在建立信賴方信任時或之後,設定加密憑證。 若要稍後將加密憑證新增至現有的信賴方信任,您可以在使用 AD FS 管理嵌入式單元時,在信任屬性中的 [加密] 索引標籤上設定要使用的憑證。 若要使用 AD FS Cmdlet 指定現有信任的憑證,請使用 Set-ClaimsProviderTrustSet-RelyingPartyTrust Cmdlet 的 EncryptionCertificate 參數。 若要在解密令牌時設定同盟服務的憑證,請使用Set-ADFSCertificate Cmdlet,併為 Token-Encryption 參數指定 “”。 您可以使用 Set-RelyingPartyTrust Cmdlet 的 EncryptClaims 參數,啟用和停用特定信賴憑證者信任的加密。

  • 利用擴充保護進行驗證

    為了協助保護您的部署,您可以使用AD FS來設定和使用延伸保護來進行驗證功能。 此設定會指定同盟伺服器所支援之驗證的擴充保護層級。

    驗證的擴充保護可協助防範中間人攻擊(MITM)攻擊,攻擊者會攔截客戶端認證,並將其轉送至伺服器。 透過通道系結令牌(CBT),可以防止這類攻擊,伺服器在與客戶端建立通訊時,可以要求、允許或不需要使用令牌。

    若要啟用擴充保護功能,請在 Set-ADFSProperties Cmdlet 上使用 ExtendedProtectionTokenCheck 參數。 下表說明此設定的可能值,以及這些值所提供的安全性層級。

    參數值 安全性層級 保護設定
    需要 伺服器已完全強化。 延伸保護會強制執行,且一律為必要。
    允許 伺服器已部分加固。 延伸保護會強制執行,使用這項保護的系統已修補以支援該功能。
    沒有 伺服器易受攻擊。 不會強制執行擴充保護。
  • 如果您使用記錄和追蹤,請確定任何敏感性資訊的隱私權。

    根據預設,AD FS 不會直接公開或追蹤個人標識資訊,作為同盟服務或一般作業的一部分。 當在 AD FS 中啟用事件記錄和偵錯追蹤記錄時,根據您所設定的宣告原則,某些宣告類型及其相關值可能包含可能被記錄在 AD FS 事件或追蹤記錄中的個人識別信息(PII)。

    因此,強烈建議對 AD FS 組態及其記錄檔強制執行訪問控制。 如果您不想顯示這類資訊,您應該先停用登入,或篩選出記錄中的任何 PII 或敏感數據,再與其他人共用。

    下列秘訣可協助您防止不小心公開記錄檔的內容:

    • 請確定AD FS事件記錄檔和追蹤記錄檔受到訪問控制清單 (ACL) 的保護,這些清單限制只有需要存取這些信任系統管理員的存取權。

    • 不要使用可能被 Web 請求輕易讀取的檔案擴展名或路徑來複製或封存記錄檔。 例如,.xml 擴展名不是安全的選擇。 您可以檢查 Internet Information Services (IIS) 系統管理指南,以查看可提供服務的延伸模組清單。

    • 如果您修改記錄檔的路徑,請務必指定記錄檔位置的絕對路徑,該位置應該位於 Web 主機虛擬根目錄 (vroot) 公用目錄之外,以防止外部方使用網頁瀏覽器存取記錄檔。

  • AD FS 外部網路軟鎖定和AD FS外部網路智慧鎖定保護

    如果發生透過 Web 應用程式 Proxy 並使用無效(錯誤)密碼進行的驗證要求形式攻擊時,AD FS 外部網路鎖定功能能幫助您保護使用者,避免 AD FS 帳戶被鎖定。 除了保護使用者免於 AD FS 帳戶鎖定之外,AD FS 外部網路鎖定也會防止暴力密碼破解密碼猜測攻擊。

    如需 Windows Server 2012 R2 上 AD FS 的外部網路軟鎖定,請參閱 AD FS 外部網路軟鎖定保護

    如需 Windows Server 2016 上 AD FS 的外部網路智慧鎖定,請參閱 AD FS 外部網路智慧鎖定保護

AD FS 的 SQL Server 特定安全性最佳做法

下列安全性最佳實務特別針對在 AD FS 設計和部署中使用 Microsoft SQL Server® 或 Windows 內部資料庫(WID)來管理數據的情況。

備註

這些建議旨在擴充 SQL Server 產品安全性指引,但不能取代。 如需規劃安全 SQL Server 安裝的詳細資訊,請參閱 安全 SQL 安裝的安全性考慮https://go.microsoft.com/fwlink/?LinkID=139831)。

  • 在實體安全的網路環境中,一律在防火牆後方部署 SQL Server。

    SQL Server 安裝不應該直接公開至因特網。 只有資料中心內的電腦才能夠連線到支援 AD FS 的 SQL 伺服器安裝。 如需詳細資訊,請參閱 安全性最佳做法檢查清單https://go.microsoft.com/fwlink/?LinkID=189229)。

  • 在服務帳戶下執行 SQL Server,而不是使用內建的預設系統服務帳戶。

    根據預設,SQL Server 通常會安裝並設定為使用其中一個支援的內建系統帳戶,例如 LocalSystem 或 NetworkService 帳戶。 若要增強 AD FS SQL Server 安裝的安全性,請盡可能使用個別的服務帳戶來存取 SQL Server 服務,並在 Active Directory 部署中註冊此帳戶的安全性主體名稱 (SPN) 來啟用 Kerberos 驗證。 這可啟用客戶端與伺服器之間的相互驗證。 如果沒有個別服務帳戶的SPN註冊,SQL Server 將會使用NTLM進行 Windows 型驗證,其中只有客戶端經過驗證。

  • 將 SQL Server 介面區最小化。

    只啟用必要的 SQL Server 端點。 根據預設,SQL Server 會提供無法移除的單一內建 TCP 端點。 針對AD FS,您應該啟用此 TCP 端點以進行 Kerberos 驗證。 若要檢閱目前的 TCP 端點,以查看是否已將額外的使用者定義的 TCP 連接埠新增至 SQL 安裝,您可以在 Transact-SQL (T-SQL) 工作階段中使用 “SELECT * FROM sys.tcp_endpoints” 查詢語句。 如需 SQL Server 端點組態的詳細資訊,請參閱 如何:設定資料庫引擎接聽多個 TCP 連接埠https://go.microsoft.com/fwlink/?LinkID=189231)。

  • 避免使用以 SQL 為基礎的驗證。

    若要避免必須透過網路以純文本傳送密碼,或將密碼儲存在組態設定中,請只搭配 SQL Server 安裝使用 Windows 驗證。 SQL Server 驗證是舊版驗證模式。 當您使用 SQL Server 驗證時,不建議儲存結構化查詢語言 (SQL) 登入認證 (SQL 使用者名稱和密碼)。 如需詳細資訊,請參閱 驗證模式https://go.microsoft.com/fwlink/?LinkID=189232)。

  • 請仔細評估 SQL 安裝中其他通道安全性的需求。

    即使 Kerberos 驗證生效,SQL Server 安全性支援提供者介面 (SSPI) 也不會提供通道層級安全性。 不過,對於伺服器安全位於受防火牆保護網路的安裝,可能不需要加密 SQL 通訊。

    雖然加密是協助確保安全性的重要工具,但不應考慮所有數據或連線。 當您決定是否要實作加密時,請考慮使用者存取數據的方式。 如果使用者透過公用網路存取資料,可能需要數據加密來增加安全性。 不過,如果 AD FS 的所有 SQL 資料存取都牽涉到安全的內部網路設定,則可能不需要加密。 任何加密的使用都應該包含密碼、金鑰和憑證的維護策略。

    如果擔心可能會透過網路看到或竄改任何 SQL 資料,請使用因特網通訊協定安全性 (IPsec) 或安全套接字層 (SSL) 來協助保護您的 SQL 連線。 不過,這可能會對 SQL Server 效能產生負面影響,在某些情況下可能會影響或限制 AD FS 效能。 例如,當來自 SQL 屬性存放區的屬性查閱對令牌發行而言非常重要時,令牌發行中的 AD FS 效能可能會降低。 您可以藉由具有強式周邊安全性設定,來更妥善地消除 SQL 竄改威脅。 例如,保護 SQL Server 安裝的更好解決方案是確保因特網使用者和計算機仍無法存取,而且只有資料中心環境內的使用者或計算機才能存取它。

    如需詳細資訊,請參閱 加密 SQL Server 的連線SQL Server 加密

  • 使用預存程序來設定安全設計的存取,以執行 AD FS 對 SQL 預存資料的所有 SQL 型查詢。

    若要提供更好的服務和數據隔離,您可以為所有屬性存放區查閱命令建立預存程式。 您可以建立資料庫角色,然後授與執行預存程序的許可權。 將AD FS Windows 服務的服務識別指派給這個資料庫角色。 AD FS Windows 服務不應該能夠執行任何用於屬性查閱的適當預存程序之外的其他 SQL 語句。 以這種方式鎖定 SQL Server 資料庫的存取權,可降低提高許可權攻擊的風險。

另請參閱

Windows Server 2012 中的 AD FS 設計指南