PoC 指南:使用 WAF、Bot 和高级身份验证策略保护网关虚拟服务器

概述

许多 Citrix ADC 设备托管 VPN 和 Citrix Gateway 部署,这些部署还为其他 Web 应用程序提供安全保护。本 PoC 指南旨在使用 Citrix ADC 设备上已有的工具帮助保护 VPN 和网关虚拟服务器。本指南涵盖使用 Bot 安全保护门户登录页面以及使用 WAF 功能保护凭证表单提交。此外,高级身份验证策略为用户登录添加了上下文,并启用了多重身份验证。

此配置的流程图如下:

配置流

配置选项

本指南不提供保护的专属列表,也不是配置保护的唯一方法。例如,在网关虚拟服务器上使用响应程序策略同时部署 IP 信誉和速率限制是很常见的。此配置是受支持的部署方法。它具有不同的结果,即在呈现网关登录页面之前删除或重置连接。

此外,WAF 配置文件没有启用所有保护来防止复杂的配置、自定义调整和潜在问题。可以对 WAF 配置文件进行进一步配置,请参阅参考部分中的链接获取指导。

注意:

对于额外因素,CAPTCHA并不是最安全的选择,它只是为了简单解释而使用。其他 MFA 选项(如 TOTP 或 PUSH)是更好的选择-请参阅参考部分以获取有助于部署这些选项的链接。

必备条件

本指南假定具备 Citrix WAF 部署、机器人安全部署和高级身份验证策略 (nFactor) 的实用知识。它假设网关或身份验证虚拟服务器已安装和配置。以下是配置的要求:

  • 高级身份验证策略要求版本 12.1 内部版本 57.18 或更高版本
  • Web 应用程序防火墙保护需要版本 12.1 内部版本 57.18 或更高版本
  • 机器人安全保护要求版本 13.0 版本构建 71.40 或更高版本
  • 本指南中的大多数功能都需要 高级许可证
  • 侦听端口 80 上的现有服务器或服务
  • 具有现有高级身份验证配置(高级身份验证或 nFactor 流)的现有网关或身份验证虚拟服务器
  • 启用以下功能: Citrix Web App Firewall、Citrix 机器人管理和信誉

机器人保护

机器人签名

安全 > Citrix 机器人管理 > 签名中,选择默认机器人签名,然后单击 克隆 按钮。应用描述性名称,然后单击创建。

机器人资料签名

创建机器人管理配置文件和策略

安全 > Citrix Bot 管理 > 配置文件中,选择添加以创建新的机器人管理配置文件。为配置文件指定一个描述性名称,然后选择之前创建的特征码集。

机器人资料

选择要编辑高级设置的配置文件。

从右列添加 IP 信誉 ,然后选中复选框以启用它。

机器人资料 IP 声誉

接下来,在类别下选择 “添加”,选择 “类型” 的 IP ,选中 “启用” 复选框,然后将操作设置为 “删除”。最后,选中 “日志” 复选框,将日志消息设置为描述性的内容。

机器人资料 IP 声誉 2

机器人资料 IP 声誉 3

从右列中选择 设备指纹 ,确保 选中 “启用” 复选框,然后单击更新。

机器人配置文件设备指纹

机器人配置文件的最后一个设置是启用速率限制,从右列中选择 速率限 制,然后选中启用的复选框。单击 “ 配置资源” 下的 “添加”,然后为以下 URL 添加三个 URL 类型速率限制绑定:

  • /logon/LogonPoint/index.html
  • /logon/LogonPoint/tmindex.html
  • /vpn/index.html

按如下方式配置速率限制:

  • 已启用
  • 5 的比率
  • 1000 周期
  • 掉落的动作
  • 日志设置为 已启用
  • 带有描述性消息标题的日志消息。

机器人资料速率限制

机器人配置文件现在配置如下:

机器人资料决赛

转到 安全 > Citrix 机器人管理 > 机器人策略,然后选择添加,创建机器人管理策 略。选择之前创建的 Bot 配置文件,其表达式如下:


