AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 599860
Accepted
fission
fission
Asked: 2014-05-31 21:28:41 +0800 CST2014-05-31 21:28:41 +0800 CST 2014-05-31 21:28:41 +0800 CST

隧道模式下的 Windows 2008 R2 IPsec 加密,同一子网中的主机

  • 772

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

  1. IP 安全策略管理MMC 管理单元(Windows 2000 中引入的一部分)secpol.msc。
  2. 具有高级安全性 MMC 管理单元的Windows 防火墙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 可以对其进行解码(使用设置Attempt to detect/decode NULL encrypted ESP payloads)并且Monitor > Security Associations > Quick Mode显示显示 ESP Encryption: None。

然后在每台服务器上,我创建了入站和出站规则:

  • 协议:任何
  • 本地 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 地址设置为Any
  • 切换豁免 IPsec 保护连接设置
  • 禁用规则(例如禁用一组或两组入站或出站规则)
  • 更改协议(例如仅更改为 TCP)

但实际上没有那么多旋钮可以转动。

有没有人有任何想法?有没有人尝试使用 Windows 防火墙在两台主机之间设置隧道模式?

我已经使用完全相同的规则集成功地将它设置为传输模式(即无隧道),所以我有点惊讶它没有添加隧道的 Just Work™。

windows-server-2008-r2
  • 1 1 个回答
  • 5056 Views

1 个回答

  • Voted
  1. Best Answer
    fission
    2014-09-16T21:26:38+08:002014-09-16T21:26:38+08:00

    经过大量调查以及与 Microsoft 的支持案例,我找到了答案。

    诀窍是:不要为加密创建任何入站或出站规则。仅创建连接安全规则(用于隧道)。然后,为防火墙设置 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 连接确实是隧道。
    • 2

相关问题

  • Server 2008 R2 架构更改 - 自 RC 以来是否有任何更改?

  • 是否可以在 Server 2008 R2 Core Install 中安装 servermanagercmd?

  • 视窗 2008 R2 WDS

  • 从命令行备份 Windows 2008 R2 到网络共享 - 隐藏分区问题

  • 在 Windows Server 2008 上移动和更改 Pagefile.sys 大小

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve