抵御拒绝服务攻击的方法技术

技术编号:3541693 阅读:228 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种基于netfilter和syn-cookie实现的,防御syn洪流(synflooding)攻击的方法。本发明专利技术在网关中设置一个netfilter,利用syn-cookie机制来验证syn包的真实性,通过验证的syn请求被放行,没有通过验证的请求被拦截。

【技术实现步骤摘要】

本专利技术涉及一种在网关设备上抵御拒绝服务攻击的方法,特别涉及基于netfilter和syn-cookie实现防御syn flooding攻击的方法。
技术介绍
拒绝服务攻击(Denial of Service,DoS)是目前比较有效而又非常难于防御的一种网络攻击方式,它的目的就是使服务器不能够为正常访问的用户提供服务。所以,DoS对一些紧密依靠互联网开展业务的企业和组织带来了致命的威胁。Syn flooding是最为有效和流行的一种DoS攻击形式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的资源,从而不能够为正常用户提供服务。Syn flooding由于其发起攻击简单、难以防范,且攻击效果明显,是目前危害最大的DOS/DDOS攻击之一。Syn flooding攻击发起时,攻击者会以每秒数万至数十万个的速度向被攻击服务器发送伪造的TCP syn包,这些攻击包到达服务器后会迅速占满其半开连接队列,导致后续正常连接无法建立起来。新版本的linux在半开连接队列的维护上作了一些改进,新到的连接请求会挤掉队列里最“老”的一个连接请求,而占据队列里的一个位置,这样当攻击结束之后,立即可以接收新的连接,而不必等待半开连接超时。但是这种方法并不能抵御synflooding攻击,因为攻击进行时,伪造的syn包流量非常大,正常连接请求的syn包即使能够抢占半开连接队列中的一个位置,也会在其完成TCP三次握手前被伪造的syn包挤出队列,正常连接同样无法建立起来。如果被攻击的服务器部署在一个网关设备所保护的网络之内,并且该网关设备启用了状态检测包过滤或NAT功能——事实上这种情况非常常见,那么该网关设备也会受到攻击的影响。状态检测和NAT都需要维护一个连接表,synflooding攻击时,系统要为每一个syn包建立一个表项,很显然,即使该网关设备有很高的性能,能支持百万连接,其连接表也会在数秒内被耗尽。一旦连接表-->被耗尽,后续连接将无法建立,这样一来不单是被攻击的服务器无法访问,所有需要通过该网关设备的访问和服务都将无法进行。所以,防火墙这类网关设备对防御syn flooding攻击的需求,显得比服务器更为重要。目前,linux内核里已实现了syn-cookie,其基本思想是,任何一个syn包到来时,先不为其分配任何资源,而是立即回应一个syn/ack包,该包中的TCP序列号利用原syn包的特征字段和一个密钥使用一定的加密算法或散列算法算得,这个序列号就是一个cookie。如果前面提到的这个syn包是一个正常访问的开始,那么客户端收到syn/ack后会回应一个ack包,并以cookie+1作为该ack包的ack值,服务器收到ack包后会验证cookie的正确性,如果正确,则接受该连接,否则丢弃。而如果syn包是攻击者伪造的,那么它将收不到回应的syn/ack,即使它再次伪造一个ack包,到达服务器后也无法通过cookie的验证,只会被静静的丢弃。通过这种验证机制,syn-cookie可以从大量的syn包中挑出正常的连接并为其服务,而阻拦住伪造的连接。但是,linux内核里的syn-cookie其设计上只是保护了linux系统本身,对于通过它转发的syn flooding攻击,或者说当它作为一个网关时对于内部网服务器所遭受的syn flooding攻击,它却无能为力。Netfilter是linux下的一个包过滤工具,为大多数linux平台防火墙设备所采用,netfilter支持状态检测和NAT,使用这两种功能时需要维护一个连接表,任何一个TCP包(不仅仅是TCP包)只要不是已知连接的一部分,都要在连接表中为其创建一个表项。Netfilter的这一特点使得它在syn flooding攻击进行时会成为重要的受害者。随着网络技术的发展,带有状态检测和NAT功能的网关设备被广泛使用,而一旦攻击爆发,不单单是被攻击者失效,网关也会因为不堪重负而失效,一旦网关失效,整个内部网与外部的连接将被中断。本专利技术正是在这样一种情况下产生的,旨在网关设备上实现syn flooding攻击防御,保护网关本身和内部网络。
技术实现思路
本专利技术的目的是提供一种基于netfilter和syn-cookie抵御拒绝服务攻击如synflooding攻击的方法。-->实现本专利技术目的的主要方法是,在客户端与服务器之间的网关中设置一个抵御拒绝服务攻击的装置,该装置利用syn-cookie机制验证syn连接请求的真实性,如果通过验证,则放行syn连接请求并维护该连接,否则,阻断连接。在一个具体实施例中,本专利技术通过在客户端与服务器之间的网关中设置一个抵御拒绝服务攻击的装置实现抵御拒绝服务攻击的方法,该装置执行以下步骤:(1)拦截客户端发送的包含源IP、源端口、目的IP、目的端口、TCP序列号的syn连接请求;(2)针对所述syn连接请求,利用一个本地密钥,生成一个与所述syn关联的代理TCP序列号x;(3)向客户端返回包含代理TCP序列号的syn/ack数据包;(4)接收客户端收到所述syn/ack数据包后回应的包含x+1序列号的ack数据包;(5)利用所述代理TCP序列号x验证ack数据包中的x+1序列号;(6)当通过验证时,利用所收到的ack数据包所含有的源IP、源端口、目的IP、目的端口和密钥以及x+1序列号构造syn数据包,然后以客户端身份向服务器发送包含所构造的syn数据包的syn连接请求,由此建立客户端与服务器的连接;(7)当验证未通过时,不向服务器发送连接请求。其中,在所述步骤(6)中,抵御拒绝服务攻击的装置还检查所构造的syn数据包是否符合netfilter规则。其中,当检查确认所收到的syn数据包符合netfilter规则时,将用于该syn连接的连接表项插入连接表中,以便实现连接跟踪,并对网络地址转换提供支持。其中,所述连接表项包含源IP、源端口、目的IP、目的端口、客户端TCP序列号和服务器端TCP序列号。当通过了上述步骤(5)所述的验证时,抵御拒绝服务攻击的装置还将客户端地址即源IP地址添加到白名单地址列表中,在此情况下,本专利技术的方法还包括以下步骤:当抵御拒绝服务攻击的装置拦截客户端发起的syn连接请求时,首先检查syn数据包中的源IP地址是否在白名单地址列表中,-->如果在白名单地址列表中,则直接利用收到的syn数据包向服务器发起连接...

