如何使用IPSecencryption与SQL Server的连接?

SQL Server OLEDB提供程序可以使用连接string中的选项对SQL Server使用SSLencryption连接 :

对数据使用encryption
指定数据在通过networking发送之前是否应encryption。
有效值是“真”和“假”。 默认值是“false”。

正如微软所指出的那样, 这有许多问题 :

  • 它需要获得有效的SSL证书
  • 它需要在服务器上安装SSL证书
  • 它需要改变连接string
  • 这不是我要问的

安全

幸运的是, 微软build议可以使用IPSec作为替代scheme:

SQL Server数据可以在传输过程中使用IPSec进行encryption。 IPSec由客户端和服务器操作系统提供,不需要SQL Serverconfiguration。 有关IPSec的信息,请参阅Windows或联网文档。

因为即使客户端和服务器都在同一个局域网上:

在这里输入图像说明

我们不希望任何人使用WireShark,集线器,电脑模式,或交换机,可以监控stream量,看到stream量。

问题是: 你怎么做?

研究的努力并不重要

在客户端机器上,我们要configuration一个需要IPSec连接到SQL Server的策略(例如端口1433)。 从高级安全Windows防火墙

  • 创build一个新的出站防火墙规则

    在这里输入图像说明

  • 对于IP端口:

    在这里输入图像说明

  • 用于目标TCP端口1433

    在这里输入图像说明

  • 允许连接,如果它是安全的

    在这里输入图像说明

  • 在这里输入图像说明

缺点是客户端现在无法连接到服务器:

在这里输入图像说明

奖金阅读

  • 超级用户 – Windows 7 – 如何使用IPSec (指隧道模式)
  • Technet:encryption连接到SQL Server (引用用户使用IPSec)
  • MS论坛:IPSec来保护SQL Server连接 (接受的答案是他放弃了试图使用IPsec)
  • 如何使用IPSECencryptionSQL Server通信? (接受的答案不表示如何使用IPSecencryptionSQL Server通信)
  • Serverfault用户Greg说你不能使用IPSec来encryptionnetworkingstream量
  • 局域网stream量IPSec:基本考虑因素? (关于encryptionLANstream量的一般性讨论)

如果连接安全规则就绪,则不能使用“如果安全则允许此连接”。 这需要在两个系统上定义,并且具有匹配的设置,就像设置一个标准的ipsec VPN隧道一样。

以下是如何创build一个。

  1. 使用“服务器到服务器”模板创build连接安全规则。
  2. 按照一般规则,将连接安全规则设置为需要双向validation。
  3. select一种方法来authentication这个连接。 如果两个系统都可以访问共享的内部CA,则通常是最佳select。 如果不这样做 – 特别是内部机器的DMZ – 预先共享密钥是下一个最好的select。 这是在高级authentication设置下设置的。
  4. 确保在连接设置中包含两台服务器的IP地址。

我可以看到这个选项的唯一方法是在您的SQL服务器上安装一个IPSec VPN服务器,让您的客户端先创build隧道,然后stream量才能stream动。 这是一个混乱的解决scheme,但是当它说客户端和服务器操作系统提供了IPSec时,文档就是指的。

您需要有一个由VPN系统发布IP的辅助networking设置,并将您的SQL服务器重新绑定到该IP范围,这样,只有连接到VPN的用户才能连接SQL服务器。