您的位置:首页 > 其它

Windows Server 2003下SYN Flood攻击防御的一种方法

2015-03-02 16:04 351 查看
摘要: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 2003 Operating 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 Attack. Through modifying the operating system registry of Window Server 2003, we can improve TCP/IP communication
security for effectively 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攻击的一种方法,具有较强的实用性。

  1 SYN Flood 攻击原理

  一个正常的TCP 连接三次握手过程要经过以下几个步骤(如图1所示):首先客户端向服务器发送带有初始化信息的SYN 数据包且等待服务器的回应;当服务器接收到 SYN 数据包后返回给请求的客户端一个SYN+ACK 的应答包,以确认客户端的服务请求被接受;最后客户端再向服务器端发送ACK 进行确认,在完成正常的三次握手过程之后,客户端和服务器就可以传送数据了。

  在上述过程中,服务器会建立起一个未完成连接的队列,为每一客户端发送的SYN包建立一个条目,该条目表明服务器接受到客户端的连接请求,并发出了等待客户端的确认包,此时的服务器处于SYN_RECV状态。只有服务器收到确认包以后,此条目将被删除,而服务器也将进入Established状态。通常在服务器发送完SYN/ACK分组后处于SYN_RECV状态,等待请求连接客户端的返回一个ACK分组,此时服务器已经为建立此次连接分配相应的资源。如果攻击者,使用了伪造的IP地址,那么服务器将始终处于等待的“半连接”状态,直到超时而在连接队列里删除。SYN
Flood 攻击正是利用TCP 协议三次握手过程中的这一缺陷,在短时间内,使用大量伪造IP地址向服务器发送大量的SYN分组请求而导致服务器耗尽资源而无法接受新的连接请求,处于拒绝服务请求的状态。

  2 SYN Flood攻击的防御方法

  当前SYN Flood攻击防御方法有很多,比如缩短SYN Timeout 的时间,改进SYN Cookie算法,或使用专用防火墙等等。如今借助一些专业防护产品可以即时发现攻击,如图2。

  当McAfee防火墙检查到攻击时,可以直接屏蔽攻击IP地址或暂时限制访问,但攻击来自使用代理服务的内部网络时,采用屏蔽的方式将把正常的访问者一同拒绝。况且,攻击者使用大量伪造地址,使得正常访问者也被误杀。与屏蔽攻击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所示。

  上述数值除逻辑判断外,其余各值需要根据网络使用的实际状况进行测试和调整,可以在推荐值基础上的倍数修改。设置值过小可能导致正常连接用户被忽略,影响网络正常工作。修改注册表之前,请做好注册表的备份。

  3 结束语

  通过以上对注册表项的修改,当我们的服务器遭受SYN Flood 攻击时会触发SYN保护阀对TCP三次握手过程进行一定的条件限制,最大限度的保护服务器的安全。另外,对设定值并不是完全不变的,要根据自身网络实际情况进行调整,达到最佳。此方法是一种被动式的抵御方式,虽然可有效的抵御SYN FLOOD 的攻击保护的服务器,却降低了TCP的性能和吞吐量。但是,在设备资源或现有专业防护软件功能有限的情况下,通过对访问规则进行一些修改提升TCP协议本身通信安全来达到保护服务器的目的,不失为一种简单有效的解决方案。

  参考文献:

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

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

  [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].http://www.microsoft.com/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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: