为什么难以跟踪?
Yahoo等网站被黑客利用DDoS技术攻击后,很难跟踪到攻击的来源。为什么?不是每个攻击的数据包都有IP地址显示出数据包的来源吗?
这是因为入侵者使用了一种叫"伪IP(IP spoofing)"的技术,这也是当前Internet的一个缺陷。让我来解释一下:当计算机之间相互通信时,会将信息打成"包",每一个包中都包含源IP地址和目的IP地址。当这样的数据包在Internet 中传递的时候,首先会遇到最近的一个路由器。通常此路由器是此局域网与Internet的连接处,这种路由器叫边界路由器。(当然,在大公司中的情况可能复杂得多,会由多个局域网构成)。当数据包到达边界路由器后,再由此路由器传递到上一级核心路由器上,这个路由器可能位于主干网上,连接着所有其它的核心路由器。数据包在路由器之间传递,直到目的地址为止。在每次传递时,源IP目的地址通常被路由器忽略,仅仅是保留在数据包中不作处理,路由器只关心数据的目的地址,就好象邮递员只关心收件人地址一样。但因为这样,才产生了现在面临的问题。
所有的DDoS攻击,都使用伪IP.收到此数据包的第一个边界路由器能够很容易发现这个问题,因为它知道和它连接的网络地址,以便将进来的数据包分发给局域网内的机器,因此它也能发现从它这出去的数据包是不是用了非局域网内的地址。可是,大多数的边界路由器并不进行此项检查。 而一旦装有伪IP的数据包通过了第一个路由器,那么以后,这个谎话永远也不会有人发现了。因此说,每一个边界路由器都对出去的数据包进行IP 地址的效验,防止IP Spoofing是解决DDoS问题最根本的方案。
让我们从被攻击对象的角度来看看吧,当你发现自己的服务器出现问题的时候,正有成千上万的数据包同时从世界各地的网点向你涌来,不久你会发现你的路由器崩溃了,接着会发现你的服务器已经不堪重负。你想看看到底出了什么事,捕获到其中的一个数据包,打开一看:上面除了把你的IP地址当作目的地址外,还有任意的一个IP地址作为源地址(这个地址也许根本就不存在)你都不知道这个数据包是从哪儿发给你的。用最底层的工具查看一下数据包硬件地址(MAC)吧,在数据包中只有上一级的路由器的硬件地址。
怎样发现自己被攻击
怎样确定自己的网站真的遭受到DDoS的攻击呢?通常来说,突然出现大量的数据包,服务器突然超负载运作,性能突然降低,这些都有可能是受攻击的征兆,但是也有可能是网站遇上了正常情况下的使用高峰。检查一下来往的数据包,如果都是正常的服务连接和应答,那么你的网站应该升级扩容,或是提高网络服务器的性能,增加新的设备。但如果出现以下几类情况,那么你就可以断定是遭到了DDoS的攻击。
1. 网站的数据流量突然超出平常的十几倍甚至上百倍,而且,同时到达网站的数据包分别来自大量不同的网站。
2. 大量到达的数据包(包括TCP包和UDP包)并不是网站服务连接的一部分,往往指向你机器任意的端口。比如:你的网站是Web服务器,而数据包却直奔你的FTP端口和其它任意的端口,那么你正在被攻击。
顺便提一句,有很多工具都可以用来分析数据包的结构,如TCPDUMP(数据包头分析工具)是我最常用的。
被攻击以后怎么办
如果发现自己的网站正遭受DDoS的攻击,那么应该立即采取以下措施:首先是尽可能保护网站的服务器,主要是防火墙以外的服务器,因为它最容易遭到攻击。尽可能关闭不必要的服务,减轻服务器的负担;增加数据包过滤器,限制进出的数据流量。若实在不行,减少服务器可连接的通道数量,牺牲一些性能来保住服务器。如果DDoS的攻击耗尽了你网站的带宽资源的话,实际上已经没有什么事情可做了,认栽吧,你的服务器已经终止服务了。这时你应该加大防火墙的阻塞力度,限制通过防火墙的流量,以保护你防火墙内部的服务器免受伤害。
要想使你的网站恢复正常工作的话,只有一条路,那就是找到攻击你网站的攻击点机器和控制点机器,让它们停止攻击。记住,这些机器不是元凶,它们只不过是别人手中的武器,它们自己丝毫不知道自己在攻击你,因此在找到这些机器以后,需要和这些机器的管理员合作,才能解决问题,合作是唯一的方法。 怎样才能找到那些攻击的机器呢?攻击所用的数据包使用了伪IP,直接找是不可能的,但每个数据包中都有上一级路由器的物理地址,你能够定位攻击的数据包要通过的上一级路由器。然后通过你的ISP,或通过你的上一级部门,或是网络中心与此路由器所在单位联系,请他们一起合作一步一步住上查,直到定位到进行攻击的机器为止,再与此机器的单位一起合作,查出机器中所带的攻击程序,才能消除对你的攻击。
可是,对网站进行攻击的机器也许有成千上万台,这样一台一台地找,工作量太大,短时间内无法完成。要尽快恢复被攻击网站的服务,最聪明的办法是先找到一些控制点的机器,因为这些机器控制着下层大量的机器,如果这些机器被你查到,它们再也发不出攻击的信号,那么,攻击点的机器所进行的攻击也不会持续很久,群龙无首,剩下的不过是一些乌合之众罢了。只有这样,才能迅速缓解攻击的强度。
除此之外,还应注意以下事项:
1. 很好地记录下每一步分析的过程和结果。
2. 攻击发生以后,最好先与你的网站供应商和你的上级部门联系,因为他们的规模比你大,有更多分析和解决问题的能力,能更快地发现攻击的源头,至少他们能在更宽的网络管道上过滤数据包,减轻你网站的压力。
使自己不要成为帮凶如何使自己的机器不成为帮凶呢?只有使你的机器更加安全。从DDoS攻击反映出来的问题来看,自己的主机如果不安全,不仅危害了自己,还危害了别人。
首先,应该经常修补系统的Bug和漏洞,经常查询最新的安全信息,仔细地规划安全方案,管理好自己的用户。特别是管理好边界路由器的入口和出口,对出口的数据包进行检查,防止伪IP的出现,这是解决DDoS的关键。另外,也要注意不要滥用"直接广播"等耗费资源较大的协议。保持系统的安全是一个长期的过程,也是必不可少的工作。
后话
虽然在Yahoo等著名网站遭到攻击的时候,国内很少有站点同时被攻击,但这并不能说明这是我国网络的安全性很好。从发展的角度看,我国的Internet大有市场,不少企业相当有实力,发展速度极快,因此一定要把网络安全放在非常重要的位置上。从DDoS攻击的教训看,Internet是个大家庭,无论谁得了病,其他人都会遭殃,因此,怎样才能保持Internet总体上的安全性,这不仅仅是个技术问题,还可能是个社会问题。