防不胜防――DOS攻击

/ns/wz/net/data/20011113223412.htm

原创:refdom(refdom)
来源:refdom@263.net

文:refdom (refdom@263.net)

最近《计算机世界》报道说,Cs3集团10月31日宣布,公司推出了一款能防止‘拒绝服务’攻击的网络设备--Reverse Firewall。这个设备安装在互联网及其保护的网络之间,它通过限制网络向外输出的信息量来保护系统不受‘拒绝服务’的攻击。
我们可以通过:http://www.iduba.com/secure_channel/secure_info/2001/11/05/10618.htm
查看这则新闻。

拒绝服务攻击一直是安全界迟迟没有解决的一大问题,有的专家认为是网络协议本身的安全缺陷造成的,同时,基本上所有的防火墙在解决拒绝服务攻击上都能力有限,而且很多防火墙或者入侵检测系统反而自己成了拒绝服务攻击的目标。
Cs3能够解决拒绝服务攻击,当然可以成为一则非常吸引人的消息。但是,DOS攻击真的是防不胜防,Cs3真的解决这个问题了么?

以前我写了一个非常基础的介绍DOS攻击的原理,DOS(拒绝服务)攻击即攻击者想办法让目标机器停止提供服务或资源访问,这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。从大家认可这个对拒绝服务攻击的定义,我们看出,其实对网络带宽进行的消耗性攻击只是DOS的一个小部分,只要能够对目标造成麻烦,从而使得某些服务被暂停甚至主机当机,都是DOS。

首先我们来看看通过消耗网络带宽实施的拒绝服务攻击,这种DOS攻击实质上就是两个方式:
一,迫使服务器的缓冲区满,不接收新的请求。
二,使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接

1、SYN FLOOD
利用服务器的连接缓冲区(Backlog Queue),利用特殊的程序,设置TCP的Header,向服务器端不断地成倍发送只有SYN标志的TCP连接请求。当服务器接收的时候,都认为是没有建立起来的连接请求,于是为这些请求建立会话,排到缓冲区队列中。
如果你的SYN请求超过了服务器能容纳的限度,缓冲区队列满,那么服务器就不再接收新的请求了。其他合法用户的连接都被拒绝掉。可以持续你的SYN请求发送,直到缓冲区中都是你的只有SYN标记的请求。
现在有很多实施SYN FLOOD的工具,呵呵,自己找去吧。

2、IP欺骗DOS攻击
这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。
攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。

3、带宽DOS攻击
如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。

4、自身消耗的DOS攻击
这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。
这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。

上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。其实这种消耗性的拒绝服务攻击本身就是非常难对付的,理论上这是没有办法克服的安全问题,任何主机的网络资源都是有限的,只要这些有限的资源被消耗掉,总是能够造成网络堵塞,正常访问要么速度缓慢,要么根本就没有办法访问。

让我们看看Cs3吹嘘的设备“Reverse Firewall”,报道中是这样描述的:通过Cs3的‘公平服务安排’技术来实现这一目的。该技术是把带宽平均分配给所有的出口联结,而不是让一个联结占据了所有的信息输出,而且该技术还优先进行双向连接。即优先允许数据在两台电脑间传输,而不是让数据单向流动。当发现过量的信息输出时,该设备就会通知系统管理员,从而帮助系统管理员识别出攻击及用来进行攻击的机器。

这就是用来对付我上面说的消耗带宽的拒绝服务攻击,但是,你仔细看,可以发现,Cs3的设备是牺牲新访问保全已连接的访问来达到保护自己的目的。“优先允许数据在两台电脑间传输”,就是对已经连接并正常访问的用户实施保护,继续维持他们的连接,但是对于新用户访问来说,就没有办法了,因为消耗带宽实施的攻击一定是制造很多的新用户来的。

我们可以制造变化多端的方式来实施拒绝服务。看看到底Cs3能不能防。

5、利用服务漏洞
很多软件或者服务都能被造成拒绝服务,比如,最近的UPnP 拒绝服务漏洞。这样的拒绝服务漏洞,很容易造成主机内存消耗、CPU消耗,轻则速度缓慢,重则当机。

6、日志DOS
不管是什么,防火墙也好、系统本身也好,为了安全就必须记录日志。既然你要记录日志,哈哈,我们就让你记录个够。可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。哈哈,日志开始拒绝服务啦。

7、塞垃圾邮件
发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。如果这样,那么邮件不是就拒绝服务了么?

8、塞满硬盘
通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如:向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。硬盘塞满了,看这么办。

9、合理利用策略
一般服务器都有关于帐户锁定的安全策略,比如,某个帐户连续3次登陆失败,那么这个帐号将被锁定。这点也可以被破坏者利用,他们伪装一个帐号去错误登陆,这样使得这个帐号被锁定,而正常的合法用户就不能使用这个帐号去登陆系统了。登录开始拒绝服务啦。

其实拒绝服务真的很难对付,还有很多其他的办法可以满足拒绝服务的需要。就是一个思想“有限的资源就只能提供有限访问”。希望安全专家真能从根本上解决这个大问题。

限于本人的水平,文中难免有错误,希望指正交流。联系refdom@263.net