在 Windows 中,似乎有两种设置 IPsec 的方法:
- 这IP安全策略管理MMC 管理单元(的一部分
secpol.msc
,在 Windows 2000 中引入)。 - 这高级安全 Windows 防火墙MMC 管理单元(
wf.msc
,在 Windows 2008/Vista 中引入)。
我的问题与问题 #2 有关 — 我已经弄清楚了我需要了解的问题 #1。(但我想使用“新”管理单元来提高其加密功能。)
我在同一个域(域成员)中、同一个子网上有两台 Windows Server 2008 R2 计算机:
server2 172.16.11.20
server3 172.16.11.30
我的目标是使用 IPsec 加密这两台机器之间的所有通信隧道模式,这样协议栈就是:
- 知识产权
- ESP
- 知识产权
- …ETC。
首先,在每台计算机上,我创建了一个连接安全规则:
- 端点 1:(本地 IP 地址),
172.16.11.20
例如server2
- 端点 2:(远程 IP 地址),例如
172.16.11.30
- 协议:任何
- 验证:需要入站和出站,计算机(Kerberos V5)
- IPsec 隧道:
- 免除 IPsec 保护的连接
- 本地隧道端点:任何
- 远程隧道端点:(远程 IP 地址),例如
172.16.11.30
此时,我可以查看ping
每台机器,Wireshark 会向我显示协议堆栈;但是,没有任何内容是加密的(这是预期的)。我知道它是未加密的,因为 Wireshark 可以对其进行解码(使用设置尝试检测/解码 NULL 加密的 ESP 负载)和监视器>安全关联>快速模式显示屏显示 ESP 加密:没有任何。
然后在每台服务器上我创建入站和出站规则:
- 协议:任何
- 本地 IP 地址:(本地 IP 地址),例如
172.16.11.20
- 远程 IP 地址:(远程 IP 地址),例如
172.16.11.30
- 行动:如果连接安全,则允许连接
- 要求连接加密
问题:虽然我创造了入站和出站规则在每台服务器上启用加密,数据仍然通过 NULL 加密传输(包裹在 ESP 中)。(您可以在 Wireshark 中看到这一点。)
当到达接收端时,它会被拒绝(大概是因为它是未加密的)。[并且,禁用接收端的入站规则会导致它锁定和/或蓝屏 - 有趣!] Windows 防火墙日志显示,例如:
2014-05-30 22:26:28 DROP ICMP 172.16.11.20 172.16.11.30 - - 60 - - - - 8 0 - RECEIVE
我尝试改变一些事情:
- 在里面规则,将本地 IP 地址设置为任何
- 切换免除 IPsec 保护的连接环境
- 禁用规则(例如禁用一组或两组入站或出站规则)
- 更改协议(例如更改为 TCP)
但实际上,没有那么多旋钮可以转动。
有人有什么想法吗?有人尝试过设置隧道模式在两个主机之间使用 Windows 防火墙?
我已经成功设置了运输方式(即没有隧道)使用完全相同的规则,所以我有点惊讶它在添加隧道后没有正常工作™。
答案1
经过大量调查以及向微软寻求支持后,我找到了答案。
诀窍是:不要创造任何入站或者出站规则加密。仅创建连接安全规则(用于隧道)。然后,设置防火墙的 IPsec 默认值以进行加密每一个启用 IPsec 的连接。
在隧道的每一端执行以下操作:
创建一个连接安全规则:
- 端点 1:(本地 IP 地址),例如
172.16.11.20
- 端点 2:(远程 IP 地址),例如
172.16.11.30
- 协议:任何
- 验证:需要入站和出站,计算机(Kerberos V5)
- IPsec 隧道:
- 免除 IPsec 保护的连接
- 本地隧道端点:任何
- 远程隧道端点:(远程 IP 地址),例如
172.16.11.30
- 端点 1:(本地 IP 地址),例如
强制所有 IPsec 连接加密:
- 打开主防火墙属性(右键单击高级安全 Windows 防火墙> 属性…)
- 在里面IPsec 设置标签下IPsec 默认设置, 点击定制…
- 在下面数据保护(快速模式), 选择先进的,然后点击定制…
- 勾选要求对所有使用这些设置的连接安全规则进行加密。
- 调整任何其他设置(例如,您可能想要删除 3DES 作为协议),然后单击“确定”。
如果您之前创建了任何用于加密的入站/出站规则,请禁用或删除它们。
这很有效。它唯一的缺点是它强制加密每一个IPsec 连接;您不能再混合使用加密连接和仅受完整性保护的连接。
您如何知道流量确实是通过隧道传输的(即 ESP 承载的是 IP 有效负载,而不是 TCP)?您可以使用旧的 IPsec MMC 来验证这一点(IP安全策略管理, 或者secpol.msc
)。
- 在一台服务器上,使用上述 WFAS 的说明创建隧道。
- 在另一台服务器上,使用“旧” IPsec MMC 创建隧道。
- 这两者应该可以毫无问题地进行沟通。
- 如果您将“旧” IPsec 策略切换为传输模式(即删除隧道),连接将中断。这就是您判断 WFAS 连接确实在进行隧道连接的方式。