![使用 RSA 身份验证来核算 IPSec 连接](https://linux22.com/image/660385/%E4%BD%BF%E7%94%A8%20RSA%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%9D%A5%E6%A0%B8%E7%AE%97%20IPSec%20%E8%BF%9E%E6%8E%A5.png)
Apple iOS 具有“按需 VPN”功能。通过此功能,只要设备尝试连接到某些域或互联网,就会建立 VPN 连接。iOS 仅在基于证书的身份验证的情况下才支持“按需 VPN”。
为了向我办公室 VPN 服务器的 iOS 用户提供“按需 VPN”,我们使用下一个 IPSec 解决方案:
- Ubuntu 14.04——VPN 服务器操作系统。
- strongSwan 5.1.2——IKE 守护进程。
- 对于每个对等方,我都会生成一个单独的私钥并颁发匹配的证书。客户端(iOS IKEv1)使用 RSA 和 Xauth 进行身份验证。
- 如果没有 Xauth(即所谓的 Cisco IPSec),iPhone 和 iPad 就无法使用 IPSec。而“VPN On Demand”无法使用需要输入密码的 VPN 配置文件,但 Xauth 通常需要用户名/密码。为了解决这个问题,我们使用 xauth-noauth - 允许任何用户名和密码的假 Xauth 身份验证器。在这种情况下,我们仅使用客户端证书对其进行身份验证。
这个解决方案对我们来说效果很好。但我们有新的要求 - 设置多个 VPN 服务器和一个用户数据库,并统计 VPN 的使用情况。
对于此任务,使用 RADIUS 是一种常见做法,strongSwan 有插件。但使用 IKEv1/Xauth 的 strongSwan 使用用户名/密码在后端 RADIUS 服务器上对用户进行身份验证。我的解决方案中未使用用户名/密码。
我的问题:
- 如果 Xauth 不使用用户名/密码,如何使用 Radius 计费?
- 是否可以将 RSA 身份验证检查委托给 RADIUS 服务器?
PS 我的大多数 iOS 客户端都使用支持 IKEv2 的 iOS 8。IKEv2 中有 EAP-TLS。我可以使用 EAP-TLS 将 RSA 身份验证检查委托给 RADIUS 服务器吗?或者我在 EAP-TLS 方面走错了方向?
PSPS 我的第二件事是关于 strongSwan 的 VICI 接口。我应该收到有关每个新 IPSec 连接的通知,但看起来 VICI 的工作方式不同。
答案1
RADIUS 计费eap 半径插件不需要 XAuth 身份验证。它实际上适用于任何类型的身份验证,无论是否通过 RADIUS,只要客户端请求虚拟 IP 地址(对于 IKEv2,甚至可以禁用此要求)。但是,对于某些 IKEv1 客户端,在重新认证的情况下会出现一些问题(请参阅问题#937及相关)。
EAP-TLS 可以将 IKEv2 客户端的证书认证委托给 AAA 服务器,但这与 RADIUS 计费无关。
答案2
感谢 ecdsa,我找到了我的问题的几个解决方案。
- 使用 RADIUS 计费,无需 RADIUS 身份验证。
如果启用了 eap-radius 插件选项会计 = 是,即使 ipsec.conf 文件中未使用 eap-radius,strongSwan 也会发送 RADIUS 消息来开始计费。在我的例子中,此 RADIUS 消息如下所示:
Acct-Status-Type = Start
Acct-Session-Id = 1434531934-1
NAS-Port-Type = Virtual
Service-Type = Framed-User
NAS-Port = 1
NAS-Port-Id = ios-ikev1-fakexauth
NAS-IP-Address = <nas_ip>
Called-Station-Id = <nas_ip>[4500]
Calling-Station-Id = <client_ip>[4500]
User-Name = "C=CH, O=strongSwan, [email protected]"
Framed-IP-Address = 172.20.1.1
NAS-Identifier = strongSwan
我可以从消息中获取证书 CN,这足以让我进行适当的核算。如果我想拒绝某些 CN 的访问,我只需拒绝来自 stronSwan 的 RADIUS 消息,ipsec 连接就会中断。
- 进行会计和访问检查上行下行脚本,而不是使用 RADIUS。
我还想使用 strongSwan curl 插件来访问证书撤销列表。但我发现缺少有关此插件的文档。我是否遗漏了什么?