ADC

在第一个因素中为 WebAuth 配置适用于 NetScaler Gateway 的 nFactor,在第二个因素中为密码更改配置 LDAP

为 NetScaler Gateway 配置 nFactor 时,在第一因素中使用 WebAuth,在第二个因素中更改密码的 LDAP 配置涉及以下高级步骤。

  1. 将身份验证虚拟服务器配置为零 IP。不强制要求将证书绑定到身份验证虚拟服务器。

  2. 使用身份验证虚拟服务器名称配置身份验证配置文件。

  3. 配置 VPN 虚拟服务器。

  4. 在此 VPN 虚拟服务器上设置身份验证配置文件。

  5. 配置 WebAuth 操作和策略。

  6. 配置 LDAP 操作和策略。

  7. 为 LDAP 因子配置登录架构操作。

  8. 使用 LDAP 因子的登录架构操作为 LDAP 因子配置策略标签。

  9. 将 LDAP 策略绑定到 LDAP 策略标签。

  10. 将 WebAuth 策略绑定到身份验证虚拟服务器,将 LDAP 策略标签作为下一个因素。

工作原理

  • 用户在浏览器中输入 NetScaler Gateway FQDN 并被重定向到 /logon/logonpoint/tmindex.html 页面。

  • 此页显示绑定到身份验证虚拟服务器的登录架构。如果没有绑定到身份验证虚拟服务器的登录架构(如在我们的配置中),则会显示默认架构。

  • 用户输入第一个因素的证书,在本例中为 WebAuth。

  • NetScaler Gateway 检查 WebAuth 操作并联系 WebAuth 服务器。它将参数 FullReqExpr 中提到的 HTTP 请求发送到 WebAuth 服务器。如果 WebAuth 服务器的响应满足 WebAuth 操作的 successRule 参数中提到的表达式,则此策略通过。

  • 现在 NetScaler Gateway 转向了第二个因素。它检查绑定为下一个因素的策略标签 LDAP_Factor 的配置。由于此策略标签中提到了登录架构,因此 NetScaler Gateway 将该 XML 架构发送到客户端。

  • 客户端接收架构并输入 LDAP 凭据进行第二因素身份验证。

  • NetScaler Gateway 尝试访问 LDAP 服务器并验证客户端凭据是否正确。如果正确,则身份验证阶段完成,用户登录到配置的 VPN 模式。

下图显示了一个 nFactor 身份验证序列,其中第一个因素是 WebAuth,第二个因素是 LDAP。

Nfactor-auth-sequence

