适用于:SQL Server
SQL Server 支持从 SQL Server 2008 R2 (10.50.x) 开始的扩展保护。
扩展保护 通过确保客户端知道它连接到的服务来帮助防止身份验证中继攻击。
扩展保护 是操作系统实现的一项网络组件功能。 Windows 7 和 Windows Server 2008 R2 支持扩展保护 。 旧 Microsoft 操作系统的 Service Pack 中包括扩展保护功能。
使用扩展保护进行连接时,SQL Server 会更安全。
扩展保护的描述
扩展保护 使用服务绑定和渠道绑定来帮助防止身份验证中继攻击。 在身份验证中继攻击中,可以执行 NTLM 身份验证的客户端(例如,Windows Explorer、Microsoft Outlook、.NET SqlClient 应用程序等)连接到攻击者(例如,恶意的 CIFS 文件服务器)。 攻击者使用客户端的凭据伪装成客户端,并向服务进行身份验证(例如,数据库引擎的实例)。
这种攻击具有两种变体:
在引诱攻击中,客户端被诱使自愿连接到攻击者。
在欺骗攻击中,客户端打算连接到有效的服务,但不知道 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。 有关详细信息,请参阅 TLS 1.2 对 Microsoft SQL Server 的支持。
操作系统支持
以下链接提供有关 Windows 如何支持 扩展保护的详细信息:
设置
三种 SQL Server 连接设置可影响服务绑定和渠道绑定。 可以使用 SQL Server Configuration Manager 或 WMI 配置设置来配置设置,并使用基于策略的管理的服务器 协议设置 方面进行查看。
强行加密
可能的值为 “打开” 和 “关闭” 。 若要使用通道绑定,必须将 强制加密 设置为 “开”,并且所有客户端都必须加密。 如果 关闭,则仅保证服务绑定。 “强行加密”位于 SQL Server 配置管理器中的“MSSQLSERVER 的协议属性”(“标志”选项卡)上。
扩展保护
可能的值为 “关闭” 、 “允许” 和 “必需” 。 通过扩展保护变量,用户可以为每个 SQL Server 实例配置扩展保护级别。 “扩展保护”位于 SQL Server 配置管理器中的“MSSQLSERVER 的协议属性”(“高级”选项卡)上。
当设置为 “关闭” 时,禁用 扩展保护 。 SQL Server 实例将接受来自任何客户端的连接,不管该客户端是否受保护。 关闭 与旧作系统和未修补的作系统兼容,但安全性较低。 当客户端作系统不支持扩展保护时,请使用此设置。
当设置为 “允许” 时,来自支持 扩展保护 的操作系统的连接需要 扩展保护。 对于不支持扩展保护的作系统的连接,将忽略扩展保护。 拒绝来自受保护客户端作系统上运行的未受保护的客户端应用程序的连接。 此设置比 关闭更安全,但它不是最安全的。 在混合环境中使用此设置;某些作系统支持 扩展保护,其他作系统不支持。
当设置为 “必需” 时,只接受来自受保护操作系统上受保护应用程序的连接。 此设置是最安全的,但不支持 扩展保护 的作系统或应用程序的连接将无法连接到 SQL Server。
接受的 NTLM SPN
当多个 SPN 知道服务器时,需要 接受的 NTLM SPN 变量。 当客户端尝试使用服务器不知道的有效 SPN 连接到服务器时,服务绑定会失败。 为了避免此问题,用户可以使用 接受的 NTLM SPN 指定表示服务器的多个 SPN。 接受的 NTLM SPN 是由分号分隔的一系列 SPN。 例如,若要允许 SPN MSSQLSvc/ HostName1.Contoso.com 和 MSSQLSvc/ HostName2.Contoso.com,请在“接受的 NTLM SPN” 框中键入 MSSQLSvc/HostName1.Contoso.com;MSSQLSvc/HostName2.Contoso.com 。 变量的最大长度为 2048 个字符。 “接受的 NTLM SPN”位于 SQL Server 配置管理器中的“MSSQLSERVER 的协议属性”(“高级”选项卡)上。
为数据库引擎启用扩展保护
若要使用 扩展保护,服务器和客户端都必须具有支持 扩展保护 的作系统,并且必须在作系统上启用。 有关如何为操作系统启用 扩展保护 的详细信息,请参阅 针对验证的扩展保护。
虽然在所有受支持的 Windows 版本中默认启用 扩展保护和NTLMv2 ,但默认情况下不会为 SQL Server 连接启用 扩展保护 。 用户必须在 SQL Server Configuration Manager 中手动启用它。
若要为 SQL Server 连接启用 扩展保护 ,管理员必须在 SQL Server 配置管理器中配置设置。 这包括用于服务绑定和通道绑定的选项,以缓解各种类型的身份验证中继攻击。 有关详细说明,请参阅有关配置 扩展保护的 SQL Server 文档。
在服务器计算机上启用 扩展保护 之后,使用以下步骤启用 扩展保护:
在“ 开始 ”菜单上,选择“ 所有程序”,指向 Microsoft SQL Server ,然后选择 “SQL Server 配置管理器”。
展开 SQL Server 网络配置,然后右键单击 __InstanceName*<* >,然后选择“属性”。
在“ 高级 ”选项卡上,将 “扩展保护 ”设置为通道绑定和服务绑定的相应设置。
(可选)当多个 SPN 知道服务器时,在“高级”选项卡上,配置 “接受的 NTLM SPN ”字段,如“设置”部分中所述。
对于渠道绑定,在 “标志” 选项卡上,将 “强行加密” 设置为 “打开” 。
重启数据库引擎服务。
配置其他 SQL Server 组件
有关如何配置 Reporting Services 的详细信息,请参阅 使用 Reporting Services 进行身份验证的扩展保护。
使用 IIS 通过 HTTP 或 HTTPS 连接访问 Analysis Services 数据时,Analysis Services 可以利用 IIS 提供的扩展保护。 有关配置 IIS 使用扩展保护的详细信息,请参阅 Configure Extended Protection in IIS 7.5(在 IIS 7.5 中配置扩展保护)。