发明内容
本申请实施例提出了用于防御攻击的方法、装置和系统。
第一方面,本申请实施例提出了一种用于防御攻击的方法,包括:拦截来自目标源地址的请求数据包,其中,请求数据包中包括源地址、源端口、目的地址和目的端口;在预存的状态表中,查找目标源地址的当前状态,确定目标源地址的当前状态是否为目标状态,其中,状态表用于描述源地址的状态信息;响应于确定目标源地址的当前状态不是目标状态,对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包,其中,验证数据包与请求数据包具有相反的源地址和目的地址、源端口和目的端口;响应于拦截到来自目标源地址的复位数据包,确定复位数据包是否与验证数据包相对应;响应于确定复位数据包与验证数据包相对应,将状态表中目标源地址的当前状态修改为目标状态。
在一些实施例中,该方法还包括:响应于确定目标源地址的当前状态是目标状态,向请求数据包中的目的地址发送请求数据包。
在一些实施例中,对请求数据包进行修改,生成验证数据包,包括:分配与请求数据包对应的新的序列号,将该请求数据包中的序列号替换为新的序列号,以及将该请求数据包中的源地址与目的地址、源端口与目的端口进行互换,生成验证数据包。
在一些实施例中,状态表中的状态信息包括初始状态、验证中状态和安全状态,其中,目标状态为安全状态;以及响应于确定目标源地址的当前状态不是目标状态,对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包,包括:若目标源地址的当前状态为初始状态,对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包;以及将状态表中目标源地址的当前状态修改为验证中状态,且记录验证数据包中的序列号。
在一些实施例中,响应于确定目标源地址的当前状态不是目标状态,对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包,包括:若目标源地址的当前状态为验证中状态,对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包;以及保持状态表中目标源地址的当前状态,且更新所记录的验证数据包中的序列号。
在一些实施例中,确定复位数据包是否与验证数据包相对应,包括:统计复位数据包中的确认号与当前记录的验证数据包中的序列号是否相差预设值;若复位数据包中的确认号与当前记录的序列号相差预设值,则确定复位数据包与当前记录的序列号所指示的验证数据包相对应。
在一些实施例中,该方法还包括:从将目标源地址的当前状态修改为验证中状态的修改时间开始,统计目标源地址的当前状态为验证中状态的第一时长;或从将目标源地址的当前状态修改为目标状态的修改时间开始,统计目标源地址的当前状态为目标状态的第二时长;若第一时长或第二时长达到预设时长,则将状态表中目标源地址的当前状态修改为初始状态。
在一些实施例中,拦截来自目标源地址的请求数据包,包括:统计单位时间内向目标目的地址发送请求数据包的数量,确定该数量是否达到预设阈值;响应于确定该数量达到预设阈值,拦截来自目标源地址的请求数据包。
第二方面,本申请实施例提出了一种用于防御攻击的装置,包括:第一拦截单元,被配置成拦截来自目标源地址的请求数据包,其中,请求数据包中包括源地址、源端口、目的地址和目的端口;查找单元,被配置成在预存的状态表中,查找目标源地址的当前状态,确定目标源地址的当前状态是否为目标状态,其中,状态表用于描述源地址的状态信息;生成单元,被配置成响应于确定目标源地址的当前状态不是目标状态,对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包,其中,验证数据包与请求数据包具有相反的源地址和目的地址、源端口和目的端口;第二拦截单元,被配置成响应于拦截到来自目标源地址的复位数据包,确定复位数据包是否与验证数据包相对应;修改单元,被配置成响应于确定复位数据包与验证数据包相对应,将状态表中目标源地址的当前状态修改为目标状态。
在一些实施例中,该装置还包括:发送单元,被配置成响应于确定目标源地址的当前状态是目标状态,向请求数据包中的目的地址发送请求数据包。
在一些实施例中,生成单元进一步被配置成:分配与请求数据包对应的新的序列号,将该请求数据包中的序列号替换为新的序列号,以及将该请求数据包中的源地址与目的地址、源端口与目的端口进行互换,生成验证数据包。
在一些实施例中,状态表中的状态信息包括初始状态、验证中状态和安全状态,其中,目标状态为安全状态;以及生成单元包括:第一生成子单元,被配置成若目标源地址的当前状态为初始状态,对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包;以及将状态表中目标源地址的当前状态修改为验证中状态,且记录验证数据包中的序列号。
在一些实施例中,生成单元还包括:第二生成子单元,被配置成若目标源地址的当前状态为验证中状态,对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包;以及保持状态表中目标源地址的当前状态,且更新所记录的验证数据包中的序列号。
在一些实施例中,第二拦截单元进一步被配置成:统计复位数据包中的确认号与当前记录的验证数据包中的序列号是否相差预设值;若复位数据包中的确认号与当前记录的序列号相差预设值,则确定复位数据包与当前记录的序列号所指示的验证数据包相对应。
在一些实施例中,该装置还包括:第一统计单元,被配置成从将目标源地址的当前状态修改为验证中状态的修改时间开始,统计目标源地址的当前状态为验证中状态的第一时长;或第二统计单元,被配置成从将目标源地址的当前状态修改为目标状态的修改时间开始,统计目标源地址的当前状态为目标状态的第二时长;初始化单元,被配置成若第一时长或第二时长达到预设时长,则将状态表中目标源地址的当前状态修改为初始状态。
在一些实施例中,第一拦截单元进一步被配置成:统计单位时间内向目标目的地址发送请求数据包的数量,确定该数量是否达到预设阈值;响应于确定该数量达到预设阈值,拦截来自目标源地址的请求数据包。
第三方面,本申请实施例提出了一种用于防御攻击的系统,该系统包括终端、防御端和服务端,其中,防御端后置于服务端的网络通信入口处;终端,被配置成向服务端发送请求数据包,其中,请求数据包中包括源地址、源端口、目的地址和目的端口;防御端,被配置成拦截请求数据包;在预存的状态表中,查找终端的当前状态,确定终端的当前状态是否为目标状态,其中,状态表用于描述终端的状态信息;响应于确定终端的当前状态不是目标状态,对请求数据包进行修改,生成验证数据包,以及向终端发送验证数据包,其中,验证数据包与请求数据包具有相反的源地址和目的地址、源端口和目的端口;响应于拦截到终端发送的复位数据包,确定复位数据包是否与验证数据包相对应;响应于确定复位数据包与验证数据包相对应,将状态表中终端的当前状态修改为目标状态。
在一些实施例中,防御端还被配置成:响应于确定终端的当前状态是目标状态,将请求数据包发送至服务端,其中,请求数据包中还包括请求信息;以及服务端,被配置成获取与请求信息对应的反馈信息,生成反馈数据包,以及将反馈数据包发送给终端。
第四方面,本申请实施例提出了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上述第一方面中任一实施例所描述的方法。
第五方面,本申请实施例提出了一种计算机可读介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时实现如上述第一方面中任一实施例所描述的方法。
本申请实施例提出的用于防御攻击的方法、装置和系统,通过拦截来自目标源地址的请求数据包,从而可以在预存的状态表中查找目标源地址的当前状态,进而可以确定目标源地址的当前状态是否为目标状态。其中,请求数据包中可以包括源地址、源端口、目的地址和目的端口;状态表可以用于描述源地址的状态信息。也就是说,通过状态表可以实现对源地址的管理,以确定是否对来自该源地址的请求数据进行防御处理。这样有助于减少对正常请求的响应处理的影响。此外,在确定目标源地址的当前状态不是目标状态的情况下,可以对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包。其中,验证数据包与请求数据包具有相反的源地址和目的地址、源端口和目的端口。之后,若拦截到来自目标源地址的复位数据包,则可以确定复位数据包是否与验证数据包相对应。并在确定复位数据包与验证数据包相对应的情况下,将状态表中目标源地址的当前状态修改为目标状态。也就是说,通过将请求数据包反射回去,来验证源地址是否为可信源,这样可以提高防御的有效性。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请实施例的用于防御攻击的方法、装置或系统的示例性系统架构100。
如图1所示,系统架构100可以包括终端101、102、103,网络104,防御设备105和服务器106。网络104可以用以在终端101、102、103与服务器106之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端101、102、103通过网络104与服务器106进行交互,以接收或发送消息等。终端101、102、103上可以安装有各种客户端应用,例如网页浏览器、搜索类应用、购物类应用和即时通讯工具等。
这里的终端101、102、103可以是硬件,也可以是软件。当终端101、102、103为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、AR眼镜或头盔、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、膝上型便携计算机和台式计算机等等。当终端101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
防御设备105可以后置在服务器106的网络数据通信入口处。即终端101、102、103发送给服务器106的请求数据,都经过该通信入口传输至服务器的处理器中。也就是说,防御设备105位于该通信入口与服务器的处理器之间。这样,防御设备105可以对发送至服务器106的请求数据进行拦截,以做进一步地防御分析处理。
服务器106可以是提供各种服务的服务器,例如可以是对终端101、102、103所安装的应用提供支持的后台服务器。后台服务器可以对用户发送的请求数据进行分析,并可以将与请求数据对应的响应信息发送给终端101、102、103,已反馈给用户。
这里的防御设备105和服务器106同样可以是硬件,也可以是软件。当防御设备105和服务器106为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当防御设备105和服务器106为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。可以理解的是,防御设备105与服务器106可以是相互独立设置的。防御设备105也可以集成在服务器106中。
需要说明的是,本申请实施例所提供的用于防御攻击的方法一般由防御设备105执行。相应地,用于防御攻击的装置一般设置于防御设备105中。
应该理解,图1中的终端、网络、防御设备和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端、网络防御设备和服务器。
继续参见图2,其示出了根据本申请的用于防御攻击的方法的一个实施例的流程200。该用于防御攻击的方法可以包括以下步骤:
步骤201,拦截来自目标源地址的请求数据包。
在本实施例中,用于防御攻击的方法的执行主体(例如图1所示的防御设备105)可以拦截来自目标源地址的请求数据包。其中,请求数据包中可以包括源地址、源端口、目的地址和目的端口。这里的源地址一般是指发送信息的设备的IP(Internet Protocol,互联网协议)地址,即信息的来源地址。而目标源地址可以是源地址中的任意源地址。例如可以是图1所示的终端101、102、103的IP地址。目的地址一般是指信息送达的设备的IP地址,即信息的送达地址。例如可以是图1所示的服务器106的IP地址。在这里,请求数据包中的源地址即为目标源地址。
可以理解的是,数据包(包,Packet)通常是TCP/IP协议通信传输中的数据单位。而TCP/IP协议一般是工作在OSI(Open System Interconnection,开放系统互联)模型的第三层(网络层)和第四层(传输层)上。
步骤202,在预存的状态表中,查找目标源地址的当前状态,确定目标源地址的当前状态是否为目标状态。
在本实施例中,根据步骤201中拦截的请求数据包中的源地址,执行主体可以在预存的状态表中,查找目标源地址的当前状态。进而可以确定目标源地址的当前状态是否为目标状态。其中,状态表可以用于描述源地址的状态信息。而不同的状态信息可以用于表征源地址的可信度。在这里,目标状态可以用于表征源地址为可信源,即不是SYN FLOOD攻击中伪造的地址。其中,状态信息的表示方式在本申请中并不限制,如可以包括文字、数字或字母等字符中的至少一种。
在本实施例中,状态表的存储位置并不限制。状态表可以根据历史通信数据来创建。例如可以根据与服务器有过通信的终端,来创建状态表中的源地址。并且随着通信数据的增加,可以不断更新完善状态表中的源地址。而状态表中的各源地址的初始状态信息可以根据实际情况来设置。例如可以统一设置为用于表征源地址的可信度不高的状态信息(如0)。再例如可以根据具体的通信内容,将部分源地址的初始状态信息设置为目标状态(如1)。
在这里,若执行主体确定目标源地址的当前状态为目标状态,则可以说明该请求数据包不是攻击数据。此时,执行主体可以向请求数据包中的目的地址发送请求数据包。即将请求数据包发送给其中的目的地址所指示的设备。若执行主体确定目标源地址的当前状态不是目标状态,则说明还不能确定目标源地址是否为可信源。也就是说,该请求数据包可能是攻击数据。此时,执行主体可以继续执行步骤203,以进一步分析。
可以理解的是,执行主体根据状态表中目标源地址的当前状态,便可以确定目标源地址是否为可信源,从而对拦截的来自目标源地址的请求数据包做相应的处理。也就是说,执行主体仅需要维护状态表,这样有助于减少资源消耗,保证执行性主体的运行性能,而且扩展灵活。此外,在目标源地址的状态信息为目标状态以后,执行主体就不需要对来自其的请求数据包做进一步分析。这样有利于降低对正常请求数据(即非攻击数据)的影响,减少用户等待时长。
步骤203,响应于确定目标源地址的当前状态不是目标状态,对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包。
在本实施例中,若执行主体确定目标源地址的当前状态不是目标状态,则可以对请求数据包进行修改,从而生成验证数据包。以及可以向目标源地址发送该验证数据包。其中,验证数据包与请求数据包可以具有相反的源地址和目的地址、源端口和目的端口。
例如请求数据包中的源地址、目的地址、源端口和目的端口分别为A、B、C和D。此时,执行主体可以将其中的源地址与目的地址互换,且将源端口与目的端口互换,从而将修改后的请求数据包作为验证数据包。即验证数据包中的源地址、目的地址、源端口和目的端口分别为B、A、D和C。此时,验证数据包中的序列号可以与请求数据包中的序列号相同。或者验证数据包中的序列号也可以是通过将请求数据包中的序列号与预设数值进行运算(如加、减等)而得到的。这样,执行主体可以将验证数据包发送给验证数据包中的目的地址A(即请求数据包的源地址)所指示的设备。也就是说,将修改后的请求数据包(即验证数据包)反射回给目标源地址。
可以理解的是,整个过程没有额外构建新的数据包,验证数据包对拦截得到的请求数据包进行修改而生成的。同时,在执行主体与目标源地址所指示的设备之间不需要建立轻量级连接或会话。也就不需要维护连接或会话的相关状态。这样,可以大大降低内存的使用和计算资源的占用,有利于提高防御性能。
需要说明的是,在执行主体向目标源地址发送验证数据包之后,若目标源地址是伪造的地址(即请求数据包为攻击数据),则该验证数据包将会被网络丢弃;若目标源地址是真实的地址,则目标源地址会接收到该验证数据包。但由于目标源地址所指示的设备通常没有监听验证数据包的目的端口,所以该设备会发送一个RST包。其中,RST是TCP首部中的6个标志比特之一,表示重置连接、复位连接。一般说来,无论何时一个报文段发往基准的连接(referenced connection)出现错误,TCP都会发出一个复位报文段。这里提到的“基准的连接”一般是指由目的IP地址和目的端口号以及源IP地址和源端口号指明的连接。
步骤204,响应于拦截到来自目标源地址的复位数据包,确定复位数据包是否与验证数据包相对应。
在本实施例中,若执行主体拦截到来自目标源地址的复位数据包(即RST数据包),则说明该目标源地址可能是可信源。此时,执行主体可以进一步地确定复位数据包是否与验证数据包相对应。
例如执行主体可以比较复位数据包的接收时间与验证数据包的发送时间。若两者的时间差在预设时长(如1分钟)内,则可以确定复位数据包与验证数据包相对应。再例如执行主体可以比较复位数据包中的确认号(acknowledgment)与验证数据包中的序列号。若两者中的序列号相同或者相差预设值(如1),则可以确定复位数据包与验证数据包相对应。
在这里,若执行主体确定复位数据包与验证数据包相对应,则可以继续执行步骤205。若执行主体确定复位数据包与验证数据包不对应,则可以继续等待并重复执行该步骤。
步骤205,响应于确定复位数据包与验证数据包相对应,将状态表中目标源地址的当前状态修改为目标状态。
在本实施例中,若执行主体确定复位数据包与验证数据包相对应,则可以将上述状态表中目标源地址的当前状态修改为目标状态。这样,当再次拦截到来自该目标源地址的请求数据包时,执行主体可以直接将其发送给请求数据包中的目的地址所指示的设备,从而可以完成请求数据包的响应处理。
在本实施例的一些可选地实现方式中,若执行主体在一定时长(如10分钟)内没有拦截到来自目标源地址的复位数据包,则可以说明该目标源地址可能是伪造的地址。此时,执行主体可以将该目标源地址在状态表中删除。作为示例,执行主体还可以对该目标源地址进行标记存储,从而构建可疑地址名单。这样,执行主体可以优先拦截来自可疑地址名单中的地址的请求数据包。
本实施例提供的用于防御攻击的方法,通过拦截来自目标源地址的请求数据包,从而可以在预存的状态表中查找目标源地址的当前状态,进而可以确定目标源地址的当前状态是否为目标状态。也就是说,通过状态表可以实现对源地址的管理,以确定是否对来自该源地址的请求数据进行防御处理。这样有助于减少对正常请求的响应处理的影响。此外,在确定目标源地址的当前状态不是目标状态的情况下,可以对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包。之后,若拦截到来自目标源地址的复位数据包,则可以确定复位数据包是否与验证数据包相对应。并在确定复位数据包与验证数据包相对应的情况下,将状态表中目标源地址的当前状态修改为目标状态。也就是说,通过将请求数据包反射回去,来验证源地址是否为可信源,这样可以减少资源开销,提高防御性能和有效性。
进一步参见图3,其示出了根据本申请的用于防御攻击的方法的又一个实施例的流程300。该用于防御攻击的方法可以包括以下步骤:
步骤301,统计单位时间内向目标目的地址发送请求数据包的数量,确定该数量是否达到预设阈值。
在本实施例中,用于防御攻击的方法的执行主体(例如图1所示的防御设备105)可以统计单位时间内向目标目的地址发送请求数据包的数量。并且可以确定该数量是否达到预设阈值(如单位时间内200个)。
这里可以以“秒”为单位时间,即统计请求数据包的PPS(Packet per second)。也可以以“5秒”或“分钟”等为单位时间。其中,目标目的地址可以是通过执行主体所在的网络通信入口接收信息的任意目的地址,如可以是图1所示的服务器106的IP地址。
步骤302,响应于确定该数量达到预设阈值,拦截来自目标源地址的请求数据包。
在本实施例中,若执行主体在步骤301中确定该数量达到预设阈值,则可以拦截来自目标源地址的请求数据包。可以参见图2实施例的步骤201中的相关描述,此处不再赘述。
可以理解的是,通常情况下,正常访问请求的数据量往往不会过大。而SYN FLOOD攻击一般是将大量的数据包送达目标服务器。此时,服务器会根据TCP协议中的三次握手行为建立半连接。这样,大量的半连接很快会耗尽服务器资源,造成正常的访问无法完成TCP三次握手。
而在本实施例中,若统计数量没有达到预设阈值,则可以认为向目标目的地址发送的请求数据包均为正常数据。若统计数量达到或超过预设阈值,则可以认为有疑似SYNFIOOD攻击行为发生。此时执行主体可以启动拦截防御。因此,在大部分情况下,对正常请求的响应处理没有影响。
步骤303,在预存的状态表中,查找目标源地址的当前状态,确定目标源地址的当前状态是否为目标状态。
在本实施例中,状态表可以用于描述源地址的状态信息。而状态表中的状态信息可以包括初始状态、验证中状态和安全状态。这里的目标状态为安全状态。可以参见图2实施例的步骤202中的相关描述,此处不再赘述。
步骤304,若目标源地址的当前状态为初始状态,对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包。
在本实施例中,若目标源地址的当前状态为初始状态,则执行主体可以对请求数据包进行修改,生成验证数据包,并可以向目标源地址发送验证数据包。
例如,首先,执行主体可以分配与请求数据包对应的新的序列号。这里的分配方式可以是随机的。但每次分配的新的序列号不同。且新的序列号一般与请求数据包中的序列号不同。之后,可以将该请求数据包中的序列号替换为新的序列号。以及可以将该请求数据包中的源地址与目的地址、源端口与目的端口进行互换,从而生成验证数据包。
步骤305,将状态表中目标源地址的当前状态修改为验证中状态,且记录验证数据包中的序列号。
在本实施例中,执行主体可以将状态表中目标源地址的当前状态(即初始状态)修改为验证中状态,且记录验证数据包中的序列号。
此外,在一些应用场景中,从将目标源地址的当前状态修改为验证中状态的修改时间开始,执行主体还可以统计目标源地址的当前状态为验证中状态的第一时长。若第一时长达到预设时长(如1小时),则可以将状态表中目标源地址的当前状态修改为初始状态。也就是说,可以周期性地对状态表中源地址的状态信息进行初始化。这样可以降低或避免攻击者利用状态表中的源地址发起攻击的情况发生,从而提高防御的有效性。
步骤306,若目标源地址的当前状态为验证中状态,对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包。
在本实施例中,若目标源地址的当前状态为验证中状态,则执行主体同样可以对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包。
步骤307,保持状态表中目标源地址的当前状态,且更新所记录的验证数据包中的序列号。
在本实施例中,执行主体可以继续保持状态表中目标源地址的当前状态(即验证中状态),且更新所记录的验证数据包中的序列号。也就是说,在将目标源地址的初始状态修改为验证中状态,且发送验证数据之后,以及在接收到来自目标源地址的复位数据包之前,若再次拦截到来自目标源地址的请求数据包。此时,可以根据最新的请求数据包再次生成验证数据包。并且将此前记录的序列号更新为最新的验证数据包中的序列号。
需要说明的是,由于每个验证数据包中的序列号是与每个请求数据包一一对应的。且每个请求数据包中的序列号不同。因此,更新所记录的序列号相当于更新目标源地址的序列号。
步骤308,响应于拦截到来自目标源地址的复位数据包,确定复位数据包是否与验证数据包相对应。
在本实施例中,若执行主体拦截到来自目标源地址的复位数据包,则可以统计复位数据包中的确认号与当前记录的验证数据包中的序列号是否相差预设值(如1)。若复位数据包中的确认号与当前记录的序列号相差预设值,则可以确定复位数据包与当前记录的序列号所指示的验证数据包相对应。
在这里,由于执行主体此前可能向目标原地址发送过多个验证数据包,所以执行主体会拦截到多个来自目标源地址的复位数据包。但只有其中的某个复位数据包中的确认号会与当前记录的序列号相差预设值。因此,只有拦截到该复位数据包,执行主体才会确定复位数据包与当前记录的序列号所指示的验证数据包相对应。
需要说明的是,在TCP连接中,接收方反馈的数据包中的确认号一般是发送方发送的数据包中的序列号+1。也就是说,后者发送的数据包(如复位数据包)中的确认号一般比前者发送的数据包(如验证数据包)中的序列号大1。
步骤309,响应于确定复位数据包与验证数据包相对应,将状态表中目标源地址的当前状态修改为目标状态。
在本实施例中,若执行主体确定复位数据包与验证数据包相对应,则可以将状态表中目标源地址的当前状态修改为目标状态。可以参见图2实施例的步骤205中的相关描述,此处不再赘述。
在本实施例的一些可选地实现方式中,从将目标源地址的当前状态修改为目标状态的修改时间开始,执行主体也可以统计目标源地址的当前状态为目标状态的第二时长。若第二时长达到预设时长,则可以将状态表中目标源地址的当前状态修改为初始状态。这里的预设时长可以(但不限于)与上述预设时长相同。
可以理解的是,执行主体也可以对各验证数据包中的序列号进行记录。这样,在复位数据包与其中某个验证数据包相对应的情况下,可以删除所有与目标源地址相关的序列号。
本实施例提出的用于防御攻击的方法,只需要维护状态表和记录验证数据包中的序列号。这样可以大大降低资源消耗,使得防御设备能够可以防御更多更大流量的攻击数据。且防御部署的可扩展性强。此外,通过周期性地初始化状态表中的状态信息,可以有助于提高防御的有效性。
请参见图4,作为对上述各图所示方法的实现,本申请提供了一种用于防御攻击的装置的一个实施例。该装置实施例与上述各实施例所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例的用于防御攻击的装置400可以包括:第一拦截单元401,被配置成拦截来自目标源地址的请求数据包,其中,请求数据包中包括源地址、源端口、目的地址和目的端口;查找单元402,被配置成在预存的状态表中,查找目标源地址的当前状态,确定目标源地址的当前状态是否为目标状态,其中,状态表用于描述源地址的状态信息;生成单元403,被配置成响应于确定目标源地址的当前状态不是目标状态,对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包,其中,验证数据包与请求数据包具有相反的源地址和目的地址、源端口和目的端口;第二拦截单元404,被配置成响应于拦截到来自目标源地址的复位数据包,确定复位数据包是否与验证数据包相对应;修改单元405,被配置成响应于确定复位数据包与验证数据包相对应,将状态表中目标源地址的当前状态修改为目标状态。
在本实施例的一些可选地实现方式中,该装置400还可以包括:发送单元(图4中未示出),被配置成响应于确定目标源地址的当前状态是目标状态,向请求数据包中的目的地址发送请求数据包。
可选地,生成单元403可以进一步被配置成:分配与请求数据包对应的新的序列号,将该请求数据包中的序列号替换为新的序列号,以及将该请求数据包中的源地址与目的地址、源端口与目的端口进行互换,生成验证数据包。
在一些实施例中,状态表中的状态信息可以包括初始状态、验证中状态和安全状态,其中,目标状态为安全状态;以及生成单元403可以包括:第一生成子单元(图4中未示出),被配置成若目标源地址的当前状态为初始状态,对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包;以及将状态表中目标源地址的当前状态修改为验证中状态,且记录验证数据包中的序列号。
可选地,生成单元403还可以包括:第二生成子单元(图4中未示出),被配置成若目标源地址的当前状态为验证中状态,对请求数据包进行修改,生成验证数据包,向目标源地址发送验证数据包;以及保持状态表中目标源地址的当前状态,且更新所记录的验证数据包中的序列号。
进一步地,第二拦截单元404可以进一步被配置成:统计复位数据包中的确认号与当前记录的验证数据包中的序列号是否相差预设值;若复位数据包中的确认号与当前记录的序列号相差预设值,则确定复位数据包与当前记录的序列号所指示的验证数据包相对应。
在一些应用场景中,该装置400还可以包括:第一统计单元(图4中未示出),被配置成从将目标源地址的当前状态修改为验证中状态的修改时间开始,统计目标源地址的当前状态为验证中状态的第一时长;或第二统计单元(图4中未示出),被配置成从将目标源地址的当前状态修改为目标状态的修改时间开始,统计目标源地址的当前状态为目标状态的第二时长;初始化单元(图4中未示出),被配置成若第一时长或第二时长达到预设时长,则将状态表中目标源地址的当前状态修改为初始状态。
在一些实施例中,第一拦截单元401可以进一步被配置成:统计单位时间内向目标目的地址发送请求数据包的数量,确定该数量是否达到预设阈值;响应于确定该数量达到预设阈值,拦截来自目标源地址的请求数据包。
可以理解的是,该装置400中记载的诸单元与参考图2和图3中描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作、特征以及产生的有益效果同样适用于该装置400及其中包含的单元,在此不再赘述。
继续参见图5,其示出了本申请提供的一种用于防御攻击的系统的一个时序图。本实施例中的用于防御攻击的系统可以包括终端、防御端和服务端。其中,防御端可以后置于服务端的网络通信入口处。
如图5所示,在步骤501中,终端(例如图1所示的终端101、102、103)可以通过有线连接方式或无线连接方式,向服务端(例如图1所示的服务器106)发送请求数据包。其中,请求数据包中可以包括源地址、源端口、目的地址和目的端口。
在步骤502中,防御端(例如图1所示的防御设备105)可以拦截请求数据包。
可选地,在拦截请求数据包之前,防御端可以统计单位时间内向服务端发送请求数据包的数量,确定该数量是否达到预设阈值。且在确定该数量达到预设阈值的情况下,可以拦截终端发送的请求数据包。
在步骤503中,防御端可以在预存的状态表中,查找终端的当前状态,确定终端的当前状态是否为目标状态。其中,状态表可以用于描述终端的状态信息。参见图2中步骤202的相关描述,此处不再赘述。
可选地,状态表中的状态信息可以包括初始状态、验证中状态和安全状态。其中,目标状态可以为安全状态。
在步骤504中,响应于确定终端的当前状态不是目标状态,防御端对请求数据包进行修改,生成验证数据包,以及向终端发送验证数据包。其中,验证数据包与请求数据包具有相反的源地址和目的地址、源端口和目的端口。参见图2中步骤203的相关描述,此处不再赘述。
在一些实施例中,首先,防御端可以分配与请求数据包对应的新的序列号。之后,可以将该请求数据包中的序列号替换为新的序列号。以及可以将该请求数据包中的源地址与目的地址、源端口与目的端口进行互换,从而生成验证数据包。
可选地,若终端的当前状态为初始状态,防御端可以对请求数据包进行修改,生成验证数据包,向终端发送验证数据包;以及可以将状态表中终端的当前状态修改为验证中状态,且记录验证数据包中的序列号。
进一步地,若终端的当前状态为验证中状态,防御端可以对请求数据包进行修改,生成验证数据包,向终端发送验证数据包;以及可以保持状态表中终端的当前状态,且更新所记录的验证数据包中的序列号。
在步骤505中,响应于拦截到终端发送的复位数据包,防御端确定复位数据包是否与验证数据包相对应。可以参见图2中的步骤204的相关描述,此处不再赘述。
可选地,防御端可以统计复位数据包中的确认号与当前记录的验证数据包中的序列号是否相差预设值。若复位数据包中的确认号与当前记录的序列号相差预设值,则可以确定复位数据包与当前记录的序列号所指示的验证数据包相对应。
在步骤506中,响应于确定复位数据包与验证数据包相对应,防御端将状态表中终端的当前状态修改为目标状态。可以参见图2中的步骤205的相关描述,此处不再赘述。
可选地,从将终端的当前状态修改为验证中状态的修改时间开始,防御端还可以统计终端的当前状态为验证中状态的第一时长;或从将终端的当前状态修改为目标状态的修改时间开始,防御端也可以统计终端的当前状态为目标状态的第二时长;若第一时长或第二时长达到预设时长,则防御端可以将状态表中终端的当前状态修改为初始状态。
此外,在一些实施例中,如步骤507所示,响应于确定终端的当前状态是目标状态,防御端可以将请求数据包发送至服务端。其中,请求数据包中还可以包括请求信息。
此时,如步骤508所示,服务端可以获取与请求信息对应的反馈信息,生成反馈数据包,以及将反馈数据包发送给终端。
本实施例中的用于防御攻击的系统,通过将请求数据包反射回给终端,来验证终端的IP地址是否为可信源,这样可以降低系统资源的消耗,提高系统的防御性能和可扩展性。也使得系统能够防御更多更大流量的攻击数据。同时,通过维护状态表,来确定是否对终端发送的请求数据进行防御处理。这样在保证有效防御的同时,有助于减少对正常请求的响应处理的影响。
下面参见图6,其示出了适于用来实现本申请实施例的电子设备(例如图1所示的防御设备105)的计算机系统600的结构示意图。图6示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括触摸屏、键盘、鼠标、麦克风等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一拦截单元、查找单元、生成单元、第二拦截单元和修改单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一拦截单元还可以被描述为“拦截来自目标源地址的请求数据包的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:拦截来自目标源地址的请求数据包,其中,请求数据包中包括源地址、源端口、目的地址和目的端口;在预存的状态表中,查找目标源地址的当前状态,确定目标源地址的当前状态是否为目标状态,其中,状态表用于描述源地址的状态信息;响应于确定目标源地址的当前状态不是目标状态,对请求数据包进行修改,生成验证数据包,以及向目标源地址发送验证数据包,其中,验证数据包与请求数据包具有相反的源地址和目的地址、源端口和目的端口;响应于拦截到来自目标源地址的复位数据包,确定复位数据包是否与验证数据包相对应;响应于确定复位数据包与验证数据包相对应,将状态表中目标源地址的当前状态修改为目标状态。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。