第212篇:IPsec VPN 野蛮模式与主模式

关键词

主模式、野蛮模式、Main Mode、Aggressive Mode、IKE 阶段 1、身份保护、预共享密钥、数字证书


一、两种模式的起源

IKEv1 阶段 1 定义了两种交换模式——主模式(Main Mode)野蛮模式(Aggressive Mode),它们在消息数量、安全性和场景适用性上有显著差异。

1.1 核心区别一览

对比维度              主模式(Main)             野蛮模式(Aggressive)
────────────────────────────────────────────────────────────────────
消息数量             6 个消息                   3 个消息
身份保护             身份在加密后传输            身份在加密前传输
DH 交换时机          在加密保护之前              与初始消息一起发送
抗重放能力           强                         弱
灵活性               低(参数固定)              高(可包含附加信息)
配置要求             两端参数完全一致            两端只需匹配部分参数
推荐场景             固定站点对固定站点           远程访问、动态 IP 场景

二、主模式(Main Mode)详解

2.1 6 步交互流程

Initiator (发起方)                          Responder (响应方)
     │                                            │
     │  消息 1:SA 提议列表                        │
     │  加密算法、认证算法、DH 组、生存时间         │
     │───────────────────────────────────────────→ │
     │                                            │
     │  消息 2:SA 选择                            │
     │  从提议中选择一组参数                       │
     │←─────────────────────────────────────────── │
     │                                            │
     │  消息 3:DH 公钥 + Nonce                    │
     │───────────────────────────────────────────→ │
     │                                            │
     │  消息 4:DH 公钥 + Nonce                    │
     │←─────────────────────────────────────────── │
     │                                            │
     │  双方计算 SKEYID(主密钥)                   │
     │  基于 DH 共享密钥 + Nonce                   │
     │                                            │
     │  消息 5:(已加密)身份 + 认证数据            │
     │  发起方身份信息+Hash(预共享密钥+参数)        │
     │───────────────────────────────────────────→ │
     │                                            │
     │  消息 6:(已加密)身份 + 认证数据            │
     │  响应方身份信息+Hash(预共享密钥+参数)        │
     │←─────────────────────────────────────────── │
     │                                            │
     │  IKE SA 建立完成,进入阶段 2                 │

2.2 身份保护机制

主模式的关键优势:身份保护

消息 1-4:明文传输(算法协商 + DH 公钥)
  └── 此时对端身份未被暴露

消息 5-6:加密传输(在共享密钥计算之后)
  └── 身份信息在加密保护下传输
      窃听者无法得知通信双方的身份

重要性:
  在公网上,如果攻击者知道谁在和谁建立 VPN
  可能针对性地发起攻击
  主模式保护了这个隐私信息

三、野蛮模式(Aggressive Mode)详解

3.1 3 步交互流程

Initiator (发起方)                          Responder (响应方)
     │                                            │
     │  消息 1:SA 提议 + DH 公钥 + Nonce + 身份   │
     │  (合并了主模式的消息 1、3、5)              │
     │───────────────────────────────────────────→ │
     │                                            │
     │  消息 2:SA 选择 + DH 公钥 + Nonce + 身份   │
     │            + 认证数据                        │
     │  (合并了主模式的消息 2、4、6)              │
     │←─────────────────────────────────────────── │
     │                                            │
     │  双方计算 SKEYID                            │
     │                                            │
     │  消息 3:认证数据(Hash 确认)               │
     │───────────────────────────────────────────→ │
     │                                            │
     │  IKE SA 建立完成                            │

3.2 身份暴露风险

野蛮模式的核心问题:身份在加密前暴露

消息 1 中包含了身份信息(如 ID 字符串):

报文 1(明文) SA: AES-256/SHA256/DH14 DH 公钥: 0xAB12... Nonce: 0x9876... 身份: "branch@company.com"

攻击者可以: 1. 知道谁的 VPN 正在建立连接 2. 针对身份发起社会工程攻击 3. 在身份基础上发起离线字典攻击

特别注意: 使用预共享密钥时,野蛮模式的身份字符串 被用于查找对应的共享密钥。 攻击者可以用获取的身份尝试大量密码。

3.3 野蛮模式的适用场景

尽管有身份暴露风险,野蛮模式在以下场景中不可或缺:

场景 1:发起方 IP 地址不固定
  主模式要求两端的配置静态对应
  如果发起方 IP 是动态获取的(PPPoE/DHCP)
  响应方无法通过 IP 匹配配置
  野蛮模式可以通过 ID(如用户名)来匹配

场景 2:需要传递附加信息
  野蛮模式的消息中可以携带额外的载荷
  如 NAT-D(NAT 检测)、证书请求等

场景 3:快速部署
  3 个消息 VS 6 个消息
  在丢包率高的链路上,野蛮模式建立更快

# 野蛮模式配置
ike proposal 1
 authentication-method pre-share
