Citrix ADC

Citrix Gateway 的速率限制

Citrix Gateway 的速率限制功能使您可以定义 Citrix Gateway 设备上给定网络实体或虚拟实体的最大负载。由于 Citrix Gateway 设备会消耗所有未经身份验证的流量,因此该设备通常会以较高的速率接收处理请求。速率限制功能允许您配置 Citrix Gateway 设备以监视与实体关联的流量速率,并根据流量实时采取预防措施。有关速率限制在 Citrix ADC 设备中如何工作的更多信息,请参阅 速率限制

Citrix ADC 具有速率限制功能,可以不可预见的速率为后端服务器提供保护。由于 Citrix ADC 的功能不能为 Citrix Gateway 处理的未经身份验证的流量提供服务,因此 Citrix Gateway 需要自己的速率限制功能。这是检查 Citrix Gateway 设备暴露给各种来源的无法预料的请求速率所必需的。例如,未经身份验证/登录/控制的请求以及为最终用户或设备验证而公开的某些 API。

速率限制的常见用例

  • 限制每秒来自 URL 的请求数。

  • 如果请求超出速率限制,则根据从特定主机收到的请求中收到的cookie断开连接。

  • 限制来自同一台主机(使用特定子网掩码)且目标 IP 地址相同的 HTTP 请求的数量。

为 Citrix Gateway 配置速率限制

必备条件

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

注意事项

  • 在配置步骤中,配置了样本限制标识符。同样可以配置所有支持的参数,如流选择器,模式。有关速率限制功能的详尽描述,请参阅 速率限制

  • 此策略还可以绑定到 VPN 虚拟服务器,如下所示。您需要配置的 VPN 虚拟服务器才能使用以下命令绑定策略。

     bind vpn vserver  -policy denylogin –pri 1 –type aaa_request
     <!--NeedCopy-->
    
  • AAA_REQUEST 是响应程序策略新引入的绑定点。在此绑定点配置的策略将应用于指定虚拟服务器上的所有传入请求。在进行任何其他处理之前,首先处理未经身份验证/控制的流量的策略。

  • 将策略绑定到 Citrix Gateway 虚拟服务器可在 AAA_REQUEST 绑定点为 Citrix Gateway 消耗的所有流量(包括未经身份验证的请求)启用速率限制。

  • 将策略绑定到身份验证虚拟服务器速率会限制未经身份验证/控制的请求到达身份验证虚拟服务器。

要使用命令行界面配置速率限制,请在命令提示符下键入以下命令:

add limitIdentifier <limitIdentifier name> -threshold <positive_integer> -timeslice <positive_integer> -mode <mode type>
<!--NeedCopy-->

示例:

add limitIdentifier limit_one_login -threshold 10 -timeslice 4294967290 -mode REQUEST_RATE
<!--NeedCopy-->
add responderaction denylogin respondwith ‘“HTTP/1.1 200 OK\r\n\r\n” + “Request is denied due to unusual rate”’
<!--NeedCopy-->
add responder policy denylogin 'sys.check_limit("limit_one_login")' denylogin
<!--NeedCopy-->
bind authentication vserver <vserver name> -policy denylogin –pri 1 –type aaa_request
<!--NeedCopy-->

示例:

bind authentication vserver authvserver -policy denylogin –pri 1 –type aaa_request
<!--NeedCopy-->

参数说明

  • limit 标识符- 速率限制标识符的名称。必须以 ASCII 字母或下划线 (_) 字符开头,并且必须仅由 ASCII 字母数字或下划线字符组成。不得使用保留字。这是一个强制性的论点。最大长度:31

  • threshold- 在每个时间片跟踪请求(模式设置为 REQUEST_RATE)时,在给定时间片内允许的最大请求数。当跟踪连接(模式设置为 CONNECTION)时,它是允许通过的连接总数。默认值:1 最小值:1 最大值:4294967295

  • TimeSlice- 时间间隔(以毫秒为单位),以 10 的倍数指定,在此期间,将跟踪请求以检查它们是否超过阈值。仅当模式设置为 REQUEST_RATE 时才需要该参数。默认值:1000 最小值:10 最大值:4294967295

  • 模式- 定义要跟踪的流量类型。

    • REQUEST_RATE-跟踪请求/时间片。
    • 连接-跟踪活动中的交易。

