SYN Flood攻击与防御方法

所属分类: 网络安全 / 黑客教程 阅读数: 241
收藏 0 赞 0 分享

一、为什么Syn Flood会造成危害
      这要从操作系统的TCP/IP协议栈的实现说起。当开放了一个TCP端口后,该端口就处于Listening状态,不停地监视发到该端口的Syn报文,一旦接收到Client发来的Syn报文,就需要为该请求分配一个TCB(Transmission Control Block),通常一个TCB至少需要280个字节,在某些操作系统中TCB甚至需要1300个字节,并返回一个SYN ACK命令,立即转为SYN-RECEIVED即半开连接状态,而某些操作系统在SOCK的实现上最多可开启512个半开连接(如Linux2.4.20内核)。这种过程如下图所示:

 

      从以上过程可以看到,如果恶意的向某个服务器端口发送大量的SYN包,则可以使服务器打开大量的半开连接,分配TCB,从而消耗大量的服务器资源,同时也使得正常的连接请求无法被相应。而攻击发起方的资源消耗相比较可忽略不计。

二、如何防御Syn Flood攻击
      我们先来看一下Syn Flood有哪些种类,如下图所示:

 

  1. Direct Attack 攻击方使用固定的源地址发起攻击,这种方法对攻击方的消耗最小
                                                            2. Spoofing Attack 攻击方使用变化的源地址发起攻击,这种方法需要攻击方不停地修改源地址,实际上消耗也不大
3. Distributed Direct Attack 这种攻击主要是使用僵尸网络进行固定源地址的攻击

      对于第一种攻击的防范可以使用比较简单的方法,即对SYN包进行监视,如果发现某个IP发起了较多的攻击报文,直接将这个IP列入黑名单即可。当然下述的方法也可以对其进行防范。
      对于源地址不停变化的攻击使用上述方法则不行,首先从某一个被伪装的IP过来的Syn报文可能不会太多,达不到被拒绝的阈值,其次从这个被伪装的IP(真实的)的请求会被拒绝掉。因此必须使用其他的方法进行处理。
1. 无效连接监视释放
      这种方法不停监视系统的半开连接和不活动连接,当达到一定阈值时拆除这些连接,从而释放系统资源。这种方法对于所有的连接一视同仁,而且由于SYN Flood造成的半开连接数量很大,正常连接请求也被淹没在其中被这种方式误释放掉,因此这种方法属于入门级的SYN Flood方法。
2. 延缓TCB分配方法
       从前面SYN Flood原理可以看到,消耗服务器资源主要是因为当SYN数据报文一到达,系统立即分配TCB,从而占用了资源。而SYN Flood由于很难建立起正常连接,因此,当正常连接建立起来后再分配TCB则可以有效地减轻服务器资源的消耗。常见的方法是使用Syn Cache和Syn Cookie技术。
Syn Cache技术:
      这种技术是在收到SYN数据报文时不急于去分配TCB,而是先回应一个SYN ACK报文,并在一个专用HASH表(Cache)中保存这种半开连接信息,直到收到正确的回应ACK报文再分配TCB。在FreeBSD系统中这种Cache每个半开连接只需使用160字节,远小于TCB所需的736个字节。在发送的SYN ACK中需要使用一个己方的Sequence Number,这个数字不能被对方猜到,否则对于某些稍微智能一点的Syn Flood攻击软件来说,它们在发送Syn报文后会发送一个ACK报文,如果己方的Sequence Number被对方猜测到,则会被其建立起真正的连接。因此一般采用一些加密算法生成难于预测的Sequence Number。
Syn Cookie技术:
      对于SYN攻击,Syn Cache虽然不分配TCB,但是为了判断后续对方发来的ACK报文中的Sequence Number的正确性,还是需要使用一些空间去保存己方生成的Sequence Number等信息,也造成了一些资源的浪费。
