CC规则

CC规则

极速云的防cc规则主要由三部分组成匹配器,过滤器,动作

匹配器:用来匹配用户的请求,可以匹配用户IP,Host,req_uri(带参数),uri(不带参数),user_agent和referer。一个匹配器可以有多个匹配项,添加多个匹配项时,此匹配器所有的匹配项都满足时,这个匹配器才为真。如果匹配了请求,就使用下面的过滤器来对请求进行验证

过滤器:用来对客户请求进行验证,比如统计请求数是否超限,是否输入对验证码,是否跳转到正确的URL等,如果验证次数超过指定次数,那么就执行下面指定的动作来拦截

动作:当请求无法通过过滤器时,执行相应的动作


匹配器

匹配器由匹配项,操作符,匹配值组成。比如匹配项是IP,操作符是=,匹配值是192.168.0.1,表示客户端IP是192.168.0.1才算匹配

匹配项

6-1.png

ip:客户端IP地址

host:客户请求的域名

req_uri:保留参数的url,如原始123.php?a=1,经处理,还是123.php?a=1;或者123.php,经处理还是123.php

uri:去除参数的url,如原始123.php?a=1,经处理变成123.php;或者123.php,经处理还是123.php

user_agent:浏览器名称,如Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36

referer:请求url的来源

content_type:客户请求url返回内容的类型;由于需要请求一次,才知道内容类型,所以当一个url第一次请求时,这个的值将为空,第二次才会有具体的类型值。如首次请求1.html,content_type值为空,第二次请求时,content_type为text/html; charset=UTF-8

country_iso_code:由于两位字母表示某个国家的客户,比如CN表示在中国网络下请求网站的客户,完整的国家代码列表https://www.iban.com/country-codes


操作符

6-2.png

=:全匹配,比如匹配项是user_agent(Chrome/83.0.4103.116),操作符是=,匹配值为Chrome,这样是不匹配的,只有匹配值完全等于匹配项的值Chrome/83.0.4103.116时,才算匹配

!=:全匹配取反

contain:是否包含某个字符串,比如匹配项是user_agent(Chrome/83.0.4103.116),操作符是contain,匹配值为Chrome,这样是匹配的

!contain:contain取反

AC:Aho-Corasick算法匹配,简称AC,可以同时对多个值进行匹配,任意一个值匹配成功就算匹配了。多个值以逗号分隔,如匹配项为ip,操作符为AC,匹配值192.168.0.1,192.168.0.2,表示匹配客户端的IP是否为192.168.0.1或者192.168.0.2,如果是其中一个,就算匹配了

!AC:AC取反


过滤器

6-3.png

请求速率:限制客户在一定时间内的总请求次数。可以限制总的URL请求数,也可以限制同一个URL累积的请求数

6-4.png

302跳转:客户请求稳坚盾节点时,节点会302返回一个url,客户跟随访问这个URL才算验证通过,否则算失败

浏览器识别:客户请求稳坚盾节点时,节点返回一段带跳转功能的js代码,客户跟随访问这个URL才算验证通过,否则算失败

滑动验证:客户请求稳坚盾节点时,节点返回一个滑动条,客户需要拖动滑动条才算验证通过,否则算失败

验证码:客户请求稳坚盾节点时,节点返回一个验证码,客户需要输入正确的验证码提交才算验证通过,否则算失败

URL鉴权:url鉴权过滤器适用时API类防cc攻击。需要与客户端配合,cdn定义一个密钥,客户端md5如uri,时间戳,随机数,密钥,得出的值传给cdn验证,验证失败到一定次数将拉黑这个IP。URL鉴权提供两种鉴权方式,A和B

               方式A: URL格式为http://DomainName/FileName?sign=md5hash&t=timestamp,timestamp为当前时间戳,如1598342331,md5hash为md5(密钥+uri+时间戳),其中密钥为在cdn定义好的密钥,uri为不带参数的路径,如/FileName,时间戳为1598342331,方式A的设置如下

6-5.png

n秒内,最大失败次数:即如果在60秒内,验证失败超过5次的话,拉黑IP

               鉴权方式:这里选TypeA

               密钥:与其它数据一起md5得到的hash,客户端同样使用这里定义的密钥来md5

               签名参数名:默认为sign

               时间戳参数名:默认t

               最大时间相差(秒):允许上下相关多少秒,超过此范围签名认为无效

               签名使用次数:带同一个签名的url允许访问的次数,0为不限制,越过限制则拉黑IP

               方式B: URL格式为http://DomainName/Filename?sign=timestamp-rand-uid-md5hash,timestamp为当前时间戳,如1598342331,rand为随机字符串,uid用户id暂时不用,设置为0,md5hash为md5(uri-时间戳-随机数-uid-密钥),方式B设置如下

6-6.png

方式B与方式A的设置不一样的方式在于,方式B不需要传时间戳的参数,因为已经包括在签名参数里了。其中的设置与方式A一样

点击验证:待开发


规则

规则由匹配器,过滤器,动作组成

6-7.png

这里需要说明的是可以指定一个或两个过滤器

               当指定一个过滤器时,当这个过滤器验证失败时,直接执行动作

               当指定两个过滤器时,即指定过滤器1和过滤器2,那么当过滤器1验证失败,这时还不会执行动作,而是继续使用过滤器2验证,只有当两个过滤器都验证失败时,才执行动作。这样可以有效减少误封,比如过滤器1使用请求频率,过滤器2使用滑动验证,这样可以防止误封请求量比较大的客户


规则组

一个或多个规则组成一个,网站就是绑定的规则组