令我惊讶的是,在配置 SQL Server 强制连接加密时,默认情况下 SQL Server 不会采取任何措施来防止中间人攻击。
对连接进行强制加密非常简单。您转到 Sql Server 配置管理器,展开 SQL Server 网络配置、[您的实例] 的协议(protocol),右键单击 TCP/IP,将强制加密更改为"is",重新启动 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 签名:证书应该配置为客户端上的受信任证书。如果这不是真的,“信任服务器证书”复选框有什么用?
最佳答案
参见Using Encryption Without Validation 。除了连接设置“信任服务器证书”之外,还有另一个设置,即客户端设置“信任服务器证书”,它是从配置管理器配置的。如果设置了两者中的任何一个,自签名证书都会成功(实际上有点复杂,因为客户端设置No
将覆盖连接设置...请参阅链接)。
关于sql-server - 如何配置加密的 SQL Server 连接以防止 MITM 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39108597/