首页> 中国专利> 一种拒绝服务攻击防护方法、网络系统和代理服务器

一种拒绝服务攻击防护方法、网络系统和代理服务器

摘要

本发明公开了一种拒绝服务攻击防护方法、网络系统和代理服务器。该方法通过截获连接请求数据包,解析得到该连接请求数据包的源地址,查询匹配所述连接请求数据包的合法性;对不能确定其合法性的连接请求数据包,代理目的端响应客户端请求,过滤掉拒绝服务攻击,再根据合法的连接请求的响应数据包,判断目的端地址,代理客户端与目的端建立连接,实现拒绝服务攻击防护。其完成对本地和远程服务器的一体化防护。

著录项

  • 公开/公告号CN101175013A

    专利类型发明专利

  • 公开/公告日2008-05-07

    原文格式PDF

  • 申请/专利权人 飞塔信息科技(北京)有限公司;

    申请/专利号CN200610114310.1

  • 发明设计人 许世强;赵昌林;

    申请日2006-11-03

  • 分类号H04L12/56(20060101);H04L29/06(20060101);H04L9/00(20060101);H04L12/24(20060101);

  • 代理机构11006 北京律诚同业知识产权代理有限公司;

  • 代理人梁挥;徐金国

  • 地址 100085 北京市海淀区上地信息路7号数字传媒大厦507室

  • 入库时间 2023-12-17 20:06:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-07-04

    授权

    授权

  • 2009-11-04

    专利申请权、专利权的转移(专利申请权的转移) 变更前: 变更后: 登记生效日:20091002 申请日:20061103

    专利申请权、专利权的转移(专利申请权的转移)

  • 2008-07-02

    实质审查的生效

    实质审查的生效

  • 2008-05-07

    公开

    公开

说明书

技术领域

本发明涉及网络安全领域,特别是涉及一种拒绝服务攻击防护方法、网络系统和代理服务器。

背景技术

随着宽带网络的进一步普及,很多政府网站、信息服务提供商(InternetServer Provider,ISP)、托管机房、商业站点、游戏服务器、聊天网站等网络服务商被拒绝服务(Denial of Service,DOS)攻击或者分布式拒绝服务(Distributed Denial of Service,DDOS)所困扰,DOS、DDOS攻击的主要影响是网络数据库无法正常使用,服务器被入侵、机密资料丢失、以及一些连带问题,严重时甚至会使得一些大型网站全面瘫痪。

DOS是Denial Of Service的简称,即拒绝服务,造成DOS的攻击行为被称为DOS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DOS攻击有计算机网络带宽攻击和连通性攻击。带宽攻击是指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。

DDOS攻击是指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或者多个目标发动DOS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者将DDOS主控程序安装在一个计算机上,在一个设定的时间内,主控程序将与已经被安装在国际互联网(Internet)上的许多计算机上的大量代理程序通讯,代理程序在收到指令时就发动攻击,主控程序能在几秒钟内激活成百上千次代理程序的运行。

被DDOS攻击时的现象有:被攻击主机上有大量等待的TCP(TransmissionControl Protocol,传输控制协议)连接;网络中充斥着大量的无用的数据包,源地址为假;制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯;利用受害主机提供的服务或传输协议上的缺陷,反复高速地发出特定的服务请求,使受害主机无法及时处理所有正常请求,严重时会造成系统死机。

DDOS攻击中最典型的攻击模式是SYN/ACK Flood(SYN风暴)攻击,其原理主要是向被攻击主机发送大量伪造源IP和源端口的TCP连接请求数据包,导致主机缓存资源因处理这些欺骗请求包被耗尽或因忙于发送回应包,直至系统资源耗尽,从而形成拒绝服务。其基本过程是,一台计算机在网络中通讯时首先需要建立TCP握手,标准的TCP握手需要三次包交换来建立。一台服务器一旦接收到客户机的连接请求数据包SYN(Synchronize sequencenumbers)后必须回应一个请求响应数据包SYN/ACK,然后等待该客户机回应给它一个响应数据包ACK(Acknowledgment field significant)来确认,才真正建立连接。然而,如果只发送初始化的连接请求数据包SYN,而不发送确认服务器的响应数据包ACK会导致服务器一直等待响应数据包ACK。由于服务器在有限的时间内只能响应有限数量的连接,这就会导致服务器一直等待回应而无法响应其它计算机进行的连接请求,

抵御拒绝服务攻击通常有两种解决方案:一种是使用专门的防拒绝服务攻击设备,另一种方案是使用防火墙上自带的防拒绝服务攻击功能。

但使用现有的防拒绝服务攻击设备,只能防护其后的网络,但不能防护针对自身的拒绝服务攻击。因此通常采用透明模式,因为在透明模式下设备不具备IP地址,所以自身不会受到拒绝服务攻击。如果使用者已经配备了网关/防火墙/边缘路由,为了使网关/防火墙/边缘路由免受拒绝服务攻击,则需要在其之前加装反拒绝服务系统。这种传统的模式可以在一定程度上缓解拒绝服务攻击,但缺点是需要增加额外的串行网络设备,降低了网络的可靠程度,同时成本增加。

对另一种自带的具有防拒绝服务攻击的防火墙,可以防护外网对防火墙自身的拒绝服务攻击,但其缺点是不能防护位于其后的网络,因此这种解决方案并不能真正的防御拒绝服务攻击。

发明内容

本发明所要解决的问题是克服现有技术的缺陷,提供一种拒绝服务攻击防护方法、网络系统和代理服务器,其完成对本地和远程服务器的一体化防护。

为实现本发明目的而提供的一种拒绝服务攻击防护方法,包括下列步骤:

