电子商务网站安全中的DDoS攻防博弈
2009-03-14何培源
何培源
摘要:文章对现今电子商务网站所面临的最具威胁性的攻击——分布式拒绝服务(DDoS)攻击的攻击机理作了较为详细的分析,并分析了针对DDoS攻击的不同攻击子类的特点及采取的应对防范措施,从而降低被攻击方受攻击后的损害程度。最后揭示了想要将DDoS攻击发生的可能性降到最低的一切防范措施的根本特性——社会性。
关键词:电子商务;DDoS攻击;网络安全;入侵检测;入侵防御
中图分类号:TP391文献标识码:A文章编号:1002-3100(2009)01-0034-06
Abstract: This article analyses the mechanism and architectures of the most threatening attack to the electronic websites nowadays, which is DDoS(Distributed Deny of Service)attack. The article further describes the different features of its subcategories and the different measures to keep web sites from being seriously damaged after having been attacked. Moreover, besides the technical issues, the social and management issues are also referred, and these issues may be the vital measures to entirely eliminate possibilities from being damaged by the DDoS attack.
Key words: E-commerce; DDoS attack; network security; intrusion detection; intrusion defensive
0引言
社会信息化进程的发展,电子商务、电子政务等信息化工程的日益完善一直跟随着网络技术的发展而发展,然而从安全的角度来看,随着网络的逐步完善,电子商务网络所面临的网络安全问题却始终如挥之不去的梦魇。日益突出的安全问题面前,魔道双方的攻守角逐未曾也永远不会停止。本文阐述了一种很难被彻底解决的电子商务网站安全问题——可造成网络延时甚至瘫痪的攻击DDoS(Distributed Deny of Service——分布式拒绝服务攻击)产生的机理以及防御的主要方法,并探讨更有效的网络安全维护策略和机制。
1来自DDoS攻击的威胁
DDoS攻击手段是在传统的DoS攻击基础之上发展而来的一种攻击方式。DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应,DoS(Deny of Service——拒绝服务) 因此得名。
单一的DoS攻击一般采用一对一的方式,当被攻击目标各项性能指标较低,如:低CPU速度、小内存或者网络带宽有限时,攻击效果是明显的。但随着硬件与网络技术的发展,硬件价格暴跌的情况下,计算机的内存增加,处理器能力大大提高,千兆级别的网络的出现,使得DoS攻击的难度增加不少,因为性能的增强使得目标机对恶意攻击包的化解能力也随之增强。此时分布式的拒绝服务攻击(DDoS)也随之应运而生。DDoS原理很简单,就是利用网络掌控并集结尽量多的傀儡机来攻击目标机以期达到比单机大得多杀伤力。但其危害却极大且难以防御。
2008年4月7日18点左右到4月8日21点15分,一家国内网民自发建立的揭露西方媒体不客观报道的非政府网站、揭示不实报道事件真相的交流平台,反CNN网站(www.anti-cnn.com),遭DDoS攻击,导致攻击期间超过27个小时网民无法登录反CNN网站页面的情况。
自从1999年第一次有报道的大规模DDoS攻击在美国明尼苏达大学出现以来,相当多的电子商务网站已经遭受到其暗算并且损失惨重。2000年,雅虎、CNN等一批大型商业网站被DDoS攻陷并停止正常运营。有研究表明,在2001年2月中的3周时间内,DDoS有效攻击达12 000次并侵害了5 000多台主机。DDoS造成的数据流堵塞迫使路由器丢弃所有用户的请求。更严重的基于DNS的DDoS攻击发生在2006年,但是这是一种新型的攻击方式,攻击者并不直接攻击DNS服务器而是利用其作为跳板进而发动更大规模的攻击,由于DNS协议的复杂性和各DNS服务器之间的联系,这种攻击更难以化解。两个月之内,曾有1 500多个IP地址被这种方式攻击过。
在自第一次的DDoS攻击出现之后,各种侦测和应对的技术没有一种能够给受害者以真正的保护。原因之一是很难将DDoS攻击的数据流量和正常的数据流量区分开;原因之二是在分布式的网络结构中,DDoS攻击利用IP欺骗等手段很容易隐藏且不易被追溯,因此不能被有效的阻止。
1.1DDoS攻击原理和其分类
分布式拒绝服务(DDoS)类攻击通过聚集分布在网络上的力量,形成毁灭性的流量攻击。道高一尺,魔高一丈。随着用户系统的安全性能的不断增强,黑客不得不从普通的DoS攻击转向分布式攻击形式。图1显示了“魔”“道”之间的争斗历史发展。
1.2DDoS攻击的分布合作架构
图2描述了一个典型的DDoS攻击结构,分为4个部分:黑客机、受控傀儡机、攻击傀儡机和受害目标机。整个结构中最主要的是第2、第3部分。攻击者先黑入几台受控傀儡机的系统取得控制权。接着,受控傀儡机再次通过一些自动入侵软件接管更多的攻击傀儡机。对第4部分的受害目标机来说,DDoS的攻击包是从第3部分攻击傀儡机上发出的,第2部分的受控傀儡机只控制攻击傀儡机而不参与实际的攻击。对第2和第3部分计算机,黑客有全部或部分控制权,黑客会修改此类机器上的日志和预留后门等方法隐藏自己的踪迹。通过上传到这些受控和攻击傀儡机上的DDoS程序,一旦黑客进行控制并向所有的攻击傀儡机发出攻击指令的时候,攻击傀儡机就对目标受害者发送大量垃圾流量,有效拥堵住入口并阻断合法用户访问。因为傀儡机发出的数据包的包头中所含有的源地址是伪造的(IP 欺骗——IP Spoofing),所以这种结构非常难以追溯。目标受害机往往是一些知名的电子商务网站服务器等。
实际上,为了增加攻击的有效性,黑客会做好如下功课:
(1)了解被攻击目标主机数目、IP地址、配置、性能情况、目标的网络带宽;
(2)在受控傀儡机上预留后门和清理日志;
(3)尽量多地使用攻击傀儡机;
(4)使用尽量有效地DDoS攻击工具。DDoS攻击工具的源代码在互联网上都是公开的并且新的版本不断地在更新。新的“增强”版本在隐藏攻击流量以及加密手段方面更加复杂,使得防御来得更加困难。
在有线网络中,三种隐患可导致DDoS攻击,分别为:不安全的互联网络,缺乏垃圾流量管理手段和IP欺骗。
1.3DDoS攻击种类
为了增强攻击力度提高攻击效果并且很好地隐藏攻击者使其不被暴露,DDoS通常具有两种主要攻击方式:数据包洪流(Flood)攻击和反弹(reflector)DDoS攻击。为了达到最佳的攻击效果,这两种攻击频繁地被同时利用。
1.3.1数据包洪流攻击
第一种攻击称为请求数据包攻击或者直接攻击,图2所示的DDoS攻击结构即为直接攻击(Direct Attack),攻击者通过黑入几台受控傀儡机的系统取得控制权然后通过它们向受害目标机发送巨量数据包,通过使用随机产生的IP地址替换掉自身或傀儡机中数据包头部的真实源地址隐藏自身位置。现今很多各种类型的DDoS工具都属于此类,最具有代表性的攻击称为基于数据洪流式的(SYN Flooding Based)攻击结构的攻击,即利用TCP/IP协议自身固有的弱点——三次握手,通过巨量貌似正常的链接数据来堵塞受害目标的网络带宽,从而造成合法的用户数据包因带宽资源枯竭而无法正常到达受害主机服务器。
SYN Flood攻击原理。经过长期筛选,在攻击的有效性方面较高的SYN Flood攻击是当前黑客使用得最多的一种攻击方式,Syn Flood利用了TCP/IP协议的固有特点(漏洞)即:面向连接的TCP三次握手。
TCP与UDP不同,它是基于连接的,即为了实现TCP数据在服务端和客户端之间传送,必须先建立一个虚拟电路,也就是TCP连接,建立TCP连接的标准过程如图3所示。
第一步,请求端(客户端)发送一个包含SYN标志的TCP报文,SYN即同步(Synchronize),同步报文会指明客户端使用的端口以及TCP连接的初始序号。
第二步,服务器在收到客户端的SYN报文后,将返回一个SYN
+ACK的报文,表示客户端的请求被接受,同时TCP序号被加一,ACK即确认(Acknow ledgement)。
第三步,客户端也返回一个确认报文ACK给服务器端,同样TCP序列号被加一,到此为止建立完整的TCP连接,开始全双工模式的数据传输过程,一个TCP连接完成。
如图3中所示的连接过程在TCP协议中被称为三次握手(Three-way Handshake)。
被利用的漏洞出现在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然掉线或死机,那么服务器在发出SYN+ACK应答报文(第二次握手)后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时长称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一般情况下个别用户出现异常导致服务器的一个线程等待1分钟并不是什么大问题,但如果有恶意的攻击者大量模拟这种情况,服务器端将为了维护数以万计的半连接列表而会消耗非常多的资源。即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。如果服务器的TCP/IP堆栈不够强大,最后往往是堆栈溢出崩溃。即便服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇响应客户的正常请求,此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了SYN Flood攻击(SYN数据包洪流攻击)。
1.3.2反弹DDoS攻击
第二种方式因使用到称为反弹服务器的主机使得追踪攻击方的行踪变得更加困难。所谓反弹服务器即收到请求数据包后将会返回数据包的主机。比如一台Web服务器可以被当作反弹服务器,因它在接收到HTTP请求后会返回HTTP响应数据包。攻击者通过向反弹服务器主机发送请求数据包并将源地址的IP伪装替换成受害机的IP,这样反弹服务器返回数据包将指向受害机,如果反弹服务器的数量众多,受害机的网络将遭到巨量数据流的攻击而堵塞。此类攻击区别于数据包攻击或者直接攻击的主要特点在于受控傀儡机将源地址数据包里IP头部的地址信息修改成为受害机的IP地址,也就是说用受害目标机的IP地址替换掉受控傀儡机或者攻击者的源地址。实际上,这种攻击方式下,受害目标机将收到的洪流数据包来自不只是几百个攻击傀儡机而是上百万个!太多的来自不同方向的基于反弹的DDoS攻击降低了追溯到真正攻击者的可能性,数量众多的反弹服务器掩盖了攻击者的身影,并且反弹服务器在攻击其它机器的时候还是可以正常响应合法登录者的请求。攻击者不用像侵入傀儡机内部一样去侵入反弹服务器,只需黑入一小部分的受控傀儡机并且搜索出大批的反弹服务器即可达到效果,这样大大便利了入侵者的攻击。由于反弹服务器利用大量ACK报文攻击,受害机不必向反弹服务器返回任何数据包。
在一次反弹DDoS攻击中,任何可以向受害机发送响应数据包的协议均可被利用。为了制造出更强的攻击效果,攻击者甚至利用了数据包流量放大技术,在傀儡机和反弹服务器之间设置流量放大器。流量放大器向所有在网络广播地址范围内的每一个反弹服务器广播请求数据包。当前网络几乎所有的路由器都支持网络IP广播,因此存在大量潜在的流量放大器。这帮助了攻击者可以不用太多的精力去寻找数量众多的反弹服务器而只需用流量放大器加大攻击流量。图4是DDoS反弹式攻击体系结构。
基于ICMP流量的Smurf攻击。Smurf攻击是典型使用流量放大器的DDoS攻击,命名来自于病毒的名称。在这种攻击中,ICMP(Internet控制消息协议,Internet Control Message Protocol)协议是攻击的平台。ICMP协议用来给IP协议提供控制服务,允许路由器或目标主机给数据的发送方提供反馈信息。许多网络攻击都基于ICMP协议,ICMP协议是IP协议的一部分,任何实现了IP协议的设备同时也被要求实现ICMP协议。通常,ICMP请求和ECHO回应可以用作携带控制信息,比如:一个网络的管理系统可以通过ICMP信息获取路由器的状况。类似于PING命令,ICMP可以测试网络的连通性。一个ICMP Echo Request可以包含64K的数据,它被发送后,接收方会返回一个尺寸更大的ICMP Echo Reply数据包,其中包含了接收到的数据的拷贝。在Smurf攻击中,ping包中包含的欺骗源地址指向的主机是最终的受害者,也是主要的受害者;而路由器连接的成为了攻击的帮凶(即流量放大器,使网络流量迅速增大),也是受害者。如果一个广播网段中有N个主机,最终受害机就要收到N个Echo Reply回应。大量的ICMP Echo Reply会消耗掉目标受害机所有的带宽。
1.4IP欺骗
为了隐藏攻击者或者受控傀儡机,IP欺骗被应用在所有的DDoS攻击中。传统方式的DDoS攻击方式下,攻击者使用随机产生的IP地址替换掉自身或傀儡机中数据包头部的真实源地址。反弹式DDoS攻击方式则必须用受害目标机的IP地址替换掉源地址。
在实际的攻击案例中,如果攻击者可以搜寻并控制数量足够多的傀儡机时,IP欺骗甚至可以不被使用,攻击者可以考虑使用其他方法不被追溯到。一般情况下,攻击者可以控制一长串傀儡机,而想要追溯跨越长达几个国家的傀儡机链是极其困难的。因此,IP欺骗并非攻击者藏身的唯一手段。
2分布式攻击(ICMP、SYN Flood、Smurf)的防范
DDoS攻击往往是一个企业的IT部门最头痛的事情,对于防范DoS还相对容易,但是DDoS就很难解决了。目前市面上顶级的如电信级的防火墙,如果不能防止过多的DDoS链接,在很短时间能就会崩溃。
受害机的网络架构决定了攻击者攻击时需要使用的攻击流量大小,也决定了网络更易受到攻击的可能性。增加受害机网络的带宽并且消除网络带宽瓶颈可以增加受害机在受攻击时的忍受程度。大型的服务器集群除了可以通过增大带宽,还可以加强防火墙处理能力来增大攻击难度,迫使攻击者增加进攻的带宽,但这是一个相互消耗的过程。
另外,应用包过滤的技术,主要是过滤对外开放的端口,防止假冒地址的攻击,使得外部机器无法假冒内部机器的地址来对内部机器发动攻击。
2.1ICMP防护措施
ICMP的开发初衷是作为广域网管理员的诊断工具。但如今各种各样的ICMP没有遵守RFC792原先制订的标准,所以执行一定的策略可以让它变得安全一些。带有非法参数的伪造数据包也能产生ICMP参数问题数据包,当ICMP数据包参数非法时,数据包会被丢弃,这时就会产生ICMP参数出错数据包。主机或路由器丢弃发送的数据包,并向发送者回送参数ICMP出错数据包,指出坏的参数。如果发送源地址的IP被篡改成目标受害机的IP地址,这就可以使得攻击者利用此特性攻击目标受害机。以秘密形式从主机到客户机发布命令的一种通用方法,就是使用ICMP Echo应答数据包作为载体,因为Echo Respond回声应答本身一般不会被防火墙阻塞。
所以防护措施首先必须在数据出入站环节限制ICMP。出站的ICMP回声应被限制只支持个人或单个服务器/ICMP代理。
如果限制ICMP回声到一个外部IP地址(通过代理),则ICMP回声应答只能进入网络中预先定义的主机,通过限制ICMP超时数据包进入一个内部地址可以阻塞超时数据包。对外的传输都经过代理,对内的ICMP传输回到代理地址的时候要经过防火墙。同时调整防火墙规则使得这些类型的ICMP只被允许在需要信息的网际连接所涉及的路由器之间进行。
只允许有公开地址的服务器(比如Web、电子邮件和FTP服务器)、防火墙、联入因特网的路由器使用ICMP与外面的世界对话。如果调整适当,实际上所有使用进站和出站ICMP的隐密通讯通道都会被中止。
2.2SYN Flood的防范
对于SYN Flood攻击虽目前没有非常有效地监测和防御方法,但通过对系统架构的设定,能降低被攻击系统的负荷,减轻负面的影响。通常的防御方法有:
* 缩短SYN Timeout时间
* 设置SYN Cookie
* 负反馈策略
* 分布式DNS负载均衡退让策略
* 防火墙QoS
2.2.1缩短SYN Timeout时间
SYN Flood攻击的效果取决于在服务器上保持的SYN半连接数,这个值等于SYN攻击的频度乘以 SYN Timeout时长,所以通过缩短从接收到SYN报文到确定这个报文无效并丢弃改连接的时间,可以成倍地降低服务器的负荷。
2.2.2设置SYN Cookie
给每一个请求连接的IP地址分配一个Cookie,如果短时间内连续受到某个IP的重复SYN报文,就认定是受到了攻击,以后从这个IP地址来的包会被丢弃。
可是上述的两种方法只能对付比较原始的SYN Flood攻击,缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻击者以数万/秒的速度发送SYN报文,同时利用SOCK_RAW随机改写IP报文中的源地址,以上的方法将毫无用武之地。
2.2.3负反馈策略
一些流行的操作系统中(如Windows server)本身具有SYN攻击保护机制:当SYN Half link 的数量超过系统中TCP活动 Half-Connection最大连接数的设置,系统将会认为自己受到了SYN Flood攻击,并将根据攻击的判断情况做出反应:减短SYN Timeout时间、减少SYN-ACK的重试次数、自动对缓冲区中的报文进行延时等措施,力图将攻击危害减到最低。如果攻击继续,超过了系统允许的最大Half-Connection 值,系统已经不能提供正常的服务了,但为了保证不崩溃,系统将超出最大Half Connection值范围的任何SYN报文丢弃。
所以,可以事先测试该主机在峰值时期的Half Connection的活动数量上限,作为设定 Half Connection最大连接数的值,然后再以该值的倍数(不超过2)作为TCP最大Half Connection值,这样可以通过负反馈的手段在一定程度上阻止SYN攻击。
2.2.4分布式DNS负载均衡退让策略
退让策略是基于SYN Flood攻击代码的一个缺陷。SYN Flood程序有两种攻击方式,基于IP的和基于域名的。前者是攻击者自己进行域名解析并将IP地址传递给攻击程序,后者是攻击程序自动进行域名解析,它们的相同之处为一旦攻击开始,将不会再进行域名解析。假设一台服务器在遭受到SYN Flood攻击后迅速撤换掉自身的IP地址,那么攻击者继续攻击的只是一个没有任何主机的空IP地址,而防御方只要将DNS解析更改到新的IP地址就能在很短的时间内恢复用户通过域名进行的正常访问。为了使假象更逼真,我们甚至可以牺牲一台服务器让攻击者满足攻击的“效果”。只要攻击者的浏览器不重起,由于DNS缓冲的原因,攻击者访问的仍然是原先的IP地址。
如今很多大电子商务网站实际上都会采用负载均衡架构,基于DNS解析的负载均衡本身就拥有对SYN Flood的免疫力,它能将用户的请求分配到不同IP的服务器主机上,攻击者攻击的永远只是其中一台服务器,一来这样增加了攻击者的成本,二来过多的DNS请求可以帮助我们追溯攻击者真正的踪迹(DNS请求不同于SYN攻击,是需要返回数据的,所以很难进行IP伪装)。
2.2.5防火墙QoS
防火墙一般工作在TCP层之上或IP层之下,工作在TCP层之上的防火墙称为网关型防火墙,网关型防火墙布局中,客户机与服务器之间并没有真正的TCP连接,客户机与服务器之间的所有数据交换都是通过防火墙代理的,外部的DNS解析也同样指向防火墙,所以如果网站被攻击,真正受到攻击的是防火墙,虽然防火墙抗打击能力较强,但是因为所有的TCP报文都需要经过防火墙转发,所以效率比较低。这种架构中由于客户机并不直接与服务器建立连接,在TCP连接没有完成时防火墙不会去向后台的服务器建立新的TCP连接,所以攻击者无法越过防火墙直接攻击后台服务器,只要防火墙本身做的足够强壮,这种架构可以抵抗相当强度的SYN Flood攻击。但是由于防火墙实际建立的TCP连接数为用户连接数的两倍(防火墙两端都需要建立TCP连接),同时又代理了所有的来自客户端的TCP请求和数据传送,在系统访问量较大时,防火墙自身的负荷会比较高,所以这种架构并不能适用于大型网站。