【技术保护点】
一种抵御拒绝服务攻击的方法,其中在客户端与服务器之间的网关中设置一个抵御拒绝服务攻击的装置,该装置执行以下步骤: 利用syn-cookie机制验证syn连接请求的真实性; 如果通过验证,则放行syn连接请求并维护该连接,否则,阻断连接。

【技术特征摘要】
1、一种抵御拒绝服务攻击的方法,其中在客户端与服务器之间的网关中设
置一个抵御拒绝服务攻击的装置,该装置执行以下步骤:
利用syn-cookie机制验证syn连接请求的真实性;
如果通过验证,则放行syn连接请求并维护该连接,否则,阻断连接。
2、一种抵御拒绝服务攻击的方法,其中在客户端与服务器之间的网关中设
置一个抵御拒绝服务攻击的装置,该装置执行以下步骤:
(1)拦截客户端发送的包含源IP、源端口、目的IP、目的端口、TCP序列
号的syn连接请求;
(2)针对所述syn连接请求,利用一个本地密钥,生成一个与所述syn关
联的代理TCP序列号x;
(3)向客户端返回包含代理TCP序列号的syn/ack数据包;
(4)接收客户端收到所述syn/ack数据包后回应的包含x+1序列号的ack数
据包;
(5)利用所述代理TCP序列号x验证ack数据包中的x+1序列号;
(6)当通过验证时,利用所收到的ack数据包所含有的源IP、源端口、目的
IP、目的端口和密钥以及x+1序列号构造syn数据包,然后以客户端身份向服务
器发送包含所构造的syn数据包的syn连接请求,由此建立客户端与服务器的连
接;
(7)当验证未通过时,不向服务器发送连接请求。
3、根据权利要求2所述的方法,其中在所述步骤(6)中,抵御拒绝服务攻
击的装置还检查所构造的syn数据包是否符合netfilter规则。

【专利技术属性】
技术研发人员:王睿申龙哲李有永马洁涂福恩
申请(专利权)人:太极计算机股份有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1