对身份验证的本机 OTP 支持
NetScaler 支持一次性密码 (OTP),无需使用第三方服务器。一次性密码是用于进行身份验证以保护服务器安全的高度安全选项,因为生成的数字或通行码是随机的。以前,专业公司(例如具有生成随机数的特定设备的 RSA)向 OTP 提供。
除了降低资本和运营费用外,此功能还通过将整个配置保留在 NetScaler 设备上,增强了管理员的控制能力。
注意事项:
由于不再需要第三方服务器,NetScaler 管理员必须配置接口来管理和验证用户设备。
本机 OTP 解决方案不支持 SAML 注销功能。
用户必须向 NetScaler 虚拟服务器注册才能使用 OTP 解决方案。每台唯一设备只需注册一次,并且可以仅限于某些环境。配置和验证注册用户类似于配置额外的身份验证策略。
原生 OTP 支持的优势
- 除 Active Directory 外,无需在身份验证服务器上安装额外的基础结构即可降低运营成本。
- 请仅将配置整合到 NetScaler 设备,从而为管理员提供强大的控制能力。
- 消除了客户端依赖额外的身份验证服务器来生成客户端期望的编号。
本机 OTP 工作流程
本机 OTP 解决方案是一个双重过程,工作流程分为以下内容:
- 设备注册
- 最终用户登录
重要:
如果您正在使用第三方解决方案或管理除 NetScaler 设备之外的其他设备,则可以跳过注册过程。您添加的最后一个字符串必须采用 NetScaler 指定的格式。
下图描述了注册新设备以接收 OTP 的设备注册流程。
注意:
设备注册可以使用任意数量的因素来完成。使用单个因素(如上图所示)作为示例来解释设备注册过程。有关更多详细信息,请参阅设备注册的推荐本机 OTP 配置。
下图描述了通过注册的设备验证 OTP 的情况。
下图描述了设备注册和管理流程。
下图描述了本机 OTP 功能的最终用户流程。
必备条件
要使用本机 OTP 功能,请确保满足以下必备条件。
- NetScaler 功能发布版本为 12.0 Build 51.24 及更高版本。
- NetScaler Gateway 上安装了 Advanced 或 Premium 版许可证。
- NetScaler 配置了管理 IP,可使用浏览器和命令行访问管理控制台。
- NetScaler 配置了身份验证、授权和审核虚拟服务器以对用户进行身份验证。有关详细信息,请参阅身份验证虚拟服务器
- NetScaler 设备配置了 Unified Gateway,并将身份验证、授权和审核配置文件分配给网关虚拟服务器。
- 本机 OTP 解决方案仅限于 nFactor 身份验证流程。配置解决方案需要高级策略。有关更多详细信息,请参阅 配置 nFactor 身份验证。
对于 Active Directory,还要确保以下内容:
- 最小属性长度为 256 个字符。
- 属性类型必须是“DirectoryString”,例如 UserParameters。这些属性可以保存字符串值。
- 如果设备名称使用非英语字符,则属性字符串类型必须为 Unicode。
- NetScaler LDAP 管理员必须对所选 AD 属性具有写入权限。
- NetScaler 设备和客户端计算机必须同步到通用的网络时间服务器。
使用 GUI 配置本机 OTP
本机 OTP 注册不仅仅是单因素身份验证。以下各部分内容将帮助您配置单因素和第二因素身份验证。
为第一个因素创建登录架构
- 导航到“安全”>“AAA 应用程序流量”>“登录架构”。
- 转到 Profiles(配置文件),然后单击 Add(添加)。
- 在 Create Authentication Login Schema(创建身份验证登录架构)页面上,在 Name(名称)字段下输入 lschema_single_auth_manage_otp,然后单击 noschema 旁边的 Edit(编辑)。
- 单击 LoginSchema 文件夹。
- 向下滚动选择 SingleAuthManageOTP.xml,然后单击“选择”。
- 单击创建。
- 单击 Policies(策略),然后单击 Add(添加)。
-
在 Create Authentication Login Schema Policy(创建身份验证登录架构策略)屏幕上,输入以下值。
Name(名称):lpol_single_auth_manage_otp_by_url
Profile(配置文件):从列表中选择 lschema_single_auth_manage_otp。
规则:
HTTP.REQ.COOKIE.VALUE("NSC_TASS").EQ("manageotp")
配置身份验证、授权和审核虚拟服务器
-
导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Authentication Virtual Servers(身份验证虚拟服务器)。单击以编辑现有虚拟服务器。有关详细信息,请参阅身份验证虚拟服务器
- 单击右窗格中 Advanced Settings(高级设置)下的 Login Schemas(登录架构)旁边的 + 图标。
- 选择 No Login Schema(无登录架构)。
- 单击箭头并选择 lpol_single_authe_otp_by_url 策略,单击 选择,然后单击 绑定。
- 向上滚动并选择 Advanced Authentication Policy(高级身份验证策略)下的 1 Authentication Policy(1 身份验证策略)。
- 右键单击 nFactor Policy(nFactor 策略),然后选择 Edit Binding(编辑绑定)。右键单击已配置的 nFactor 策略或参考 nFactor 创建一个策略,然后选择编辑绑定。
- 单击 选择下一个因素 下的箭头以选择现有配置,或单击 添加 以创建因素。
-
在 Create Authentication PolicyLabel(创建身份验证策略标签)屏幕上,输入以下内容,然后单击 Continue(继续):
Name(名称):manage_otp_flow_label
Login Schema(登录架构):Lschema_Int
-
在 Authentication PolicyLabel(身份验证策略标签)屏幕上,单击 Add(添加)以创建策略。
Create a policy for a normal LDAP server.
-
在 Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:
名称:auth_pol_ldap_native_otp
- 使用操作类型列表选择“操作类型”为 LDAP。
-
在 Action(操作)字段中,单击 Add(添加)以创建操作。
Create the first LDAP action with authentication enabled to be used for single factor.
-
在“创建身份验证 LDAP 服务器”页面中,选择“服务器 IP”单选按钮,清除“身份验证”旁边的复选框,输入以下值,然后选择“测试连接”。下面是一个示例配置。
名称:ldap_native_otp
IP 地址:192.8.xx.xx
Base DN(基本 DN):DC=training, DC=lab
管理员:
Administrator@training.lab
密码:
xxxxx
Create a policy for OTP .
-
在 Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:
Name(名称):auth_pol_ldap_otp_action
- 使用操作类型列表选择“操作类型”为 LDAP。
-
在 Action(操作)字段中,单击 Add(添加)以创建操作。
Create the second LDAP action to set OTP authenticator with OTP secret configuration and authentication unchecked.
-
在“创建身份验证 LDAP 服务器”页面中,选择“服务器 IP”单选按钮,清除“身份验证”旁边的复选框,输入以下值,然后选择“测试连接”。下面是一个示例配置。
Name(名称):ldap_otp_action
IP 地址:192.8.xx.xx
Base DN(基本 DN):DC=training, DC=lab
管理员:
Administrator@training.lab
密码:
xxxxx
- 向下滚动到 Other Settings(其他设置)部分。使用下拉菜单选择以下选项。 Server Logon Name Attribute(服务器登录名称属性)为 New(新建),类型为 userprincipalname。
- 使用下拉菜单选择 SSO Name Attribute(SSO 名称属性)为 New(新建),类型为 userprincipalname。
- 在 OTP Secret(OTP 密钥)字段中输入“UserParameters”,然后单击 More(更多)。
-
输入以下属性。
Attribute 1(属性 1)= mail Attribute 2(属性 2)= objectGUID Attribute 3(属性 3)= immutableID
- 单击确定。
- 在 Create Authentication Policy(创建身份验证策略)页面上,将表达式设置为 true,然后单击 Create(创建)。
- 在 Create Authentication Policylabel(创建身份验证策略标签)页面上,单击 Bind(绑定),然后单击 Done(完成)。
- 在 Policy Binding(策略绑定)页面上,单击 Bind(绑定)。
-
在 Authentication policy(身份验证策略)页面上,单击 Close (关闭),然后单击 Done(完成)。
Create OTP for OTP verification.
-
在 Create Authentication Policy(创建身份验证策略)屏幕上,输入以下内容:
名称:auth_pol_ldap_otp_验证
- 使用操作类型列表选择“操作类型”为 LDAP。
-
在 Action(操作)字段中,单击 Add(添加)以创建操作。
Create the third LDAP action to verify OTP.
-
在“创建身份验证 LDAP 服务器”页面中,选择“服务器 IP”单选按钮,清除“身份验证”旁边的复选框,输入以下值,然后选择“测试连接”。下面是一个示例配置。
名称:ldap_verify_otp
IP 地址:192.168.xx.xx
Base DN(基本 DN):DC=training, DC=lab
Administrator(管理员):Administrator@training.lab
密码:
xxxxx
- 向下滚动到 Other Settings(其他设置)部分。使用下拉菜单选择以下选项。 Server Logon Name Attribute(服务器登录名称属性)为 New(新建),类型为 userprincipalname。
- 使用下拉菜单选择 SSO Name Attribute(SSO 名称属性)为 New(新建),类型为 userprincipalname。
- 在 OTP Secret(OTP 密钥)字段中输入“UserParameters”,然后单击 More(更多)。
-
输入以下属性。
Attribute 1(属性 1)= mail Attribute 2(属性 2)= objectGUID Attribute 3(属性 3)= immutableID
- 单击确定。
- 在 Create Authentication Policy(创建身份验证策略)页面上,将表达式设置为 true,然后单击 Create(创建)。
- 在 Create Authentication Policylabel(创建身份验证策略标签)页面上,单击 Bind(绑定),然后单击 Done(完成)。
- 在 Policy Binding(策略绑定)页面上,单击 Bind(绑定)。
- 在 Authentication policy(身份验证策略)页面上,单击 Close (关闭),然后单击 Done(完成)。
您可能还没有适用于普通 LDAP 服务器的高级身份验证策略。 将操作类型更改为 LDAP。 选择普通的 LDAP 服务器,这是启用了身份验证的服务器。 输入 true 作为表达式。这使用高级策略而不是经典语法。 单击“创建”。
注意:
身份验证虚拟服务器必须绑定到 RFWebUI 门户主题。将服务器证书绑定到服务器。服务器 IP“1.2.3.5”必须具有相应的 FQDN,即 otpauth.server.com,以供以后使用。
为第二因素 OTP 创建登录架构
- 导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Virtual Servers(虚拟服务器)。选择要编辑的虚拟服务器。
- 向下滚动并选择 1 Login Schema(1 登录架构)。
- 单击 Add Binding(添加绑定)。
- 在 Policy Binding(策略绑定)部分下,单击 Add(添加)以添加策略。
- 在“创建身份验证登录架构策略”页面上,输入策略的名称,然后单击“添加”。
- 在“创建身份验证登录架构”页面上,输入登录架构的名称,然后单击 noschema 旁边的铅笔图标。
- 单击 LoginSchema 文件夹,选择 DualAuthManageOTP.xml,然后单击 Select(选择)。
- 单击 More(更多)并向下滚动。
- 在 Password Credential Index(密码凭据索引)字段中,输入 1。这会导致 nFactor 将用户的密码保存到身份验证、授权和审核 Attribute #1 中,稍后可以在流量策略中使用这些属性来单点登录 StoreFront。如果您不这样做,则 NetScaler Gateway 会尝试使用密码向 StoreFront 进行身份验证,但不起作用。
- 单击创建。
- 在 Rule(规则)部分中,输入 True。单击创建。
- 单击绑定。
- 请注意身份验证的两个因素。单击 Close(关闭),然后单击 Done(完成)。
单点登录的流量策略
- 导航到 NetScaler Gateway > Policies(策略)> Traffic(流量)
- 在 Traffic Profiles(流量配置文件)选项卡中,单击 Add(添加)。
- 输入流量配置文件的名称。
-
向下滚动,在“SSO Password Expression”(SSO 密码表达式)框中,输入以下内容,然后单击 Create(创建)。这是我们使用为第二个因素 OTP 指定的登录架构密码属性的位置。
AAA.USER.ATTRIBUTE(1)
-
在流量策略选项卡上,单击添加。
-
在 Name(名称)字段中,输入流量策略的名称。
-
在 Request Profile(请求配置文件)字段中,选择创建的流量配置文件。
-
在“Expression”(表达式)框中,输入 True。如果您的 NetScaler Gateway 虚拟服务器允许完整的 VPN,请将表达式更改为以下表达式。
http.req.method.eq(post)||http.req.method.eq(get) && false
-
单击创建。
-
将流量策略绑定到 VPN 虚拟服务器。
- 导航到安全 > AAA - 应用程序流量 > 身份验证配置文件。
- 通过选择 NetScaler Gateway 虚拟服务器来配置身份验证配置文件,然后单击“确定”。
- 导航到 NetScaler Gateway > NetScaler Gateway 虚拟服务器,然后选择 NetScaler Gateway 虚拟服务器。出现 VPN 虚拟服务器页面。
- 在“策略”部分中,单击 + 图标。
- 将策略类型选择为“流量”,然后单击“继续”。
- 选择流量策略并单击“绑定”。
- 单击 Done(完成)。
为管理 OTP 配置内容交换策略
如果您使用的是 Unified Gateway,则需要以下配置。
-
导航到 Traffic Management(流量管理)> Content Switching(内容交换)> Policies(策略)。选择内容交换策略,单击鼠标右键,然后选择 Edit(编辑)。
-
编辑表达式以评估以下 OR 语句,然后单击 OK(确定):
is_vpn_url || HTTP.REQ.URL.CONTAINS("manageotp"
使用 CLI 配置本机 OTP
要配置 OTP 设备管理页面,您必须具有以下信息:
- 分配给身份验证虚拟服务器的 IP
- 与已分配的 IP 对应的 FQDN
- 身份验证虚拟服务器的服务器证书
注意:
原生 OTP 仅是基于 Web 的解决方案。
配置 OTP 设备注册和管理页面
创建身份验证虚拟服务器
```
add authentication vserver authvs SSL 1.2.3.5 443
bind authentication vserver authvs -portaltheme RFWebUI
bind ssl vserver authvs -certkeyname otpauthcert
<!--NeedCopy--> ```
注意:
身份验证虚拟服务器必须绑定到 RFWebUI 门户主题。将服务器证书绑定到服务器。服务器 IP“1.2.3.5”必须具有相应的 FQDN,即 otpauth.server.com,以供以后使用。
创建 LDAP 登录操作
add authentication ldapAction <LDAP ACTION NAME> -serverIP <SERVER IP> - serverPort <SERVER PORT> -ldapBase <BASE> -ldapBindDn <AD USER> -ldapBindDnPassword <PASSWO> -ldapLoginName <USER FORMAT>
示例:
add authentication ldapAction ldap_logon_action -serverIP 1.2.3.4 -serverPort 636 -ldapBase "OU=Users,DC=server,DC=com" -ldapBindDn administrator@ctxnsdev.com -ldapBindDnPassword PASSWORD -ldapLoginName userprincipalname
为 LDAP 登录添加身份验证策略
add authentication Policy auth_pol_ldap_logon -rule true -action ldap_logon_action
通过 LoginSchema 显示 UI
登录时向用户显示用户名字段和密码字段
add authentication loginSchema lschema_single_auth_manage_otp -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuthManageOTP.xml"
显示设备注册和管理页面
我们建议使用两种方式显示设备注册和管理屏幕:URL 或主机名。
注意:
目前,设备注册和设备管理只能使用浏览器执行。
-
使用 URL
当 URL 包含“/manageotp”时
add authentication loginSchemaPolicy lpol_single_auth_manage_otp_by_url -rule "http.req.cookie.value("NSC_TASS").contains("manageotp")" -action lschema_single_auth_manage_otp
bind authentication vserver authvs -policy lpol_single_auth_manage_otp_by_url -priority 10 -gotoPriorityExpression END
-
使用主机名
当主机名为“alt.server.com”时
add authentication loginSchemaPolicy lpol_single_auth_manage_otp_by_host -rule "http.req.header("host").eq("alt.server.com")" -action lschema_single_auth_manage_otp
bind authentication vserver authvs -policy lpol_single_auth_manage_otp_by_host -priority 20 -gotoPriorityExpression END
使用 CLI 配置用户登录页面
必须具有以下信息才能配置“User Logon”(用户登录)页面:
- 负载平衡虚拟服务器的 IP
- 负载平衡虚拟服务器的对应 FQDN
-
负载平衡虚拟服务器的服务器证书
bind ssl virtual server lbvs_https -certkeyname lbvs_server_cert <!--NeedCopy-->
负载平衡中的后端服务表示如下:
```
add service iis_backendsso_server_com 1.2.3.210 HTTP 80
bind lb vserver lbvs_https iis_backendsso_server_com
<!--NeedCopy--> ```
创建 OTP 通行码验证操作
add authentication ldapAction <LDAP ACTION NAME> -serverIP <SERVER IP> -serverPort <SERVER PORT> -ldapBase <BASE> -ldapBindDn <AD USER> -ldapBindDnPassword <PASSWORD> -ldapLoginName <USER FORMAT> -authentication DISABLED -OTPSecret <LDAP ATTRIBUTE>`
示例:
add authentication ldapAction ldap_otp_action -serverIP 1.2.3.4 -serverPort 636 -ldapBase "OU=Users,DC=server,DC=com" -ldapBindDn administrator@ctxnsdev.com -ldapBindDnPassword PASSWORD -ldapLoginName userprincipalname -authentication DISABLED -OTPSecret userParameters
重要:
LDAP 登录和 OTP 操作之间的区别在于需要禁用身份验证并引入新参数
OTPSecret
。请勿使用 AD 属性值。
为 OTP 通行码验证添加身份验证策略
add authentication Policy auth_pol_otp_validation -rule true -action ldap_otp_action
通过 LoginSchema 显示双重身份验证
添加面向双重身份验证的 UI。
add authentication loginSchema lscheme_dual_factor -authenticationSchema "/nsconfig/loginschema/LoginSchema/DualAuth.xml"
add authentication loginSchemaPolicy lpol_dual_factor -rule true -action lscheme_dual_factor
通过策略标签创建通行码验证因素
为下一个因素创建管理 OTP 流程策略标签(第一个因素为 LDAP 登录)
add authentication loginSchema lschema_noschema -authenticationSchema noschema
add authentication policylabel manage_otp_flow_label -loginSchema lschema_noschema
将 OTP 策略绑定到策略标签
bind authentication policylabel manage_otp_flow_label -policyName auth_pol_otp_validation -priority 10 -gotoPriorityExpression NEXT
绑定 UI 流
绑定 LDAP 登录,然后将 OTP 验证与身份验证虚拟服务器绑定在一起。
bind authentication vserver authvs -policy auth_pol_ldap_logon -priority 10 -nextFactor manage_otp_flow_label -gotoPriorityExpression NEXT
bind authentication vserver authvs -policy lpol_dual_factor -priority 30 -gotoPriorityExpression END
为单点登录创建流量策略并将其绑定到 VPN 虚拟服务器
add vpn trafficAction vpn_html_pol http -userExpression aaa.user.attribute(1) -passwdExpression aaa.user.attribute(2)
add vpn trafficpolicy tf1 'http.req.method.eq(post)||http.req.method.eq(get) && false' vpn_html_pol
bind vpn vserver vpn1 -policy tf1 -priority 10
<!--NeedCopy-->
在 NetScaler 中注册您的设备
- 在浏览器上,导航到带有 /manageotp 后缀的 NetScaler FQDN(第一个面向公众的 IP)。例如,https://otpauth.server.com/manageotp 使用用户凭据登录。
-
单击 + 图标添加设备。
- 输入设备名称,然后按 Go。屏幕上会显示一个条形码。
- 单击 Begin Setup(开始安装),然后单击 Scan Barcode(扫描条形码)。
-
将设备摄像头悬停在 QR 代码上。您可以选择输入代码。
注意:
显示的 QR 代码有效期为 3 分钟。
-
扫描成功后,您将看到一个 6 位数的时间敏感代码,可用于登录。
- 要进行测试,请单击 QR 屏幕上的 Done(完成),然后单击右侧的绿色复选标记。
- 从下拉菜单中选择您的设备,然后输入 Google Authenticator 中的验证码(必须为蓝色,不是红色),然后单击 Go。
- 请务必使用页面右上角的下拉菜单进行注销。
使用 OTP 登录 NetScaler
- 导航到您的第一个面向公众的 URL,然后从 Google Authenticator 中输入您的 OTP 进行登录。
-
在 NetScaler 启动页面上进行身份验证。