当需精确防护特定攻击(如恶意调用、恶意请求、高频扫描)时,可使用自定义规则,通过灵活的匹配条件和规则动作,构建个性化防护策略。
关键概念
自定义规则:Web核心防护中的防护模块之一。启用此模块前必须创建防护模板,系统支持创建多个防护模板。
防护模板:防护模板是防护规则的集合,用于定义具体的规则内容和作用范围。其由以下三部分组成:模板类型、防护规则、生效对象。
模板类型:防护模板创建时需指定类型,且创建后不可更改。模板类型分为以下两种:
模板类型
说明
适用场景
默认防护模板
模板创建时,默认对所有防护对象和对象组生效,后续新增的对象也自动生效。
支持手动将特定对象排除(设置为“未生效”)。
在自定义规则模块下,仅能创建一个默认防护模板。
部署通用的、需全局执行的防护规则。
自定义防护模板
必须手动指定其生效的防护对象或对象组。
针对特定业务(如登录、支付接口)部署精细化的防护规则。
防护规则:定义具体的检测逻辑和响应措施。一个防护模板可包含多条防护规则,每条规则由以下三部分组成:
匹配条件:定义检测的请求特征(如请求路径、客户端 IP 地址等)。
防护类型:支持两种检测维度,分别为访问控制和频率控制。
规则动作:定义命中规则后的处置措施,规则动作的优先级从高到低依次为:拦截、严格滑块、滑块、JS 验证、观察。
说明当一个请求同时命中同一防护模块中的多条规则,且这些规则的规则动作相同时,则最终匹配到的规则是随机生效的。
生效对象:指定防护模板的应用目标。通过生效对象设置,将防护规则应用到指定的防护对象或防护对象组。一个防护对象或对象组可以关联多个防护模板。
防护对象:每个接入 WAF 的域名或云产品实例,系统会为其自动创建一个防护对象。
防护对象组:可将多个防护对象加入一个防护对象组,以便集中管理。
操作步骤
执行以下步骤前,请确保已存在防护对象(已将Web业务接入WAF),若尚未将业务接入,请参见接入概述。
登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地、非中国内地),在左侧导航栏,选择 。
步骤一:配置防护模板类型
在Web 核心防护页面下方自定义规则区域,单击新建模板。在新建模板 - 自定义规则面板,完成以下配置。
模板名称:为该模板设置一个名称。
是否设置为默认模板:自定义规则模块仅能设置一个默认模板,且仅能在新建模板时设置。
是:无需设置生效对象,模板创建时,默认对所有防护对象和对象组生效,后续新增的对象也自动生效。支持手动将特定对象排除(设置为“未生效”)。
否:需要设置生效对象,手动指定其生效的防护对象或对象组。
步骤二:在防护模板中添加防护规则
在规则配置区域,单击新建规则,完成以下配置。
规则名称:为该规则设置一个名称。
匹配条件:设置该规则要匹配的请求特征。通过单击新增条件添加一个条件。每个条件由匹配字段、逻辑符和匹配内容组成。配置示例如下:
说明若规则包含多个条件,则请求必须满足所有条件(逻辑与关系),才能命中该规则。关于匹配字段和逻辑符的详细说明,请参见匹配条件说明。
匹配字段
逻辑符
匹配内容
说明
URI Path
包含
/login.php
当请求的路径包含
/login.php
时,则请求命中该规则。IP
属于
192.1.XX.XX
当客户端IP为
192.1.XX.XX
时,则请求命中该规则。防护类型:支持访问控制与频率控制两种类型。
访问控制:适用于对特定类型的请求执行精确管控的场景。
频率控制:适用于基于访问频率的场景(如防刷、防暴力破解)。仅包年包月企业版、旗舰版和按量付费版支持此功能。
访问控制
配置访问控制规则,对符合特定条件的单次请求执行指定操作。
频率控制
配置频率控制规则,限制客户端的过度访问。
频率检测条件:当单个统计对象在指定的统计时长(秒)内命中规则的次数超过设定的阈值(次)时,触发黑名单处置。
配置项
说明
统计对象
选择请求频率的统计对象。可选项:
IP:统计同一个IP发起请求的频率。
自定义header:基于自定义请求头(如
Referer
)的值进行分组,统计在指定时间段内,每组相同请求头值所对应的请求频率。自定义参数:统计URL中包含指定参数的请求频率。例如,若参数为
user_id
,WAF将统计具有相同user_id
值的请求频率。自定义cookie:统计在指定时间段内,HTTP请求中包含特定Cookie的频率。例如,当自定义Cookie名称为 User 时,将统计在该时间段内每个 User 值的出现次数。
Session:WAF通过在响应中设置名为
acw_tc
的Cookie来建立会话标识,并基于该Cookie的值统计客户端请求频率。账号:统计同一个账号发起请求的频率。需要在防护对象页面设置账号提取配置后,才能配置此项,详细信息,请参见账号提取配置。
统计时长(秒)
设置统计周期。单位:秒。
阈值(次)
设置在统计时长(秒)内,允许统计对象命中匹配条件的最大次数。
响应码检测条件:当响应码的响应数量或比例(%)超过设置的阈值时,触发黑名单处置。启用响应码检测后,统计对象需同时满足频率检测条件和响应码特征条件,才会触发黑名单处置。
配置项
说明
响应码
设置需要统计的响应码。
数量
设置在统计时长内,允许指定的响应码在请求响应中出现的最大次数。
比例(%)
设置在统计时长内,允许指定的响应码在请求响应中的最大占比。
黑名单处置条件:将命中上述检测条件的统计对象加入黑名单,在黑名单超时时间内,对来自该对象黑名单生效范围内的请求执行规则动作中定义的处置。
配置项
说明
黑名单生效范围
设置黑名单处置的生效范围。可选值:
仅作用于当前规则的匹配条件:表示只处置满足当前规则匹配条件的请求。
作用于整个防护对象:表示对该统计对象(如IP)发起的,访问当前防护对象的所有请求执行处置动作。
黑名单超时时间
设置黑名单处置的生效时长。单位:秒。取值范围:60~86400。
规则动作:选择当请求命中该规则时,要执行的防护动作。
配置项
说明
JS验证
WAF向客户端返回一段JavaScript验证代码,标准浏览器将自动执行该代码。若客户端正常执行完成,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求,否则拦截请求。
拦截
拦截命中规则的请求,并向发起请求的客户端返回拦截响应页面。
说明WAF默认使用统一的拦截响应页面,也可以通过自定义响应功能,自定义拦截响应页面。
观察
不拦截命中规则的请求,仅通过日志记录请求命中的情况。在试运行规则时,可以先通过观察模式分析WAF日志,以确认未产生误拦截,再将其调整为其他规则动作。
滑块
WAF向客户端返回滑动验证页面。若客户端成功完成滑动验证,则WAF在一段时间(默认30分钟)内放行该客户端的所有请求,否则拦截请求。
严格滑块
WAF向客户端返回滑动验证页面。若客户端成功完成滑动验证,则放行该请求;否则拦截请求。在此模式下,客户端每次命中该规则的请求均需进行滑动验证。
说明仅按量付费实例以及包年包月企业版和旗舰版实例支持滑块验证。
JS验证或滑块验证仅适用于同步请求。对于XMLHttpRequest、Fetch方法等异步请求,必须注入Web SDK,否则无法正常运行。具体操作,请参见Bot管理的JS校验和滑块验证功能。
启用JS验证或滑块后,客户端通过验证时,WAF将在响应头中通过Set-Cookie 设置名为
acw_sc__v2
(JS验证)或acw_sc__v3
(滑块验证)的 Cookie。客户端在后续请求中会在 Cookie 头中携带该标识。
高级设置(可选):仅包年包月企业版、旗舰版和按量付费版支持如下高级功能。
配置项
说明
规则灰度
配置规则针对不同维度的对象的生效比例。
开启规则灰度后,还需要设置维度和灰度比例。维度包括:IP、自定义Header、自定义参数、自定义Cookie、Session。
说明规则灰度根据配置的维度生效,而非对请求按比例随机生效规则。例如,当维度为IP且灰度比例为10%时,WAF将选择约10%的IP地址;被选中的IP地址,其所有请求均应用该规则,而非对所有请求按10%的比例随机应用。
生效模式
永久生效(默认):防护模板开启时,规则永久生效。
按时间段生效:防护规则仅在指定的一段时间内生效。
按周期生效:防护规则仅在指定的时间周期内生效。
步骤三:设置防护模板生效对象
在生效对象区域,选择要应用于该模板的防护对象和防护对象组。
模板的生效方式取决于在步骤一的配置:
设置为默认防护模板:无需设置生效对象,模板创建时,默认对所有防护对象和对象组生效,后续新增的对象也自动生效。支持手动将特定对象排除(设置为“未生效”)。
未设为默认防护模板:需要手动设置生效的防护对象和防护对象组。
模板创建时与创建完成后,均支持手动调整防护对象或防护对象组生效状态。
防护规则配置示例
以下配置示例仅供参考。在生产环境部署前,您必须根据实际业务流量和攻击特征进行调整。直接复制并应用以下示例可能导致正常业务中断或防护无效。
限制管理后台仅允许指定IP访问
拦截所有对 /wp-admin
路径的访问请求,仅允许来自管理员 IP 地址192.1.XX.XX
的请求通过。
匹配条件:
匹配字段为
IP
、逻辑符为不属于
、匹配内容为管理员的白名单IP192.1.XX.XX
。匹配字段为
URI
、逻辑符为包含
、匹配内容为不希望被访问的网页路径/wp-admin
。
防护类型:访问控制。
规则动作:拦截。
屏蔽恶意爬虫和扫描器访问
拦截User-Agent(UA)字段中包含bot
的HTTP请求。
通过分析WAF日志,可识别异常流量的UA特征。部分恶意流量的UA字段包含bot
、nmap
、sqlmap
等特征字符串。
匹配条件:匹配字段为
User-Agent
、逻辑符为包含
、匹配内容为UA特征bot
。防护类型:访问控制。
规则动作:拦截。
为网站页面启用人机验证
对除API接口以外的页面进行JS验证,此处以所有API接口URI均包含/api
字符串为例。
针对静态页面,可以设置JS验证或滑块验证规则,以确保请求来源为可执行 JavaScript 的标准浏览器。此类验证仅适用于同步请求,不适用于XMLHttpRequest、Fetch方法等异步请求。
匹配条件:匹配字段为
URI
、逻辑符为不包含
、匹配内容为/api
。防护类型:访问控制。
规则动作:JS验证或滑块。
API接口限流
对除example.com/api/pay
接口外的所有接口启用频率控制,此处以所有API接口URI均包含/api
字符串为例。
匹配条件:
匹配字段为
URI
、逻辑符为不等于
、匹配内容为/api/pay
。匹配字段为
URI
、逻辑符为包含
、匹配内容为/api
。
防护类型:频率控制。
统计对象:IP。
统计时长(秒):10。
阈值(次):5。
黑名单生效范围:仅作用于当前规则的匹配条件。
黑名单超时时间:1800。
规则动作:拦截。
应用于生产环境
为避免影响正常业务,请勿在生产环境直接创建并启用拦截动作的防护规则。建议遵循以下流程进行部署。
分析请求特征:使用WAF安全报表与日志,识别正常业务请求与恶意攻击的特征(如 IP、User-Agent、Header、URI 等)。如需计划配置频率控制规则,还需确定正常业务的请求频率基线。
配置白名单:在创建自定义规则模板前,建议创建白名单规则,将可信IP加入白名单,防止可信请求被新规则误拦截。
灰度测试:自定义规则创建完成后,可以使用以下三种方式,在部署到生产环境前进行观察测试。
将规则应用于非生产环境进行测试。
将规则动作设置为观察。
在高级设置中开启规则灰度。
分析测试结果:运行一段时间后,观察安全报表与日志,查看命中规则的请求是否存在误报。
应用至生产环境:确认误报率在可接受范围内后,将规则动作调整为目标动作,并应用于生产环境。
持续监控与优化:持续关注安全报表与日志,根据业务变化和实际防护效果,动态调整和优化规则。
相关操作
管理防护模板
新建的防护模板默认开启,可以在防护模板列表执行如下操作:
查看模板关联的防护对象/组的数量。
通过模板开关,开启或关闭模板。
为该模板新建规则。
编辑、删除或复制防护模板。
单击防护模板名称左侧的
图标,查看该防护模板包含的规则信息。
管理防护规则
新建的规则默认开启。可以在规则列表执行如下操作:
查看规则ID、规则条件等信息。
通过状态开关,开启或关闭规则。
编辑或删除规则。
配额与限制
仅按量付费实例、包年包月企业版和旗舰版实例支持滑块验证、频率控制与高级设置功能。
单个防护规则最多可添加5个匹配条件。
常见问题
为什么配置的规则不生效?
若配置的规则未按预期生效,请按以下顺序检查:
模板开关:确认防护模板以及规则状态均为开启状态。
生效对象:确认防护模板的生效对象为已生效。
规则配置:确认防护规则的配置,重点关注匹配条件的正确性,确保请求能够匹配。
其他规则:确认是否配置了其他防护规则或防护模块,例如白名单规则会提前放行请求。
云产品接入方式下,多个域名解析指向了一个云产品实例,如何配置频率控制?
频率控制规则按照防护对象维度来限制同一统计对象的请求频率。若一个云产品实例包含多个域名的流量,则统计访问频率时将对所有域名的访问量进行汇总统计。若只需限制对某个域名的访问频率,可以选择以下两种方式之一进行配置:
将域名添加为WAF的防护对象,并为该域名对象应用频率控制规则。更多信息,请参见配置防护对象和防护对象组。
在频率控制规则的匹配条件中,通过Host字段定义要限制访问频率的域名。
配置自定义规则匹配字段Body Parameter后为何不生效?
可能原因是填写的匹配内容长度过短,使用Body Parameter字段时请确保匹配内容长度>=5个字符,否则流量无法被检测。