有奖捉虫:行业应用 & 管理与支持文档专题 HOT

概述

在站点运营中,经常会出现恶意占用资源、业务滥用和暴力破解等问题。这些问题如果被忽视,将会导致服务质量下降、产生高额成本账单,甚至可能会导致敏感数据泄露。为了有效管理这些风险,客户端访问频率是一个重要的指标。恶意客户端通常会以更高的频率进行访问,以便快速达到破解登录、占用资源和爬取内容的目的。使用合适的阈值限制客户端访问频率,可以有效区分正常客户端和恶意客户端,从而缓解资源占用和滥用的风险。
注意:
在管理和对抗爬虫时,仅使用速率限制策略效果有限,请结合 Bot管理 功能,制定完整的爬虫管理策略。

典型场景与配置方式

速率限制常用于区分正常客户访问与恶意访问,通过选择合适的统计方式、限制阈值和处置方式,速率限制可以帮助您缓解安全风险。速率限制配置分为下列类型:
精准匹配规则:用户定义的访问频率控制策略。支持多个条件组合匹配请求,限制每个请求来源请求速率,适用于绝大部分场景下用于区分正常用户访问和恶意的高频访问。
托管定制策略:由腾讯安全专家定制的策略,不支持控制台调整策略。详情请参见 托管定制规则

精准匹配规则

示例场景一:限制登录 API 接口访问频率,缓解撞库和暴力破解攻击

在面临撞库和暴力破解攻击的场景中,攻击者通常会频繁地使用访问登录 API 接口尝试获取或破解信息。通过限制对登录接口的请求频率,我们可以大幅缓解攻击者的破解尝试,从而有效抵御这类攻击,保护敏感信息不被泄露。
例如:站点域名 www.example.com 提供了对外接口为/api/UpdateConfig,该接口允许的访问调用频次为100次/分钟,当超过频次限制后,将封禁该 IP 10分钟。操作步骤如下:
1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点,进入站点详情页面。
2. 在站点详情页面,单击安全防护 > Web 防护,进入 Web 防护详情页左侧的防护域名列表中,选择需开启防护的域名。


3. 找到速率限制卡片,单击设置。进入速率限制配置页面,单击精准速率限制规则中的添加规则


4. 在弹出的规则页面内,按照如下步骤配置:
4.1. 填写规则名称,匹配对象选择为自定义防护对象
4.2. 在匹配条件列表选项,配置规则的匹配条件,以当前场景为例,匹配字段选择请求路径(Path)等于/api/UpdateConfig
4.3. 配置该规则的触发方式,以当前场景为例,配置计数周期1分钟内,计数超过100次时触发,统计方式为单个客户端 IP 请求到 EdgeOne 节点时触发,触发后,保持该触发状态10分钟。
4.4. 执行动作选择为拦截。完整的规则配置如下:

5. 单击确定后,规则将部署生效。

示例场景二:限制导致404状态码的请求速率,缓解资源随机扫描

在恶意客户端随机扫描站点图片资源,尝试爬取内容时,常常会因为访问路径不存在导致源站响应404错误。通过限制导致源站404状态码的请求频率,EdgeOne 能够避免恶意攻击者大规模地扫描和请求静态资源,从而减少源站的错误响应,缓解服务器压力,提升静态资源站点的安全性和稳定性。例如:针对站点域名 www.example.com 的图片静态资源.jpg .jpeg .webp .png .svg,当资源不存在响应 404 时,访问在 10 秒内超过 200 次时,则直接拦截对应的客户端 IP 请求 60 秒。操作步骤如下:
1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点,进入站点详情页面。
2. 在站点详情页面,单击安全防护> Web 防护,进入 Web 防护详情页左侧的防护域名列表中,选择需开启防护的域名。


3. 找到速率限制卡片,单击设置。进入速率限制配置页面,单击精准速率限制规则中的添加规则


