您当前的位置:首页 > 其他技术 > 系统技术

DDoS的监测以及防御

本文出处:网游动力作者:本站发布时间:2009-01-20阅读次数:
一、DoS/DDoS的介绍

1、什么是拒绝服务攻击(DoS)

DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求就无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。

2、什么是分布式拒绝服务攻击(DDoS)

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多台傀儡机联合起来作为攻击平台(傀儡机,一般为黑客所控制的“肉鸡”),对一个或多个目标发动DoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者通过入侵一台服务器,在得到该服务器一定的权限以后,将DDoS主控程序安装在这台服务器上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在黑客所控制的许多服务器上(包括通过其他途径获取的大量个人PC)。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。 

[img]/article/UploadPic/2009-1/200912010571141460.jpg[/img]
黑客通过控制傀儡机中的某一台(或他自己的计算机,为安全起见,一般他会选择一台傀儡机来控制其他的傀儡机),再利用这台傀儡机来指挥其余的傀儡机向目标服务器发动攻击。当然,这只是一个简单的示意图,还可以把上图想得更加复杂:黑客控制手中的十台、二十台傀儡机,再分别通过被这十台、二十台中的傀儡机去控制成千、上万乃至数十万的傀儡机对目标发动毁灭性的攻击。

打个形象而又不太恰当的比喻:两个人打架,其中某一个人对付不了对方,于是他把他的朋友全都叫来,多个对付一个,一个人面对那么多个人,你怎么也对付不了。

拒绝服务就是用超出被攻击目标处理能力的海量数据包消耗可用系统,带宽资源,致使正常的网络服务瘫痪的一种攻击手段。拒绝服务攻击采用的是单一的一对一的攻击手段,当CPU处理速度低、内存小及网络带宽小等,拒绝服务攻击的效果就很明显。

但是,随着互联网技术及硬件技术的飞速发展,现在的带宽都是以百兆、千兆为单位来计算,CPU多数亦是双核或四核的,内存现在也可以说是白菜价了。在这种环境下,使得拒绝服务的攻击的困难程度就加大了。

这样,分布式拒绝服务(DDoS)攻击就出现了。如果你理解了拒绝服务(DoS)攻击的话,在它的基础上,分布式拒绝服务攻击就不难理解了。如果说计算机与网络的处理攻击的能力加大了10倍,用一台傀儡机来攻击不再能起作用的话,攻击者使用10台傀儡机同时攻击呢?用100台呢?DDoS就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。
二、DoS/DDoS攻击的现象

那么,服务器被DoS/DDoS攻击会是怎样的现象呢?

1、被攻击主机上有大量等待的TCP连接;

2、网络中充斥着大量的无用的数据包,源地址为假地址或私网中才可能出现的地址;

3、制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯;

4、利用受害主机提供的服务或传输协议上的缺陷,反复高速的发出特定的服务请求,使受害主机无法及时处理所有正常请求;

5、严重时会造成系统运行缓慢或假死、甚至死机;

三、DoS/DdoS攻击的类型:

1、Synflood:该攻击以多个随机的源主机地址向目的主机发送SYN包,而在收到目的主机的SYN ACK后并不回应,这样,目的主机就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗而不能向正常请求提供服务。

2、Smurf:该攻击向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使该主机受到攻击。

3、Land-based:攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击主机,这种包可以造成被攻击主机因试图与自己建立连接而陷入死循环,从而很大程度地降低了系统性能。

4、Ping of Death:根据TCP/IP的规范,一个包的长度最大为65536字节。尽管一个包的长度不能超过65536字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于65536字节的包时,就是受到了Ping of Death攻击,该攻击会造成主机的宕机。

5、Teardrop:IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。

6、PingSweep:使用ICMP Echo轮询多个主机。

7、Pingflood:该攻击在短时间内向目的主机发送大量ping包,造成网络堵塞或主机资源耗尽。

四、如何防御DoS/DdoS攻击

当某一天,你登陆服务器时,感觉服务器运行缓慢,甚至是根本就远程连接不上,数据中心机房工作人员通知你服务器流量非常大。这时候,你得分析是不是一定是受到了DoS/DDoS攻击。

以上讲了很多理论性的东西,各位看官可能还不一定都“消化”了。

那么在此告诉你们一条简单且易懂的命令就可以判定服务器是否真的受到了DoS/DdoS攻击:

在命令提示符下执行netstat –an,查看当前服务器对外的所有连接,如果发现有大量的SYN_RECEIVED、TIME_WAIT、FIN_WAIT_1等状态存在,而ESTABLISHED很少,则可判定肯定是遭受了资源耗尽攻击。

如果你的服务器托管在一家比较有条件的数据中心机房里,同时这一家公司又有抗DoS/DdoS攻击设备,不过据我所知,目前市面上大部分数据中心机房里的抗DoS/DDoS攻击设备不是无偿使用的。

具体怎么得到抗DoS/DDoS攻击设备在此不详细描述,可能是用数据中心机房的设备,有条件的单位也可以自己购买设备。

这种方法只能够抵抗一小部分的攻击,由于DoS/DDoS攻击的类型很多,加上新的变种攻击手段也层出不穷。

当你的抗DoS/DDoS攻击设备无法识别那些新的DoS/DDoS攻击,或由于攻击力度太大,抗DoS/DdoS攻击设备自身已经无法正常影响了,甚至攻击的带宽已经远远超出数据中心机房出口的总带宽,这时候安装什么抗攻击设备都是无能为力的。

相信你理解了Dos/DDoS攻击的真正含义后,你应该会明白我说那句话的意思。

这个时候你得让数据中心机房通知上级ISP运营商,在他们上级路由上将你的服务器IP地址临时过滤掉。并且你需要与数据中心机房实时保持联系,让他们及时在上级ISP运营商那里得到最新的消息,以便第一时间内将你服务器IP地址予以解封。