这SQL Server OLEDB 提供程序可以使用连接字符串中的选项与 SQL Server 进行 SSL 加密连接:
对数据使用加密
指定在通过网络发送数据之前是否应对其进行加密。
有效值为“true”和“false”。默认值为“false”。
正如微软指出的那样,存在许多问题:
- 它需要获取有效的 SSL 证书
- 它需要在服务器上安装 SSL 证书
- 它需要改变连接字符串
- 这不是我要问的
IPSec
幸运的是,Microsoft 建议可以使用 IPSec作为备选:
可以使用 IPSec 在传输过程中加密 SQL Server 数据。IPSec 由客户端和服务器操作系统提供,不需要 SQL Server 配置。有关 IPSec 的信息,请参阅 Windows 或网络文档。
因为即使客户端和服务器都在同一个局域网上:
我们不希望任何拥有 WireShark、集线器、处于混杂模式的 PC 或可以监控流量的交换机的人能够看到流量。
问题是:你怎么做呢?
研究努力并不重要
在客户端计算机上,我们要配置一个策略,要求使用 IPSec 连接到 SQL Server(例如端口 1433)。从内部高级安全 Windows 防火墙:
缺点是客户端现在无法连接到服务器:
额外阅读
- 超级用户 - Windows 7 - 如何使用 IPSec (指隧道模式)
- Technet:加密与 SQL Server 的连接 (指用户使用IPSec)
- MS 论坛:IPSec 保护 SQL Server 连接 (接受的答案说他放弃尝试使用 IPsec)
- 如何使用 IPSEC 加密 SQL Server 流量? (接受的答案没有表明如何使用 IPSec 加密 SQL Server 流量)
- Serverfault 用户Greg 说你不能使用 IPSec 来加密网络流量
- 用于 LAN 流量的 IPSec:基本考虑因素? (关于加密 LAN 流量的一般讨论)
答案1
除非您已制定连接安全规则,否则您无法使用“如果连接安全则允许此连接”。这需要在两个系统上定义并具有匹配的设置,就像设置标准 ipsec VPN 隧道一样。
下面逐步介绍了如何为该用例创建一个。
- 打开 Windows Defender 防火墙管理单元(wf.msc)
- 打开“连接安全规则”选项卡
- 右键单击中心面板并选择“新规则”
- 选择‘服务器到服务器’模板。
- 在端点1中输入本地计算机IP地址
- 在端点2中输入远程计算机IP地址。
- 作为一般规则,设置连接安全规则以要求双向进行身份验证。
- 选择一种方法来验证此连接。
- 如果您的两个系统都可以访问共享的内部 CA/kerberos,这通常是最好的选择。
- 如果做不到这一点(尤其是对于 DMZ 到内部机器),预共享密钥是下一个最佳选择。这是在高级身份验证设置下设置的。
- 除计算机证书之外的任何其他内容都位于高级对话框中。
- 您可能只需要在这里使用“第一次身份验证”方法。
您需要在两台主机上重复此过程。
答案2
我认为唯一的选择是在您的 SQL 服务器上设置 IPSec VPN 服务器,并让您的客户端首先创建到该服务器的隧道,然后流量才能流动。这是一个混乱的解决方案,但文档中提到 IPSec 由客户端和服务器操作系统提供时指的是这个。
您需要有一个由 VPN 系统发出 IP 的辅助网络设置,并将您的 SQL 服务器重新绑定到该 IP 范围,这样只有连接到 VPN 的人才能连接 SQL 服务器。