IKEv2 EAP-TTLS 双因素认证
IKEv2 EAP-TTLS 双因素认证
Windows FortiClient 可以在 IKEv2 拨号 VPN 中使用 EAP-TTLS/PAP 对 LDAP 用户执行双因素认证。该组合至少需要 FortiOS 7.4.9 或 7.6.1,以及 FortiClient Windows 7.4.4。
EMS 7.4.4 及之后版本可以在 IPsec VPN 的“Basic Settings → Phase 1 → EAP Authentication Method”中选择 EAP-TTLS。EMS 7.4.3 和 FortiClient Windows 7.4.3 只能通过 XML 配置 <eap_method>2</eap_method>,而且 7.4.3 不支持 EAP-TTLS 与 MFA 组合。
重要
VPN-only 免费版 FortiClient Windows 没有 7.4.4 版本。FortiClient Windows 7.4.3 虽然可通过 XML 配置使用 EAP-TTLS,但不支持 EAP-TTLS 与 MFA 组合。
相关信息
基础 EAP 认证路径请参考 VPN → IPSec VPN → 通用IPSec配置 → 一阶段配置 → EAP → EAP 认证章节。
EAP 方法选择
Active Directory 用户通过 FortiClient 连接 IKEv2 拨号 VPN 时,可以选择以下方式:
EAP-MSCHAPv2:使用已加入 AD 域的 FortiAuthenticator 作为 RADIUS 服务器。该方式支持 FortiToken 输入提示和 Push 通知。
相关信息
FortiAuthenticator 配置请参考 VPN → IPSec VPN → 通用IPSec配置 → 一阶段配置 → EAP → FortiAuthenticator MSCHAPv2/PEAP章节。
EAP-TTLS/PAP:FortiGate 直接连接 LDAP 服务器,或外部 RADIUS 服务器未加入 AD 域时使用。没有外部 RADIUS 服务器时,EAP-TTLS 终止在 FortiGate。使用 FortiAuthenticator RADIUS 代理时,EAP-TTLS 穿过 FortiGate 并终止在 FortiAuthenticator。
FortiAuthenticator 终止 EAP-TTLS 时,签发 EAP 服务端证书的 CA 必须安装到 Windows 客户端的系统证书存储中,仅安装到当前用户证书存储不生效。缺少 CA 时,FortiAuthenticator 日志会显示:
FortiAuthenticator radiusd[2154]: (8) eap_ttls: (TLS) The client is informing us that it does not recognize the CA used to issue the server certificate. Please update the client so that it knows about the CA.相关信息
使用 FortiAuthenticator 默认证书时,可以从“Certificate Management → Trusted CAs”导出对应 CA,再部署到客户端系统证书存储。FortiGate 终止 EAP-TTLS 时的证书排查方法请参考 VPN → IPSec VPN → 通用IPSec配置 → 一阶段配置 → EAP → EAP-TTLS 证书错误章节。
FortiToken 分配位置
FortiToken 分配在 FortiGate
为 FortiGate 上类型为 Remote LDAP 的独立用户分配 FortiToken 后,可以使用 FortiToken Mobile OTP 或 Push。EAP-TTLS MFA 需要 FortiOS 7.4.9 或 7.6.1 及之后的对应分支版本,并使用 FortiClient Windows 7.4.4 或之后版本。
FortiToken 分配在 FortiAuthenticator
FortiAuthenticator 8.0 起支持在 EAP-TTLS 中直接发送 FortiToken Challenge。用户先提交 LDAP 密码,FortiAuthenticator 验证密码后返回 Token Challenge,FortiClient 再显示 Token 输入提示并单独提交 Token 码。
相关信息
该版本变化针对 FortiAuthenticator 托管的 FortiToken Challenge 流程。不要据此推断 FortiToken Cloud、SMS、Email 或 Push 使用相同的 EAP-TTLS 交互方式,应分别检查对应 Token 类型和认证策略的支持范围。
重要
FortiAuthenticator 8.0 之前不支持 Challenge-based EAP-TTLS 双因素认证。旧版本必须使用 Password + OTP 拼接方式,例如密码为 Example-Pass、Token 码为 345678 时输入 Example-Pass345678,中间不要加入空格或分隔符。
提示
使用 FortiAuthenticator 8.0 之前的版本时,如果需要独立 Token 输入提示或 Push 通知,应将 FortiClient 改为 EAP-MSCHAPv2,并在 FortiAuthenticator 上为 RADIUS 策略启用 Windows AD Domain Authentication。
FortiToken 分配在 FortiIdentity Cloud
FortiOS 7.6.6 及之前版本中,通过 LDAP 组同步到 FortiIdentity Cloud、再作为防火墙用户组成员参与 IKEv2 EAP-TTLS 认证时可能失败,问题 ID 为 1213238。FortiOS 7.6.7 Release Notes 已将该问题列为已解决。
受影响版本无法升级时,可以不直接依赖 LDAP 组同步成员,而是在 FortiGate 上为每个用户创建匹配远程 LDAP 服务器的独立用户,并启用 FortiToken Cloud 双因素认证:
config user local
edit <username>
set type ldap
set two-factor fortitoken-cloud
set ldap-server <ldap-server>
next
end第三方 MFA
第三方 MFA 是否可用取决于远程认证服务器的实现。FortiGate 可以对远程 RADIUS 服务器执行 MFA,但 FortiClient 端不能依赖交互式 Token 提示,并且 FortiGate 的远程认证与 RADIUS 超时时间必须覆盖用户完成 MFA 的耗时。
config system global
set remoteauthtimeout 60
end
config user radius
edit <server-name>
set timeout 60
next
end重要
remoteauthtimeout 是全局参数,会影响 FortiGate 等待 RADIUS、LDAP 和 TACACS+ 等远程认证服务器响应的时间。调整前应评估对其他认证业务的影响。
FortiOS 7.4.11/7.6.6 及之前版本中,eap_proxy 等待 fnbamd 的时间可能固定为 5 秒。远程 RADIUS 可以同时增加全局 remoteauthtimeout 和 RADIUS Server 的 timeout。远程 LDAP 没有等效的旧版规避参数。
从 FortiOS 7.4.12/7.6.7 开始,eap_proxy 与 fnbamd 之间的等待时间增加为全局 remoteauthtimeout 的 3 倍。使用远程 LDAP 或 RADIUS 第三方 MFA 时,可以根据认证耗时设置该参数,例如允许 30 秒:
config system global
set remoteauthtimeout 30
end相关信息
多 VDOM 环境需要先进入全局配置:
config global
config system global
set remoteauthtimeout 30
end
end相关信息
上述 5 秒超时问题不影响直接配置在 FortiGate 本地用户上的本地 FortiToken。FortiOS 7.6.7 还修复了 Duo Proxy LDAP MFA 错误,问题 ID 为 1218530。
超时设置
用户输入 OTP 或接受 Push 时,除了远程认证超时,还可能超过 IKE 协商默认的 30 秒。可以按实际认证耗时延长隧道的协商超时:
config vpn ipsec phase1-interface
edit <tunnel>
set negotiate-timeout 60
next
end修改后应分别验证 OTP、Push、拒绝和超时场景,确认后端认证结果与 FortiClient 最终连接状态一致。