帮助与文档

您的位置  :  

防火墙、CDN、WAF等防CC攻击的几种方式

文字出处:未知  |  作者:admin  |  发布时间:2021-04-09 21:02

  一,防御方式

  1)JavaScript方式输出入口

  演示可以看下面这张图:

  

 

  第一次访问的时候,不是直接返回网页内容,而且返回这段JS程序。

  作用就是计算出入口变量的值,然后在访问的网址后面加上类似于”?jdfwkey=hj67l9″的字串,组合成新的网址,然后跳转,当防火墙验证了jdfwkey的值(hj67l9)是正确的之后

  ,就放行,一段时间内就不会再出这个判断程序的页面。

  2)301或者302转向方式输出入口

  原理和1类似,区别在于把入口直接输出在了HTTP头部信息里,不重复叙述了。   2.5)还有一些把入口通过其他方式输出的,比如cookie,类似于1和2,原理都是在第一次访问的时候设置一道槛。这个就不单独计算为一条了。

  3)屏蔽代理

  由于一部分的CC攻击是利用代理服务器发起的,所以有些时候防CC会屏蔽掉带x-forward-for这个值的IP,对匿名代理无效。

  4)判断速率

  由于CC攻击是持续的发起请求,所以发起攻击的IP在单位时间内的请求数量会明显比正常多出很多,通过把请求频率过高的IP屏蔽掉来防御。

  5)验证码

  这个基本是最后的无敌大招了,必须在用户输入验证码后才能访问。

  二,防御效果(突破方式)

  1中的防护方式用的最早并且用的最多的是金盾防火墙。也正是由于用的人太多了,市面上已经有突破金盾防火墙的软件在出售,原理就是通过JS解析引擎计算出jdfwkey的值。   突破2的方式更简单,和1差不多,只不过是直接在HTTP头中,连JS引擎都省了。   3无法硬性突破,也就是说,如果屏蔽了带x-forward-for的IP,那么它就不可能访问到。   突破4的方式就是限制请求速度,但是这对于攻击者是一个挑战,限制单个攻击源的请求速度,并且保证攻击效果,这就要求攻击者拥有更多倍的攻击源(肉鸡)。   对于5,验证码识别是个大话题,目前阶段几乎不可能应用到CC攻击中,未来也不太可能。但是网络上有很多的打码平台,如果和这些平台对接的话,人工识别验证码,就OVER了(应该不会有人去搞,太麻烦)。   对于所有的防护方式,如果是把网站域名解析到了别处,通过其他机器转发请求来防御CC攻击流量的(比如CDN),都可以通过添加HOST值的方式将流量发到真实机器上,使这些防护失效。找查网站真实IP的方法很多很复杂,不能保证100%都能找得到,本文不做叙述。

  三,负作用

  有些IP,我们会要求它一直可以访问到网站内容,比如蜘蛛,比如交易类网站的支付宝异步通知。

  但是收集这些IP,几乎是无法100%准确的收集到的(可能有人会想到useragent,一句话:攻击者可以伪造)。

  下面要讲的,就不再考虑上述的这个问题了。

  对于1和2,对访客几乎不会造成影响,判断过程是由浏览器自动完成的。

  对于3,由于个别的网络环境,在没有使用代理的情况下,也会在浏览器访问时强行加上x-forward-for的值,最终的导致的就是这个访问无法访问。其实在现在这个年代,除了CC攻击中使用的代理IP外,剩的带x-forward-for的IP,几乎都是这样的情况,也就是访客本地网络环境强加上的。

  早些年设置代理主要是因为那个时候网速差,用于提高速度。现在搬梯子时设置的SSH代理一般不会加上x-forward-for。   对于4,可能会造成误封。而且这个判断攻击的阀值也没法精确的设置,只能凭经验以及分析网站的具体情况。   对于5,对用户体验会产生影响,并且长期下去,对网站形象也会产生影响。   总结下来就是,几乎所有方式,都会产生或多或少的负作用,所以,任何一种防护方式,在没事的时候不要开,只在被攻击的时候开启。

  四,什么样的网站容易被CC攻击

  在我处理过的CC攻击中,主要消耗的是CPU和内存,通常在带宽被占满前CPU和内存已经爆掉。   而对于静态网站,也就是生成HTML页面的网站,静态请求占用的CPU和内存是极低的,所以几乎不太可能出现生成HTML后被CC攻击挂掉的情况。   所以,被CC的主要都是动态网站,比如Discuz,Wordpress等。

  五,都是什么人在攻击

  1)无聊恶作剧   2)打击报复   3)敲诈勒索   4)同行恶意竞争