当前位置:首页 > 软件开发 > net
firefox

SYN Cookie在Linux内核中的实现

概述

  在目前以ipv4为支撑的网络协议上搭建的网络环境中,syn flood是一种非常危险而常见的dos攻击方式。到目前为止,能够有效防范syn flood攻击的手段并不多,而syn cookie就是其中最著名的一种。syn cookie原理由d. j. bernstain和 eric schenk发明。在很多操作系统上都有各种各样的实现。其中包括linux。本文就分别介绍一下syn flood攻击和syn cookie的原理,更重要的是介绍linux内核中实现syn cookie的方式。最后,本文给出一种增强目前linux中syn cookie功能的想法。

  一、syn flood攻击

  syn flood攻击是一种典型的拒绝服务型(denial of service)攻击。所谓拒绝服务型攻击就是通过进行攻击,使受害主机或网络不能够良好的提供服务,从而间接达到攻击的目的。

  syn flood攻击利用的是ipv4中tcp协议的三次握手(three-way handshake)过程进行的攻击。大家知道协议规定,如果一端想向另一端发起tcp连接,它需要首先发送tcp syn 包到对方,对方收到后发送一个tcp syn+ack包回来,发起方再发送tcp ack包回去,这样三次握手就结束了。我们把tcp连接的发起方叫作"tcp客户机(tcp client)",tcp连接的接收方叫作"tcp服务器(tcp server)"。值得注意的是在tcp服务器收到tcp syn request包时,在发送tcp syn+ack包回tcp客户机前,tcp服务器要先分配好一个数据区专门服务于这个即将形成的tcp连接。一般把收到syn包而还未收到ack包时的连接状态成为半开连接(half-open connection)。

  在最常见的syn flood攻击中,攻击者在短时间内发送大量的tcp syn包给受害者,这时攻击者是tcp客户机,受害者是tcp服务器。根据上面的描述,受害者会为每个tcp syn包分配一个特定的数据区,只要这些syn包具有不同的源地址(这一点对于攻击者来说是很容易伪造的)。这将给tcp服务器系统造成很大的系统负担,最终导致系统不能正常工作。

 ↓相关文章:
© 2006-2008 All Rights Reserved