English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 威盾新闻 >> ClearDDoS之防御CC攻击小技巧

 

ClearDDoS之防御CC攻击小技巧

威盾防火墙 2014-11-21

 
前置知识:ASP基本阅读能力
  小编认为很多朋友都知道所谓的木桶理论,就是一桶水的最大容量不是由它最高的地方决定的,而是由它最低的地方决定,这个理论同样可以应用在服务器也是一样,所谓服务器的安全性也是由它最为脆弱的地方所决定的,我们都知道最脆弱的地方是要有多危险服务器就有多危险。同上理论DDOS也是一样,只要你的服务器有存在一个很耗资源的地方,仅仅只是有一个哦,然后限制又不够的话,就会马上成为别人DDOS攻击的对象.例如SYN-FLOOD,这种攻击它就是利用服务器的半连接状态比完全连接状态还更耗资源的缺陷,而SYN发动方只是需要不停的发包,这是根本不需要多少资源,就可以轻松达到目的。


  众所周知成为一个好的DDOS攻击必须是要通过自己极少资源的消耗带来给对方更大的资源消耗,否则根本起不了什么大的效果,比如ICMP-FLOOD和UDP-FLOOD都必须和受攻击方一样大的带宽,而且对方服务器消耗多少资源自己也得赔上多少资源,这种效率不仅极其低下,而且又很容易被人发现,所有现在聪明的DDOS攻击方基本没有什么人用了。


  小编说到这里就不得不提起一个经典案例了。


蝴蝶:据新闻报道在2007年11月份的时候上海的一家游戏娱乐公司的网站突然遭到了基于页面请求的DDOS分布式拒绝服务攻击,顿时让网站陷入完全瘫痪状态,而且还被黑客的匿名信所勒索,其勒索金额高达10万元,而且在勒索过程中,这群猖狂的黑客还暗示会对公众的腾讯QQ等网站下手,随后QQ“服务器维护”几天.然而接下来在12月5号的时候,全球BitTorrent服务器居然也受到了很强烈的DDOS攻击,曾一度陷入瘫痪状态。而在DDOS攻击中最流行的并且也是威力最大的就是基于页面的DDOS以及将这个DDOS攻击理论发挥得淋漓尽致的攻击工具CC,特此本文特邀CC作者和我们共同了解分享CC的相关攻击原理和防范技巧,小编希望能让更多有接触服务器这方面的朋友了解这样的攻击方式并能防范它。我们都听过DDOS攻击,CC攻击,那么大家可知道这些攻击是如何开展的,它的攻击原理又是什么呢?现在和小编一起来了解什么是攻击原理吧!


