当前位置:文档之家› WindowsServerSYNFlood攻击防御的一种方法

WindowsServerSYNFlood攻击防御的一种方法

Computer Knowledge and Technology 电脑知识

与技术第7卷第18期(2011年6月)Windows Server 2003下SYN Flood 攻击防御的一种方法

陈勇

(四川师范大学基础教学学院,四川成都610068)

摘要:SYN FLOOD 攻击是目前比较常见的攻击方式之一。该文介绍了SYN FLOOD 攻击的基本原理,通过对Windows Server 2003操作系统系统注册表修改策略提高TCP\IP 通信安全来有效防止来自网络内外部SYN FLOOD 攻击。

关键词:SYN Flood ;DoS ;三次握手;注册表;网络安全

中图分类号:TP393文献标识码:A 文章编号:1009-3044(2011)18-4304-02

One of the Defense Methods against SYN FLOOD Attacks under Window Server 2003Operating System

CHEN Yong

(Collage of Fundamental Education,Sichuan Normal University,Chengdu 610068,China)

Abstract:SYN FLOOD Attack is one of the popular attacks on Internet.This paper introduces the basic principles of SYN FLOOD At -tack.Through modifying the operating system registry of Window Server 2003,we can improve TCP/IP communication security for ef -fectively preventing the network from internal and external SYNFLOOD Attacks.

Key words:SYN Flood;DoS;three-way handshake;registry;network security

TCP/IP (Transmission Control Protocol/Internet Protocol)协议是目前使用最广泛的网络互连协议,但是由于TCP 三次握手中存在不安全隐患,极易被攻击者利用,对网络安全带来隐患。而SYN Flood 是当前最流行的DoS (拒绝服务攻击)与DdoS (分布式拒绝服务攻击)的方式之一,它正是利用TCP 协议缺陷,发送大量伪造的TCP 连接请求,从而使得被攻击方资源耗尽(CPU 满负荷或内存不足)的攻击方式。由于攻击简单、破坏力强、易于实现、难于防止和追查,越来越成为黑客常用的攻击方式,给网络的安全性构成了极大的威胁。本文通过对SYN flood 攻击原理分析,介绍在Windows Sever 2003操作系统下通过修改注册表项来防御SYN flood 攻击的一种方法,具有较强的实用性。

1SYN Flood 攻击原理

一个正常的TCP 连接三次握手过程要经过以下几个步骤(如图1所示):

首先客户端向服务器发送带有初始化信息的SYN 数据包且等待服务器的回

应;当服务器接收到SYN 数据包后返回给请求的客户端一个SYN+ACK 的应

答包,以确认客户端的服务请求被接受;最后客户端再向服务器端发送ACK 进

行确认,在完成正常的三次握手过程之后,客户端和服务器就可以传送数据了。

在上述过程中,服务器会建立起一个未完成连接的队列,为每一客户端发

送的SYN 包建立一个条目,该条目表明服务器接受到客户端的连接请求,并发

出了等待客户端的确认包,此时的服务器处于SYN_RECV 状态。只有服务器收

到确认包以后,此条目将被删除,而服务器也将进入Established

状态。通常在服务器发送完SYN/ACK 分组后处于SYN_RECV 状

态,等待请求连接客户端的返回一个ACK 分组,此时服务器已经

为建立此次连接分配相应的资源。如果攻击者,使用了伪造的IP

地址,那么服务器将始终处于等待的“半连接”状态,直到超时而

在连接队列里删除。SYN Flood 攻击正是利用TCP 协议三次握手

过程中的这一缺陷,在短时间内,使用大量伪造IP 地址向服务器

发送大量的SYN 分组请求而导致服务器耗尽资源而无法接受新

的连接请求,处于拒绝服务请求的状态。2SYN Flood 攻击的防御方法

当前SYN Flood 攻击防御方法有很多,比如缩短SYN Timeout

的时间,改进SYN Cookie 算法,或使用专用防火墙等等。如今借助

一些专业防护产品可以即时发现攻击,如图2。

当McAfee 防火墙检查到攻击时,可以直接屏蔽攻击IP 地址收稿日期:2011-04-12

作者简介:陈勇(1983-),男,重庆人,助理研究员,本科,主要研究方向为计算机网络安全。

图1正常的三次握手协议示意图

图2软件防火墙发现SYN FLOOD 攻击

E-mail:info@https://www.doczj.com/doc/0111387270.html, https://www.doczj.com/doc/0111387270.html, Tel:+86-551-56909635690964ISSN 1009-3044

Computer Knowledge and Technology 电脑知识与技术Vol.7,No.18,June 2011,pp.4304-4305,4329

或暂时限制访问,但攻击来自使用代理服务的内部网络时,采用屏蔽的方式将把正常的访问者一同拒绝。况且,攻击者使用大量伪造地址,使得正常访问者也被误杀。与屏蔽攻击IP地址的方法相比,通过对TCP/IP协议通信规则作出一些改变,从而达到防御SYN Flood攻击的目的方法更具可行性。

具体实现方法如下:首先运行“regedit.exe”进入注册表,在HKEY_LOCAL_MACHINE\

