SYN flood网络攻击的原理及其防御方法pc软件 文章资讯 手机软件

您当前的位置→图文中心安全防范SYN flood网络攻击的原理及其防御方法

SYN flood网络攻击的原理及其防御方法


2009/3/23  编辑:佚名 来源:本站整理

拒绝服务攻击(Denial of Service, dos)是就在目前比较有效而又非常难于防御的一种网络net攻击方式, 它的目的就是使服务器不能够够为正常访问的用户提供服务。 所以, dos对一些紧密依靠互联网开展业务的企业和组织带来了致命的威胁。
1 SYN Flood攻击介绍说明:

  拒绝服务攻击(Denial of Service, dos)是目前比较有效而又非常难于防御的一种网络攻击方式, 它的目的就是使服务器不能够为正常访问的用户提供服务。 所以, dos对一些紧密依靠互联网开展业务的企业和组织带来了致命的威胁。

  SYN Flood是最为有效和流行的一种dos攻击形式。 它利用TCP三次握手协议的缺陷, 向目标主机发送send大量的伪造源地址的SYN连载请求, 消耗目标主机的资源, 从而不能够为正常用户提供服务。

  1.1 TCP连接建立的过程

  要掌握SYN Flood攻击的可以说是原理, 就一定要先介绍TCP的三次握手机制。
   TCP三次握手过程如下:
   1)客户端向服务器端发送一个SYN置位的TCP报文, 包含客户端使用的端口号和初始序列号x;

  2)服务器端收到客户端发送来的SYN报文后, 向客户端发送一个SYN和ACK都置位的TCP报文, 包含确认号为x+1和服务器的初始序列号y;

  3)TCP客户端
客户端端口
(1024-65535)

TCP服务器端

服务器端口
(1-1023)
SYN
SYN/ACK
ACK

  客户端收到服务器返回的SYN+ACK报文后, 向服务器返回一个确认号为y+1序号为x+1的ACK报文, 一个标准的TCP连接完成。 如图1所示:

1.2 攻击原理

  就在SYN Flood攻击中, 黑客机器向受害主机发送大量伪造源地址的TCP SYN报文, 受害主机分配配置必要的资源, 之后向源地址返回SYN+ACK包, 并等待源端返回ACK包, 如图2所示。 由于源地址是伪造的, 所以源端永远都将不会返回ACK报文, 受害主机继续发送SYN+ACK包, 并将半连接放入端口的积压队列中, 虽然一般的主机都有超时机制和默认的重传次数, 但是由于端口的半连接队列的长度是有限的, 如果会一直不断的向受害主机发送大量的TCP SYN报文, 半连接队列就一定会很快填满, 服务器拒绝新的连接, 将导致该端口再也不能够响应其他机器来进行的连接请求, 最后使受害主机的资源耗尽。

2.2 地址状态监控的解决处理方法

  地址状态监控的解决方法是利用监控必备工具对网络中的有关联TCP连接的数据信息包进行监控, 并对监听到的数据包进行处理。 处理的主要依据是连接请求的源地址。

每个源地址都有一个状态与之对应, 总共有四种状态:
初态:任意一个源地址刚现在开始的状态;
NEW状态:第一次出现或出现多次也不能断定存在的源地址的状态;
GOOD状态:断定存在的源地址所处的状态;
BAD状态:源地址不存在或不可达时所处的状态。
具体的动作和状态转换根据记录TCP头中的位码值决定:

  1)监听到SYN包, 如果源地址是第一次出现, 则置该源地址的状态为NEW状态;如果是NEW状态或BAD状态;则将该包的RST详细位置1然后重新发出去, 如果是GOOD状态不作任何处理。

  2)监听到ACK或RST包, 如果源地址的状态为NEW状态, 则转为GOOD状态;如果是GOOD状态则不会变化;如果是BAD状态则转为NEW状态;如果是BAD状态则转为NEW状态。

  3)监听到从服务器来的SYN ACK报文(目的地址为addr), 表明服务器已经为从addr发来的连接请求建立了一个半连接, 为防止建立的半连接过多, 向服务器发送一个ACK包, 建立连接, 同一个时间, 开始计时, 如果超时, 还未收到ACK报文, 证明addr不可达, 如果此时addr的状态为GOOD则转为NEW状态;如果addr的状态为NEW状态则转为BAD状态;如果为addr的状态为BAD状态则不变。
状态的转换图如图3所示:


初态
GOOD
NEW
BAD
ACK/RST
SYN
ACK/RST

ACK包确认超时
ACK/RST

ACK包确认超时
  下面分析一下基于地址状态监控的方法怎么才能能够防御SYN Flood攻击。

  1)对于一个伪造源地址的SYN报文, 若源地址第一次出现, 则源地址的状态为NEW状态, 当监听到服务器的SYN+ACK报文, 表明服务器已经为该源地址的连接请求建立了半连接。 此时, 监控程序代源地址发送一个ACK报文完成连接。 这样, 半连接队列中的半连接数不是很多。 计时器开始计时, 由于源地址是伪造的, 所以不会收到ACK报文, 超时后, 监控程序发送RST数据包, 服务器释放该连接, 该源地址的状态转为BAD状态。 之后, 对于每一个来自该源地址的SYN报文, 监控程序都会主动发送一个RST报文。

  2)对于一个合法的SYN报文, 若源地址第一次出现, 则源地址的状态为NEW状态, 服务器响应请求, 发送SYN+ACK报文, 监控程序发送ACK报文, 连接建立完毕。 之后, 来自客户端的ACK很快会到达, 该源地址的状态转为GOOD状态。 服务器可以能够很好的处理重复到达的ACK包。
从上面分析可以看出, 基于监控的方法可以很好的防御SYN Flood攻击, 而不反应影响正常用户的连接。

  3 小结

  本文介绍了SYN Flood攻击的基本原理, 然后详细描述了两种比较有效和方便实施的防御方法:SYN-cookie技术和基于监控的源地址状态技术。 SYN-cookie技术实现了无状态的握手, 避免了SYN Flood的资源消耗。 基于监控的源地址状态技术能够对每一个连接服务器的IP地址的状态进行监控, 主动采取措施避免SYN Flood攻击的影响。 这两种技术是目前所有的防御SYN Flood攻击的最为成熟和可行的技术。

相关文章
  • Linux中遇到device is busy怎么办
  • easyBCD如何引导启动ubuntu14.04
  • 启动idm时,总是弹窗提示正在复制idmwfp.sys 到C盘的drivers文件夹,然后第二个...
  • 移动硬盘分区后数据丢失怎么办?easyrecovery有效解决移动硬盘分区后数据丢失
  • Win7看视频时突然出现watchdog.sys蓝屏该如何解决?
  • appsync怎么安装?
  • BusyBox是什么?BusyBox怎么用
  • busybox验证失败怎么办?
  • PureSync官方下载|PureSync PureSync最新免费下载
  • tdx.sys是什么文件?
  • 发表评论
    阅读排行
    相关热门
    网站帮助 - 广告合作 - 下载声明 - 网站地图