步骤A,对连接请求数据包,代理目的端响应客户端请求,过滤掉拒绝服务攻击,再根据合法的连接请求的响应数据包,判断目的端地址,代理客户端与目的端建立连接。

所述步骤A之前还包括下列步骤:

截获连接请求数据包,解析得到该连接请求数据包的源地址,查询匹配所述连接请求数据包的合法性。

所述截获连接请求数据包,解析得到该连接请求数据包的源地址,查询匹配连接请求数据包的合法性之前进一步包括下列步骤:

统计网络中的连接请求数据包,并在流量达到危险阀值时,确认受到拒绝服务攻击,启动防御措施。

所述步骤A之后还包括下列步骤:

在连接请求数据包的流量恢复到正常流量后,不再进行防御拒绝服务攻击的防护过滤,并将数据初始化,允许客户端与服务器直接进行连接。

所述截获连接请求数据包,解析得到该连接请求数据包的源地址,查询匹配连接请求数据包的合法性,包括下列步骤:

根据截获到的连接请求数据包,解析得到该连接请求数据包的源地址,利用连接记录表对所述连接请求数据包的源IP地址进行查询匹配,确认该连接请求数据包的合法性,并对匹配通过的连接请求数据包予以放行。

所述根据截获到的连接请求数据包,解析得到该连接请求数据包的源地址,利用连接记录表对所述连接请求数据包的源IP地址进行查询匹配,并确认该连接请求数据包的合法性,并对合法的连接请求数据包予以放行,具体包括下列步骤:

首先,当截获到连接请求数据包后,解析出客户端IP地址,与连接记录表进行查询匹配,确认其是否为合法的IP地址;

其次,匹配成功后,如果该IP地址当前的半开连接数量未超过用户设定的阀值,则允许通过。

所述对连接请求数据包,代理目的端响应客户端请求,过滤掉拒绝服务攻击,包括下列步骤:

对不能确定其合法性的连接请求数据包,根据该连接请求数据包的目的端地址,接管所述连接请求数据包,代理目的端向客户端响应,发送请求响应数据包;并在收到客户端的响应数据包后,确认为合法连接,完成与客户端的连接过程;否则不再继续传输,过滤掉拒绝服务攻击的连接请求数据包。

所述判断目的端地址,具体包括下列步骤:

确认连接请求为合法的连接请求后,判断数据包的发送目的端为自身还是远程服务器。

如果数据包的发送目的端为自身,则所述代理客户端与目的端建立连接,包括下列步骤:

步骤N1,代理客户端向本地协议栈发送连接请求数据包,请求建立TCP连接;

步骤N2,截获到本地协议栈回应的请求响应数据包后,丢弃此数据包,并向本地协议栈发送响应数据包,与本地建立TCP连接;

步骤N3,拦截连接成功后客户端与目的端通讯的数据包,修正TCP序列号,并重新计算TCP校验和,建立真正的TCP连接。

所述代理客户端向本地协议栈发送连接请求,包括下列步骤:

调用netif_rx函数,将该连接请求数据包重新接收一次,这时网络系统将认为产生一次新的连接请求数据包,则将这个连接请求数据包送上协议栈发送到用户层处理。

所述截获到本地协议栈回应的请求响应数据包后,丢弃此数据包,并向本地协议栈发送响应数据包,与本地建立TCP连接,包括下列步骤:

用户层收到连接请求数据包,发送请求响应数据包后,通过NF_IP_LOCAL_OUT节点截获此请求响应数据包;将截获的请求响应数据包修改为响应数据包,计算序列号及校验和后,丢弃此连接请求数据包,调用NF_HOOK函数将此数据包挂接到网络系统接收缓冲区的链表上,网络系统将此响应数据包继续发送至用户层,用户层收到响应数据包后,完成三次握手认证,与本地建立TCP连接成功。

如果数据包的发送目的端为远程服务器,则所述代理客户端与目的端建立连接,包括下列步骤:

步骤N1′,代理客户端向受保护的远程服务器发送连接请求数据包,请求建立TCP连接;

步骤N2′,截获到受保护远程服务器回应的请求响应数据包后,丢弃此数据包,并向远程服务器发送响应数据包,与远程服务器建立TCP连接;

步骤N3′,拦截连接成功后通讯的数据包,修正TCP序列号,并重新计算TCP校验和,建立真正的TCP连接。

所述代理客户端向受保护的远程服务器发送连接请求数据包,请求建立TCP连接,包括下列步骤:

根据响应数据包的路由信息,代理客户端调用NF_HOOK函数,将连接请求数据包发向受保护的远程服务器。

所述截获到受保护远程服务器回应的请求响应数据包后,丢弃此数据包,并向远程服务器发送响应数据包,与远程服务器建立TCP连接,包括下列步骤:

受保护的远程服务器收到连接请求,发送请求响应数据包后,通过NF_IP_FORWARD节点截获此请求响应数据包,并将该请求响应数据包修改为响应数据包,调换源MAC地址和目的MAC地址的顺序,计算序列号及校验和,将该响应数据包发向远程服务器,远程服务器收到响应数据包后,实现三次握手认证,与目的端建立TCP连接。

本发明还提供一种拒绝服务攻击防护网络系统,包括至少一个目的端和至少一个客户端,所述网络的数据链路层包括代理服务器;

所述代理服务器,用于对连接请求数据包,代理目的端响应客户端请求,过滤掉拒绝服务攻击,再根据合法的连接请求的响应数据包,判断目的端地址,代理客户端与目的端建立连接。

所述网络的数据链路层还包括防御开关器;

所述防御开关器,用于根据连接请求数据包,在确认是否受到拒绝服务攻击后,开启和关闭代理服务器。

所述网络的数据链路层还进一步包括计数器;

所述计数器,用于统计网络中的连接请求数据包,确认是否受到拒绝服务攻击,通知防御开关器开启或者关闭代理服务器。

所述代理服务器包括过滤模块;

所述过滤模块,用于对不能确定合法性的连接请求数据包,根据所述连接请求数据包的目的端地址,接管所述连接请求数据包,代理目的端向客户端响应,发送请求响应数据包;并在收到客户端的响应数据包后,确认为合法连接,完成代理服务器与客户端的连接过程;否则不再继续传输,过滤掉拒绝服务攻击的连接请求数据包。

所述代理服务器还包括连接记录表和查询模块,其中;

连接记录表,用于记录合法的客户端源地址;

所述查询模块,用于根据截获到的连接请求数据包,利用连接记录表对所述连接请求数据包的源IP地址进行匹配查询,确认该连接请求数据包的合法性,并对合法的连接请求数据包予以放行;对不能确定合法性的连接请求数据包,利用过滤模块过滤掉拒绝服务攻击。

所述代理服务器还进一步包括连接模块;

所述连接模块,用于根据合法的连接请求的客户端响应数据包,代理客户端,与目的端建立连接。

所述代理服务器还更进一步包括解析模块,记录模块,其中:

所述解析模块,用于根据截获连接请求数据包,通过解析得到连接请求的客户端源地址和目的端目的地址,以及端口信息;

所述记录模块,用于收到客户端发回的响应数据包,确认为合法连接后,向连接记录表增加连接记录表项。

所述目的端为网关,防火墙,边缘路由器和/或远程服务器。

所述代理服务器还更进一步包括判断模块;

所述判断模块,用于确认连接请求为合法的连接请求后,判断数据包的发送目的端为自身还是远程服务器。

所述判断模块判断数据包的发送目的端为自身,则所述连接模块根据合法的连接请求的响应数据包,代理客户端与目的端建立连接,是通过下列步骤实现的:

步骤M1,代理客户端向本地协议栈发送连接请求数据包,请求建立TCP连接;

步骤M2,截获到本地协议栈回应的请求响应数据包后,丢弃此数据包,并向本地协议栈发送响应数据包,与本地建立TCP连接;

步骤M3,拦截连接成功后客户端与目的端通讯的数据包,修正TCP序列号,并重新计算TCP校验和,建立真正的TCP连接。

所述连接模块代理客户端向本地协议栈发送连接请求,是通过下列步骤实现的:

调用netif_rx函数,将该连接请求数据包重新接收一次,这时网络系统将认为产生一次新的连接请求数据包,则将这个连接请求数据包送上协议栈发送到用户层处理。

所述连接模块所述截获到本地协议栈回应的请求响应数据包后,丢弃此数据包,并向本地协议栈发送响应数据包,与本地建立TCP连接,是通过下列步骤实现的:

用户层收到连接请求数据包,发送请求响应数据包后,通过NF_IP_LOCAL_OUT节点截获此请求响应数据包;将截获的请求响应数据包修改为响应数据包,计算序列号及校验和后,丢弃此连接请求数据包,调用NF_HOOK函数将此数据包挂接到网络系统接收缓冲区的链表上,网络系统将此响应数据包继续发送至用户层,用户层收到响应数据包后,完成三次握手认证,与本地建立TCP连接成功。

所述判断模块判断数据包的发送目的端为远程服务器,则所述连接模块根据合法的连接请求的响应数据包,代理客户端与目的端建立连接,是通过下列步骤实现的:

步骤M1′,代理客户端向受保护的远程服务器发送连接请求数据包,请求建立TCP连接;

步骤M2′,截获到受保护远程服务器回应的请求响应数据包后,丢弃此数据包,并向远程服务器发送响应数据包,与远程服务器建立TCP连接;

步骤M3′,拦截连接成功后通讯的数据包,修正TCP序列号,并重新计算TCP校验和,建立真正的TCP连接。

所述连接模块代理客户端向受保护的远程服务器发送连接请求数据包,请求建立TCP连接,是通过下列步骤实现的:

根据响应数据包的路由信息,代理客户端调用NF_HOOK函数,将连接请求数据包发向受保护的远程服务器。

所述连接模块截获到受保护远程服务器回应的请求响应数据包后,丢弃此数据包,并向远程服务器发送响应数据包,与远程服务器建立TCP连接,是通过下列步骤实现的:

受保护的远程服务器收到连接请求,发送请求响应数据包后,通过NF_IP_FORWARD节点截获此请求响应数据包,并将该请求响应数据包修改为响应数据包,调换源MAC地址和目的MAC地址的顺序,计算序列号及校验和,将该响应数据包发向远程服务器,远程服务器收到响应数据包后,实现三次握手认证,代理服务器与目的端建立TCP连接。

所述代理服务器是配置于网关/防火墙网络系统的数据链路层,作为网关/防火墙一部分的代理服务器。

为实现本发明目的,进一步提供一种网络系统中的代理服务器,配置于网络系统的数据链路层,用于对连接请求数据包,代理目的端响应客户端请求,过滤掉拒绝服务攻击,再根据合法的连接请求的响应数据包,判断目的端地址,代理客户端与目的端建立连接。

所述的代理服务器,包括过滤模块;

所述过滤模块,用于对不能确定合法性的连接请求数据包,根据所述连接请求数据包的目的端地址,接管所述连接请求数据包,代理目的端向客户端响应,发送请求响应数据包;并在收到客户端的响应数据包后,确认为合法连接,完成代理服务器与客户端的连接过程;否则不再继续传输,过滤掉拒绝服务攻击的连接请求数据包。

所述的代理服务器,还包括连接记录表和查询模块,其中;

连接记录表,用于记录合法的客户端源地址;

所述查询模块,用于根据截获到的连接请求数据包,利用连接记录表对所述连接请求数据包的源IP地址进行匹配查询,确认该连接请求数据包的合法性,并对合法的连接请求数据包予以放行;对不能确定合法性的连接请求数据包,利用过滤模块过滤掉拒绝服务攻击。

所述的代理服务器,还进一步包括连接模块;

所述连接模块,用于根据合法的连接请求的客户端响应数据包,代理客户端,与目的端建立连接。

所述的代理服务器,还更进一步包括解析模块,记录模块,其中:

所述解析模块,用于根据截获连接请求数据包,通过解析得到连接请求的客户端源地址和目的端目的地址,以及端口信息;

所述记录模块,用于收到客户端发回的响应数据包,确认为合法连接后,向连接记录表增加连接记录表项。

所述目的端为网关,防火墙,边缘路由器和/或远程服务器。

所述的代理服务器,还更进一步包括判断模块;

所述判断模块,用于确认连接请求为合法的连接请求后,判断数据包的发送目的端为自身还是远程服务器。

所述代理服务器是配置于网关/防火墙网络系统的数据链路层,作为网关/防火墙一部分的代理服务器。

与现有的方案相比,本发明的拒绝服务攻击方法、网络系统和代理服务器,在网络系统中实施完善的拒绝服务攻击防护,既可以进行本机防护,也可以对其后的网络设备进行防护,其使用工作原理类似的本地代理和远程代理,使系统拥有更好的整合度,从而更加容易维护。其能够对所有发至本机的TCP连接请求和发往其后服务器的连接请求都进行了处理,使用本地代理和远程代理完成对本机和远程服务器的一体化防护,保护了本机以及其后的网络。

附图说明

图1是本发明拒绝服务攻击防护方法流程图;

图2是本发明实施例查询过滤记录连接请求数据包过程流程图;

图3是本发明实施例中代理服务器与本地建立TCP连接流程图;

图4是本发明实施例中代理服务器与远程服务器建立TCP连接流程图;

图5是本发明拒绝服务攻击防护网络系统示意图;

图6是本发明代理服务器结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种拒绝服务攻击防护方法、网络系统和代理服务器进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在本发明实施例中,通过基于Linux 2.6核心,修改网络系统数据链路层的Linux核心协议,实现本发明。

本发明使用Linux系统中的过滤单元(NetFilter),通过利用NF_IP_LOCAL_IN、NF_IP_LOCAL_OUT以及NF_IP_FORWARD三个节点来实现。

下面详细说明本发明的一种拒绝服务攻击防护方法:

如图1所标,本发明的拒绝服务攻击防护方法包括下列步骤:

步骤S100,统计网络中的连接请求数据包SYN,并在流量达到危险阀值时,确认受到拒绝服务攻击,启动防御措施,转到步骤S200,过滤掉拒绝服务攻击的连接请求数据包SYN。

为了减少采用代理机制产生的延时对网络性能造成的影响,可以在网络流量较小时只统计自身及受其保护的网络的连接请求数据包SYN的半开连接数,当网络连接请求数据包SYN的流量增大,连接请求数据包SYN的半开连接数达到用户设定的危险阀值时,确认受到了拒绝服务攻击,启动防御措施,转到步骤S200,过滤掉拒绝服务攻击的连接请求数据包SYN。

一般情况下,当目的端收到一个TCP连接请求数据包SYN后,马上为该连接请求分配缓冲区,然后返回一个请求响应包SYN+ACK,这时形成一个半开连接。

也可以根据拒绝服务攻击的特点,攻击发生时连接请求数据包SYN的数量瞬时会变得很大,通过对连接请求数据包SYN流量进行统计,判断网络是否受到拒绝服务攻击。首先根据包头信息判断是何种类型的数据包,从数据包的类型统计得到每秒钟到达的连接请求数据包SYN的个数,一旦检测出连接请求数据包SYN的流量超过服务器正常处理的限制或者用户设定的阀值时,确认受到了拒绝服务攻击,启动防御措施,转到下一步骤S200过滤拒绝服务攻击。

步骤S200,截获连接请求数据包SYN,解析得到该连接请求数据包的源IP地址后,查询该连接请求数据包SYN的合法性;然后对不能确定合法性的连接请求数据包SYN,代理目的端响应客户端510请求,向客户端510发送请求响应数据包SYN+ACK,过滤掉拒绝服务攻击,再根据合法的连接请求的响应数据包ACK,判断目的端地址,代理客户端510与目的端建立连接。

步骤S300,在连接请求数据包的流量恢复到正常流量后,不再进行防御拒绝服务攻击的防护过滤,并将连接记录表630初始化,允许客户端510与服务器直接进行TCP连接。

当连接请求数据包的个数恢复到网络正常的情况下时,不再启动防御措施,将连接记录表630初始化,所有连接记录表630项清0,允许客户端510与服务器直接进行连接。

如图2所示,下面进一步详细步骤S200的过程,即截获连接请求数据包SYN,解析得到该连接请求数据包的源IP地址后,查询该连接请求数据包SYN的合法性;然后对不能确定合法性的连接请求数据包SYN,代理目的端响应客户端510请求,向客户端510发送请求响应数据包SYN+ACK,过滤掉拒绝服务攻击,再根据合法的连接请求的响应数据包ACK,判断目的端地址,代理客户端510与目的端建立连接的具体过程:

