配置CC攻击防护规则防御CC攻击
网站接入WAF后,WAF默认不生效CC攻击防护。如果网站突然遭遇大量异常流量攻击时,可配置CC攻击防护规则,限制源端或目的端速率,防御CC攻击。
前提条件
- 已将网站成功接入WAF。
- 已新增防护策略,并添加策略适用的防护域名。
- 如果使用独享WAF,确保独享引擎已升级到最新版本,具体的操作请参见升级独享引擎实例。
约束条件
- 仅云模式专业版、企业版支持引用表管理功能。云模式标准版不支持该功能。
- 当“逻辑”关系选择“包含任意一个”、“不包含任意一个”、“等于任意一个”、“不等于任意一个”、“前缀为任意一个”、“前缀不为任意一个”、“后缀为任意一个”或者“后缀不为任意一个”时,需要选择引用表,创建引用表的详细操作请参见创建引用表对防护指标进行批量配置。
- 仅云模式的CNAME接入支持配置“全局计数”。
- 使用云模式WAF时,如果WAF前使用了高防、CDN(Content Delivery Network,内容分发网络)、云加速等代理时,建议“限速模式”选择 ,并勾选“全局计数”。
如果网站在接入WAF前,已经使用了CDN、高防等其他代理服务,WAF收到的访问IP会被分散到各个WAF节点进行流量转发,WAF默认为WAF节点单独计数。因此,WAF针对单个Web访问者的访问次数的计数会分散,所以“限速频率”中访问次数的设置原则如下:
- 云模式CNAME接入:该模式支持“全局计数”,即支持将已经标识的请求在一个或多个WAF节点上的计数聚合,因此,配置时勾选“全局计数”即可。
- 独享模式:
- 一般情况下,该模式暂不支持“全局计数”,因此配置“限速频率”中访问次数应配置为允许单个Web访问者在限速周期内访问网站的次数/WAF节点数。
例如,WAF节点数(防护该网站的独享引擎实例数)为2,如果您想当单个Web访问者在限速周期内访问网站的次数不能超过1,000次,则“限速频率”中访问次数应配置为1,000除以2,即配置为500。
- 提交工单申请开通该功能后,该模式支持“全局计数”,即支持将已经标识的请求在一个或多个WAF节点上的计数聚合。在使用该功能前需注意:“全局计数”不是精确数量的限速。在某些情况下,可能会出现延迟(“全局计数”的内部计数器的更新可能要花费几秒钟)。由于这种延迟,过多的请求仍然可能在WAF引擎执行防护动作(如拦截)之前到达源站。
- 一般情况下,该模式暂不支持“全局计数”,因此配置“限速频率”中访问次数应配置为允许单个Web访问者在限速周期内访问网站的次数/WAF节点数。
- “云模式-ELB接入”方式不支持“Response Code”、“Response Length”、“Response Time”、“Response Header”和“Response Body”字段。“云模式-CNAME接入”、“独享模式接入”可提交工单申请开通。
- 添加或修改防护规则后,规则生效需要等待几分钟。规则生效后,您可以在“防护事件”页面查看防护效果。
配置CC攻击防护规则
- 登录Web应用防火墙控制台。
- 在控制台左上角,单击
图标,选择区域或项目。
- (可选) 如果您已开通企业项目,在左侧导航栏上方,单击“按企业项目筛选”下拉框,选择您所在的企业项目。完成后,页面将为您展示该企业项目下的相关数据。
- 在左侧导航栏,单击“防护策略”。
- 单击目标策略名称,进入目标策略的防护规则配置页面。
在配置防护规则前,请确认目标防护策略已绑定防护域名,即绑定策略生效目标。一条防护策略可以适用于多个防护域名,但一个防护域名只能绑定一个防护策略。
- 单击“CC攻击防护”配置框,确认已开启CC攻击防护规则。
:开启状态。
- 在“CC攻击防护”规则配置列表左上方,单击“添加规则”。
- 在“添加CC防护规则”面板,根据表1配置CC防护规则。
例如,通过配置CC攻击防护规则实现以下功能:根据Cookie标识的用户字段(例如name),当WAF识别到同一name值的用户在60秒内访问您域名下的URL(例如,/admin)页面超过10次时,封禁该用户访问目标网址600秒。
图2 添加CC防护规则表1 CC防护规则参数说明 参数
参数说明
取值样例
规则名称
自定义规则名称。
waftest
规则描述(可选)
设置该规则的备注信息。
--
限速模式
选择要限速的对象,支持源限速、目的限速。
- “源限速”:对满足限速条件的源端进行限速。源端包含IP、用户(Cookie、Header)、其他(Referer)。
- “目的限速”:对满足限速条件的目的端进行限速。目的端包含策略、域名、URL。
源限速
限速类型
针对不同的限速模式,设置要限速的类型。
“限速模式”为“源限速”时,“限速类型”支持IP限速、用户限速、其他。- IP限速:根据IP区分单个Web访问者。
- 用户限速:根据Cookie或Header的键值区分单个Web访问者。
选择用户限速后,还需要配置Cookie或Header的用户标识。
- Cookie:设置Cookie字段名,即用户需要根据网站实际情况配置唯一可识别Web访问者的Cookie中的某属性变量名。
Cookie字段名,不支持正则,必须完全匹配。例如:如果网站使用Cookie中的某个字段name唯一标识用户,那么可以用name字段来区分Web访问者。
当不存在Cookie字段时,会默认使用BENSESSCC_TAG进行计数;当存在Cookie字段,但内容为空时,参与计数。
- Header:设置需要防护的自定义HTTP首部,即用户需要根据网站实际情况配置可识别Web访问者的HTTP首部。
当不存在Header字段时,不参与计数;当存在Header字段,但内容为空时,参与计数。
- Cookie:设置Cookie字段名,即用户需要根据网站实际情况配置唯一可识别Web访问者的Cookie中的某属性变量名。
- 其他限速:根据Referer(自定义请求访问的来源)字段区分单个Web访问者。
选择用户限速后,还需要配置Referer内容。
- Referer内容需填写为包含域名的完整URL链接,仅支持前缀匹配和精准匹配,且内容中不能含连续的多条斜线,如“///admin”,WAF引擎会将“///”转为“/”。
- 例如:如果用户不希望访问者从“www.test.com”访问网站,则Referer内容设置为“http://www.test.com”。
“限速模式”为“目的限速”时,“限速类型”支持策略限速、域名限速、URL限速。- 策略限速:命中某策略的频率超过限速频率,就会对命中策略的请求限速。
- 当多个域名共用一个策略时,该策略下对应的所有域名请求次数合并限速(不区分访问IP)。
- 防护域名为泛域名时,该泛域名对应的所有子域名的请求次数合并限速(不区分访问IP)。
- 域名限速:访问某域名的频率超过限速频率,就会触发防护动作,处置对应请求。
每个域名单独统计总请求次数,超过限速频率则触发防护动作,处置对应请求(不区分访问IP)。
- URL限速:访问某URL的频率超过限速频率,就会触发防护动作,处置对应请求。
每个URL单独统计总请求次数,超过限速频率则触发防护动作,处置对应请求(不区分访问IP)。
限速类型:用户限速
用户标识:Cookie=name
域名聚合统计
防护域名为泛域名时,确认是否将所有子域名的请求一起聚合统计。“限速类型”为“IP限速”、“用户限速”、“其他”、“域名限速”、“URL限速”时,支持开启域名聚合统计。
- 关闭(默认):不聚合统计所有子域名的请求。
- 开启:泛域名对应的所有子域名的请求次数合并限速(不区分访问IP)。例如,配置的泛域名为“*.a.com”,会将所有子域名(b.a.com,c.a.com等)的请求一起聚合统计。
限速条件
配置要匹配的请求特征。请求一旦命中该特征,WAF则按照配置的规则处置该请求。
- 至少需要配置一项,本条规则才能生效。配置多个条件时,需同时满足,本条规则才生效。
- 单击“添加条件”增加新的条件,最多可添加30个条件。
- 支持添加条件分组。
该功能为公测功能,需提交工单申请开通。
- 组内生效条件:命中组内其中一个条件,该组条件生效。单击“添加条件”,可增加一个组内限速条件。
- 组间生效条件:
- and分组生效:所有and分组同时生效,该组合生效。单击“添加and分组”,可增加一个and分组。
- or分组生效:其中一个分组生效,该组合即可生效。单击“添加or分组”,可增加一个or分组。
“路径”包含“/admin”
限速频率
设置单个Web访问者在限速周期内可以正常访问的次数。如果超过该访问次数,WAF将根据配置的“防护动作”进行处置。
- 次数(单位为次):数值范围为1~2,147,483,647。
- 时长(单位为秒):数值范围为1~3,600。
10次/60秒
全局计数
根据不同的限速类型,将已经标识的请求在一个或多个WAF节点上的计数聚合。“限速模式”为“源限速”时,支持开启全局计数。说明:接入模式不同,支持全局计数的情况不同:
- 云模式-CNAME接入:支持。
- 云模式-ELB接入:不支持。
- 独享模式接入:华东-上海一、华北-乌兰察布一地域可提交工单申请开通。
配置建议:
如果网站在接入WAF前,已经使用了CDN、高防等其他代理服务,WAF收到的访问IP会被分散到各个WAF节点进行流量转发,WAF默认为WAF节点单独计数。因此,WAF针对单个Web访问者的访问次数的计数会分散,所以“限速频率”中访问次数的设置原则如下:- 云模式CNAME接入:该模式支持“全局计数”,即支持将已经标识的请求在一个或多个WAF节点上的计数聚合,因此,配置时勾选“全局计数”即可。
- 独享模式:
- 一般情况下,该模式暂不支持“全局计数”,因此配置“限速频率”中访问次数应配置为允许单个Web访问者在限速周期内访问网站的次数/WAF节点数。
例如,WAF节点数(防护该网站的独享引擎实例数)为2,如果您想当单个Web访问者在限速周期内访问网站的次数不能超过1,000次,则“限速频率”中访问次数应配置为1,000除以2,即配置为500。
- 提交工单申请开通该功能后,该模式支持“全局计数”,即支持将已经标识的请求在一个或多个WAF节点上的计数聚合。在使用该功能前需注意:“全局计数”不是精确数量的限速。在某些情况下,可能会出现延迟(“全局计数”的内部计数器的更新可能要花费几秒钟)。由于这种延迟,过多的请求仍然可能在WAF引擎执行防护动作(如拦截)之前到达源站。
- 一般情况下,该模式暂不支持“全局计数”,因此配置“限速频率”中访问次数应配置为允许单个Web访问者在限速周期内访问网站的次数/WAF节点数。
防护动作
设置请求频率超过“限速频率”时要执行的处置动作:
- 拦截:请求频率超过“限速频率”时,将直接被拦截。
拦截防护动作默认“拦截方式”为“拦截时长”,且时长为0秒,“拦截页面”为“默认设置”,支持自定义拦截方式、拦截页面。
- 拦截方式
- 攻击惩罚:配置针对访问者的IP、Cookie或Params的长时间拦截规则、短时间拦截规则,使得WAF自动封禁访问者。更多信息,请参见配置攻击惩罚标准封禁访问者指定时长。
- 拦截时长(默认):配置请求在限速周期内触发限速阈值后,被封禁的时间,时长范围为0秒~65,535秒。建议配置拦截时长大于限速频率时长。
- 拦截页面
当“防护动作”选择“拦截”时,需要设置该参数,即当访问超过限速频率时,返回的错误页面。
- 默认设置(默认):返回的错误页面为系统默认的拦截页面。
- 自定义:自定义返回页面的返回码、响应标头、页面类型、页面内容。更多信息,可参考修改拦截返回页面。
- 重定向:配置防护网站的请求重定向到URL地址。
重定向URL的根域名必须和当前被防护的域名(包括泛域名)保持一致。例如,被防护的域名为www.example.com,端口为8080,则重定向URL可设置为“http://www.example.com:8080/error.html”。
- 拦截方式
- 动态拦截:如果在一个限速周期内,访问超过“限速频率”触发了拦截,那么,在下一个限速周期内,拦截阈值动态调整为“放行频率”。
动态拦截防护动作默认“放行频率”为0次,“拦截页面”为“默认设置”,支持自定义放行频率、拦截页面。
- 放行频率
- 0次:表示如果上一个限速周期发生过拦截后,下一个限速周期所有的请求都不放行。
- 自定义:数值范围小于等于“限速频率”。
- 拦截页面
当“防护动作”选择“拦截”时,需要设置该参数,即当访问超过限速频率时,返回的错误页面。
- 默认设置(默认):返回的错误页面为系统默认的拦截页面。
- 自定义:自定义返回页面的返回码、响应标头、页面类型、页面内容。更多信息,可参考修改拦截返回页面。
- 重定向:配置防护网站的请求重定向到URL地址。
重定向URL的根域名必须和当前被防护的域名(包括泛域名)保持一致。例如,被防护的域名为www.example.com,端口为8080,则重定向URL可设置为“http://www.example.com:8080/error.html”。
- 放行频率
- 人机验证:表示超过“限速频率”后弹出验证码,进行人机验证,完成验证后,请求将不受访问限制。当前人机验证仅支持英文,且仅支持静态页面防护(即暂不支持ajax,fetch等异步接口的防护能力)。
人机验证防护动作需要设置锁定验证,即当人机验证未通过时,要继续进行验证的时长。锁定验证的时间默认为0秒,支持自定义数值范围为0~3,600秒。
- 仅记录:表示超过“限速频率”将只记录不拦截。
- JS挑战:表示WAF向客户端返回一段正常浏览器可以自动执行的JavaScript代码。如果客户端正常执行了JavaScript代码,则WAF在Token有效期内放行该客户端的所有请求(不需要重复验证),否则拦截请求。
Token有效期默认为30分钟,支持自定义为60~86,400秒。
注意:- 当初始页面自动加载Ajax请求时,需要将包含这个Ajax的页面配置精准防护规则,并配置JS挑战动作,比如Ajax接口的Referer页面或/主页,防止源站JS自动触发的异步接口请求先于WAF的SDK执行,造成页面显示异常。如果静态页面不会自动触发异步接口,则无需进行该配置。
- 请求的Referer跟当前的Host不一致时,JS挑战不生效。
仅记录
生效时间
设置规则生效的时间。
- 立即生效:防护规则开启后,规则立即生效。
- 周期生效:您可以将具体某一时区的每一天的一段时间设置为防护规则的生效时间。
- 灰度生效:在指定时间段内,客户端的请求触发该规则的生效概率从0%-100% 线性增长。
- 自定义:自定义规则生效时间段。
说明:周期生效、灰度生效为公测功能,需提交工单申请开通。
立即生效
- 单击“确定”,添加的CC攻击防护规则展示在CC规则列表中。
完成以上配置后,您还可以执行以下操作:
- 查看规则状态:在防护规则列表,查看已添加的规则。此时,“规则状态”默认为“已开启”。
- 关闭规则:如果您暂时不想使该规则生效,可在目标规则“操作”列,单击“关闭”。
- 删除规则:如果您不再使用该规则,可在目标规则“操作”列,单击“删除”。
- 复制规则:在目标规则“操作”列,单击 或 ,修改或复制已添加的防护规则。
- 验证防护效果:
- 清理浏览器缓存,在浏览器中访问满足Cookie条件的“http://www.example.com/admin”页面,在60秒内刷新页面10次,正常情况下,在第11次访问该页面时,返回自定义的拦截页面;60秒后刷新目标页面,页面访问正常。
- 在“防护事件”页面,查看防护日志。
配置示例-人机验证
假如防护域名“www.example.com”已接入WAF,您可以参照以下操作步骤验证人机验证防护效果。
- 单击“CC攻击防护”配置框,确认已开启CC攻击防护规则。
:开启状态。
- 添加防护动作为“人机验证”CC防护规则。
图3 添加“人机验证”防护规则
- 清理浏览器缓存,在浏览器中访问“http://www.example.com/admin/”页面。
当您在60秒内访问页面10次,在第11次访问该页面时,页面弹出验证码。此时,您需要输入验证码才能继续访问。
图4 人机验证 - 返回Web应用防火墙管理控制台,在左侧导航树中,单击“防护事件”,进入“防护事件”页面,您可以查看该防护事件。