【问题标题】:How to configure encrypted SQL Server connections to prevent MITM attacks?如何配置加密的 SQL Server 连接以防止 MITM 攻击?
【发布时间】:2016-12-30 17:17:33
【问题描述】:

令我惊讶的是,在配置 SQL Server 以强制连接加密时,默认情况下 SQL Server 没有采取任何措施来防止中间人攻击。

对您的连接强制加密非常简单。您转到 Sql Server 配置管理器,展开 SQL Server 网络配置,[您的实例] 的协议,右键单击 TCP/IP,将强制加密更改为“是”,重新启动 SQL Server,您就完成了。

根据 Microsoft TechNet (https://technet.microsoft.com/en-us/library/ms189067(v=sql.105).aspx),这将生成自签名证书。好的,没问题,但我希望我的客户会抱怨证书不受信任。但是,他们没有。他们很高兴地连接到它。然后我意识到“信任服务器证书”在 SQL Management Studio 中默认检查。很好,但最令人震惊的实现是:即使您取消选中“信任服务器证书”,SSMS 也不会抱怨、警告或拒绝连接。

因此,默认情况下 SQL Server 完全容易受到 MITM 攻击,因为客户端不执行任何操作来验证来自 SQL Server 的证书。证书不必由 CA 签名:证书必须在客户端上配置为受信任的证书。如果不是这样,“信任服务器证书”复选框的作用是什么?

【问题讨论】:

  • 离题。不是编程问题,真的。这是更多的服务器配置。试试 DBA 站点或服务器故障,也许。
  • 当您设置一个未勾选信任的原始系统时会发生什么?也许它已经将服务器证书或 ca 证书添加到其信任列表中。
  • @symcbean 我也有同样的想法——我从一个原始系统连接到它,同样的事情发生了。

标签: sql-server security encryption sql-server-2016


【解决方案1】:

Using Encryption Without Validation。除了连接设置“信任服务器证书”之外,还有另一个设置,客户端设置“信任服务器证书”,它是从配置管理器配置的。如果设置了两者中的任何,则自签名证书将成功(实际上有点复杂,因为客户端设置No 将覆盖连接设置...参见链接)。

【讨论】:

    【解决方案2】:

    SQL Server 2016 版本附带 TLS 1.0 到 TLS 1.2 支持 (Transport Layer Security)。

    应禁用 TLS 1.0、1.1 和 SSL 3.0,并仅使用 TLS 1.2 进行客户端-服务器通信。

    (其他版本的SQL server 通过CU累积更新支持TLS 1.2)

    SQL 服务器使用名为 TDS 的协议作为 TCP 上的应用层。尚未报告 Microsoft TDS 实施的已知漏洞。

    由于一些标准执行组织强制要求将 TLS 1.2 用于加密通信通道,因此 Microsoft 正在为广泛的 SQL Server 安装基础发布对 TLS 1.2 的支持。

    审核:TLS 1.2 support for Microsoft SQL Server

    SQL Server 是否可以防止 MITM 攻击(中间人)

    证书颁发机构系统旨在阻止中间人攻击。在 TLS 中,SQL 服务器使用与其证书关联的私钥来建立有效的连接并加密所有有线通信。 服务器将密钥保密,因此中间人无法使用 SQL Server 真实证书;

    使用自签名证书:

    在生产环境中永远不能接受使用自签名证书,但可以在测试环境中使用。 使用 SHA256 签名的证书/链,SHA1 已经过时了。

    您可以应用Transport Layer Protection Cheat Sheet中描述的与服务器认证相关的规则

    Windows 管理员可以为 Windows 操作系统启用 TLS 1.2 支持以获得 TLS 1.2 的好处

    你的观点:

    在配置 SQL Server 以强制连接加密时,默认情况下 SQL Server 不会阻止中间人攻击。

    安全是由安全策略书面文档管理并由操作系统/数据库/网络/应用程序...的管理员实施并经过审核的策略。

    SQL Server 是否符合安全标准? 答案是肯定的。最近所有旧的 SQL 服务器 2008/2012 正在成为 CU 的 TLS 1.2 支持。

    结论:

    • 组织应避免在生产环境中使用自行分配的认证,而应使用 CA 认证。
    • DBA /Windows/Network Admin 可以为 SQL server/Windows 和网络基础设施实施 TLS 1.2。
    • 应用程序中的连接字符串可以支持加密。

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 2015-10-19
      • 2021-12-07
      • 2021-12-02
      • 1970-01-01
      • 2012-05-12
      • 2016-01-06
      • 1970-01-01
      • 2017-03-31
      相关资源
      最近更新 更多