步骤S210,根据截获到的连接请求数据包SYN,解析得到该连接请求数据包的源IP地址后,利用连接记录表630对所述连接请求数据包SYN的源IP地址进行匹配查询,确认该连接请求数据包SYN的合法性,并对合法的连接请求数据包SYN予以放行;对不能确定合法性的连接请求数据包SYN,转到步骤S220,过滤掉拒绝服务攻击的连接请求数据包SYN。

首先,当截获到连接请求数据包后,解析出客户端IP地址,与连接记录表进行查询匹配,确认其是否为合法的IP地址;

网络系统在网关模式下,从外部传入的所有发向目的端的数据,均会通过网络链路层的NF_IP_LOCAL_IN节点,在NF_IP_LOCAL_IN节点上就可以截获所有的TCP连接请求数据包SYN。

如果要匹配查询所截获的连接请求数据包SYN是否为合法的连接请求数据包SYN,首先进行解析得到该连接请求的数据包SYN的源IP地址,使用连接记录表630进行匹配查询,确认其是否为合法的IP地址。

当受到诸如伪地址的SYN flood攻击时,随着攻击的进行链表会越来越长,源IP地址可能有255×255×255×255之多。当受到伪地址攻击时,网络系统每收到一个TCP连接请求数据包SYN,都需要对这个巨大的连接记录链表进行查找,而受到拒绝服务攻击时,伪地址TCP连接请求数据包SYN一般都在每秒钟一万个以上,合法TCP连接请求数据包SYN只有几个或者几十个,所占比例极小,而为了匹配查询到比例极小的合法的TCP连接请求数据包,需要对每个TCP连接请求数据包SYN,在连接请求数据包进行匹配查找操作,这将严重消耗系统资源,造成网络系统响应变慢甚至瘫痪,阻塞所有的连接请求数据包,那么攻击者实际上以另外一种形式对服务器进行了拒绝服务攻击。

为克服这一缺陷,作为本发明实施例而采用的一种匹配查询方法,将连接记录表630分为四层节点,将IP地址分为四段,连接记录表630中的四层节点对应首IP地址的四段,将IP地址分别记录到连接记录表630中四个不同层节点中去,每个层节点分别指向下一层节点的表头,形成一个四层节点的连接记录表630,每层节点指向上层节点的链表套链表的数据结构。

例如,当一个新的连接请求数据包SYN到达时,设其IP地址为201.0.168.2,则首先在第一层节点中进行匹配查找,即查找201,如果找到201,则顺着该层节点查找以该节点作为表头的子链表即第二层节点,找到0,然后顺着这个节点找第三层节点中的168,一直找到第四层节点中的2。如果都匹配成功,那么就认为该IP地址合法。否则,该IP地址为未经验证的IP地址,需要利用拒绝服务攻击防护手段,过滤掉可能的拒绝服务攻击的连接请求数据包。使用这样一个连接记录表630,只需要搜索四层节点就可以得到结果,也就是说,最多也只需要255×4次查表操作,就可以实现匹配查找。为进一步加快查找速度,可以进一步使用二分树查找法、哈夫曼树查找法,根据所述具有四层结构的连接记录表630进行查找,从而大大提高查找速度。

也可以使用如一次定位的哈希(HASH)算法对连接记录表中的记录进行查找。

连接记录表630,记录合法的客户端510IP地址。为了得到合法的客户端510IP地址,在截获到一个SYN包,查询匹配后确认为新的源IP地址后,就记录下该客户端510源IP地址,并在验证为合法的连接请求,即成功建立连接的客户端源IP地址,则将该客户端510IP地址加入到连接记录表630中去。

其次,匹配成功后,如果该IP地址当前的半开连接数量未超过用户设定的阀值,则允许通过。

根据TCP协议,发起TCP连接的客户端510向目的端发送连接请求数据包SYN,然后等待目的端返回请求响应数据包SYN+ACK,如果在一定时间内客户端510未能收到请求响应包SYN+ACK,那么就认为连接请求数据包SYN已经丢失,并且重新发送连接请求数据包SYN,当连续3次发送连接请求数据包SYN都没有能够收到请求响应数据包SYN+ACK应答,则认为该目的端不可达并放弃数据传输。

正常用户可能在同一IP地址向目的端发送多个连接请求数据包SYN,一般在3个以上,可能达到30~50个,如果超过90~150个连接请求数据包SYN时,则可能是是拒绝服务攻击,需要进行拒绝服务攻击的防护,过滤掉拒绝服务攻击的连接请求数据包SYN。

然后,对新的IP地址的连接请求数据包SYN,以及已经超过阀值的连接请求数据包SYN,即不能确定合法性的连接请求数据包SYN,转到步骤S220,进行拒绝服务攻击的防护,过滤掉拒绝服务攻击的连接请求数据包SYN。

步骤S220,对不能确定合法性的连接请求数据包SYN,根据该连接请求数据包SYN的目的端IP地址,接管所述连接请求数据包SYN,代理目的端向客户端510响应,发送请求响应数据包SYN+ACK;并在收到客户端510的响应数据包ACK后,确认为合法连接,完成与客户端510的连接过程;否则不再继续传输,过滤掉拒绝服务攻击的连接请求数据包SYN。

为了说明本发明的拒绝服务攻击防护方法,首先描述说明TCP连接的三次握手过程如下:

1)客户端510向目的端发送一个连接请求数据包SYN置位的TCP报文,包含客户端510使用的端口号和初始序列号x;

2)目的端收到客户端510发送来的连接请求数据包SYN报文后,向客户端510发送一个SYN和ACK都置位的请求响应数据包TCP报文,包含确认号为x+1和目的端的初始序列号y;

3)客户端510收到目的端返回的请求响应数据包SYN+ACK报文后,向目的端返回一个确认号为y+1序号为x+1的响应数据包ACK报文,一个标准的TCP连接完成。