Syn Cookie技术则完全不使用任何存储资源,这种方法比较巧妙,它使用一种特殊的算法生成Sequence Number,这种算法考虑到了对方的IP、端口、己方IP、端口的固定信息,以及对方无法知道而己方比较固定的一些信息,如MSS、时间等,在收到对方的ACK报文后,重新计算一遍,看其是否与对方回应报文中的(Sequence Number-1)相同,从而决定是否分配TCB资源。
3. 使用SYN Proxy防火墙
      Syn Cache技术和Syn Cookie技术总的来说是一种主机保护技术,需要系统的TCP/IP协议栈的支持,而目前并非所有的操作系统支持这些技术。因此很多防火墙中都提供一种SYN代理的功能,其主要原理是对试图穿越的SYN请求进行验证后才放行,下图描述了这种过程:

      从上图(左图)中可以看出,防火墙在确认了连接的有效性后,才向内部的服务器(Listener)发起SYN请求,在右图中,所有的无效连接均无法到达内部的服务器。而防火墙采用的验证连接有效性的方法则可以是Syn Cookie或Syn Flood等其他技术。
采用这种方式进行防范需要注意的一点就是防火墙需要对整个有效连接的过程发生的数据包进行代理,如下图所示:

 

      因为防火墙代替发出的SYN ACK包中使用的序列号为c,而服务器真正的回应包中序列号为c’,这其中有一个差值|c-c’|,在每个相关数据报文经过防火墙的时候进行序列号的修改。
TCP Safe Reset技术:
      这也是防火墙Syn代理的一种方式,其工作过程如下图所示:

 

      这种方法在验证了连接之后立即发出一个Safe Reset命令包,从而使得Client重新进行连接,这时出现的Syn报文防火墙就直接放行。在这种方式中,防火墙就不需要对通过防火墙的数据报文进行序列号的修改了。这需要客户端的TCP协议栈支持RFC 793中的相关约定,同时由于Client需要两次握手过程,连接建立的时间将有所延长。

以上就是本文的全部内容,希望对大家的学习有所帮助。

更多精彩内容其他人还在看

必须了解的黑客入侵网站的十条原因及相应抵御方法

Internet Explorer、Firefox和Windows操作系统中包括许多可以被黑客运用的缝隙,特别是在用户常常不及时装置补丁的情况下。
收藏 0 赞 0 分享

如何有效的抵抗DDOS的方法介绍

DDOS的损害我这里就不说了,咱们可以经过批改注册表来减小DDOS对咱们的损伤.
收藏 0 赞 0 分享

中小网站如何对付拒绝服务攻击

 DoS(Denial of Service)是一种使用合理的效劳恳求占用过多的效劳资源,从而使合法用户无法得到效劳呼应的网络进犯行为。
收藏 0 赞 0 分享

黑客专家教你设计不易破解的密码以及注意事项

  美国一家密码管理应用提供商SplashData 公司近期总结出2012年度最差的25个密码,美国《纽约时报》作家尼克尔·佩尔荣斯近日撰文指出,密码要想不被黑客猜中,有几点非常重要的注意事项。
收藏 0 赞 0 分享

神秘的影子帐号揭秘

见名思义,帐号具有隐蔽性,不容易被发现(只是在一定程度上)。即一般的菜鸟发现不了
收藏 0 赞 0 分享

黑客基础知识 常用命令和快捷键大全

很多用户可能都知道在DOS模式下可以进行命令行的黑客命令操作,可总有用户不知道从哪里下手,看了下文您应该可以有一点启示
收藏 0 赞 0 分享

metasploit利用IE漏洞XSS挂马拿内网主机

metasploit内网渗透方面好多方式,这只是科普下xss在内网中的利用。
收藏 0 赞 0 分享

删除用户时提示无法在内置账户上运行此操作

一般情况写黑客在入侵服务器后都会添加新的用户或者和设置后门程序.如果大家在使用服务器的过程中发现,出现了不能删除的用且账号不能够正常删除提示无法在内置账号进行此操作。
收藏 0 赞 0 分享

教你使用搜索引擎批量检测网站注入点

以前很多新手朋友在通过查看网站是否存在注入点,的时候往往会通过搜索引擎批量检测。
收藏 0 赞 0 分享

使用搜索引擎搜索资料的方法

学习使用搜索引擎是电脑学习者必须掌握的一项技能,我们平时碰到的很多问题都可以在搜索引擎里面找到答案,比如我们要下载某个游戏,直接搜索那个游戏名字即可,非常的方便。下面,让我们一起来学习一下关于搜索引擎的使用方法。
收藏 0 赞 0 分享
查看更多