接入Bot管理后,您可以自定义访问控制规则和频率控制规则,防御符合规则的请求,高级自定义规则增加了更丰富的匹配条件,如Client ID、JA3/JA4指纹、Web/App SDK采集信息等。同时支持基于条件的去重统计能力。本文介绍如何创建Bot自定义规则模板并添加自定义规则。
背景信息
自定义规则分为以下类型:
自定义规则 | 说明 |
访问控制规则 | 根据客户端IP、请求URL及常见的请求头字段定义请求特征匹配条件,对命中匹配条件的请求执行相应处置。例如,您可以使用自定义规则拦截访问指定Client ID的请求、对包含指定的网页端UMID、App端UMID等内容的请求进行校验等。 |
频率控制规则 | 在访问控制匹配条件的基础上,定义访问频率检测条件,对访问频率异常的统计对象执行相应处置。例如,如果同一个IP或会话在短时间内频繁命中匹配条件,您可以通过启用频率控制,在一段时间内拦截该IP或会话的请求。 |
步骤一:创建自定义规则模板
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地)
模板,单击新建模板,在新建模板-高级自定义规则面板中完成以下配置,单击确定。
配置项
说明
模板名称
为该模板设置一个名称。
长度为1~255个字符,支持中文和大小写英文字母,可包含数字、半角句号(.)、下划线(_)和短划线(-)。
规则配置
您可以单击新建规则,为当前模板新建自定义规则;或者忽略该设置,在创建规则模板后,再为模板新建规则。
生效对象
从已添加的配置防护对象和防护对象组中,选择要应用该模板的配置防护对象和防护对象组。
新建的防护模板默认开启,您可以在防护模板列表执行如下操作:
查看模板关联的防护对象/组的数量。
通过模板开关,开启或关闭模板。
为该模板新建规则。
编辑、删除或复制防护模板。
单击防护模板名称左侧的
图标,查看该防护模板包含的规则信息。
步骤二:创建自定义规则
只有添加防护规则后,自定义规则模板才具有防护作用。在新建规则对话框,完成以下配置,单击确定。
如果您已在步骤一添加了防护规则,可跳过该步骤。
配置项 | 说明 |
规则名称 | 为该规则设置一个名称。 支持中文和大小写英文字母,可包含数字、半角句号(.)、下划线(_)和短划线(-)。 |
匹配条件 | 设置该规则要匹配的请求特征。 单击新增条件,添加一个条件。一个规则中最多可以添加10个条件。如果定义了多个条件,则只有当多个条件同时满足时,才算命中规则。 每个条件由匹配字段、逻辑符和匹配内容组成。配置示例如下:
|
防护类型 | 默认访问控制,单击频率控制开启频率控制。 频率控制表示如果来自同一统计对象(IP、会话等)的请求频繁地命中规则,则在一段时间内,对该统计对象的所有访问执行相应处置,启用频率控制后,您需要设置频率控制参数。
|
处置动作 |
|
规则分类 | 对自定义规则进行分类后,相应的命中流量将在流量分析页面的恶意Bot和疑似Bot走势图中得到统计。
|
高级设置 |
|
新建的规则默认开启。您可以在规则列表执行如下操作:
查看规则ID、规则条件等信息。
通过状态开关,开启或关闭规则。
编辑或删除规则。
匹配字段说明
匹配字段 | 说明 | 支持的逻辑符 |
URI | 请求的统一资源标识符URI(Uniform Resource Identifier),表示被请求的资源的路径。一般来说,URI=URI Path + Query String。 对应匹配内容以 |
|
IP | 请求的来源IP,即发起请求的客户端的IP地址。 匹配内容填写要求如下:
| 不属于、属于 |
Referer | 请求的来源网址,即该请求从哪个页面跳转产生。 |
|
User-Agent | 发起请求的客户端的浏览器标识、渲染引擎标识和版本信息等浏览器相关信息。 |
|
Query String | 请求中的查询字符串,具体指URL中问号(?)后面的部分。 |
|
Cookie | 请求中的Cookie信息。 |
|
Content-Type | 请求指定的响应HTTP内容类型,即多用途互联网邮件扩展类型MIME(Multipurpose Internet Mail Extensions)类型信息。 |
|
Content-Length | 请求内容所包含的字节数。取值范围:0~2147483648。 | 等于、值小于、值大于 |
X-Forwarded-For | 请求的客户端真实IP。X-Forwarded-For(XFF)用来识别通过HTTP代理或负载均衡方式转发的请求的客户端最原始的IP地址的HTTP请求头字段,只有通过HTTP代理或者负载均衡服务器转发的请求才会包含该项。 |
|
Body | 请求的内容信息。 |
|
Http-Method | 请求的方法,包括GET、POST、DELETE、PUT、OPTIONS、CONNECT、HEAD、TRACE、PATCH。 |
|
Header | 请求的头部信息。支持自定义的头部字段。 |
|
URI Path | 请求的URI路径。 |
|
Query String Parameter | 请求参数的参数名。请求参数指请求的URL中问号(?)后面的部分。例如, 说明 Query String Parameter的自定义Parameter大小写敏感。 |
|
Client-ID | 客户端(如浏览器或应用程序)标识,通过User Agent信息和流量指纹等特征来识别HTTP请求来源于哪种客户端。 |
|
Server-Port | 服务器端口。 |
|
File Extension | 被请求文件的扩展名,例如, |
|
Filename | 请求路径末尾的文件名。例如,在 |
|
Host | 被请求的域名。 |
|
Cookie Name | Cookie的键名称。例如,在 说明 Cookie Name的自定义Cookie-Exact大小写敏感。 |
|
Body Parameter | 请求Body中的参数名称。例如,请求Body中包含以下JSON字符串 说明 Body Parameter的自定义Post-Arg大小写敏感。 |
|
JA3 Fingerprint | 通过将TLS握手过程中的关键参数(包括TLS版本、密码套件、压缩算法和TLS扩展等信息)进行MD5哈希处理,生成一个字符串用来表示客户端的TLS配置,该字符串即JA3指纹。 JA3指纹可以用于识别和区分不同类型的TLS客户端,例如Web浏览器、移动应用程序、恶意软件等。 |
|
JA4 Fingerprint | JA4指纹通过引入更多的上下文信息和算法,例如浏览器的版本、操作系统等,减少了JA3指纹可能导致的重复性问题。 JA4指纹能够更准确地鉴别出真实的用户与伪装者,降低误识率。 |
|
HTTP/2 Fingerprint | 根据HTTP2客户端的原始指纹,利用MD5算法处理后生成的HTTP2.0指纹。用来分析和识别不同的客户端,实现更安全和高效的通信。 |
|
IDC | 基于源IP归属数据识别流量来源,云服务器成本较低,黑灰产易利用进行攻击。 | 等于多值之一、不等于任一值 |
Web SDK | 通过WebSDK采集到的探针信息,如网页端UMID、键盘/鼠标/触摸屏按下次数等,识别异常流量。 |
|
App SDK | 可基于App SDK采集的探针信息做精细化管控。 |
|