4. VPN隧道密钥泄露:IPsec/IKE漏洞、预共享密钥风险

VPN隧道密钥泄露,听起来挺吓人对吧?说白了就是攻击者拿到了你用来加密隧道的那把“钥匙”。我这些年搞安全审计,遇到最多的就是IPsec/IKE的配置问题。预共享密钥(PSK)虽然简单,但风险可不小。

这一章我们就掰开揉碎了聊:IPsec/IKE到底哪里容易出问题?预共享密钥怎么就成了烫手山芋?怎么防、怎么修?

4.1 IPsec/IKE协议栈的薄弱环节

IPsec不是单一协议,是一组协议的集合。IKE(Internet Key Exchange)负责协商密钥,是整个隧道的“大脑”。一旦IKE出问题,IPsec就是纸糊的。

4.1.1 IKE版本差异与漏洞

对比项 IKEv1 IKEv2
主模式/野蛮模式 支持,野蛮模式身份泄露 统一交换,无野蛮模式
认证方式 PSK、证书、共享密钥 PSK、证书、EAP
已知严重漏洞 CVE-2005-3665(ISAKMP DoS)
CVE-2016-0800(DROWN变种)
CVE-2020-25282(IKEd资源耗尽)
默认加密套件 3DES/SHA1(弱) AES-GCM/SHA256(强)
我个人倾向 能不用就别用 首选
⚠️ 警告:我在项目中遇到过客户还跑着IKEv1+野蛮模式+PSK,结果被中间人直接把身份ID抓了出来。没错,明文传输的ID配合弱PSK,几乎等于白送。

IKEv1的野蛮模式会把发起方ID和PSK hash一起发出去。你想想看,攻击者只要抓个包,跑个字典,PSK就出来了。IKEv2已经修复了这个问题,但很多老旧设备默认还是v1。

4.1.2 预共享密钥的风险根源

预共享密钥(PSK)就是个“共享秘密”。听起来简单,但问题恰恰出在“共享”二字上。你一个人记着密码没事,一旦几十台设备都存同一个PSK,那泄露面就太大了。

  • PSK硬编码:很多网管为了省事,直接把PSK写在配置脚本里,代码库都能搜到。
  • PSK强度不足:我见过用“password123”做PSK的,跑个字典不到10秒。
  • PSK轮换困难:一旦PSK泄露,你得重新配置所有隧道设备,线上业务还得停。
  • 无认证绑定:PSK不绑定特定设备,拿到PSK就可以仿冒任意一端。

核心结论:PSK适合小规模测试环境或临时隧道。生产环境请换成数字证书或EAP‑TLS。

4.2 常见攻击手法与案例

4.2.1 中间人攻击(MITM)窃取PSK

攻击者部署一个伪装的VPN网关,诱导客户端连过来。IKEv1野蛮模式下,客户端直接把自己的身份和PSK hash发过去。攻击者拿到hash后,离线跑字典就能还原PSK。

我记得有一次审计,客户把PSK设成了公司域名“corp2023”。攻击者连字典都不用,猜几次就进去了。

4.2.2 离线字典攻击

只要捕获到IKEv1的野蛮模式交换包,或者IKEv2如果配置了弱PRF(伪随机函数),攻击者可以把PSK相关的计算拿到本地慢慢跑。

# 工具示例:ike-scan + psk-crack
ike-scan -M -A --id=any 192.168.1.100
# 捕获PSK hash后
psk-crack -b psk_hash_file /usr/share/wordlists/rockyou.txt

你看,就这两步,如果PSK不够强,密码就破了。我实测过,8位纯数字不到5分钟。

4.2.3 Rekey风暴与Doorslam攻击

IPsec隧道会定期Rekey(重新协商密钥)。如果攻击者伪造大量Rekey请求,VPN设备CPU瞬间飙满。更可怕的是,Rekey过程中如果密钥生成器有漏洞,新密钥可能被预测。

我在2019年处理过一起案例:客户用某品牌低端防火墙做IPsec,Rekey间隔设了30秒。攻击者发了一波伪造的删除通知(Delete Payload),设备直接清空了所有SA。隧道断了,业务瘫痪半小时。

4.3 应对方案与加固措施

4.3.1 迁移到IKEv2并禁用野蛮模式

这是最根本的。IKEv2去掉了野蛮模式,所有身份信息都在加密的保护下交换。配合强密码套件,攻击者几乎不可能离线破解。

💡 提示:我建议在迁移前先测试兼容性。部分老设备不支持IKEv2,可以用双栈过渡——IKEv2先上线,再逐步下线IKEv1。

4.3.2 预共享密钥加固

如果实在没法换证书(比如临时点对点链路),那PSK也得用到位。

  1. 长度至少32字符:混合大小写、数字、符号,避免字典猜解。
  2. 避免硬编码:使用外部密钥管理服务(KMS)动态下发。
  3. 定期轮换:每90天换一次,最好结合自动化脚本。
  4. 一隧一密钥:每条隧道独立的PSK,别共用一个。
# 生成强PSK示例(Linux)
openssl rand -base64 48 | tr -d '/+=' | cut -c1-32
# 输出如:f8K2jM7xPqR5tV9wYz3A6cB0nL4

4.3.3 升级加密套件与配置文件

很多VPN设备默认配了3DES、SHA1、DH Group 1/2,这些都已经不安全了。你自己看看配置就知道了。

参数 不推荐 建议 原因
加密算法 3DES, AES-CBC AES-GCM-256 GCM自带认证,CBC需额外HMAC
完整性算法 HMAC-MD5, HMAC-SHA1 HMAC-SHA256 SHA1已可碰撞(SHAttered)
DH组 modp768(modp1024) modp2048, modp3072, ECP256 防Logjam攻击
伪随机函数 PRF-HMAC-SHA1 PRF-HMAC-SHA256 增强密钥派生强度
SA生命周期 8小时以上 1小时或更短 减少泄露窗口
⚠️ 注意:改加密套件前一定先在实验室测一遍。我曾经在生产环境直接改了大DH Group,结果隧道协商失败,全部断联。后来每次改之前都先在测试机上跑一遍。

4.4 监控与应急响应流程

光加固不够,还得能及时发现泄露。我一般会在VPN网关上部署以下监控项:

  • 非正常Rekey频率:单位时间内Rekey次数超过阈值(比如10次/分钟),可能是攻击。
  • 陌生ID连接尝试:IKEv1野蛮模式会暴露ID,日志里多留意不认识的ID。
  • CPU/内存异常升高:IKE进程占满,大概率被DoS了。

应急三步走(我用过,有效):

  1. 立刻断开疑似被攻陷的隧道(抓包留证)。
  2. 更换所有相关PSK或吊销泄露证书。
  3. 检查日志,确认攻击源IP,拉黑隔离。

还有一种情况——内部人员故意泄露PSK。我见过一次,运维离职前把PSK写在了公司Wiki上。幸好监控及时发现异常连接,我们半小时内换了所有密钥。

4.5 知识体系一览

VPN隧道密钥泄露知识体系 密钥泄露 根因一:IKEv1野蛮模式 根因二:弱PSK配置 根因三:弱加密套件 MITM窃取hash 离线字典破解 Rekey/DoS攻击 迁移IKEv2 PSK加固+轮换 升级加密套件 监控+Rekey异常感知+应急响应 一图看全:原因→攻击→防御

这张图把根因、攻击手法和应对措施串在了一起。你对着图检查自己的VPN配置,应该能发现不少问题。我个人经验是,先解决最痛的点——关掉野蛮模式、换掉弱PSK——安全水位立马提升一大截。