> IP安全策略管理MMC管理单元(在Windows 2000中引入的secpol.msc的一部分).
>具有高级安全性MMC管理单元的Windows防火墙(wf.msc,在Windows 2008 / Vista中引入).
我的问题关注#2 – 我已经知道了我需要知道的#1. (但我想使用’new’管理单元来改进其加密功能.)
我在同一个域(域成员)中有两台Windows Server 2008 R2计算机,位于同一子网上:
server2 172.16.11.20 server3 172.16.11.30
我的目标是在隧道模式下使用IPsec加密这两台机器之间的所有通信,以便协议栈是:
> IP
> ESP
> IP
> ……等
首先,在每台计算机上,我创建了一个连接安全规则:
>端点1 :(本地IP地址),例如服务器2的172.16.11.20
>端点2 :(远程IP地址),例如172.16.11.30
>协议:任何
>身份验证:需要入站和出站,计算机(Kerberos V5)
> IPsec隧道:
>免除受IPsec保护的连接
>本地隧道端点:任意
>远程隧道端点:(远程IP地址),例如172.16.11.30
此时,我可以ping每台机器,Wireshark向我展示协议栈;然而,没有任何加密(这是预期的).我知道它是未加密的,因为Wireshark可以解码它(使用设置Attempt来检测/解码NULL加密的ESP有效载荷)和Monitor>安全协会>快速模式显示屏显示ESP加密:无.
然后在每台服务器上,我创建了入站和出站规则:
>协议:任何
>本地IP地址:(本地IP地址),例如172.16.11.20
>远程IP地址:(远程IP地址),例如172.16.11.30
>操作:如果安全,请允许连接
>要求加密连接
问题:虽然我在每台服务器上创建入站和出站规则以启用加密,但数据仍然通过线路(包裹在ESP中)进行NULL加密. (你可以在Wireshark中看到这个.)
当到达接收端时,它被拒绝(可能是因为它未加密). [并且,在接收端禁用入站规则会导致它锁定和/或蓝屏 – 很有趣!] Windows防火墙日志说,例如:
2014-05-30 22:26:28 DROP ICMP 172.16.11.20 172.16.11.30 - - 60 - - - - 8 0 - RECEIVE
我试过改变一些事情:
>在规则中,将本地IP地址设置为Any
>切换“免除IPsec保护的连接”设置
>禁用规则(例如,禁用一组或两组入站或出站规则)
>更改协议(例如改为TCP)
但实际上,没有那么多旋钮可以转动.
有没有人有任何想法?有没有人尝试使用Windows防火墙在两台主机之间设置隧道模式?
我已经使用完全相同的规则成功地将它设置为传输模式(即没有隧道),所以我有点惊讶它没有添加隧道的Just Work™.
诀窍是:不要为加密创建任何入站或出站规则.仅创建连接安全规则(用于隧道).然后,设置防火墙的IPsec默认值以加密每个启用IPsec的连接.
在隧道的每一端执行以下操作:
>创建连接安全规则:
>端点1 :(本地IP地址),例如172.16.11.20
>端点2 :(远程IP地址),例如172.16.11.30
>强制所有IPsec连接加密:
>打开主防火墙属性(右键单击具有高级安全性的Windows防火墙>属性…)
>在“IPsec设置”选项卡的“IPsec默认值”下,单击“自定义…”
>在数据保护(快速模式)下,选择高级,然后单击自定义…
>选中“使用这些设置的所有连接安全规则要求加密”复选框.
>调整任何其他设置(例如,您可能希望将3DES作为协议删除),然后确定您的出路.
如果您之前已创建任何加密的入站/出站规则,请禁用或删除它们.
这很好用.它唯一的缺点是它强制加密每个IPsec连接;您不能再使用加密和仅受完整性保护的连接.
你怎么知道流量真的是隧道(即ESP正在携带IP有效载荷而不是TCP)?您可以使用旧的IPsec MMC(IP安全策略管理或secpol.msc)对此进行验证.
>在一台服务器上,使用上述WFAS说明创建隧道.>在另一台服务器上,使用“旧”IPsec MMC创建隧道.>这两个人应该毫无困难地沟通.>如果将“旧”IPsec策略切换到传输模式(即删除隧道),则连接将中断.这就是你如何告诉WFAS连接是真的隧道.