!
ike peer REMOTE_USER
 ike-proposal 1
 exchange-mode aggressive                    # 野蛮模式
 pre-shared-key Huawei@123
 remote-address 0.0.0.0 0.0.0.0             # 接受任何 IP(动态场景)
 remote-id-type name                         # 通过 ID 名称匹配
 remote-id "user@company.com"

四、安全性深度对比

4.1 预共享密钥场景

预共享密钥(PSK)下两种模式的安全性:

主模式: 1. DH 交换在身份保护之前完成 2. 共享密钥计算后身份才传输 3. 攻击者无法获取身份→无法字典攻击 4. 即使 PSK 较弱,也难被破解

野蛮模式: 1. 身份在消息 1 就明文传输 2. 攻击者获取身份后可以: a. 收集身份和密文 b. 猜测 PSK 计算验证 c. 离线字典攻击 3. PSK 必须足够强(推荐 128 位随机字符串)

安全建议: | 认证方式 | 推荐模式 | 原因 | | --- | --- | --- | | 预共享密钥 数字证书 动态 IP 高安全场景 | 主模式 两种均可 野蛮模式 主模式 | 保护身份 证书身份已固有 必须通过 ID 匹配 身份保护 |

4.2 数字证书场景

使用数字证书时,野蛮模式的安全性接近主模式:

原因:
  1. 证书中的身份信息是公开的
  2. 认证不依赖共享密钥的保密性
  3. 即使获取身份也无法伪造认证

所以:
  如果使用数字证书,野蛮模式的安全性是可接受的
  推荐在证书场景下使用野蛮模式(更快、更灵活)

五、配置对比

5.1 主模式配置

# 两端配置需要对称

# 站点 A(固定 IP)
ike proposal 1
 encryption-algorithm aes-256
 dh group14
 authentication-algorithm sha256
 authentication-method pre-share
!
ike peer SITE_B
 ike-proposal 1
 exchange-mode main                           # 主模式(默认)
 pre-shared-key Huawei@123
 remote-address 203.1.1.1                     # 静态对端 IP

# 站点 B(固定 IP)
ike proposal 1                                # 与 A 完全一致
 encryption-algorithm aes-256
 dh group14
 authentication-algorithm sha256
 authentication-method pre-share
!
ike peer SITE_A
 ike-proposal 1
 exchange-mode main
 pre-shared-key Huawei@123
 remote-address 202.1.1.1                     # 对端静态 IP

5.2 野蛮模式配置

# 中心站点(响应方,固定 IP)
ike proposal 1
 authentication-method pre-share
!
ike peer REMOTE_USER
 ike-proposal 1
 exchange-mode aggressive
 pre-shared-key Huawei@123
 remote-address 0.0.0.0 0.0.0.0              # 接受任何 IP
 remote-id-type name
 remote-id "branch_*"                         # 通配符匹配

# 分支站点(发起方,动态 IP)
ike proposal 1
 authentication-method pre-share
!
ike peer CENTER
 ike-proposal 1
 exchange-mode aggressive
 pre-shared-key Huawei@123
 local-id-type name
 local-id "branch_shanghai"                    # 自己的 ID
 remote-address 202.1.1.1                     # 中心站点固定 IP

六、选择建议

6.1 决策树

开始选择 IKE 模式
    │
    ├── 两端 IP 都固定?
    │   ├── 是 → 预共享密钥?
    │   │   ├── 是 → 主模式(推荐)
    │   │   └── 否(证书)→ 主模式或野蛮模式
    │   └── 否 → 野蛮模式
    │
    ├── 发起方 IP 动态?
    │   └── 是 → 野蛮模式(必须通过 ID 匹配)
    │
    ├── 高安全要求(如金融行业)?
    │   └── 是 → 主模式 + 证书认证
    │
    └── 快速部署需求?
        └── 是 → 野蛮模式(3 消息即可建立)

七、总结

知识点 核心要点
主模式 6 个消息,身份加密后传输,保护身份隐私
野蛮模式 3 个消息,身份明文传输,灵活但安全稍差
身份保护 主模式在 DH 密钥计算后才传身份
PSK 场景 主模式更安全(防字典攻击)
证书场景 野蛮模式安全可接受
动态 IP 野蛮模式必须(主模式无法匹配 IP)

八、思考

  1. 主模式 6 个消息和野蛮模式 3 个消息分别是怎么组合的?
  2. 为什么预共享密钥场景下,野蛮模式更容易受到字典攻击?
  3. 如果远程员工使用动态 IP 拨入公司 VPN,应该选择哪种模式?
  4. 使用数字证书时,为什么野蛮模式的安全性是可接受的?
  5. 主模式中身份保护是如何实现的?为什么身份不能在消息 1-4 中传输?

下篇预告:第213篇《分支与总部 IPsec VPN 组网》——企业分支通过 IPsec VPN 接入总部的完整设计和配置案例。