SYSTEM\CurrentControlSet\Services\Tcpip\Parameters做以下更改(所涉及的值全为十六进制):

2.1启用SYN攻击保护

新建一个名为SynAttackProtect的数值,数值类型为REG_DWORD。将值设置为:1。

该参数可使TCP调整SYN-ACKS的重新传输,当SynAttackProtect默认值为0(即不采取任何保护措施),设置为1时,可更有效地抵御SYN攻击此时,如果系统检测到存在SYN攻击,连接响应的超时时间将更短。

2.2设置SYN保护阀值

1)新建一个名为TcpMaxPortsExhausted的数值,数值类型为REG_DWORD,将值设为5。

该参数指定触发SYN洪水攻击保护所必须超过的TCP连接请求数的阈值,有效值为0–65535。

2)新建一个名为TCPMaxHalfOpen的数值,数值类型为REG_DWORD,将值设为500。

TCPMaxHalfOpen的数值有效值为100–65535,在启用SynAttackProtect后,该值指定处于SYN_RCVD状态的TCP连接数的阈值。在超过SynAttackProtect后,将触发SYN洪水攻击保护。

3)新建一个名为TCPMaxHalfOpenRetried的数值,数值类型为REG_DWORD,将值设为400。

TCPMaxHalfOpenRetried数值有效值为80–65535,在启用SynAttackProtect后,该值指定处于至少已发送一次重传的SYN_RCVD状态中的TCP连接数的阈值。在超过SynAttackProtect后,将触发SYN洪水攻击保护。

2.3其它参数设置

1)新建一个名为EnableDeadGWDetect的数值,数值类型为REG_DWORD,将值设为0(即False状态)

EnableDeadGWDetect数值有效值为:0或1(即False或True).当值为1时,将允许TCP执行失效网关检测,启用失效网关检测时,如果多个连接出现困难,TCP可能会要求Internet协议(IP)切换到备份网关,攻击者可以利用此状态可能会强制服务器切换网关,而切换到的新网关可能并不是您打算使用的网关。所以将值设为0可以避免上述现象的发生。

2)新建一个名为EnablePMTUDiscovery的数值,数值类型为REG_DWORD,将值设为0(即False状态)。

EnablePMTUDiscovery的有效值为:0或1(即False或True)。设置为1时,TCP将尝试发现经由远程主机的路径传输的最大传输单位(MTU)或最大数据包大小。通过发现路径的MTU并将TCP段限制到这一大小,TCP可以沿着连接具有不同MTU的网络的路径删除路由器上的碎片,消除碎片对网络带来的负担。但是,同时攻击者也可以利用强制将MTU值设置非常小来的办法,使得堆栈的负荷过大。设置为0是比较好选择。实际上,这样的设置是用降低TCP/IP性能和吞吐量来换取堆栈的安全。

3)建一个名为KeepAliveTime的数值,数值类型为REG_DWORD,默认值:7,200,000(两个小时),将值设为300,000。

KeepAliveTime的有效范围1-0xFFFFFFFF(单位为毫秒)。该值控制TCP通过发送“保持活动”的数据包来验证空闲连接仍然完好无损的频率。如果仍能连接到远程计算机,该计算机就会对“保持活动”的数据包作出应答。默认情况下,不发送“保持活动”的数据包。这里我们将其设置为300,000(即5分钟)。

4)建一个名为NoNameReleaseOnDemand的数值,数值类型为REG_DWORD,默认值:0,将值设为1。

NoNameReleaseOnDemand有效值为0或1(即False或True)。该值确定计算机在收到名称释放请求时是否释放其NetBIOS名称。添加该值的目的是让服务器能够保护计算机免受恶意的

表1

名称释放攻击,如果有其它防护产品的保护功能,可以忽略

此项。以上数值汇总如表1所示。

上述数值除逻辑判断外,其余各值需要根据网络使用的

实际状况进行测试和调整,可以在推荐值基础上的倍数修

改。设置值过小可能导致正常连接用户被忽略,影响网络正

常工作。修改注册表之前,请做好注册表的备份。

3结束语

通过以上对注册表项的修改,当我们的服务器遭受

SYN Flood攻击时会触发SYN保护阀对TCP三次握手过程

进行一定的条件限制,最大限度的保护服务器的安全。另外,

对设定值并不是完全不变的,要根据自身网络实际情况进行

调整,达到最佳。此方法是一种被动式的抵御方式,虽然可有效的抵御SYN FLOOD的攻击保护的服务器,却降低了TCP的性能和吞吐量。但是,在设备资源或现有专业防护软件功能有限的情况下,通过对访问规则进行一些修改提升TCP协议本身通信安全来达到保护服务器的目的,不失为一种简单有效的解决方案。

参考文献:

[1]王耀武,杨亚红.分布式拒绝服务攻击的软防御系统[J].计算机工程与设计,2008,29(3):583-585.

[2]陈波.SYN Flood攻击的原理、实现与防范[J].计算机应用与研究,2003(12).(下转第4329页)

(上接第4305页)

[3]Lee R B.CE-L2003-003,Taxonomies of Distributed Denial of Service Networks.Attacks,Tools and Countermeasures [R].New Jersey:Department of Electrical Engineering,Princeton University,2003.