4. 在弹出的规则页面内,按照如下步骤配置:
4.1. 填写规则名称,匹配对象选择为自定义防护对象。
4.2. 在匹配条件列表选项,配置规则的匹配条件,以当前场景为例,匹配字段选择请求路径(Path)文件后缀匹配内容包括.jpg .jpeg .webp .png .svg图片类静态资源类型。
4.3. 单击 +And ,添加新的匹配条件,在新增的匹配条件中,匹配字段选择 HTTP 状态码(需使用企业版套餐支持)等于404的请求。
4.4. 配置该规则的触发方式,以当前场景为例,配置计数周期10秒内,计数超过200次时触发,统计方式为单个客户端 IP 维度,由源站响应至 EdgeOne 节点时,触发后,持续处置60秒。
4.5.执行动作选择为拦截。完整的配置规则如下:



5. 单击确定后,规则将部署生效。

示例场景三:限制高并发的搜索引擎爬虫访问 Web 站点,缓解对正常业务的影响

某 Y 搜索引擎供应商使用了大规模分布式的爬虫架构,对访问行为缺少限制,导致其爬虫行为较激进,短时间内产生较大访问量,对正常业务可能造成影响,并消耗大量资源。因此通过速率限制识别并限制该类爬虫访问,缓解其影响。例如:站点 www.example.com 由于 Y 搜索引擎爬虫高频访问影响正常业务。通过 Web 安全分析 分析,Y 搜索引擎的爬虫使用的分布式架构在 JA3 指纹User-Agent 特征聚集,因此配置速率限制规则,当相同 JA3 指纹 和 User-Agent 的访问请求在 30 秒统计窗口超过 60 次时,对该 JA3 指纹和 User-Agent 特征相同的请求进行拦截,持续拦截10分钟。操作步骤如下:
1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,单击站点列表,在站点列表内单击需配置的站点,进入站点详情页面。
2. 在站点详情页面,单击安全防护 > Web 防护,进入 Web 防护详情页左侧的防护域名列表中,选择需开启防护的域名,例如:www.example.com


3. 找到速率限制卡片,单击设置。进入速率限制配置页面,单击精准速率限制规则中的添加规则


4. 在弹出的规则页面内,按照如下步骤配置:
4.1. 填写规则名称,匹配对象选择为自定义防护对象。
4.2. 在匹配条件列表选项,配置规则的匹配条件,以当前场景为例,匹配字段选择应用层协议等于 HTTPS。
4.3. 配置该规则的触发方式,以当前场景为例,配置请求为客户端至 EdgeOne,请求特征中 JA3 指纹和 HTTP 头部中的 User-Agent 特征相同的客户端,配置计数周期30秒内,计数超过60次时触发。
执行动作选择为拦截。完整的配置规则如下:

5. 单击确定后,规则将部署生效。

相关参考

创建速率限制规则时,需配置规则匹配对象、触发方式以及处置方式,各配置项说明如下:
注意:
如果您当前的速率规则,需要基于某个已知的确定值的 HTTP 头部进行匹配时,可通过配置匹配对象,指定匹配条件等于 HTTP 指定头部参数值进行匹配。
如果您当前的速率规则,需要基于一类可能存在相同值的 HTTP 头部进行匹配时,可通过配置统计维度,使用指定名称的 HTTP 头部进行匹配。

匹配对象

根据请求来源、头部特征、响应状态码等设定匹配条件组合1,速率限制规则仅对匹配条件的业务进行管控。匹配条件说明及不同套餐的支持程度详情请参见 匹配条件

触发方式

