• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

从SYN Flood攻击看防火墙的选取

发布: 2007-6-23 18:14 | 作者:   | 来源:   | 查看: 24次 | 进入软件测试论坛讨论

领测软件测试网

   
  从SYN Flood攻击看防火墙的选取
    在常见的攻击手段里,有个很有名的攻击方式叫DoS攻击,也就是所谓的拒绝服务攻击。而在拒绝服务攻击里,又以SYN Flood攻击最为有名,俗称洪水攻击。

SYN Flood利用TCP协议的设计上的缺陷,通过特定方式发送大量的TCP请求从而导致受攻击的一方CPU超负荷或内存不足。

   TCP协议的漏洞在于:TCP协议不同于UDP协议,UDP不是基于连接的,也就说每次使用UDP协议给客户发送数据的时候,各数据报并不经由相同的路线。而TCP协议是基于连接的,在每次发送数据以前,都会在服务器于客户端先虚拟出一条路线,称TCP连接,以后的各数据通信都经由该路线进行知道本 TCP连接结束。TCP连接的建立需通过三次握手来完成:

  第一次:客户端发送一个带有SYN标记的TCP报文到服务端。指明端口号以及TCP连接初始序号等信息;

  第二次:服务端在接收到来自客户端的请求之后,返回一个带有SYN+ACK标记的报文,表示接受连接,并在TCP序号加一;

  第三次:客户端接受到来自服务端的确认信息后,也返回一个带有ACK标记的报文,表示已经接受到来自服务器的确认信息。服务器在得到该数据报文后,一个TCP连接才算真正建立起来。

  当客户端发送一个TCP连接请求给服务器之,服务器也发出了相应的响应数据报文之后,由于某些原因(如客户端突然死机或断网等原因),客户端不能接受到来自服务器的确认数据报,这就制造了只有第一次和第二次握手的TCP半连接。由于服务器发出了带SYN+ACK标记的报文却并没有得到客户端返回相应的ACK报文,于是服务器就进入等待并进行SYN+ACK报文重发。当恶意的客户端构造出大量的这中TCP半连接发送到服务端时,服务端就会一直陷入等待的过程中,并且耗用大量的CPU资源和内存资源来进行SYN+ACK报文的重发,这就是SYNFlood攻击。

  使用防火墙是防御SYN Flood攻击的最有效的方法之一。但是我们常见的硬件防火墙有网关型防火墙和路由型防火墙。我们到底为我们的服务器或网络选用哪种类型的防火墙呢?

  下面我们看看两种防火墙对SYN Flood攻击的防御原理:

  网关型防火墙,他主要是工做在TCP层之上。当客户端要与服务器建立TCP连接的三次握手过程中,他充当一个代理一样的角色。也就是说客户端要与服务器建立一个TCP连接,就的先和防火墙进行三次TCP握手。当客户端和防火墙三次握手成功之后,防火墙再同服务端进行三次握手。整个过程可以用下图表示:

  [客户端]------>>>[防火墙]--------->>>[服务器]

  从整个过程我们可以看出,由于所有的报文都是通过防火墙转发,而且未同防火墙建立起TCP连接就无法同服务器建立连接,所以使用这种防火墙的服务器受保护好,安全性高。当外界对服务器进行SYN Flood攻击时,实际上遭受攻击的不是服务器而是防火墙。但是采用这种防火墙一个很大的缺点就是客户端和服务端建立一个TCP连接时,防火墙就要进行6 次握手,可见防火墙的工作量是非常之大的。因此采用这种防火墙需要求该防火墙要有较大的处理能力以及内存。故这类网关型防火墙不适合于访问流量大的服务器或者网络。

  路由型防火墙主要是工作IP层或者IP层之下,对于外来的数据报文,它只是起一个过滤的作用。当数据包合法时,它就直接将其转发给服务器。所以数据流动模型如下:

  [客户端]----------[防火墙]--------->>>[服务器]

  客户端同服务器的三次握手直接进行,并不需要通过防火墙来代理进行。我们可以看出,路由型防火墙效率要较网关型防火墙高,允许数据流量大。但是这种防火墙如果配置不当的话,会让攻击者绕过防火墙而直接攻击到服务器。而且允许数据量大还会更利于SYN Flood攻击。这种防火墙适合于大流量的服务器,但是需要设置妥当才能保证服务器的具有较高的安全性和稳定性。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网