HTTP.REQ.URL.CONTAINS("/vpn")||HTTP.REQ.URL.CONTAINS("/logon")
<!--NeedCopy-->

最后,机器人策略受选择 “策略管理器” 的约束。选择 “默认全局” 的绑定点,选择 “单击以选择” 以选择策略。突出显示之前创建的策略,然后选择 “选择”。选择 “绑定” 然后选择 “完成”。

机器人策略绑定

WAF 保护

无法将 WAF 策略直接绑定到网关或身份验证虚拟服务器。此外,使用以网关或身份验证虚拟服务器为目标的表达式全局绑定 WAF 策略将无法按预期运行。策略处理顺序导致此故障-WAF 策略在网关和身份验证策略之后处理。有关交通流量的说明,请参阅下图。

交通流量

WAF 保护策略使用 HTTP 标注来保护登录页面,并在捕获 WAF 异常时使身份验证流失效。此配置需要一个模式集 (Patset),其中包括登录 URL、虚拟服务和负载平衡虚拟服务器、HTTP 标注以及 WAF 策略和配置。

图案集

导航到 AppExpert > 模式集 ,然后选择 “添加”。为新的模式集命名,然后选择 “插入” 并添加以下模式:

  • /cgi/login(索引 1)
  • /nf/auth/doAuthentication.do(索引 2)

图案集

或者,也可以从 CLI 创建模式集:


add policy patset GW_VPN_Patset
bind policy patset GW_VPN_Patset "/cgi/login" -index 1
bind policy patset GW_VPN_Patset "/nf/auth/doAuthentication.do" -index 2
<!--NeedCopy-->

虚拟虚拟服务器和服务

HTTP 标注使用虚拟服务器。此虚拟服务器不需要公开可用,因此可以是不可寻址的。虚拟服务器确实需要启动,因此后端服务器需要在端口 80 上启动并响应。本指南中创建了新的服务和虚拟服务器,但可以使用预先存在的虚拟服务器。

转到 流量管理 > 负载平衡 > 服务 ,然后选择 “添加”。为服务指定一个描述性名称,将协议设置为 HTTP,将端口设置为 80。输入服务器的 IP 地址,然后选择 确定。或者,使用现有服务器创建服务。使用所有默认设置,包括绑定到服务的监视器。

负载平衡服务

接下来,转到 流量管理 > 负载平衡 > 虚拟服务器,然后选择 “添加” 来创建负载平衡虚拟服务器 。为服务器指定一个描述性名称,将协议设置为 HTTP,然后将 IP 地址类型设置为 非可寻址。通过选择 “无负载平衡虚拟服务器服务绑定”,然后选择 “单击以选择” 并选择该服务,将先前创建的服务绑定到此虚拟服务器。现在有 1 个服务绑定到虚拟服务器,状态为 “UPE”。

负载平衡虚拟服务器

HTTP 标注

导航到 AppExpert > HTTP 标注 ,然后选择 “添加”。为 HTTP 标注指定一个描述性名称,选择 “虚拟服务器” 以接收标注请求,然后选择虚拟虚拟服务器。在发送到服务器的请求中,选择类型为基于表达式,将方案设置为 “HTTP”,然后将完整表达式设置为以下内容:


HTTP.REQ.FULL_HEADER.BEFORE_STR("\r\n\r\n")+"\r\nGW_VPN-WAF_Callout:abc\r\n\r\n"+HTTP.REQ.BODY(2048)
<!--NeedCopy-->

注意:

此处标头的名称是 “gw_vpn-waf_callout”-应用程序防火墙过滤表达式稍后会使用它。如果此处更改了名称,请同时更改 WAF 标头表达式。

在 “服务器响应” 部分中,将返回类型设置为 BOOL ,然后将表达式设置为 “true”。

HTTP 标注

或者,也可以从 CLI 创建 HTTP 标注:


add policy httpCallout GW_VPN_WAF_Callout -vServer dummy-vserver-here -returnType BOOL -fullReqExpr HTTP.REQ.FULL_HEADER.BEFORE_STR("\r\n\r\n")+"\r\nGW_VPN-WAF_Callout:abc\r\n\r\n"+HTTP.REQ.BODY(2048) -scheme http -resultExpr true
<!--NeedCopy-->

身份验证策略

修改现有 LDAP 身份验证策略以使用 HTTP 标注。打开现有身份验证策略,请转到 安全 > AAA 应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略,选择现有策略,然后选择 “编辑”。将现有表达式修改为以下内容:


HTTP.REQ.URL.CONTAINS_ANY("GW_VPN_Patset") && SYS.HTTP_CALLOUT(GW_VPN_WAF_Callout)
<!--NeedCopy-->

身份验证策略 WAF 绑定

注意:

将此表达式用于任何要保护登录页上表单字段的身份验证策略。

WAF 个人资料和政策

要构建 WAF 配置文件,请转到 安全 > Citrix Web 应用程序防火墙 > 配置文件 ,然后选择 “添加”。为配置文件指定一个描述性名称,然后选择 Web 应用程序 (HTML) 和基本默认值。通过选择 “编辑” 打开新创建的配置文件,然后从右侧列中选择 “安全检查”。

启用以下安全检查(禁用所有其他设置):

  • 缓冲区溢出-日志,统计
  • 发布身体限制-阻止、日志、统计
  • HTML 跨站脚本-阻止、日志、统计
  • HTML SQL 注入-阻止、日志、统计

WAF 安全检查

接下来,从右侧栏中选择 “配置文件设置”,并将默认响应设置为:


application/octet-stream
<!--NeedCopy-->

然后选中 记录每个策略命中的复选框。

WAF 配置文件设置

接下来,转到 安全 > Citrix Web 应用程序防火墙 > 策略 > 防火墙,然后选择 “添加” 来配置 WAF 策 略。为策略指定一个描述性名称,然后选择在上一步中创建的配置文件。对于表达式,请输入以下内容:


HTTP.REQ.HEADER("GW_VPN-WAF_Callout").EXISTS
<!--NeedCopy-->

注意:

此处标头的名称必须与之前创建的 HTTP 标注中的标头匹配。

最后,通过转到 流量管理 > 负载平衡 > 虚拟服务器,将 WAF 策略绑定到之前创建的虚拟负载平衡虚拟服务器。选择虚拟服务器,然后选择 “编辑”。

从右侧列中,选择 “策略”,然后单击 “+” 加以添加策略。选择策略应用程序防火墙并键入请求选择之前创建的策略,然后选择 “绑定” 和 “完成”。

WAF 政策绑定

或者,也可以使用 CLI 创建 WAF 配置,如下所示:


add appfw profile demo_appfw_profile -startURLAction none -denyURLAction none -fieldFormatAction none -bufferOverflowAction log stats -responseContentType "application/octet-stream" -logEveryPolicyHit ON -fileUploadTypesAction none

add appfw policy demo_appfw_policy "HTTP.REQ.HEADER("GW_VPN-WAF_Callout").EXISTS" demo_appfw_profile

bind lb vserver dummy-vserver-here -policyName gw_appfw_policy -priority 100 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->

高级验证设置

有两种与身份验证相关的配置:在 nFactor 内加密从客户端到 ADC 的用户凭据和基于 IP 信誉的 MFA。

加密用户凭据

以下设置允许 ADC 在用户使用 ECDHE 算法提交表单数据时加密凭据集。要启用此设置,请导航到 Citrix Gateway > 全局设置 > 身份验证设置 > 更改身份验证 AAA 设置 并将 登录加密 设置为 已启用

验证登录加密

或者,也可以从 CLI 中更改此设置,如下所示:


set aaa parameter -loginEncryption ENABLED
<!--NeedCopy-->

基于 IP 声誉的 MFA

如果数据库包含源地址,请将 IP 信誉与高级身份验证结合使用,提示用户输入额外因素。此外,创建手动维护的地址数据集。

