拒绝服务防御技术在IXP处理器平台的实现

来源 :商场现代化 | 被引量 : 0次 | 上传用户:hujun_xiao
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要] 本文介绍了分布式拒绝服务防御技术中SYN Cookie的原理,提出一种改进目前嵌入式Linux中SYN Cookie技术的思路,并在基于INTEL IXP网络处理器的硬件平台上,得到了实践和验证。
  [关键词] 分布式拒绝服务嵌入式LINUX路由器Intel IXP处理器
  
  在目前的因特网体系结构中,网络安全一直是一个不容被忽视的问题,在各类网络环境中,SYN Flood是一种非常危险而常见的DDoS攻击方式,而能够有效防范SYN Flood攻击的手段并不多,SYN Cookie是其中最著名的一种,笔者在设计一个基于IXP1200的路由器软件时,对SYN Cookie技术实现进行了相关实践。
  一、SYN Flood攻击和SYN Cookie原理
  SYN Flood攻击是一种典型的拒绝服务型攻击,它利用的是TCP协议的三次握手过程进行的攻击。TCP协议规定,如果一端想向另一端发起连接,它需要首先发送TCP SYN 包到对方,对方收到后发送一个TCP SYN+ACK包回来,发起方再发送TCP ACK包回去,这样三次握手就结束了。我们把TCP连接的发起方叫作”TCP客户机”,TCP连接的接收方叫作“TCP服务器”,值得注意的是在TCP服务器收到TCP SYN request包时,在发送TCP SYN+ACK包回TCP客户机前,TCP服务器要先分配好一个数据区专门服务于这个即将形成的TCP连接,这种连接状态称半开连接。在最常见的SYN Flood攻击中,攻击者在短时间内发送大量的TCP SYN包给受害者,这时攻击者是TCP客户机,受害者是TCP服务器,受害者会为每个TCP SYN包分配一个特定的数据区,只要这些SYN包具有不同的源地址,这将最终导致系统不能正常工作。
  SYN Cookie是对TCP服务器端的三次握手协议做一些修改,专门用来防范SYN Flood攻击。它的原理是,在TCP服务器收到TCP SYN包并返回TCP SYN+ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。在收到TCP ACK包时,TCP服务器再根据那个cookie值检查这个TCP ACK包的合法性。如果合法,再分配专门的数据区进行处理。
  二、Linux内核中SYN Cookie实现技术分析
  在Linux内核中对SYN Flood有很好的防护,在每一个sock中都有一个tcp_opt选项。在tcp_opt中有一个tcp_listen_opt,这里存储的是这个sock在LISTEN状态下时保存的一些选项,其中有一个open_request结构的数组,数组长度为TCP_SYNQ_HSIZE(512),最多可以同时开启512个半开连接。当这个数组满了时,新来的open_request会顶替掉一个老的open_request。但问题是,这种处理方法会在面对SYN Flood攻击时丢掉正常的连接请求。SYN Cookie的作用恰恰是保证在面对SYN Flood攻击时,一方面能够拒绝非法的TCP连接请求,一方面正常连接可以被建立。Linux内核对TCP流程的处理主要在tcp_ipv4.c文件中的函数实现。
  上面介绍的就是Linux中对SYN Cookie的实现方式,合法的TCP连接请求一定可以通过SYN Cookie流程。
  三、基于IXP1200网络处理器的SYN Cookie技术研究
  从上文介绍可以看到,Linux中的SYN Cookie机制主要功能是防止本机遭受SYN Flood攻击,但在笔者实践中,不仅需要让设备自身对SYN Flood攻击免疫,而且还要保护它后面所有对外开放TCP端口的主机免受攻击。
  为此,我们利用原SYN Cookie原理在内网和外网之间实现TCP三次握手过程的代理。
  在代理LINUX系统S收到来自外网的SYN包时,它并不直接转发,而是缓存在本地,再按照原来SYN Cookie的机制制作好一个针对这个SYN包的SYN+ACK包,注意,这个SYN+ACK包中的ack顺序号为特制的cookie值c,更重要的是这个包的的源地址被伪造成了S的地址。这样C会接收到这个SYN+ACK包,并认为是从S反馈回来的。于是C再响应一个ACK包,并认为与S的TCP连接已经建立起来。这时防火墙F收到这个ACK包,按照前面的描述的SYN Cookie原理来检查这个ACK中的ack顺序号。如果认为合法,F将本地缓存的来自C的SYN包发送给S,这时S会响应一个SYN+ACK包到C,其中也携带一个seq号, 我们设为c`。当然这个包不会到达C,而是由防火墙F截取,F根据这个包中的序列号等信息,造一个ACK包响应到S。这时的情况是:C认为自己已经与S建立了TCP连接;S认为自己与C建立了TCP连接。以后的TCP数据内容可以直接穿过防火墙F,在S和C之间交互。
  它相当于在TCP Server与TCP Client之间实现了对三次握手协议的代理。第一次”三次握手”在TCP Client与代理LINUX系统之间进行,第二次”三次握手”在代理LINUX系统与TCP Server之间。
  四、结束语
  通过对LINUX下SYN Cookies的分析和在IXP平台下的实践,我们改进了SYN Cookies的工作机制,就是当服务器从特定主机接收到一个SYN请求时,它返回给主机一个SYN-ACK包,但是服务器并不立即进入SYN_RECD状态,而是根据参数通过一个哈希函数计算所需要的初始连接序列字,这样,在三次握手过程中,当第三个数据包返回时,服务器只需检查序列字是否和计算的哈希函数结果值相匹配,从而防止同一个发起者稍后重新使用相同的序列字。
  
  参考文献:
  [1]沈清等:基于SYN Cookie下防分布式拒绝服务攻击算法的分析与实现.计算机应用,2005.12
  [2]林闯等:基于Intel网络处理器的路由器队列管理:设计、实现与分析.计算机学报,2003.09
  [3]贺冰琰姜帅:基于网络处理器IXP1200的路由查找功能的微码实现[J].现代计算机, 2007,(01)
其他文献
随着数据采集和处理技术的进步,存在大量噪声、丢失值、错误及不一致的不确定性数据越来越多,传统确定性数据管理技术正面临着前所未有的挑战。允许不精确成为小数据到大数据
面对油公司体制机制建设带来的新挑战和当前国企对党建工作的重要定位,按照“坚持核心引领,依托两个载体助推,强化一套考核激励”的工作思路,落实党建责任,实现党建和生产经
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield
期刊
萧云从的<杜律细>一书对杜诗中的拗句强使协于平仄,遭到了大家王士禛的严厉批评,因而该书渐不为学界所重,乃至最终散佚.四库馆臣更贬其书为"误用其心"的杜律注本.其实<杜律细
谱聚类(Spectral Clustering)是一种基于图论的聚类方法。对给定的数据集聚类,可以先构造一个无向加权图,其中图的顶点表示数据点,图的每条边都有一个权值,用来描述顶点之间
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield