Citrix ADC

在第一因素中使用 WebAuth 为 Citrix Gateway 配置 nFactor,在第二因素中使用密码更改为 LDAP 配置 nFactor

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

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

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

  3. 配置 VPN 虚拟服务器。

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

  5. 配置 WebAuth 操作和策略。

  6. 配置 LDAP 操作和策略。

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

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

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

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

工作原理

  • 用户在浏览器中输入 Citrix Gateway FQDN,并重定向到/登录/登录点/tmindex.html 页面。

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

  • 用户输入第一个因素的凭据,在这种情况下是 WebAuth。

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

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

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

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

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

Nfactor-auth-sequence

使用 CLI 进行配置

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

    add authentication vserver auth1 ssl
    

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

    添加身份验证虚拟服务器

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

    add authnProfile auth_profile –authnVsname auth1
    

    在 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
    

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

    添加 VPN 虚拟服务器

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

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

    set vpn vserver vpn1 –authnProfile auth_profile
    

    设置身份验证配置文件

  4. 配置 WebAuth 操作和策略。

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

    配置 webauth 策略

    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=")"
    

    创建表达式

    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"
    

    通过使用 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
    

    之前配置的 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
    
  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
    

    LDAP 操作配置为 — PasswdChange 已启用,这样可以在 VPN 登录后启用用户启动的更改密码。

  6. 为 LDAP 因素配置登录架构操作。

    add authentication loginSchema LDAP_schema -authenticationSchema /nsconfig/loginschema/LoginSchema/SingleAuth.xml
    

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

    Citrix ADC 有一些默认的登录架构 XML,它们存在于 NetScaler shell 上的 /nsconfig/ loginschema/LoginSchema 位置。您可以使用之前位置中存在的默认登录架构 XML 之一。

  7. 使用 LDAP 因素的登录架构操作为 LDAP 因素配置策略标签:

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

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

    bind authentication vserver auth1 –policy webAuth_policy –nextFactor LDAP_factor –priority 10
    

    前面的 nFactor 配置也可以使用 Citrix ADC 中的 nFirtor 可视化工具完成,该可从 13.0 固件版本开始使用。

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

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

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

  1. 导航到安全性 > AAA 应用程序流量 > nFactor可视化工具 > nFactor 流,然后单击添加

  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 成功登录后可以看到日志。要查看以下大部分日志,请将审核日志级别设置为全部,以便它也显示调试日志。

set audit syslogparams –loglevel ALL

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

示例日志

使用 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 为 Citrix Gateway 配置 nFactor,在第二因素中使用密码更改为 LDAP 配置 nFactor