防火墙、CDN、WAF等防御CC攻击的几种方式 - DDOS - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > 服务器安全 > DDOS

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

发布时间:2017-01-12 来源:服务器之家

一,防御方式
1)JavaScript方式输出入口
演示可以看下面这张图:
防火墙 - Copy
第一次访问的时候,不是直接返回网页内容,而且返回这段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)同行恶意竞争

六,尾声
今天遇到的一起攻击事件,某网站被敲诈1万块(也就是前文中的截图,网站有金盾防护,但是被肉鸡穿透)。于是理了理思绪,写下了这些经验之谈,与大家分享。