第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) |
八、思考
- 主模式 6 个消息和野蛮模式 3 个消息分别是怎么组合的?
- 为什么预共享密钥场景下,野蛮模式更容易受到字典攻击?
- 如果远程员工使用动态 IP 拨入公司 VPN,应该选择哪种模式?
- 使用数字证书时,为什么野蛮模式的安全性是可接受的?
- 主模式中身份保护是如何实现的?为什么身份不能在消息 1-4 中传输?
下篇预告:第213篇《分支与总部 IPsec VPN 组网》——企业分支通过 IPsec VPN 接入总部的完整设计和配置案例。