使用 CLI 进行配置

  1. 配置身份验证虚拟服务器。

    add authentication vserver auth1 ssl
    <!--NeedCopy-->
    

    在 GUI 中,导航到“安全”>“AAA-应用程序流量”>“虚拟服务器”,然后单击“添加”。

    添加身份验证虚拟服务器

  2. 配置身份验证配置文件。

    add authnProfile auth_profile –authnVsname auth1
    <!--NeedCopy-->
    

    在 GUI 中,导航到“安全”>“AAA-应用程序流量”>“身份验证配置文件”,然后单击“添加”。

    创建身份验证配置文件

  3. 配置 VPN 虚拟服务器。

    add vpn vserver vpn1 ssl 10.1.1.1 443
    
    add ssl certkey ckp –cert test.cer –key test.key
    
    bind ssl vserver vpn1 –certKey ckp
    <!--NeedCopy-->
    

    导航到 NetScaler Gateway > 虚拟服务器 ,然后单击添加

    添加 vpn 虚拟服务器

    创建 VPN 虚拟服务器后,在同一服务器上绑定证书。

    在 VPN 虚拟服务器上设置身份验证配置文件

    set vpn vserver vpn1 –authnProfile auth_profile
    <!--NeedCopy-->
    

    设置身份验证配置文件

  4. 配置 WebAuth 操作和策略。

    导航到 AppExpert > 表达式 > 高级表达式

    配置 Web 身份验证策略

    add policy expression post_data ""myusername=" +
    
    http.REQ.BODY(3000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("login=").BEFORE_STR("&") + "&mypassword=" +
    
    http.REQ.BODY(3000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("passwd=")"
    <!--NeedCopy-->
    

    创建表达式

    add policy expression length_post_data "("myusername=" +
    
    http.REQ.BODY(1000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("login=").BEFORE_STR("&") + "&mypassword=" +
    
    \http.REQ.BODY(1000).SET_TEXT_MODE(IGNORECASE).AFTER_STR("passwd=")).length"
    <!--NeedCopy-->
    

    使用 CLI 配置 Nfactor:

    add authentication webAuthAction webAuth_action -serverIP 10.102.39.132 -serverPort 443 -fullReqExpr q{"POST /customAuth.aspx HTTP/" + http.req.version.major + "." + http.req.version.minor + "\r\nAccept: \*/\*\r\nHost: 10.102.39.132\r\nUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)\r\nContent-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: " + length_post_data + "\r\nConnection: Keep-Alive\r\n\r\n" + post_data} -scheme https -successRule "http.RES.STATUS.EQ(200)"
    
    add authentication policy webAuth_policy –rule TRUE –action webAuth_action
    <!--NeedCopy-->
    

    之前配置的 WebAuth 操作使用两个策略表达式。一个策略表达式(post_data)创建了 POST 正文。另一个(length_post_data)计算 POST 正文的长度,该正文用于填充 POST 请求中的内容长度标头。

    创建 POST 正文的策略表达式解析登录请求并提取用户输入的用户名和密码。然后,它使用从登录请求中提取的用户名密码,以 WebAuth 服务器期望的格式创建 POST 正文。

    最后,WebAuth 操作创建了以下请求,该请求被发送到 WebAuth 服务器。

    POST /customAuth.aspx HTTP/1.1
    Accept: \*/\*
    Host: 10.102.39.132
    Accept-Language: en-US
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
    Content-Type: application/x-www-form-urlencoded
    Content-Length:43
    Connection: Keep-Alive
    
    myusername=test_user&mypassword=test_passwd
    <!--NeedCopy-->
    
  5. 为密码更改配置 LDAP 操作和策略。

    add authentication ldapAction ldap_action -serverIP 10.102.39.133 -serverPort 636 -secType SSL -ldapBase "dc=domain,dc=com" -ldapBindDn administrator -ldapBindDnPassword password -ldapLoginName samAccountName -passwdChange ENABLED
    add authentication policy ldap_policy –rule TRUE –action ldap_action
    <!--NeedCopy-->
    

    LDAP 操作配置为 —PasswdChange 已启用,它允许用户在 VPN 登录后发起更改密码。

  6. 为 LDAP 因子配置 LoginSchema 操作。

    add authentication loginSchema LDAP_schema -authenticationSchema /nsconfig/loginschema/LoginSchema/SingleAuth.xml
    <!--NeedCopy-->
    

    LDAP 因素要求最终用户提供用户名和密码。显示给最终用户的登录表单必须描述用户名和密码字段。

    NetScaler 有一些默认 LoginSchema XML,它们位于 NetScaler 外壳上的 /nsconfig/ LoginSchema/LoginSchema 位置。您可以使用先前位置中存在的默认 LoginSchema XML 之一。

  7. 使用 LDAP 因子的 LoginSchema 操作为 LDAP 因子配置策略标签:

    add authentication policylabel LDAP_factor -loginSchema LDAP_schema
    <!--NeedCopy-->
    
  8. 将 LDAP 策略绑定到 LDAP 策略标签。

    bind authentication policylabel LDAP_factor –policyName ldap_policy –priority 10
    <!--NeedCopy-->
    
  9. 将 WebAuth 策略绑定到身份验证虚拟服务器,将 LDAP 策略标签作为下一个因素。

    bind authentication vserver auth1 –policy webAuth_policy –nextFactor LDAP_factor –priority 10
    <!--NeedCopy-->
    

    上述 nFactor 配置也可以使用 NetScaler 中的 nFactor 可视化工具完成,该可视化工具从 13.0 固件版本开始可用。

使用 nFactor 可视化工具进行配置

在 nfactor 可视化工具中表示配置

这里的第一个因素是 Webauth,其次是启用密码更改选项的 LDAP。

  1. 导航到 Security(安全)> AAA-Application Traffic(AAA - 应用程序流量)> nFactor Visualizer(nFactor 可视化工具)> nFactor Flow(nFactor 流程),然后单击 Add(添加)。

  2. 单击 + 号添加 nFactor 流程。

    添加 nFactor 流

  3. 添加一个因素。您为此因子输入的名称是 nFactor 流程的名称。

    nFactor 流程的名称

  4. 单击“添加策略”添加 Webauth 策略和 Webauth 操作/服务器。

    单击添加策略

    选择一项策略

    创建身份验证策略

  5. 单击绿色的 + 符号添加下一个因子,即启用密码更改选项的 LDAP 身份验证。

    添加下一个因素,即 LDAP

  6. 单击“添加架构”添加用于 LDAP 身份验证的登录架构。

    为 LDAP 身份验证添加架构

  7. 单击“添加策略”添加 LDAP 身份验证策略和 LDAP 操作/服务器。

    为 LDAP 身份验证添加策略

    要创建 LDAP 操作/服务器,请参阅文章 https://support.citrix.com/article/CTX219939

  8. 配置好这两个因素后,必须将流程绑定到身份验证、授权和审计虚拟服务器。

    单击“绑定到身份验证服务器”

    选择因子并绑定到身份验证服务器

调试-日志和计数器

使用 WebAuth 和 LDAP 成功登录后会看到日志。要查看以下大部分日志,请将审核日志级别设置为 ALL,以便它也显示调试日志。

set audit syslogparams –loglevel ALL
<!--NeedCopy-->

注意: 为简洁起见,时间戳已从日志中删除。

示例日志

使用 WebAuth 和 LDAP 成功登录后,以下计数器会增加。

  • pcp_hits authn (webAuth_Policy)
  • aaa_tot_webauth_primary_auth
  • aaa_tot_webauth_prim_auth_success
  • aaa_tot_webauth_prim_succ_check_thru
  • pcp_hits authn (webAuth_Policy)
  • pcp_hits authn (ldap_policy)
  • aaa_auth_succ
在第一个因素中为 WebAuth 配置适用于 NetScaler Gateway 的 nFactor,在第二个因素中为密码更改配置 LDAP