各种拒绝服务攻击都是在最短时间内利用多线程向目的端发送大量连接请求数据包SYN,造成目的端系统资源耗尽,无法响应合法的连接请求数据包SYN。这种攻击往往不会等待请求响应数据包SYN+ACK,也就是说,攻击者使用IP地址只发送一个连接请求数据包SYN后便改变到其他IP地址上进行攻击。

本发明拒绝服务攻击防护方法,对不能确定其合法性的连接请求数据包,在接收到连接请求数据包后,解析出的客户端510IP地址和目的端IP地址,将此连接请求数据包的类型改为SYN+ACK,将此数据包的头部的源MAC地址(网卡中的一个硬件地址)与目的MAC地址调换顺序,重新计算TCP头部校验和,调用dev_queue_xmit()函数将数据包从网络上发出,代理目的端向客户端510应答,这样,客户端510就以为是目的端的应答。同时,该处理函数dev_queue_xmit()返回NF_STOLEN,从而使网络系统不再处理本次连接请求,从而使得该连接请求不占用系统的缓存区资源。

dev_queue_xmit()函数是被高层协议的实例使用,在网络设备上发送数据报的函数。

TCP通过面向连接的、端到端的可靠数据报发送来保证可靠性。TCP在字节上加上一个递进的确认序列号来告诉接收者发送者期望收到的下一个字节。如果在规定时间内,没有收到关于这个包的确认响应,重新发送此包。TCP的可靠机制允许设备处理丢失、延时、重复及读错的包。超时机制允许设备监测丢失包并请求重发。

实际存在的客户端510收到请求响应数据包SYN+ACK后,继续发送响应数据包ACK以完成TCP三次握手过程,而攻击者因为伪造源IP地址而无法收到该请求响应数据包SYN+ACK,不能继续连接过程,从而过滤掉拒绝服务攻击的连接请求数据包SYN,起到防御拒绝服务攻击的作用。

当攻击者在进行拒绝服务攻击时,连接请求数据包是伪造的,因此客户端510不会继续发送响应数据包完成三次握手过程,从而过滤掉了拒绝服务攻击。

本领域技术人员可以理解,本发明实施例所使用的代理服务器代理目的端,响应客户端请求,过滤掉拒绝服务攻击的连接请求数据包SYN,对连接请求数据包SYN过滤拒绝服务攻击的方法,也可以用其他公知的对连接请求数据包SYN过滤拒绝服务攻击的方法,如SYN_cookie方法来实现,但不管使用何种公知的对连接请求数据包SYN过滤拒绝攻击的方法,都是本发明的一种实现手段,没有超出本发明的保护范围。

步骤S230,收到客户端510发回的响应数据包ACK,确认为合法连接后,如果是新的IP地址,则向连接记录表630增加连接记录表项。

通过在NF_IP_LOCAL_IN节点上截获客户端510发回的响应数据包ACK后,验证TCP序列号正确后,则代理目的端,与客户端510的连接完成。

收到响应数据包ACK后,就可以确认其为合法连接,根据匹配查询的结果,如果该连接请求数据包SYN中的源IP地址在是新的,在连接记录表中没有记录,则将该客户端IP地址,向连接记录表630增加连接记录表项,记录该IP地址为合法地址。

例如对所述IP地址为201.0.168.2经过查询匹配确认为合法的新IP地址后,将该IP地址作为新的连接记录表项,插入到连接记录表630中去。

步骤S240,确认连接请求为合法的连接请求后,判断数据包的发送目的端为自身还是远程服务器530。

通过路由查找,判断数据包的去向。发往本机的连接请求数据包SYN经过本地代理过程建立真实的TCP连接,继续转发的连接请求数据包SYN经过远程代理过程建立真实的TCP连接。

步骤S250,根据合法的连接请求的客户端510响应数据包ACK,代理客户端510,与目的端建立连接,从而过滤掉拒绝服务攻击,使客户端510与目的端建立真正的TCP连接。

通过在NF_IP_LOCAL_IN节点上截获客户端510发回的响应数据包ACK的类型改为连接请求数据包SYN,修改TCP序列号SEQ和ACK_SEQ,重新计算检验和,代理客户端510,与目的端建立连接。

如图3所示,如果目的端是本地,即目的IP地址为本地,客户端510是向本地发出连接请求数据包,则使用了如下方式,实现三次握手认证通过以后的连接映射,具体步骤如下:

步骤S251,代理客户端510,向本地协议栈发送连接请求数据包SYN,请求建立TCP连接;

如果目的端是本地,即目的IP地址为本地,客户端510是向本地发出连接请求数据包SYN时,则调用netif_rx()函数,将该连接请求数据包SYN重新接收一次,这时网络系统将认为产生一次新的TCP连接请求数据包SYN,则将这个连接请求数据包SYN送上协议栈发送到用户层处理;

netif_rx()函数是把数据传送给协议层。netif_rx()里数据放入处理队列然后返回。

步骤252,截获到本地协议栈回应的请求响应数据包SYN+ACK后,丢弃此数据包,并向本地协议栈发送响应数据包ACK,与本地建立TCP连接;

用户层TCP监听程序收到连接请求数据包SYN,发送请求响应数据包SYN+ACK。通过NF_IP_LOCAL_OUT节点上的处理函数截获此请求响应数据包SYN+ACK;将截获的请求响应数据包SYN+ACK修改为响应数据包ACK,计算序列号及校验和后,丢弃此连接请求数据包SYN+ACK,调用NF_HOOK函数将此数据包挂接到网络系统接收缓冲区的链表上,网络系统将此响应数据包ACK继续发送至用户层,用户层收到响应数据包ACK后,完成三次握手认证,与本地建立TCP连接成功。