[4]林栋.拒绝服务攻击(DoS)的攻与防[J].广东通信技术,2003(4):26-28.

[5]匡晓红,汤丹.Syn Flood 攻击实例及安全防范[J].电脑知识与技术,2008(9):1588-1590.

[6]黄贻望,万良,李祥.基于IP 欺骗的SYN 泛洪攻击[J].计算机技术与发展,2008,18(12):159-163.

[6]安全技术中心[EB/OL].https://www.doczj.com/doc/0111387270.html,/china/technet/security.

[7]Rice A.Defending Net words from Syn Flooding in Depth.technical report[R].Sans Inst,2000.

[8]徐图,何大可,邓子健.分布式拒绝服务攻击特征分析与检测[J].计算机工程与应用,2007,43(29):146-149.

性不好;2)对于用户数据的检查势必要涉及到法律和隐私等一些列的问题,况且现在好多应用和服务在用户数据传输的过程中都使用了加密的手段,这样造成了对用户数据的分析有时候无法进行;

3)由于需要对分组内部数据进行全面的检查分析,使得其实现效率不是很高。

2.3基于流量特征的识别技术

针对以上两种方法在实际的应用环境中所体现出来的不足和问题,一种新的P2P 识别方法应运而生。这种方法的主要的依据是P2P 应用的传输层连接特性。具体的概括起来P2P 应用主要具有以下的两个传输层的特点:

1)既使用TCP 协议又使用UDP 协议。当今大部分的P2P 协议(如eDonkey 、Fasttrack 、WinMx 、Gnutella 等)都是使用TCP 协议来进行用户数据的传输,使用UDP 协议来对传输过程进行控制。同时也应注意到,有一些传统的网络应用也同时使用TCP 和UDP 协议。对于那些少数的既使用TCP 协议又使用UDP 协议的应用,由于这些应用端口号相对都是固定的,所以只要针对这些应用的端口号进行排除就可以了。

2)源端口所连接的不同目的端口数与其所连接的不同目的IP 数大致相等。通过对P2P 服务端主机连接模式的分析我们不难发现:例如,当一个新的主机A 加入P2P 系统后,它将通过super peer 广播其IP 地址以及接受连接的端口号port 。其他主机收到后利用这一信息与主机A 建立连接。这样,对端口port 而言,与其建立连接的IP 地址数目就等于与其建立连接的不同端口数目(因为不同主机选择同一端口与主机A 建立连接的可能性是很低的,完全可以忽略不计)。而其他一些应用如Web ,一个主机通常使用多个端口并行接收对象,这样建立连接的IP 地址数目将远小于端口数目。但是另外一些应用,如mail 、DNS 等,也具有类似的属性,因此使用这种方法在实际识别过程中需要将它们区分出来。

基于传输层特征的识别方法就是基于以上的两个规则构建起来的。实验结果表明,这种方法可以识别90%以上的P2P 字节数和99%以上的P2P 流数。与前两种方法相比,这种方法的优点是:首先,它仅仅统计用户分组的首部信息,而不涉及具体数据。因此一方面克服了前述方法对加密数据无法识别的问题,同时又不涉及用户的具体数据,符合Internet 体系结构中的端到端原则。更加重要的一点是,利用这种方法,任何新的P2P 协议,只要是满足P2P 传输流量的特征,在不知道特征端口和特征字段的情况下同样可以被准确的识别出来。

3P2P 协议识别方法比较

以上的识别方法在许多P2P 识别的应用中已经被广泛采用。现在我们从识别的准确性、精确性、健壮性、对加密文件的识别和实时性上对这三种方法做一个横向的类比,对比的结果如表2所示。

从表2可知,这三类方法各有优缺点:基于端口和特征字段的

方法较为简单,但在扩展性和对加密流的识别上较差;基于应用

层特殊字段的识别,准确性和精确性较高,但是在识别过程中会涉

及到用户的数据的分析,因此算法的健壮性不高;基于流量特征的

识别,在准确性和算法的健壮性上都不错,而且对于识别加密的数

据上也有独有的优势,因此在P2P 协议识别的应用中是今后发展

的一个主流。参考文献:

[1]Karagiannis T,Broido A,Faloutsos M,et al.Transport Layer Identification of P2P Traffic [C].Taormina,Italy:International Measurement Conference,2004.

[2]Karagiannis T,Broide A,Faloutsos M,et al..Transportlayer identification of P2P traffic[M].ACM,2004.

[3]Sen S,Spatchscheck O,Wang D.Accurate,scalable in network identification of P2P traffic using application signatures[C]//WWW'04:Pro -ceedings of the 13thinternation conference on World Wide Web.ACM Press,2004:512-521.

[4]柳斌,李之棠.基于访问控制列表的BitTorrent 流量控制策略[J].计算机应用与软件,2006,23(5):19-20.

[5]王逸欣,王锐.P2P 流量检测技术初探[J].计算机与数字工程

,2006,34(6):161-164.

表2三种P2P 协议识别方法的比较

相关主题
文本预览
相关文档 最新文档