重要:

以下配置示例使用 CAPTCHA 作为提供另一个身份验证因素的方法,但可以使用任何其他 MFA 工具。与所有 nFactor 配置一样,此处显示的策略、架构和策略标签都是简单的示例-添加额外的配置以满足任何特定的登录用例。

有关将 TOTP PUSH 作为因素配置以及其他验证码配置的其他详细信息,请参阅参考部分。

通过转到 AppExpert > 数据集 并选择 “添加” 来创建数据集。使用描述性名称(“ipv4” 类型创建数据集,然后单击 “创建”)。

恶意 IP 数据集

接下来,需要转到 安全 > AAA-应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略,然后选择 “添加” 来创建两个高级身份验证策略

创建第一个具有描述性名称、操作类型为 NO_AUTHN且表达式设置为 “true” 的策略。

高级策略良好的 IP

使用描述性名称、操作类型 NO_AUTHN和表达式创建第二个策略,如下所示:


CLIENT.IP.SRC.IPREP_IS_MALICIOUS || CLIENT.IP.SRC.TYPECAST_TEXT_T.CONTAINS_ANY("suspicious_ips")
<!--NeedCopy-->

注意:

请在此处使用先前创建的数据集的名称。

接下来,转到 “ 安全” > “AAA-应用程序流量” > “登录架构” > “配置文件” 选项卡,然后选择 “添加” 来创建 CAPTCHA 登录架构配置为配置文件指定一个描述性名称,然后通过选择 “铅笔” 编辑图标来编辑身份验证架构。浏览到 LoginSchema 目录,突出显示 SingleAuthCaptcha.xml然后选择选择

验证码登录模式

接下来,转到 安全 > AAA-应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略标签,然后选择 “添加”,创建验证码架构的身份验证策略标签 。为 PL 指定一个描述性名称,然后选择之前创建的验证码登录模式。绑定所需的 LDAP 操作策略。

注意:

此示例正在重复使用以前创建的 LDAP 身份验证操作。

验证码策略标签

通过选择 “添加” 来创建另一个策略标签。为此 PL 指定一个描述性名称,然后将登录模式设置为 LSCHEMA_INT。接下来,绑定之前创建的两个 NO_AUTHN 身份验证策略。

IP 检查策略标签

最后,将先前创建的身份验证策略的下一个因素设置为此 IP 信誉检查策略标签。它已经绑定到身份验证或网关虚拟服务器。突出显示身份验证策略,选择 “编辑绑定”,然后将新策略标签设置为 “选择下一个因素” 字段。

最终认证策略

摘要

Citrix ADC 提供了许多内置安全保护,可保护在同一设备上运行的网关或身份验证虚拟服务器。这些保护措施对尝试登录 Citrix Gateway 的典型用户没有影响。

引用

有关其他信息和配置选项,请参阅以下文章:

Citrix Web 应用程序防火墙简介 -Citrix 产品文档:Citrix Web 应用程序防火墙简介

Citrix Web 应用程序防火墙 PoC 指南 -Citrix Web 应用程序防火墙的概念验证部署指南

Citrix 应用程序交付和安全 培训-Citrix 应用程序交付和安全教育培训

Citrix ADC 入门 -Citrix 产品文档:Citrix ADC 入门-数据包流

IP 信誉 -Citrix 产品文档:IP 信誉

机器人管理 -Citrix 产品文档:机器人管理

机器人检测 -Citrix 产品文档:机器人检测

nFactor 身份验证 -Citrix 产品文档:nFactor 身份验证

Citrix ADC-nFactor 基础知识备忘单 -Citrix Tech Zone:图表和海报 Citrix ADC-nFactor 基础知识备忘单

CTX216091 -通过 nFactor 支持重新验证码

带推送令牌的 Citrix Gateway 的 nFactor — Citrix Gateway TOTP 推送令牌的概念验证部署指南

PoC 指南:使用 WAF、Bot 和高级身份验证策略保护网关虚拟服务器