部署指南:了解如何将 Citrix Gateway 配置为使用 nFactor 对 RADIUS 服务器进行 MFA 身份验证
概述
如何将 Citrix Gateway 配置为使用 nFactor 对 RADIUS 服务器进行身份验证以进行多重身份验证 (MFA)。
本文介绍如何配置 Citrix ADC 网关以将 nFactor 身份验证用于基于 LDAP 和 RADIUS 的多因素身份验证以及常规故障排除技术。
在本文中,我们假设您的 Citrix ADC 具有 Citrix Gateway 实现以及 RADIUS 和 LDAP 服务器。
本文还建议通过本地负载平衡虚拟服务器连接到 RADIUS 和 LDAP 服务器,并假定负载均衡器已创建。您可以在此处了解有关创建负载平衡虚拟服务器的更多信息,并在此处 了解有关在 负载均衡器上配置 RADIUS 持久性的更多信息。
RADIUS 通信概述
RADIUS 通信流从来自客户端(在本例中为 Citrix ADC)的访问请求数据包开始。RADIUS 服务器验证客户端并验证在访问请求中收到的凭据。验证后,RADIUS 服务器会以 “访问接受”、“拒绝” 或 “质询” 进行响应,要求用户提供更多详细信息。
RADIUS 服务器有一个有效客户端列表以及每个客户端的共享密钥。RADIUS 服务器通常会忽略来自无效客户端的请求,但某些实现会返回身份验证失败。共享密钥对凭据的密码部分进行加密。当共享密钥错误时,服务器总是拒绝密码,因为密码没有解密到正确的值。
默认情况下,Citrix ADC 会从活动 HA 节点的 NSIP 发送 RADIUS 身份验证请求,并以单个 RADIUS 服务器为目标。
Citrix 建议 ADC 通过本地负载平衡虚拟服务器发送身份验证请求,而不是将 HA 对中的两个 ADC 的 NSIP 定义为 RADIUS 服务器上的客户端。负载平衡虚拟服务器还为您的设置增加了恢复能力。
当 Citrix ADC 通过本地负载平衡虚拟服务器发送 RADIUS 请求时,这些请求会通过 SNIP 离开 ADC。截图是浮动 IP 地址,仅在当前主高可用性节点上可用。
使用负载平衡 (LB) 虚拟服务器时,主 HA 节点和辅助 HA 节点的 NSIP 会向本地 VIP 发出请求。LB VIP 使用高可用性对的 SNIP 发送到 RADIUS 服务器。
RADIUS 故障排除工具
虽然大多数 RADIUS 实施是在不使用的情况下执行的,但了解最常见的故障排除工具可能会有所帮助。
Citrix ADC 上的 “/tmp/aaad.debug” 身份验证调试管道
您可以在 Citrix ADC 上查看身份验证事件,方法是进入带有 “shell” 的 BSH shell,然后使用 “cat /tmp/aaad.debug” 查看 aaad.debug 管道。
您可以在这里找到更多关于 “aaad.debug” 的信息: https://support.citrix.com/article/CTX114999
NTRadPing
ntradping 是第三方 RADIUS 测试工具,可用于生成 RADIUS 身份验证请求并观察响应。您可以在这里下载 nTradping:
使用 ntradping,您可以将 RADIUS 身份验证请求直接从客户端发送到 RADIUS 服务器,并确保其完全正常运行。在 RADIUS 服务器上,您必须定义客户端的 IP 地址和共享密钥。您还需要防火墙规则才能让客户端与 RADIUS 服务器通信。
您还可以使用 ntradping 将身份验证请求发送到 ADC 上的 LB 虚拟服务器,后者将这些请求中继到 RADIUS 服务器。由于这些请求来自 ADC,因此在 ntradping 中您需要与 ADC 相同的共享密钥。您还需要防火墙规则才能让客户端与 ADC 的 RADIUS LB 虚拟服务器通信。
通过分别测试每个组件,测试将隔离出故障发生的位置。假设您可以使用 ADC 的 RADIUS 手动发送成功的请求。在这种情况下,您知道问题出在之前的某些方面,比如您的 ADC 上的 RADIUS 服务器定义,您可以集中精力。
NTradping由两个文件组成,您可以将它们从其压缩的zip提取到同一个目录中。启动时,nTradping 会提示您输入:
- RADIUS 服务器和端口
- RADIUS 的秘密
- 用户名和密码
- 身份验证请求类型
根据您正在执行的测试,您将使用 RADIUS 服务器 IP 地址或 ADC 的 LB 虚拟服务器的 IP 地址作为目标。最常见的是在端口 1812 上。
如果您直接发送查询,请为客户端设置 RADIUS 密钥。如果您要通过 ADC 的 LB 虚拟服务器发送查询以模仿来自 Gateway 的身份验证请求,请使用与配置 ADC 相同的共享密钥。 用户名和密码字段包含您希望 ADC 代表您发送到 RADIUS 服务器的凭据。通常,“密码” 字段包含用户的 MFA 令牌值。
当您单击 “发送” 时,nTradping会从您的计算机向指定的目标发送身份验证请求,并显示响应(通常是访问接受或访问拒绝)。
WireShark
如果您在身份验证过程中在 Citrix ADC 上进行数据包跟踪,则可以在 WireShark 中检查 RADIUS 请求和响应。
WireShark 是世界上最重要且广泛使用的网络协议分析器。WireShark 是免费的,无需此处即可使用。
您可以在这里找到 WireShark 的 RADIUS 过滤器。
您可以在此处找到在 Citrix ADC 上进行数据包跟踪的步骤。
在 WireShark 中,您会看到一个访问请求数据包,后面是访问接受、访问拒绝或访问质询响应。 缺少响应通常表示存在通信问题,例如缺少防火墙规则或 RADIUS 服务器没有客户端定义。
图形界面说明
假设 RADIUS 服务器上的配置已完成,请按照以下步骤进行 Citrix Gateway 的 MFA 身份验证:
启用身份验证、授权和审核 (AAA) 功能
添加身份验证服务器
-
填充 RADIUS 服务器的详细信息
Citrix 建议您不要将单个 RADIUS 服务器作为目标,而是以负载平衡虚拟服务器为目标。因此,请在此页面中使用您的 RADIUS LB 的 VIP 作为服务器 IP。 密钥必须与 ADC 的 SNIP 的 RADIUS 服务器上的值相匹配。 -
选择 安全 > AAA-应用程序流量、策略、身份验证、基本策略、LDAP。然后,选择 “服务器” 选项卡并单击 “添加”。
-
填充 LDAP 目标的详细信息
与 RADIUS 类似,Citrix 建议您使用本地负载平衡 (LB) 虚拟服务器作为目标。因此,请使用您的 LDAP LB 虚拟服务器的 VIP 作为此页面上的服务器 IP。
添加高级身份验证策略
创建 AAA 虚拟服务器
-
导航到 Configuration(配置)> Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Virtual Servers(虚拟服务器)。
- 输入以下信息,然后单击 OK(确定)。
- 单击 “策略绑定” 屏幕底部的 “绑定”。
应用向用户显示用户名、密码和通行码字段的登录架构
注意: ADC 13.0 固件中添加了 “lschema_dual_factor_builtin” 策略。如果您使用的是早期版本,则需要创建策略。您可以在此处找到解释如何创建策略的说明。
将网关虚拟服务器配置为使用新的 AAA 服务器
执行测试
现在,您已准备好在 Citrix Gateway 虚拟服务器上使用多重身份验证。
如果您遇到任何身份验证质询,请参阅本文档的故障排除部分。
CLI 指令
如果您更喜欢使用 CLI 配置 ADC,则以下配置脚本可以完成所有必要的步骤。
# 1. Enable AAA
en ns feature aaa
# 2. Creating LDAP Server
add authentication ldapAction LDAP_for_Gateway -serverIP LDAP_LB_IP -serverPort 636 -ldapBase "DC=citrix,DC=lab" -ldapBindDn readonly@citrix.lab -ldapBindDnPassword PASSWORD -ldapLoginName sAMAccountName -groupAttrName memberOf
# 3. Creating LDAP Policy
add authentication Policy LDAP_Pol -rule true -action LDAP_for_Gateway
# 4. Creating RADIUS Server
add authentication radiusAction RADIUS_Server -serverIP 192.168.1.100 -serverPort 1812 -radKey sharedsecret
# 5. Create RADIUS Policy
add authentication Policy RADIUS_Pol -rule true -action RADIUS_Server
# 6. Create a PolicyLabel triggering the RADIUS Policy
add authentication policylabel RADIUS_PolicyLabel -loginSchema LSCHEMA_INT
bind authentication policylabel RADIUS_PolicyLabel -policyName RADIUS_Pol -priority 100
# 7. Create the AAA virtual server
add authentication vserver nFactorAuthvServer SSL 0.0.0.0
# 8. Bind an SSL certificate to the AAA virtual server
bind ssl vserver nFactorAuthvServer -certkeyName "Example Cert"
# 9. Bind the LDAP policy and RADIUS PolicyLabel to the AAA virtual server
bind authentication vserver nFactorAuthvServer -policy LDAP_Pol -priority 100 -nextFactor RADIUS_PolicyLabel -gotoPriorityExpression NEXT
# 10. Bind the builtin Login Schema for dual factor authentication to the AAA virtual server
bind authentication vserver nFactorAuthvServer -policy lschema_dual_factor_builtin -priority 100 -gotoPriorityExpression END
# 11. Create an Authentication Profile attached to the AAA virtual server
add authentication authnProfile MFA_Authentication_Profile -authnVsName nFactorAuthvServer
# 12. Configure your existing Gateway virtual server to use the Authentication Profile
set vpn vserver "Steven Demo Gateway" -authnprofile "MFA_Authentication_Profile"
<!--NeedCopy-->