步骤253,然后,拦截连接成功后客户端510与目的端通讯的数据包,修正TCP序列号,并重新计算TCP校验和,建立真正的TCP连接。

如图4所示,如果目的端是远程服务器530,即目的IP地址为远程服务器530地址,客户端510是向远程服务器530地址发出连接请求数据包,采用的具体步骤如下:

步骤251′,代理客户端510,向受保护的远程服务器530发送连接请求数据包SYN,请求建立TCP连接;

如果目的端是远程服务器530,即目的IP地址为远程服务器530地址,客户端510是向远程服务器530地址发出连接请求数据包时,则根据响应数据包ACK的路由信息,代理客户端510,调用NF_HOOK()函数,将连接请求数据包SYN发向受保护的远程服务器530;

步骤252′,截获到受保护远程服务器530回应的请求响应数据包SYN+ACK后,丢弃此数据包,并向远程服务器530发送响应数据包ACK,与远程服务器530建立TCP连接;

受保护的远程服务器530收到连接请求后,发送请求响应数据包SYN+ACK到;通过NF_IP_FORWARD节点上的处理函数截获此请求响应数据包SYN+ACK,并将该请求响应数据包SYN+ACK修改为响应数据包ACK,调换源MAC地址和目的MAC地址的顺序,计算序列号及校验和,将该响应数据包ACK发向远程服务器530,远程服务器530收到响应数据包ACK后,实现三次握手认证,与目的端建立TCP连接成功。

步骤253′,拦截连接成功后通讯的数据包,修正TCP序列号,并重新计算TCP校验和,建立真正的TCP连接。

由所述的一种拒绝服务攻击防护方法,相应地,提供一种拒绝服务攻击防护网络系统:

如图5所示,本发明的拒绝服务攻击防护网络系统,包括目的端和客户端510,所述网络的数据链路层520包括计数器521,防御开关器522,代理服务器523,其中:

计数器521,用于统计网络中的连接请求数据包,并在流量达到危险阀值时,确认是否受到拒绝服务攻击,通知防御开关器522开启或者关闭代理服务器523。

防御开关器522,用于根据连接请求数据包,在确认是否受到拒绝服务攻击后,开启和关闭代理服务器523。

代理服务器523,用于截获连接请求数据包SYN,解析得到该连接请求数据包的源地址,查询该连接请求数据包SYN的合法性;然后对不能确定合法性的连接请求数据包SYN,代理目的端响应客户端510请求,向客户端510发送请求响应数据包SYN+ACK,过滤掉拒绝服务攻击,再根据合法的连接请求的响应数据包ACK,判断目的端地址,代理客户端510与目的端建立连接。

所述目的端可以是网关,防火墙,边缘路由器和/或远程服务器530。

如图6所示,所述的代理服务器523,包括连接记录表630,解析模块610,查询模块620,过滤模块650,记录模块640,判断模块660,连接模块670,其中:

连接记录表630,用于记录合法的客户端510源IP地址。

为了得到合法的客户端510源IP地址,代理服务器523在截获到一个连接请求数据包SYN,查询匹配后确认为新的源IP地址后,就记录下该客户端510源IP地址,并在验证为合法的连接请求后,将该客户端510源IP地址加入到连接记录表630中去。

解析模块610,用于根据截获连接请求数据包SYN,通过解析得到连接请求的客户端510源IP地址和目的端目的IP地址,以及端口信息。

查询模块620,用于根据截获到的连接请求数据包,利用连接记录表630对所述连接请求数据包的源IP地址进行匹配查询,确认该连接请求数据包SYN的合法性,并对合法的连接请求数据包SYN予以放行;对不能确定合法性的连接请求数据包SYN,利用过滤模块650过滤掉拒绝服务攻击。

过滤模块650,对不能确定合法性的连接请求数据包SYN,根据该连接请求数据包SYN的目的端IP地址,接管所述连接请求数据包,代理目的端向客户端510响应,发送请求响应数据包SYN+ACK;并在收到客户端510的响应数据包ACK后,确认为合法连接,完成代理服务器523与客户端510的连接过程;否则不再继续传输,过滤掉拒绝服务攻击的连接请求数据包。

记录模块640,用于收到客户端510发回的响应数据包ACK,确认为合法连接后,如果是新的IP地址,则向连接记录表630增加连接记录表项。

判断模块660,用于确认连接请求为合法的连接请求后,判断数据包的发送目的端为自身还是远程服务器530。

确认连接请求为合法的连接请求后,根据响应数据包的目的IP地址,进行路由查找,取得路由信息,确认该连接请求是发往自身还是需要继续转发。

连接模块670,用于根据合法的连接请求的客户端510响应数据包ACK,代理服务器523代理客户端510,与目的端建立连接。

通过在NF_IP_LOCAL_IN节点上截获客户端510发回的响应数据包ACK的类型改为连接请求数据包SYN,修改TCP序列号SEQ和ACK_SEQ,重新计算检验和,代理客户端510,与目的端建立连接。

如果目的端是本地,即目的IP地址为本地,客户端510是向本地发出连接请求数据包,则使用了如下方式,实现三次握手认证通过以后的连接映射,具体通过以下过程实现:

首先代理客户端510,向本地协议栈发送连接请求数据包SYN,请求建立TCP连接;

如果目的端是本地,即目的IP地址为本地,客户端510是向本地发出连接请求数据包SYN时,则调用netif_rx()函数,将该连接请求数据包SYN重新接收一次,这时网络系统将认为产生一次新的TCP连接请求数据包SYN,则将这个连接请求数据包SYN送上协议栈发送到用户层处理;