攻击原理
  所谓CC攻击最主要就是用来攻击页面的.我想大家都有过这样的经历,我们在访问论坛时,假如这个论坛比较大,并且访问的人比较多,那么我们打开页面的速度会比较慢,这种情况我们应该经常遇到吧!一般来说,网站访问的人数越多,就会导致论坛的页面越多,从而使得数据库就越大,所有被访问的频率也越高,自然占用的系统资源也就相当可观,所有我们现在知道为什么很多空间服务商都建议大家不要上传论坛,聊天室等这些东西了吧,也是有一定的依据的。


  小编了解到一个静态页面是不需要服务器多少资源,甚至我们还可以说直接从内存中读出数据发给你就可以了,但是所谓的论坛就不一样了,小编曾看一个帖子,系统就需要到数据库中判断我是否有权限可以读帖子,如果有,那么就读出帖子里面的内容,显示出来——这里至少访问了2次以上数据库,但是如果数据库的体积有200MB大小,那么系统很可能需要要在这200MB大小的数据空间搜索一遍,那么这需要多少的CPU资源和时间?如果我是查找一个关键字,我想时间更加可观,因为这样的搜索可以限定在一个很小的范围内,比如用户的权限只查用户表,帖子内容只查帖子表,而且如果查到就可以马上停止查询,然而搜索肯定会对所有的数据进行一次判断,这样消耗的时间是相当的大。


  所有CC攻击就是充分利用了这个优势特点,并且模拟多个用户(这里说的是多少线程就是多少用户)不停的进行访问(而且还是访问那些需要大量数据操作,因为就是需要大量CPU时间的页面)。所以有很多朋友问到,这样为什么要使用代理呢?但是很多人不知道代理的好处,因为代理可以有效地隐藏自己的身份,当然也可以绕开所有的防火墙,因为我们可以认为基本上所有的防火墙都会自动检测并发的TCP/IP连接数目,而且超过一定数目一定频率就会被认为是Connection-Flood。


  所以使用代理攻击的另一个优势就是很好的保持连接,我们这里只需要发送了数据,代理自动帮我们转发给对方服务器,这样我们就可以马上断开,但是那边的代理还会继续保持着和对方连接(我知道的记录是有人利用2000个代理产生了35万并发连接)。


  这样讲可能很多朋友还不能很好的理解,那么小编我来详细的给小伙伴们描述一下吧!我们假设服务器A要对Search.asp的处理时间需要0.01S(多线程只是时间分割,对结论没有影响),那么也就是说他只需要一秒可以保证100个用户的Search请求,而且服务器允许的最大连接时间为60s,那么我们这会使用CC模拟120个用户并发连接,那么就是经过1分钟。


  假如服务器的被请求了7200次,而且处理了6000次,那么于是剩下了1200个并发连接就没有被处理。也许有的朋友会讲:丢连接!丢连接!但是问题是服务器也是按先来后到的顺序丢的,这1200个请求是在最后10秒的时候发起的,我们想丢?为时过早呢,经过计算,服务器满负开始丢连接的时候,应该是有7200个请求并发连接存在队列状态,然后服务器会开始120个/秒的丢连接,并且我们发动的连接也是120个/秒,那么服务器永远有处理不完的连接,服务器的CPU 100%的状态长时间保持,最后连丢连接的60秒服务器也判断处理不过来了,而且新的连接也处理不了,所以这样状态服务器就达到了超级繁忙状态,也就是所谓的服务器瘫痪。


  蝴蝶:我们假设服务器处理Search的时间是只用了0.01S,那么也就是10毫秒(这个速度有时间你可以去各个有开放时间显示的论坛看看),而且我们使用的线程也只有120,但是很多服务器的丢连接时间远比60S长,如果我们的使用线程远比120更多,那么我们就可以想象后果的可怕了吧,而且客户机即使只要发送了断开,那么连接的保持就是代理做的,而且当连接的服务器收到SQL请求,这时候肯定会进入队列,所以结论就是不论连接是否已经断开,服务器都是并发的,而不是不是顺序执行,这样的方式使得更多的请求可以进入内存请求,这样就会导致对服务器负担更大,从而让服务器负荷不了,陷入瘫痪状态。


  当然,CC攻击的这种方式并不是只针对特定的,也可以利用这里方法对FTP进行攻击,也可以实现TCP-FLOOD,这些结论都是经过测试可以达到有效的目的。


  那么我们在了解了DDOS的攻击原理后,相信大家心中对CC攻击也有个概念了吧!既然这种攻击如此的肆意虐为,那么我们也不可以坐以待毙,我们应该采取有效的防护措施来抵御DDOS攻击对我们造成的危害,接下来小编给大家整理了一些防范的小技巧,希望能够帮助到小伙伴们。


防范小技巧
  在上文我们说了DDOS攻击原理,那么大家肯定会问,我们应该怎么有效的防御?如果使用硬件防火墙我不知道如何防范,除非你完全屏蔽页面访问,所以我的方法是通过页面的编写实现高效的防御目的。


1. 我们要使用Cookie认证.这时候朋友说CC里面也允许Cookie,但是我们这里的Cookie是可以设置为所有连接都使用的,所以只要启用IP+Cookie认证就可以了。
2. 我们可以利用Session。相对来说这个判断比Cookie更加方便,不仅仅是可以IP认证,还可以防御刷新模式,在页面里判断刷新,如果是刷新就不让它访问,如果是没有刷新符号给它刷新符号.给些示范代码吧,Session:


