IKEv2 是否支持通过预共享密钥和密码进行发起方身份验证?

IKEv2 是否支持通过预共享密钥和密码进行发起方身份验证?

我想配置一个 IKEv2 VPN 网关,以便多个远程用户访问专用网络。

我有一个测试设置,其中响应者使用自签名证书进行身份验证。发起者使用用户名和密码进行身份验证。

几个问题:

  • 证书过于复杂。我不会设置适当的 PKI,因此必须将自签名证书分发给每个客户端并配置为可信证书,这相当于预共享密钥 (PSK),但生成和管理起来却困难得多。
  • 发起者已通过身份验证仅有的通过用户名和密码,外部攻击者可以轻松尝试猜测弱密码或泄露的密码。

如果没有部署适当的 PKI,我更愿意执行相互的通过 PSK 对发起方和响应方主机进行身份验证。此密钥将安全地分发给所有用户。外部攻击者不会拥有 PSK,因此弱密码或被盗密码不足以访问。用户名和密码身份验证允许根据现有目录系统识别和授权特定用户,而无需为每个用户生成和分发唯一密钥。

IKEv2 能实现这样的功能吗?据我所知,IKEv1 中可以通过 Xauth 实现。但对于 IKEv2,我不太确定:粗略阅读了RFC 5996,第 2.16 节,但似乎情况并非如此。用户名和密码验证将通过某种 EAP 方法进行,并且:

发起者通过在 IKE_AUTH 交换中的第一个消息中省略 AUTH 负载来表示希望使用 EAP。(请注意,AUTH 负载是非 EAP 身份验证所必需的,因此在本文档的其余部分中未将其标记为可选。)

这似乎表明发起者只能使用 EAP(用户名和密码)或 PSK 之一。

虽然问题是关于 IKEv2 协议的,但我打算用 strongswan 来实现响应端,因此任何额外的专业知识都会受到赞赏。

答案1

IKEV2 中的客户端和服务器身份验证互不相关。因此,理论上,您可以使用 PSK 对服务器进行身份验证,使用 EAP 对客户端进行身份验证。但是,RFC 规定如下关于 EAP 身份验证:

除了使用公钥签名和共享密钥进行身份验证之外,IKE 还支持使用 RFC 3748 [EAP] 中定义的方法进行身份验证。通常,这些方法是不对称的(专为用户向服务器进行身份验证而设计),并且它们可能不是相互的。因此,这些协议通常用于向响应者验证发起者并且必须与响应者对发起者的基于公钥签名的身份验证结合使用

因此,将 PSK 服务器身份验证与 EAP 客户端身份验证相结合不符合 RFC。但是,可以使用 strongSwan 进行配置。但请注意,大多数客户端不允许这种组合。

许多 roadwarrior 客户端实际上根本不支持 PSK 身份验证,因为如果多个客户端使用相同的 PSK,在这种情况下会带来潜在的安全风险,因为理论上所有知道 PSK 的客户端都能够冒充服务器。

我有一个测试设置,其中响应者使用自签名证书进行自我身份验证。

为什么不使用让我们加密

发起者仅通过用户名和密码进行身份验证,因此外部攻击者可以轻松尝试猜测弱密码或泄露的密码。

使用 PSK 验证服务器不会改变这一点。您需要在客户端身份验证中添加第二个因素才能解决此问题(即先使用证书或 PSK,然后执行 EAP)。但是,这需要支持RFC 4739,这是许多客户端所缺乏的(尽管 strongSwan 支持它)。

相关内容