要使用 Citrix ADC GUI 配置速率限制:

  1. 导航到 AppExpert > 速率限制 > 限制标识符,单击 添加 并指定 CLI 部分中指定的相关详细信息。

    创建限制标识符

  2. 导航到 AppExpert > 响应程序 > 策略。在 响应程序策略 页面上,单击 添加

  3. 创建响应程序策略 页面上,使用具有限制标识符的响应程序操作创建响应程序策略。

  4. 要创建响应程序操作,请单击 操作 旁边的 添加 ,然后输入响应程序操作的名称。

  5. 从下拉菜单中选择类型作为 响应 方式,指定以下表达式 “HTTP/1.1 200 OK\ r\ n\ r\ n” + “请求因异常速率被拒绝”,然后单击 “ 创建”。

    创建响应者操作

  6. 要创建响应程序策略,请在 创建响应程序策略 页面上输入响应程序策略的名称,指定以下表达式 “sys.check_limit (“limit_one_login”) ‘,然后单击 创建

    创建响应者策略

  7. 将响应程序策略绑定到身份验证虚拟服务器。

    • 转到 安全 >AAA 应用程序流量 > 虚拟服务器
    • 选择虚拟服务器。
    • 添加策略。
    • 选择要绑定到服务器的响应程序策略,设置优先级。
    • 选择类型作为 AAA-Request ,然后单击 继续

    绑定策略

注意: 您还可以在 VPN 虚拟服务器的 AAA_REQUEST 绑定点启用速率限制。

将速率限制应用于 Citrix Gateway 的常见用例的配置

以下是用于配置常见用例的命令示例。

  • 限制每秒来自 URL 的请求数。

     add stream selector ipStreamSelector http.req.url “client.ip.src”
    
     add ns limitIdentifier ipLimitIdentifier –threshold 4 –timeslice 1000 –mode request_rate –limitType smooth –selectorName ip StreamSelector
    
     add responder policy ipLimitResponderPolicy “http.req.url.contains(\”myasp.asp\”) && sys.check_limit(\”ipLimitIdentifier\”)” myWebSiteRedirectAction
    
     bind authentication virtual server authvserver -policy denylogin –pri 1 –type aaa_request
     <!--NeedCopy-->
    
  • 如果请求超过速率限制,请根据从 www.yourcompany.com 收到的请求中收到的 Cookie 来断开连接。

     add stream selector cacheStreamSelector “http.req.cookie.value(\”mycookie\”)” “client.ip.src.subnet(24)”
    
     add ns limitIdentifier myLimitIdentifier –Threshold 2 –timeSlice 3000 –selectorName reqCookieStreamSelector
    
     add responder action sendRedirectURL redirect `"http://www.mycompany.com"` + http.req.url'
    
     add responder policy rateLimitCookiePolicy
    
     “http.req.url.contains(\www.yourcompany.com) && sys.check_limit(\”myLimitIdentifier\”)” sendRedirectUrl
    
     <!--NeedCopy-->
    
  • 限制来自同一主机(子网掩码为 32)和具有相同目标 IP 地址的 HTTP 请求数。

     add stream selector ipv6_sel “CLIENT.IPv6.src.subnet(32)”CLIENT.IPv6.dst
    
     add ns limitIdentifier ipv6_id –imeSlice 20000 –selectorName ipv6_sel
    
     add lb vserver ipv6_vip HTTP 3ffe:: 209 80 –persistenceType NONE –cltTime
    
     add responder action redirect_page redirect “\”`http://redirectpage.com/\”"`
    
     add responder policy ipv6_resp_pol “SYS.CHECK_LIMIT(\”ipv6_id\”)” redirect_page
    
     bind responder global ipv6_resp_pol 5 END –type DEFAULT
     <!--NeedCopy-->
    
Citrix Gateway 的速率限制