NetScaler Gateway 的速率限制
NetScaler Gateway 的速率限制功能使您可以定义 NetScaler Gateway 设备上给定网络实体或虚拟实体的最大负载。由于 NetScaler Gateway 设备会消耗所有未经身份验证的流量,因此该设备通常会以较高的速率接收处理请求。速率限制功能允许您配置 NetScaler Gateway 设备以监视与实体关联的流量速率,并根据流量实时采取预防措施。有关速率限制在 NetScaler 设备中如何工作的更多信息,请参阅 速率限制。
NetScaler 具有速率限制功能,可以不可预见的速率为后端服务器提供保护。由于 NetScaler 的功能不能为 NetScaler Gateway 处理的未经身份验证的流量提供服务,因此 NetScaler Gateway 需要自己的速率限制功能。这是检查 NetScaler Gateway 设备暴露给各种来源的无法预料的请求速率所必需的。例如,未经身份验证/登录/控制的请求以及为最终用户或设备验证而公开的某些 API。
速率限制的常见用例
-
限制每秒来自 URL 的请求数。
-
如果请求超出速率限制,则根据从特定主机收到的请求中收到的cookie断开连接。
-
限制来自同一台主机(使用特定子网掩码)且目标 IP 地址相同的 HTTP 请求的数量。
为 NetScaler Gateway 配置速率限制
必备条件
配置的身份验证虚拟服务器。
需要注意的事项
-
在配置步骤中,配置了样书限制标识符。同样可以配置所有支持的参数,如流选择器,模式。有关速率限制功能的详尽描述,请参阅 速率限制。
-
此策略还可以绑定到 VPN 虚拟服务器,如下所示。您需要配置的 VPN 虚拟服务器才能使用以下命令绑定策略。
bind vpn vserver -policy denylogin –pri 1 –type aaa_request <!--NeedCopy-->
-
AAA_REQUEST 是响应程序策略新引入的绑定点。在此绑定点配置的策略将应用于指定虚拟服务器上的所有传入请求。在进行任何其他处理之前,首先处理未经身份验证/控制的流量的策略。
-
将策略绑定到 NetScaler Gateway 虚拟服务器可在 AAA_REQUEST 绑定点为 NetScaler 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-->
参数说明
-
limitIdentifier - 速率限制标识符的名称。必须以 ASCII 字母或下划线 (_) 字符开头,并且必须仅由 ASCII 字母数字或下划线字符组成。不得使用保留字。这是一个强制性的参数。最大长度:31
-
timeSlice - 在每个时间片跟踪请求(模式设置为 REQUEST_RATE)时,在给定时间片内允许的最大请求数。当跟踪连接(模式设置为 CONNECTION)时,它是允许通过的连接总数。默认值:1 最小值:1 最大值:4294967295
-
timeSlice - 时间间隔(以毫秒为单位),以 10 的倍数指定,在此期间,将跟踪请求以检查它们是否超过阈值。仅当模式设置为 REQUEST_RATE 时才需要该参数。默认值:1000 最小值:10 最大值:4294967295
-
模式- 定义要跟踪的流量类型。
- REQUEST_RATE - 跟踪请求/时间片。
- CONNECTION - 跟踪活动中的交易。
要使用 NetScaler GUI 配置速率限制:
-
导航到 AppExpert > 速率限制 > 限制标识符,单击 添加 并指定 CLI 部分中指定的相关详细信息。
-
导航到 AppExpert > 响应程序 > 策略。在 响应程序策略 页面上,单击 添加。
-
在 创建响应程序策略 页面上,使用具有限制标识符的响应程序操作创建响应程序策略。
-
要创建响应者操作,请单击“操作”旁边的“添加”。
-
在“创建响应者操作”页面上,输入响应者操作的名称。
-
从下拉菜单中选择“回复方式”类型。
-
在表达式编辑器中,配置响应消息。例如,
"HTTP/1.1 200 OK\r\n\r\n"+ "Request is denied due to unusual rate"
。 -
单击创建。
-
要创建响应者策略,请在创建响应者策略页面上输入响应者策略的名称。
-
在表达式编辑器中,配置响应者策略的条件。例如,
'sys.check_limit("limit_one_login")'
。 -
单击创建。
-
将响应程序策略绑定到身份验证虚拟服务器。
- 转到 安全 >AAA 应用程序流量 > 虚拟服务器。
- 选择虚拟服务器。
- 添加策略。
- 选择要绑定到服务器的响应程序策略,设置优先级。
- 选择类型作为 AAA-REQUEST,然后单击继续。
注意:
您还可以在 AAA_REQUEST 绑定点为 VPN 虚拟服务器启用速率限制。
将速率限制应用于 NetScaler 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-->
为身份验证、授权和审核端点绑定响应者策略
要允许数据包引擎处理请求,请使用 AAA_REQUEST
绑定点将响应器策略绑定到身份验证虚拟服务器或 VPN 虚拟服务器。
-
VPN 虚拟服务器示例:
bind vpn vserver vpnVs -policy resp_pol -priority 6 -type AAA_REQUEST
-
身份验证虚拟服务器示例:
bind authentication vserver av_vs -policy resp_pol -priority 6 -type AAA_REQUEST
要允许 Apache HTTP 服务器处理请求,请使用 REQUEST
绑定点将响应器策略绑定到身份验证虚拟服务器或 VPN 虚拟服务器。
例如,
-
VPN 虚拟服务器示例:
bind vpn vserver vpnVs -policy resp_pol -priority 6 -type REQUEST
-
身份验证虚拟服务器示例:
bind authentication vserver av_vs -policy resp_pol -priority 6 -type REQUEST
有关绑定响应者策略的详细信息,请参阅绑定响应者策略。