netif_rx()函数是把数据传送给协议层。netif_rx()里数据放入处理队列然后返回。

其次,截获到本地协议栈回应的请求响应数据包SYN+ACK后,丢弃此数据包,并向本地协议栈发送响应数据包ACK,与本地建立TCP连接;

用户层TCP监听程序收到连接请求数据包SYN,发送请求响应数据包SYN+ACK。通过NF_IP_LOCAL_OUT节点上的处理函数截获此请求响应数据包SYN+ACK;将截获的请求响应数据包SYN+ACK修改为响应数据包ACK,计算序列号及校验和后,丢弃此连接请求数据包SYN+ACK,调用NF_HOOK函数将此数据包挂接到网络系统接收缓冲区的链表上,网络系统将此响应数据包ACK继续发送至用户层,用户层收到响应数据包ACK后,完成三次握手认证,与本地建立TCP连接成功。

然后,拦截连接成功后客户端510与目的端通讯的数据包,修正TCP序列号,并重新计算TCP校验和,建立真正的TCP连接。

如果目的端是远程服务器530,即目的IP地址为远程服务器530地址,客户端510是向远程服务器530地址发出连接请求数据包,具体采用如下步骤实现:

首先,代理客户端510,向受保护的远程服务器530发送连接请求数据包SYN,请求建立TCP连接;

如果目的端是远程服务器530,即目的IP地址为远程服务器530地址,客户端510是向远程服务器530地址发出连接请求数据包时,则根据响应数据包ACK的路由信息,代理客户端510,调用NF_HOOK()函数,将连接请求数据包SYN发向受保护的远程服务器530;

其次,截获到受保护远程服务器530回应的请求响应数据包SYN+ACK后,丢弃此数据包,并向远程服务器530发送响应数据包ACK,与远程服务器530建立TCP连接;

受保护的远程服务器530收到连接请求后,发送请求响应数据包SYN+ACK到;通过NF_IP_FORWARD节点上的处理函数截获此请求响应数据包SYN+ACK,并将该请求响应数据包SYN+ACK修改为响应数据包ACK,调换源MAC地址和目的MAC地址的顺序,计算序列号及校验和,将该响应数据包ACK发向远程服务器530,远程服务器530收到响应数据包ACK后,实现三次握手认证,与目的端建立TCP连接成功。

然后,拦截连接成功后通讯的数据包,修正TCP序列号,并重新计算TCP校验和,建立真正的TCP连接。

所述的代理服务器523,可以是配置于网关/防火墙网络系统的数据链路层520,作为网关/防火墙一部分的代理服务器523。

本发明的拒绝服务攻击防护网络系统,统计网络流量,并在达到用户设定的危险阀值时,确认产生拒绝服务攻击,启动代理服务器523过滤拒绝服务攻击;代理服务器523截获连接请求数据包,查询合法性,对合法的连接请求数据包予以放行;对不能确定其合法性的连接请求数据包,由代理服务器523代理目的端,响应该连接请求,过滤掉拒绝服务攻击后,再由代理服务器523代理客户端510,根据合法的连接请求的响应包ACK信息,判断目的端地址,向目的端发出连接请求数据包,进行TCP连接请求的三次握手认证,建立真正的TCP连接。

本发明的拒绝服务攻击防护网络系统可以在远程TCP连接请求和/或本地TCP连接请求方式下运行,从而在网关模式下,可以同时防护针对网关/防火墙后的服务网络系统和网关/防火墙本身的拒绝服务攻击。

在网络系统数据链路层520截获网络连接请求数据包以后,代理服务器523查询模块620根据连接记录表630对数据包请求进行匹配验证,确认其合法性,并对合法的连接请求数据包SYN予以放行;对不能确定其合法性的连接请求数据包,查询模块620将该连接请求数据包发送到解析模块610,解析得到数据的源IP地址和目的IP地址,然后由过滤模块650生成请求响应包SYN+ACK,代理目的端向客户端510,从接收到数据包的网络地址上发出请求响应包SYN+ACK给客户端510,并接管所述数据包,不再继续传输;并在收到客户端510的响应包后,确认为合法连接,过滤掉拒绝服务攻击的连接请求数据包;然后代理服务器523的判断模块660根据客户端510的响应包ACK,判断该合法的连接请求数据包的目的IP地址是本地还是远程服务器530,再由代理服务器523的连接模块670,根据不同的目的地址,利用客户端510的响应包生成连接请求数据包,代理客户端510,请求与目的端建立TCP连接,在与目的端完成TCP连接的三次握手认证后,建立真正的TCP连接。

本发明的拒绝服务攻击防护网络系统,在网关模式下,实施完善的拒绝服务攻击防护,即可以进行本机防护,也可以对其后的网络设备进行防护,使用本地代理和远程代理完成对本机和远程服务器530的一体化防护,保护了本机以及其后的网络,而又不需要增加额外的网络设备,提高可靠程度,同时节约成本。

本发明实施例实现方式可以基于Linux 2.6内核开发,作为Linux核心模块运行,通过以上拒绝服务防护过程,从原理上杜绝了拒绝服务攻击生效的可能,同时对合法连接、通讯不会产生任何影响。

与现有的方案相比,本发明拒绝服务攻击防护方法、网络系统和代理服务器,在网关/防火墙模式下实施完善的拒绝服务攻击防护,既可以进行本机防护,也可以对其后的网络设备进行防护,其使用工作原理类似的本地代理和远程代理,使系统拥有更好的整合度,从而更加容易维护。其能够对所有发至本机的TCP连接请求和发往其后服务器的连接请求都进行了处理,使用本地代理和远程代理完成对本机和远程服务器530的一体化防护,保护了本机以及其后的网络。

以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号