Chinaunix首页 | 论坛 | 博客
  • 博客访问: 607019
  • 博文数量: 353
  • 博客积分: 1104
  • 博客等级: 少尉
  • 技术积分: 1457
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-23 23:02
个人简介

1、刚工作时做Linux 流控;后来做安全操作系统;再后来做操作系统加固;现在做TCP 加速。唉!没离开过类Unix!!!但是水平有限。。

文章存档

2015年(80)

2013年(4)

2012年(90)

2011年(177)

2010年(1)

2009年(1)

分类:

2012-06-09 19:43:16

原文地址:SYN Cookie Firewall 作者:leonwang202

一、SYN攻击
TCP连接三次握手是酱紫的:
   Client              Server
   ------------    ------------
1. SYN-------------------->
2.   <--------------------SYN-ACK
3. ACK-------------------->
4.   <----- 数据通信 ----->

1.首先是Client发送一个SYN报文给服务端
2.然后这个服务端发送一个SYN-ACK包以回应Client,
3.接着,Client就返回一个ACK包来实现一次完整的TCP连接。
4.就这样,Client到Server的连接就建立了,就可以互相交换数据了。

但是这么个情况,Server可能收不到第3步中Client发来的ACK。“握手握到一半”就是所谓的半开放连接。
Server需要耗费一定的系统资源来维护这个未决的连接(当然未决连接数是有受限的),来等待ACK。

恶意者可以通过创建很多的半开放式连接来发动SYN洪水攻击。
受攻击的Server永远不会得到第3步的ACK,半开放连接将最终耗用所有的TCP资源,受害者将不能再接收任何其他的TCP请求。

当然,等待ACK返回包有超时限制,所以半开放连接将最终超时,而受害者系统也会自动修复。虽然这样,但是在受害者系统修复之前,攻击者可以很容易的一直发送虚假的SYN请求包来持续攻击。
这种攻击不会影响到已经存在的进站或者是出站连接。虽然这样,受害者系统还是可能耗尽系统资源,以导致其他种种问题。

当受到SYN洪水攻击时,使用netstat查看TCP连接状况时,会发现大量的SYN_RECV状态的socket。
当然,高并发情况下,accept的不及时,会看到SYN_RECV这种状态
  
二、SYN cookie
SYN cookie就是用一个cookie来响应TCP SYN请求的TCP实现,用来防止SYN洪水攻击。

在正常的TCP实现中,当Server接收到一个SYN数据包,他返回一个SYN-ACK包来应答,然后进入TCP- SYN-RECV(半开放连接)状态来等待最后返回的ACK包。Server用一个数据空间来描述所有未决的连接,然而这个数据空间的大小是有限的,所以攻击者将塞满这个空间。

在TCP SYN COOKIE的执行过程中,当Server接收到一个SYN包的时候,他返回一个SYN-ACK包,这个数据包的ACK序列号是经过加密的,也就是说,它由源地址、端口源次序、目标地址、目标端口和一个加密种子计算得出,然后Server释放所有的状态
一个ACK包从Client返回,Server将计算它来判断它是不是上个SYN-ACK的返回包。
若是,Server就可以直接进入TCP连接状态并打开连接。

这样,Server就可以避免守侯半开放连接了。

现在SYN COOKIE已经是linux内核的一部分了(默认配置是no),但它只保护本地linux系统。
 
三、SYN Cookie Firewall
SYN COOKIE Firewall就是使用SYN cookie的Firewall,有些高级路由器支持SYN Cookie Firewall功能。
它可以保护你的网络,避免遭受SYN洪水攻击。
下面是SYN cookie firewall的原理 :

   client       firewall         server
    ------     ----------       --------
1. SYN------------->
2.   <------------SYN-ACK(cookie)
3. ACK------------->
4.                SYN----------------->
5.                 <--------------SYN-ACK
6.                ACK----------------->
7. <------------> 数据relay <--------->

简单来说,就是Client必须先跟Firewall设备建立TCP连接,然后才能和Firewall后面的Server通信。
这样,Firewall设备就成了SYN洪水攻击的目标,后面网络的Server就被保护起来。
而Firewall设备用SYN cookie来应付SYN洪水攻击

四、相关资源


ip_scfw-0.92.tar.gz ()
最新的版本,他包括一个for linux 2.2.17内核的补丁和管理工具,下载他并按照readme文件安装。

Design ()
是一个详细的解释了这个代码的文档,它也包含在这个tar-gz包内,你也可以在线阅读它

ChangeLog ()
说到了这个计划的进展。

tcpdos.tgz ()
一个发起SYN洪水攻击的工具,你可以使用它来测试你的SYN cookie防火墙
阅读(385) | 评论(0) | 转发(0) |
0

上一篇:printf格式控制符

下一篇:time-wait相关设置

给主人留下些什么吧!~~