Windows 2008 R2 IPsec 加密采用隧道模式,主机位于同一子网中

Windows 2008 R2 IPsec 加密采用隧道模式,主机位于同一子网中

在 Windows 中,似乎有两种设置 IPsec 的方法:

  1. IP安全策略管理MMC 管理单元(的一部分secpol.msc,在 Windows 2000 中引入)。
  2. 高级安全 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. 创建一个连接安全规则

    • 端点 1:(本地 IP 地址),例如172.16.11.20
    • 端点 2:(远程 IP 地址),例如172.16.11.30
    • 协议:任何
    • 验证:需要入站和出站,计算机(Kerberos V5)
    • IPsec 隧道:
      • 免除 IPsec 保护的连接
      • 本地隧道端点:任何
      • 远程隧道端点:(远程 IP 地址),例如172.16.11.30
  2. 强制所有 IPsec 连接加密:

    1. 打开主防火墙属性(右键单击高级安全 Windows 防火墙> 属性…)
    2. 在里面IPsec 设置标签下IPsec 默认设置, 点击定制…
    3. 在下面数据保护(快速模式), 选择先进的,然后点击定制…
    4. 勾选要求对所有使用这些设置的连接安全规则进行加密
    5. 调整任何其他设置(例如,您可能想要删除 3DES 作为协议),然后单击“确定”。

如果您之前创建了任何用于加密的入站/出站规则,请禁用或删除它们。

这很有效。它唯一的缺点是它强制加密每一个IPsec 连接;您不能再混合使用加密连接和仅受完整性保护的连接。


您如何知道流量确实是通过隧道传输的(即 ESP 承载的是 IP 有效负载,而不是 TCP)?您可以使用旧的 IPsec MMC 来验证这一点(IP安全策略管理, 或者secpol.msc)。

  • 在一台服务器上,使用上述 WFAS 的说明创建隧道。
  • 在另一台服务器上,使用“旧” IPsec MMC 创建隧道。
  • 这两者应该可以毫无问题地进行沟通。
  • 如果您将“旧” IPsec 策略切换为传输模式(即删除隧道),连接将中断。这就是您判断 WFAS 连接确实在进行隧道连接的方式。

相关内容