程序代码:
<%
if session(“refresh”)〈〉 1 then
Session(“refresh”)=session(“refresh”)+1
Response.redirect “index.asp”
End if
%>


  这样用户第一次访问会使得Refresh=1,第二次访问,正常,第三次,不让他访问了,系统会认为是刷新,这时候就可以加上一个时间参数,限制多少时间允许访问,这样就限制了耗时间的页面的访问,并且这种做法对正常客户几乎没有什么影响。


3. 我们还可以通过代理发送的HTTP_X_FORWARDED_FOR变量从而来判断使用代理攻击机器是否是真实IP,这种方法完全可以找到发动攻击的人,当然,并不是所有的代理服务器都可以发送,但是有很多代理都发送这个参数.详细代码:


程序代码:
<%
Dim fsoObject
Dim tsObject
dim file
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
response.write "无代理访问"
response.end
end if
Set fsoObject = Server.CreateObject("Scripting.FileSystemObject")
file = server.mappath("CCLog.txt")
if not fsoObject.fileexists(file) then
fsoObject.createtextfile file,true,false
end if
set tsObject = fsoObject.OpenTextFile(file,8)
tsObject.Writeline Request.ServerVariables("HTTP_X_FORWARDED_FOR")
&"["&Request.ServerVariables("REMOTE_ADDR")&"]"&now()
Set fsoObject = Nothing
Set tsObject = Nothing
response.write "有代理访问"
%>


  这样的方式会生成CCLog.txt,并且它的记录格式是:真实IP [代理的IP] 时间,我们可以看看哪个真实IP出现的次数多,这样我们就知道是谁在攻击了.将这个代码可以做成Conn.asp文件,从而替代那些连接数据库的文件,这样所有的数据库请求就连接到我们建立的这个文件上,然后马上就能发现攻击的人。


4. 另外还有一个方法就是我们把需要对数据查询的语句做在Redirect后面,必须先让对方访问一个判断页面,然后Redirect过去。


5. 我们可以将存在多站的服务器上,严格限制每一个站允许的IP连接数和限制CPU使用时间,这是一个很有效的方法。


  CC攻击的防御要从代码做起,其实要做好一个好的页面代码都应该注意这些东西,还有SQL注入,这不仅仅是一个入侵工具,更是一个DDOS缺口,大家都应该在代码中注意.举个例子吧,某服务器,开动了5000线的CC攻击,但是没有一点反应,这种情况因为它所有的访问数据库请求都必须将一个随机参数在Session里面,全是静态页面,没有效果.突然发现它有一个请求会和外面的服务器联系获得,不过需要较长的时间,而且没有什么认证,如果开800线的CC攻击,服务器马上满负荷了。


  代码层的CC攻击防御需要我们从点点滴滴做起,如果一个脚本代码的错误,将可能带来的是对整个网站的影响,甚至是导致整个服务器的影响,我们应该谨慎小心的对待。

相关内容: 最新内容:
十种网络攻击行为介绍 您能顶住几个?[2014-11-21]
网站防CC攻击方案-威盾IIS防火墙[2014-11-20]
防止SQL注入攻击的一些方法小结[2014-11-20]
六大方法和技巧 有效防范黑客入侵攻击[2014-11-20]
防范黑客网页攻击黑手 我有绝招[2014-11-20]
黑客老鸟讲入侵攻击:黑客入侵前的信息收集[2014-11-20]
网站防黑客专家-威盾防火墙[2014-11-21]
webshell低权限重启服务器的另类方法[2014-11-21]
最经典的黑客入门教程(必备技能)[2014-11-21]
整人用的一个邪恶电脑重启病毒[2014-11-21]
网页挂马方法和技巧大汇总[2014-11-21]
十种网络攻击行为介绍 您能顶住几个?[2014-11-21]