SYNFlood攻击对Windows的影响及陈学明(海南师范大学计算机系,海南海口571158)摘要:介绍了SYNFlood攻击的基本原理、描述了SYNFlood攻击对Windows系统的影响;介绍了在Windows系统上几种比较有效的防御措施。关键词:SYNFlood攻击;Windows系统;注册表:TP393.07文献标识码:A:1009-9743(2006)02-0090-03要掌握SYNFlood攻击的基本原理,必须先介绍TCP的三次握手机制。TCP三次握手过程如下:1、客户端向服务器端发送一个SYN置位的TCP报文,包含客户端使用的端口号和初始序列号x;2、服务器端收到客户端发送来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,包含确认号为x+1和服务器的初始序列号y;3、客户端收到服务器返回的SYN+ACK报文后,向服务器返回一个确认号为y+1序号为x+1的ACK报文;到此为止一个完整的TCP连接完成,双方进入全双工模式数据传输过程。一SYNFlood攻击介绍DoS(DenialofService拒绝服务)和DDoS(DistributedDenialofService分布式拒绝服务)攻击是目前比较有效而又非常难于防御的网络攻击方式,本世纪初,著名的对亚马逊、CNN、Yahoo攻击采用的就是这种方式。SYNFlood由于其攻击效果好,已经成为目前最流行的DoS和DDoS攻击手段。SYNFlood利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,使得被攻击方资源耗尽,从而不能够为正常用户提供服务。(一)TCP连接建立的过程图1正常的TCP三次握手(二)SYNFlood攻击原理假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时收稿日期:2006-04-20作者简介:陈学明(1972-),男,汉族,海南琼山人。海南师范大学计算机系助教。研究方向:计算机网络、数据库应用。·90·间的长度我们称为SYNTimeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量伪造源地址的TCPSYN报文,由于源地址是伪造的,所以源端永远都不会返回ACK报文,受害主机继续发送SYN+ACK包,并将半连接放入端口的积压队列中,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源,数以万计间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出而崩溃。即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无法响应客户的正常请求(客户端的正常请求对于恶意器失去响应,这种情况我们称做:服务器端受到了Flood攻击(SYN洪水攻击)。如图2所示:SYN图2SYNFlood攻击原理图(三)SYNFlood攻击对Windows系统的影响为了查看SYNFlood攻击对Windows系统的影响,笔者在2个机房中(均使用10M交换机)多次对2台服务器实行了SYNFlood攻击实验,得到被攻击机的数据如下(平均值):从上面的数据我们可以看出,攻击机即使在配置不是很强的情况下,仍然可以对配置很高的服务器造成服务瘫痪;在攻击期间,被攻击机几乎收不到正常的网络包,绝大部分都是攻击的数据包。更为令人恼火的是,通过对攻击数据包的捉包分析可以发现SYNFlood攻击包的源地址是伪造的(可以随机生成),基本上无法从服务器上追查攻击机的IP地址,给追查和防范带来极大的困难。由此可见SYNFlood攻击的一些特性:1.源地址的不确定性。因为攻击机根本就不想创建连接,它可以为每一个包随机生成一个IP,所以使用包过滤手段没有效果。2.序列号的不确定性。同样因为攻击机根本就不想创建连接,也就根本没必要使用真实的序列号,根据TCP序列号判断数据包是否来自同一个TCP层也是不可靠的。3.攻击行为的隐蔽性。SYNFLOOD攻击实际上就是TCP的第一次握手,从这一个数据包上根本无法看出它是合法还是非法。针对SYNFlood攻击的原理和特性,在目前的技术基础上,我们只能在被攻击机上被动地抵抗,防止服务器当机,而不能做到预先防范。二SYNFlood在Windows系统上的防御(一)缩短SYNTimeout时间由于SYNFlood攻击的效果取决于服务器上保持的SYN半连接数,如果降低半连接...