说明:
未达到速率限制阈值时,请求不会进行处置,也不会记录日志。
规则将根据触发方式内配置的统计规则进行计数统计,在计数周期内累计请求次数超过阈值时,规则触发并执行对应限制动作2。统计基于技术周期和统计方式,对指定特征维度(如:客户端 IP)下不同特征值的请求次数计数1。您可以定义触发方式的下列参数:
计数周期:用于计数时,滚动时间窗口的长度。支持最短 1 秒,最长 1 小时。
统计方式:区分请求来源的方式,速率限制为每个请求来源限制请求速率。详见统计维度
速率阈值:计数周期内,每个来源(如客户端 IP)允许请求的次数。
触发状态保持时长:当规则触发后,对该来源匹配条件的请求持续限制3的时长。支持最短 1 秒,最长 30 天。

统计维度

支持基于一个或多个请求特征进行统计,当统计维度内的请求特征达到触发方式内设置的速率阈值时,则触发速率限制规则。您可以指定下列统计维度1
客户端 IP:来自相同源 IP 的请求将计入同一个计数器,超过阈值时触发规则的处置动作。
客户端 IP(优先匹配 XFF 头部):来自相同客户端 IP 的请求将计入同一个计数器,超过阈值时触发规则的处置动作。当X-Forwarded-For 头部存在且包含合法 IP 列表时,将优先使用X-Forwarded-For 头部中第一个 IP 进行统计。
指定名称的 Cookie:提取请求头部中指定名称的 Cookie 值,相同 Cookie 值的请求计入同一个计数器,超过阈值时触发规则的处置动作。
例如:当站点使用名为 user-session 的 Cookie 标记访问会话时,您可以配置指定名称为 user-session 的 Cookie 值作为统计维度,对每个会话的请求速率进行统计。当单个会话中的请求速率超过阈值时,触发规则配置的处置动作。
指定名称的 HTTP 头部:提取请求头部中指定名称的头部值,相同头部值的请求计入同一个计数器,超过阈值时触发规则的处置动作。例如:您可以指定 Origin 头部,以限制来自每个外部域的访问频率,当某个外部域访问频率超过阈值时,触发规则配置的处置动作。
指定名称的 URL 查询参数:提取请求 URL 查询参数中指定名称的参数值,相同查询参数值的请求计入同一个计数器,超过阈值时触发规则的处置动作。
例如:当站点使用名为 user-session 的查询参数标记访问会话时,您可以配置指定名称为 user-session 的查询参数作为统计维度,对每个会话的请求速率进行统计。当单个会话中的请求速率超过阈值时,触发规则配置的处置动作。
请求的 JA3 指纹4:计算每个请求的 JA3 指纹,将 JA3 指纹相同的请求计数统计,超过阈值时触发规则的处置动作。每个请求对应了唯一的 JA3 指纹值,不存在键值模型,因此无需输入指定参数。考虑到 JA3 的特性,建议您将其与 User-Agent 头部统计维度同时配置,以较好地区分客户端。
说明:

注 1
:根据您订阅的套餐,支持配置的匹配条件、统计维度和处置方式选项可能会有所不同。详情请参考 套餐选项对比

注 2:
如果存在多条速率限制规则,一个请求可同时匹配多条规则内容,会同时根据不同规则的统计方式来决定是否触发该规则。当统计触发其中一个规则并被拦截后,其余规则将不会再被触发。当多条规则同时被触发时,按照已触发规则的优先级顺序执行,优先级数值小的规则优先匹配。详见 Web 防护请求处理顺序

注 3
:规则触发后,仅对匹配当前规则的请求生效。

注 4
:JA3 指纹是基于客户端的 TLS 信息形成的识别信息,可以有效区分来自不同 Bot 网络的请求。当请求基于非 SSL 的 HTTP 协议发起时,请求的 JA3 指纹为空。如果需要使用 JA3 指纹,请确保您当前域名已开启 Bot 管理功能。
注 5:如果您需要通过多种统计维度组合,对请求特征相同的请求进行统计,需订阅 EdgeOne 企业版套餐。

处置方式

当请求超过限制阈值时,采取相应的限制动作。支持拦截、观察、JavaScript 挑战、重定向至 URL 和响应自定义页面1,详细处置方式说明,请参见 处置方式