如何验证SQL Server流量是否已加密?

问题描述 投票:12回答:5

我需要证明我们在应用程序的连接字符串中具有的加密设置正在起作用。

验证从我们的网站到SQL Server的流量实际上已加密的最简单方法是什么?

sql-server security
5个回答
26
投票

您可以使用Wireshark之类的东西查看通过网络传输的数据包


12
投票

您检查encrypt_option DMV的sys.dm_exec_connections列。这样,您不仅可以证明已加密,而且还可以在启动时在应用程序中进行验证。要执行加密,请遵循此sys.dm_exec_connections中描述的方法。如果客户端或服务器强制加密并且提供了证书,并且客户端接受服务器证书,则连接将被加密。要验证流量是否已加密,可以使用内置的netmon.exe工具(必须从ad / remove系统组件中安装),下载经过改进的MSDN How To: Enable Encrypted Connections to the Database Engine或其他第三方工具。

作为替代方案,部署站点可以强制执行IPSec加密。


7
投票

我将在数据库连接字符串中将“强制协议加密”设置为true,将“信任服务器证书”设置为true。如果服务器无法按要求为您提供加密的连接,则服务器应无法建立连接。 Microsoft Network Monitor 3.2涵盖了使用sql server 2005及更高版本进行的加密。

简单的测试是尝试使用加密和不加密的连接,当它分发不需要的连接类型时失败。然后由DBA,IT或您配置服务器以符合您的要求。


1
投票

[Microsoft本身还有另一个被低估的工具:'Microsoft Network Monitor'。基本上,这与wireshark非常相似,不同之处在于,某些特定的MS协议比wireshark本身具有更好的解析器和可视化支持,并且显然,它只能在Windows ;-)下运行。

该工具相当陈旧,看上去已经废弃了(到目前为止尚未看到更新的版本),但仍然表现出色,并且定义新协议的语法非常简洁/有趣-因此,它仍然具有强大的功能未来。“

分析示例-记录已针对TDS进行了过滤-因此大部分其他数据包被舍弃:

“

对于SQL Server连接也是如此。 MNM甚至可以可视化线下的结果集-非常整洁。尽管如此,如上所述的wireshark足以验证加密和在其自身上应用的证书。意味着它可以完全理解TDS-Protocoll。

处理TLS

[还有扩展名(所谓的专家)'NmDecrypt'和正确的证书(包括私钥)-可以解密协议-对于使用TDS TLS INSIDE的TDS来说非常好-怪不得-没有人真正实现过作为wireshark的完全受支持的协议;)

工具链接:


0
投票

为了确保正在使用加密,您需要在服务器上使用http://nmdecrypt.codeplex.com/releases/view/85581

客户端加密不是强制性的。服务器端是必需的。

SQL Server服务启动时,如果无法读取证书或存在其他障碍,它将停止。它不会接受未加密的连接。

为了回答,我先使用数据包嗅探器进行加密检查,然后才依靠服务器端加密是强制性的并且SQL无法启动的事实。

enable the force encryption option

请记住,SQL Server限制(如果启用)服务器上的加密。加密将是用于所有传入的连接。如果在客户端上启用加密计算机,所有传出连接从该客户端try进行与任何SQL的加密连接服务器。

For SQL 2000, KB 276553

后期编辑:

使用旧版本的MS JDBC客户端:它无法处理服务器端加密...

© www.soinside.com 2019 - 2024. All rights reserved.