![强制 Windows IPSec/L2TP VPN 在 IPSec 主模式中使用 AES](https://linux22.com/image/1553810/%E5%BC%BA%E5%88%B6%20Windows%20IPSec%2FL2TP%20VPN%20%E5%9C%A8%20IPSec%20%E4%B8%BB%E6%A8%A1%E5%BC%8F%E4%B8%AD%E4%BD%BF%E7%94%A8%20AES.png)
Windows 中基于 RAS 的 IPSec VPN 客户端似乎不尊重 Windows 防火墙(托管 IPSec 驱动程序)中的 IPSec 默认值,但坚持使用 3DES 加密和 SHA1 完整性进行密钥交换(又名 IPSec 主模式)。这两种算法现在都是遗留算法。
因此,无论数据传输采用何种加密(快速模式),RAS 最高支持 AES-256-CBC,整个链路都只与 3DES/SHA1 一样弱。
另一方面,Windows 防火墙中的 IPSec 驱动程序可以处理 SHA-384、AES-GCM 和 ECDH P-384,那么有没有办法配置 VPN 客户端来使用这些驱动程序,或者只是尊重 Windows 防火墙中设置的默认设置?
答案1
IPSec/IKE 也有类似的问题。看来 RasMan 服务完全不尊重通过 Windows 防火墙配置的 IPSec 策略。我能想到的最好的办法是通过注册表修改实现 AES-SHA1-DH2048。我将其存储为 .reg 文件,里面有注释,所以应该很清楚。
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\IKEv2]
"CustomParams"=dword:00000001
"CustomProposalsCount"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\IKEv2\Proposals]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\IKEv2\Proposals\0]
; for "Quick Mode", all keys optional
; DES, 3DES, AES_128, AES_256
"esp_encr"="AES_128"
; MD5, SHA1
"esp_auth"="SHA1"
; MD5, SHA1
;"AH"="SHA1"
; NONE, 1, 2, 2048, ECP_256, ECP_384, MM
;"PFS"="MM"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters]
"AllowL2TPWeakCrypto"=dword:00000000
"AllowPPTPWeakCrypto"=dword:00000000
; for "Main Mode"
; 0 - disable, 1 - enable, 2 - force /// WARNING! "force" disables stronger DH groups!
"NegotiateDH2048_AES256"=dword:00000001