根据最近的安全公告,我正在重新配置我们的 VPN 服务器,但遇到了麻烦。
我们使用 Windows 2008 R2 服务器提供 VPN 服务,在同一服务器上运行 RRAS 和 NPS,并将其配置为对所有隧道类型(PPTP、L2TP、IKEv2、SSTP)使用 PEAP-EAP-MSCHAPV2 身份验证,之前允许使用普通的 MSCHAPv2。
但 Apple 产品、MacOS 和 iOS 在进行此更改后无法连接到 VPN。我尝试安装 PEAP 交易中使用的根证书,但没有变化。
有人知道 MacOS/iOS 是否支持 PPTP/L2TP 中的 PEAP-EAP-MSCHAPv2 身份验证吗?如果支持,有什么方法可以让它工作吗?(我知道 WPA/WPA2 企业版支持 PEAP-EAP-MSCHAPv2)
问候。
答案1
我没有找到官方确认 Mac OS X 不支持 PEAP-EAP-MSCHAPv2 的证据,但我也无法让它工作(这里是 Windows SBS 2003 R2 和 L2TP-over-ESP,带有 Mac OS X 10.8 客户端)。我甚至没有在 IAS 日志文件中看到登录尝试。(安全事件日志充满了各种各样的东西,所以我没有仔细阅读它。)我确实通过检查 Mac 上的 /var/log/racoon.log 确认了至少 ISAKMP 和 IPsec ESP 正在工作,在那里我看到了类似于以下内容的条目(这里 198.51.100.200 是 Mac,192.0.2.100 是 SBS):
DEBUG: agreed on pre-shared key auth.
INFO: NAT detected: ME PEER
INFO: ISAKMP-SA established 198.51.100.200[4500]-192.0.2.100[4500] spi:0123456789abcdef:0123456789abcdef
INFO: NAT detected -> UDP encapsulation (ENC_MODE 2->61444).
INFO: IPsec-SA established: ESP/Transport 192.0.2.100[4500]->198.51.100.200[4500] spi=01234567(0x012345)
INFO: IPsec-SA established: ESP/Transport 198.51.100.200[4500]->192.0.2.100[4500] spi=89abcdef(0x6789ab)
我还查看了 /var/log/ppp.log,其中包含以下内容:
IPSec connection started
IPSec phase 1 client started
IPSec phase 1 server replied
IPSec phase 2 started
IPSec phase 2 established
IPSec connection established
L2TP sent SCCRQ
L2TP received SCCRP
L2TP sent SCCCN
L2TP sent ICRQ
L2TP received ICRP
L2TP sent ICCN
L2TP connection established.
这将重现 racoon.log 中显示的成功 IPsec 连接,并添加成功的 L2TP 连接(这是有道理的 - L2TP 本身是未经身份验证的)。接下来,Mac 尝试通过 L2TP 建立 PPP 连接,正如预期的那样,这时我开始看到一些我无法理解的错误:
lcp_reqci: rcvd unknown option 13
lcp_reqci: rcvd unknown option 23
lcp_reqci: returning CONFREJ.
其次是:
sent [LCP ConfRej id=0x0...
rcvd [LCP ConfAck id=0x1...
rcvd [LCP ConfReq id=0x1 <mru 1400> <auth eap>...
lcp_reqci: returning CONFNAK.
sent [LCP ConfNak id=0x1 <auth chap MS-v2>]
rcvd [LCP ConfReq id=0x2 <mru 1400> <auth eap>...
lcp_reqci: returning CONFNAK.
sent [LCP ConfNak id=0x2 <auth chap MS-v2>]
rcvd [LCP ConfReq id=0x3 <mru 1400> <auth eap>...
lcp_reqci: returning CONFNAK.
sent [LCP ConfNak id=0x3 <auth chap MS-v2>]
rcvd [LCP ConfReq id=0x4 <mru 1400> <auth eap>...
lcp_reqci: returning CONFNAK.
sent [LCP ConfNak id=0x4 <auth chap MS-v2>]
rcvd [LCP ConfReq id=0x5 <mru 1400> <auth eap>...
lcp_reqci: returning CONFNAK.
sent [LCP ConfNak id=0x5 <auth chap MS-v2>]
rcvd [LCP ConfReq id=0x6 <mru 1400> <auth eap>...
lcp_reqci: returning CONFREJ.
sent [LCP ConfRej id=0x6 <auth eap>]
rcvd [LCP TermReq id=0x7...
sent [LCP TermAck id=0x7]
Fatal signal 6
请注意上面的“auth eap”和“auth chap MS-v2”。
我将尝试撤销对远程访问策略所做的一些更改:
- 重新启用所有加密类型(无/基本/强/最强,仅最强)
- 删除所有 EAP 类型并仅启用 MSCHAPv2(受保护的 EAP [PEAP]/EAP-MSCHAPv2)
鉴于整个交换都受到 IPsec 的保护,我怀疑我的实际风险。如果有人入侵了客户端,使他们能够访问用于 IPsec 的 PSK 或证书,我不确定仅使用 PEAP 来验证 PPP 连接是否重要(至少对于我的威胁模型而言)。
更新:我在 RRAS 服务器属性和控制 VPN 访问的 IAS 策略中重新启用了 MSCHAPv2,并启用了所有加密类型。进行这些更改后,Mac 能够再次连接到 L2TP-over-IPsec VPN,使用 MSCHAPv2 通过 PPP 进行身份验证。我在 IAS 策略中打开和关闭 PEAP,只是为了确认 PEAP 不起作用,事实上,启用 PEAP(但禁用 MSCHAPv2)后,我现在收到身份验证失败消息,Mac OS X 记录以下内容:
MS-CHAP authentication failed: E=649 No dialin permission
sent [LCP TermReq id=0x2 "Failed to authenticate ourselves to peer"]
我认为之前更加模糊的行为是由于我在 RRAS 本身以及 IAS 策略中禁用了 MSCHAPv2,而我当前的测试配置在 RRAS 中启用了 MSCHAPv2,但在 IAS 策略中禁用了 MSCHAPv2。