共用方式為


使用擴充保護連線到資料庫引擎

適用於:SQL Server

SQL Server 支援從 SQL Server 2008 R2 (10.50.x) 開始的擴充保護

擴充保護 確保用戶端知道其所連線的服務,有助於防止驗證轉送攻擊。

擴充保護 是操作系統所實作的網路元件功能。 Windows 7 和 Windows Server 2008 R2 上可支援 [擴充保護] 。 Service Pack 中內含擴充保護,可供舊版 Microsoft 作業系統使用。

SQL Server 在使用擴充保護進行連線時較安全。

擴充保護的描述

[擴充保護] 會使用服務繫結與通道繫結來避免驗證轉送攻擊。 在驗證轉送攻擊中,可以執行 NTLM 驗證的用戶端 (如 Windows 檔案總管、Microsoft Outlook、.NET SqlClient 應用程式等) 會連接到攻擊者 (如惡意 CIFS 檔案伺服器)。 攻擊者會使用客戶端的認證偽裝為用戶端,並向服務進行驗證(例如,Database Engine 的實例。

這種攻擊有兩種變化:

  • 在誘餌式攻擊中,用戶端會主動連線到攻擊者。

  • 在一種詐騙攻擊中,用戶端想要連線到一個有效的服務,但卻不知道 DNS 和 IP 路由中的一個或兩個已經被篡改,將連線重新導向至攻擊者。

SQL Server 支援服務繫結與通道繫結,以減少 SQL Server 執行個體上的這些攻擊。

服務綁定

服務繫結位址引誘攻擊的方式,是要求用戶端傳送用戶端打算連接之 SQL Server 服務的已簽署服務主要名稱 (SPN)。 在驗證回應的過程中,該服務會驗證封包中收到的 SPN 與它自己的 SPN 相符。 如果客戶端被誘導連線至攻擊者,客戶端會包含攻擊者所簽署的SPN。 攻擊者無法將封包轉寄至真正的 SQL Server 服務作為客戶端進行驗證,因為它會包含攻擊者的 SPN。 服務系結會產生一次性、可忽略的成本,但無法解決詐騙攻擊的問題。 當用戶端應用程式不使用加密來連線到 SQL Server 時,就會發生服務系結。

通道系結

通道繫結會在用戶端與 SQL Server 服務的執行個體之間建立安全通道 (Schannel)。 服務會比較該通道特有的用戶端通道系結令牌(CBT)與自己的 CBT,藉此驗證客戶端的真實性。 通道繫結會處理引誘和詐騙這兩種攻擊。 不過,它會產生較大的運行時間成本,因為它需要所有會話流量的傳輸層安全性 (TLS) 加密。 用戶端應用程式使用加密連接到 SQL Server 時會發生通道繫結,與加密由用戶端還是伺服器強制無關。

警告

適用於 SQL Server 的 SQL Server 和 Microsoft 資料提供者支援 TLS 1.0 和 SSL 3.0。 如果您以在作業系統 SChannel 層級中進行變更的方式,強制執行不同的通訊協定 (例如 TLS 1.1 或 TLS 1.2),您與 SQL Server 的連線可能會失敗。 請確定您有支援 TLS 1.1 或 TLS 1.2 的最新 SQL Server 組建。 如需詳細資訊,請參閱https://support.microsoft.com/topic/kb3135244-tls-1-2-support-for-microsoft-sql-server-e4472ef8-90a9-13c1-e4d8-44aad198cdbe

操作系統支援

下列連結提供有關 Windows 如何支援 [擴充保護] 的詳細資訊:

設定

有三個 SQL Server 連接設定會影響服務繫結與通道繫結。 您可以使用 SQL Server 設定管理員或 WMI 來設定這些設定,並透過原則式管理的 伺服器通訊協定設定 Facet 來檢視。

強制加密

可能的值是 [開啟][關閉] 。 若要使用通道系結,強制加密 必須設定為 On,而且所有用戶端都必須加密。 如果 關閉的話,則只保證服務綁定。 [強制加密] 位於 組態管理員的 [MSSQLSERVER 的通訊協定屬性] ([旗標] 索引標籤) SQL Server 上。

擴充保護

可能的值是 [關閉][允許][必要][擴充保護] 變數可讓使用者設定每個 執行個體的 擴充保護層級 SQL Server。 [擴充保護] 位於 組態管理員的 [MSSQLSERVER 的通訊協定屬性] ([進階] 索引標籤) SQL Server 上。

當設定為 [關閉] 時,便會停用 [擴充保護] 。 不論用戶端是否受到保護,SQL Server 實例都會接受來自任何客戶端的連線。 關閉 與較舊且未修補的操作系統相容,但較不安全。 當用戶端作業系統不支援延伸保護時,請使用此設定。

當設定為 [允許] 時,支援 [擴充保護] 之作業系統的連接便需要 [擴充保護]擴充保護 會忽略來自不支援 擴充保護的操作系統的連線。 來自受保護用戶端操作系統上執行之未受保護用戶端應用程式的聯機會遭到拒絕。 此設定比 Off更安全,但不是最安全的設定。 在混合環境中使用此設定;某些操作系統支援 擴充保護,而其他操作系統則不支援。

當設定為 [必要] 時,只會接受來自受保護之作業系統上的受保護應用程式的連接。 此設定最安全,但不支援 擴充保護 的作業系統或應用程式將無法連接到 SQL Server。

接受的NTLM SPN列表

當多個SPN知道伺服器時,需要 接受的NTLM SPN 變數。 當客戶端嘗試使用伺服器不知道的有效SPN連線到伺服器時,服務系結會失敗。 若要避免這個問題,使用者可以使用 接受的NTLM SPN來指定代表伺服器的數個SPN。 接受的NTLM SPN 是以分號分隔的一系列SPN。 例如,若要允許 SPN MSSQLSvc/ HostName1.Contoso.comMSSQLSvc/ HostName2.Contoso.com,請在 [接受的 NTLM SPN] 方塊中輸入 MSSQLSvc/HostName1.Contoso.com;MSSQLSvc/HostName2.Contoso.com 。 此變數的最大長度為 2,048 個字元。 [接受的 NTLM SPN] 位於 組態管理員的 [MSSQLSERVER 的通訊協定屬性] ([進階] 索引標籤) SQL Server 上。

啟用資料庫引擎的擴充保護

若要使用 擴充保護,伺服器和用戶端都必須具有支援 擴充保護 且必須在操作系統上啟用的操作系統。 如需有關如何針對作業系統啟用 [擴充保護] 的詳細資訊,請參閱 驗證擴充保護

雖然在所有支援的 Windows 版本中預設會啟用 擴充保護NTLMv2,但 SQL Server 連線預設不會啟用 擴充保護。 用戶必須在 SQL Server Configuration Manager中手動啟用它。

若要為 SQL Server 連線啟用 擴充保護,系統管理員必須在 SQL Server 組態管理員中設定設定。 這包括服務系結和通道系結的選項,以減輕不同類型的驗證轉送攻擊。 如需詳細指示,請參閱有關設定 擴充保護的 SQL Server 檔。

在伺服器電腦上啟用 [擴充保護] 之後,請使用下列步驟來啟用 [擴充保護]

  1. 在 [開始] 功能表上,選擇 [所有程式],指向 [Microsoft SQL Server],然後選取 [SQL Server 組態管理員]。

  2. 展開 [SQL Server 網路設定],然後右鍵點擊 _<_InstanceName*>*的通訊協定,然後選取 [屬性]

  3. 在 [進階] 索引標籤上,將 [擴充保護] 設定為通道系結和服務系結的適當設定。

  4. 或者,當多個SPN識別伺服器時,請在 [進階] 索引標籤中,按照 [設定] 一節中的描述,設定 [接受的NTLM SPN] 欄位。

  5. 如果是通道繫結,請在 [旗標] 索引標籤上將 [強制加密] 設定為 [開啟]

  6. 重新啟動資料庫引擎服務。

設定其他 SQL Server 元件

如需如何設定 Reporting Services 的詳細資訊,請參閱含有 Reporting Services 的驗證擴充保護

使用 IIS 存取使用 HTTP 或 HTTPS 連線的 Analysis Services 數據時,Analysis Services 可以利用 IIS 所提供的擴充保護。 如需有關如何設定 IIS 使用擴充保護的詳細資訊,請參閱 在 IIS 7.5 中設定擴充保護