技术领域
[0001] 本申请涉及计算机及通信技术领域,尤其涉及一种攻击的防御方法及一种攻击防御设备。
相关背景技术
[0002] 拒绝服务(denial of service,DoS)攻击是一种网络攻击手段,拒绝服务攻击的目的在于使目标计算机的网络资源或者系统资源耗尽,使目标计算机提供的服务暂时中断或停止,导致正常用户无法访问目标计算机。当攻击者(也被称为黑客)使用网络上两个或两个以上受控计算机作为攻击发起方向目标计算机发动DoS攻击时,这种攻击方式被称为分布式拒绝服务攻击(distributed denial-of-service attack,DDoS)。
[0003] 近年来,出现了一种名为挑战黑洞(challenge collapsar,CC)的攻击方式。CC攻击本质上属于DDoS攻击,其特点是攻击对象是提供大量动态网页的目标网站服务器,例如购物网站服务器或者游戏网站服务器。
[0004] CC攻击的原理是攻击者通过代理服务器、或者大量受控计算机模拟多个用户访问目标网站服务器提供的动态网页,从而制造大量的后台数据库查询操作,以此来消耗目标网站服务器的中央处理器(central processing unit,CPU)资源,造成目标网站服务器瘫痪,无法为正常用户提供服务。
[0005] 传统的DDoS攻击防御主要是依赖于防火墙的包过滤机制。以同步序列编号洪泛(Synchronize Sequence Numbers Flood,SYN Flood)攻击为例,在防火墙上配置过滤规则和阈值,当监控到流量发生异常时,及时进行流量阻断或清洗。例如部署于目标计算机前的防火墙监控到单位时间(例如1秒)内访问目标计算机80端口的SYN报文数量持续超过阈值(例如,5000)时,丢弃后续访问目标计算机80端口的SYN报文,或者将后续访问目标计算机的流量转发到流量清洗设备进行清洗,将清洗后得到的正常流量再发送给目标计算机。然而传统的DDoS攻击防御手段对于CC攻击效果不佳。这是因为CC攻击本身发送的是正常的网页访问请求,CC攻击造成的流量往往达不到传统防火墙设置的异常流量阈值,因为其攻击的发挥作用的重点是制造大量的后台数据库查询。
[0006] 传统的应对CC攻击的防御方案是提供服务的站服务器尽量少用动态网页,尽可能用静态网页取代动态网页。然而这种方式显然无法满足一些所提供的服务主要依赖于用户交互实现的网站的需求,例如购物网站或者游戏网站。如何有效地防御CC攻击成为一个热点问题。
具体实施方式
[0028] 为了防御针对游戏网站服务器的CC攻击,一些研究尝试使用一种名为“游戏盾”的防护系统。附图1是游戏盾系统在网络游戏服务这一典型应用场景下的部署示意图。游戏盾系统包括防护设备10和调度设备20。防护设备10和调度设备20可以由两台计算机独立实现,也可以集成于同一台计算机实现。防护设备10部署于游戏客户端30与游戏网站服务器40之间。防护设备10提供多个防护IP地址。游戏盾系统的设计初衷是通过多个IP地址保护游戏网站服务器免受CC攻击。游戏盾的基本原理是:设置一个调度设备20,调度设备20保存有多个防护IP地址,防护IP地址是指防护设备10提供的公开的、可供游戏客户端访问游戏服务器的IP地址。为了与游戏网站服务器40的IP地址相区分,在本申请实施例中将调度设备20返回的防护设备10提供的IP地址称为防护IP地址。用户通过浏览器或者游戏客户端30访问游戏服务之前,先向调度设备20请求一个防护IP地址,如图1中步骤S1所示。浏览器或者游戏客户端30接收调度设备20返回的防护IP地址,如图1中步骤S2所示。然后浏览器或者游戏客户端30通过防护IP地址访问防护设备10,向防护设备10发送业务请求,如图1中步骤S3所示。防护设备10再与游戏网站服务40器建立连接,向游戏服务器40转发业务请求,如图
1中步骤S4所示。防护设备10接收游戏服务器40对应返回的业务响应,如图1中步骤S5所示;
向浏览器或者游戏客户端30转发业务响应,如图1中步骤S6所示。
[0029] 通过图1所示的过程,游戏服务器为用户提供游戏服务。游戏盾方案通过防护IP地址隐藏游戏网站服务器的真实IP地址,确保游戏网站服务器的IP地址是不公开的,使得攻击者无法直接攻击游戏网站服务器。当一个防护IP地址被攻击时,防护设备断开与游戏网站服务器之间的连接。后续再有游戏客户端或浏览器继续向调度设备请求防护IP地址时,调度设备会返回另一个防护IP地址,这样保证游戏网站服务器可以向用户提供服务,保持业务稳定。
[0030] 在研究过程发现,上述游戏盾方案的防护效果不尽完善。主要原因是虽然攻击者因不知晓游戏网站服务器的IP地址而无法直接攻击游戏网站服务器,但一个防护IP被攻击后,攻击者可以在短时间内通过报文解析得到调度设备返回的新的防护IP地址,继续对新的防护IP地址发起攻击,直至攻击完所有防护IP地址,使游戏盾系统瘫痪。
[0031] 本申请在上述游戏盾系统的基础上提供了一种攻击防御方法。该方法适用于利用防护IP地址对网站服务器进行保护的防护系统。该防御方法重点在于分析出攻击源,即攻击者使用的IP地址,例如代理服务器使用的IP地址或者受控计算机的IP地址。从而不再为攻击源提供新的防护IP地址,从而强化游戏盾的防护效果,保证合法用户正常使用业务。该方法通过以下方式分析出攻击源:调度设备生成多个防护地址序列,每个防护地址序列包括依次排列的至少两个不同的防护IP地址。针对一个业务请求方,即浏览器或者业务客户端(例如游戏客户端、网络购物客户端等等),首次向调度设备请求防护IP地址时,调度设备为该业务请求方映射一个防护地址序列,并向该业务请求方返回映射的防护IP地址序列中的第一个防护IP地址。调度设备在一个业务请求方再次请求防护IP地址时,从业务请求方映射的防护序列中获得前一次返回的防护IP地址的下一个防护IP地址。调度设备根据防护地址序列与业务请求方的映射关系、以及防护IP地址被攻击的情况,定位攻击源。例如,当防护IP地址被攻击时,调度设备获取被攻击的防护IP地址,并按照被攻击时间的先后顺序,生成由被攻击的防护IP地址组成的被攻击序列。调度设备根据所述被攻击的地址序列,判断一个防护地址序列中已使用的防护IP地址是否先后依次被攻击,如果该防护地址序列中已使用的防护IP地址先后依次被攻击,则确定该防护地址序列映射的业务请求方为攻击源。
[0032] 附图2是本申请实施例提供的攻击防御系统的部署示意图。该防御系统包括一个调度设备20和至少一个防护设备10。调度设备20和至少一个防护设备10可以单独设置在不同计算机上,也可以合设在同一计算机上。
[0033] 防护设备10是指具有网络连接功能、且具有可被访问的IP地址的计算机设备。防护设备部署于终端设备301~302与受保护的网站服务器40之间。至少一个防护设备10提供多个可被终端设备访问的防护IP地址。
[0034] 终端设备301~302是指已安装浏览器软件或者业务客户端(例如游戏客户端、网络购物客户端等等)软件的终端设备。终端设备30包括但不限于个人计算机、移动电话、服务器、笔记本电脑、IP电话、摄像头、平板电脑、可穿戴设备等。在实际网络系统中,有大量终端设备,为了简明起见,本申请实施例仅以两个终端设备为例进行说明。
[0035] 在本申请中,网站服务器40包括提供网页相关服务的计算机。网页相关服务包括一种或多种基于动态网页实现的服务。网页相关服务还包括数据库查询、文件服务等等。网站服务器40例如游戏服务器、网络购物服务器等等。动态网页是相对于静态网页而言的。静态网页是指预先编辑好的保存在网站服务器上的网页文件,静态网页对应一个固定的、以.htm、.html、.shtml等常见形式为后缀的统一资源定位符(Uniform Resource Locator,URL)。网站服务器只是根据来自于客户端浏览器的访问请求中携带的URL,将原已设计好的静态超文本标记语言(HyperText Markup Language,HTML)文档直接发送给客户端浏览器。静态网站的缺点是不易维护,需要更新网页时,只能人工手动地来更新所有的HTML文件。随着网站内容和信息量的日益扩增,制作网页文件的工作量不可接受。而动态网页在服务器端与客户端的页面内容不相同。最原始的页面存在服务器端,根据用户反馈的内容或者要求,在服务器端从数据库中查询得到结果,或者计算得出结果以后,直接把结果传递到客户端电脑上显示出来。交互性、自动更新、内容因时因人而变是动态网页相对于静态网页的特点。
[0036] 在本申请实施例中,调度设备20维护有多个防护IP地址序列,例如防护地址序列A和防护地址序列B。调度设备20建立终端设备与防护地址序列的一一映射关系。例如调度设备建立终端设备301与防护地址序列A的映射关系,或者建立终端设备302与防护地址序列B的映射关系。
[0037] 以终端设备301为例,基于防护IP地址序列,调度设备20向终端设备返回一个防护IP地址的方式具体为:
[0038] 根据防护地址获取请求中携带的终端设备301的标识,查找与终端设备301对应的防护地址序列A,从防护地址序列A中获取第一个未使用的防护IP地址,向终端设备301返回获取的未使用的防护IP地址,所述防护地址序列A中包括至少两个顺序保存的所述防护IP地址,所述未使用的防护IP地址是指尚未向所述终端设备301返回的防护IP地址。
[0039] 可选地,为了节约有限的防护IP地址资源,调度设备根据终端设备的请求,建立上述映射关系,而无需预先为终端设备映射防护地址序列。换句话说,调度设备在终端设备301或终端设备302第一次请求防护IP地址时,建立各个终端设备的标识与防护地址序列的一一映射关系。例如根据终端设备301的防护地址获取请求建立终端设备301与防护地址序列A的映射关系,或者根据终端设备302的防护地址获取请求建立终端设备302与防护地址序列B的映射关系。并将对应的防护地址序列中的第一个防护IP地址返回给发送防护地址获取请求的终端设备。此后,当终端设备301再次请求防护地址时,将防护地址序列A中的第二个防护IP地址返回给终端设备301。
[0040] 调度设备20还监控防护设备是否被攻击的情况。可选地,调度设备20可以采用多种不同方式监控防护设备被攻击的情况。例如,调度设备20定期向各个防护IP地址发送测试报文,如果未在预先设定的时间段内接收到应答报文,则确定作为测试报文接收方的防护IP地址被攻击。又例如,防护设备10根据预先存储调度设备的IP地址和开放的端口号,通过防护IP地址定期向调度设备发送心跳报文,如果调度设备20超过预先设定的时间段而未接收到源地址为一个防护IP地址的心跳报文,则确定该防护IP地址被攻击。又例如,调度设备20接收网络中其他安全设备发送的安全日志,从日志中获得被攻击的防护IP地址。其他监控防护设备是否被攻击的具体方式在这里不再一一列举。
[0041] 如果所述防护设备被攻击,调度设备20获取被攻击的防护IP地址,根据防护地址序列与终端设备的标识的映射关系、以及防护IP地址被攻击的情况,定位攻击源。例如,调度设备按照被攻击的时间先后顺序生成被攻击的地址序列,所述被攻击的地址序列中包括至少两个被攻击的防护IP地址。调度设备20根据所述被攻击的地址序列,判断第一防护地址序列中已使用的防护IP地址是否先后依次被攻击,如果所述第一防护地址序列中已使用的防护IP地址先后依次被攻击,则获取与所述第一防护地址序列对应的第一终端设备的标识,并确定所述第一终端设备为攻击源。例如,将防护地址序列A中向终端设备301已返回的N个防护IP地址构成的子序列成为子序列A,其中N为大于等于2的自然数。如果被攻击的地址序列与子序列A相同,则将防护IP地址序列A对应的终端设备301作为攻击源。
[0042] 在如附图2所示的拒绝服务器攻击的防御系统中,调度设备在为发送防护地址获取请求的终端设备提供防护IP地址时,采用如下方式:调度设备为发送防护地址获取请求映射一个防护地址序列,在每次接收到防护地址获取请求时,从映射的防护地址序列中获取第一个未使用的防护IP地址,向发送防护地址获取请求的终端设备返回获取的未使用的防护IP地址。基于上述映射,调度设备监控防护IP地址被攻击的情况,以及上述映射关系,可以有效识别出攻击源,并且对攻击源进行防攻击处理,避免攻击源继续攻击其他防护IP地址,从而完善防御效果,提高了网站服务器的服务稳定性。
[0043] 附图3是本申请实施例提供的攻击防御设备的结构示意图。可选地,具有附图3所示结构的攻击防御设备是附图2中的调度设备20。调度设备包括至少一个处理器31、存储器32、网络接口33,处理器31、存储器32和网络接口33通过总线34相互连接。
[0044] 至少一个处理器31可以是一个或多个CPU,该CPU可以是单核CPU,也可以是多核CPU。
[0045] 存储器32包括但不限于是随机存取存储器(random access memory,RAM)、只读存储器(Read only Memory,ROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM或者快闪存储器)、或便携式只读光盘(Compact Disc Read-Only Memory,CD-ROM)。存储器32中保存有操作系统的代码、以及实现本申请提供的方法的程序代码。
[0046] 网络接口33可以是有线接口,例如光纤分布式数据接口(Fiber Distributed Data Interface,FDDI)、千兆以太网(Gigabit Ethernet,GE)接口;网络接口33也可以是无线接口。网络接口33用于接收第一终端设备的防护地址获取请求。
[0047] 处理器31用于读取存储器32中存储的程序代码后,执行以下操作:根据防护地址获取请求中携带的第一终端设备的标识,获得与第一终端设备的标识对应的第一防护地址序列,按照IP地址的保存顺序从所述第一防护地址序列中获取第一个未使用的防护IP地址,指示网络接口33向所述第一终端设备返回获取的未使用的防护IP地址,所述第一防护地址序列中包括至少两个顺序保存的所述防护IP地址,所述未使用的防护IP地址是指尚未向所述第一终端设备返回的防护IP地址。
[0048] 处理器31还用于监控防护设备是否被攻击的情况,如果所述防护设备被攻击,所述调度设备获取被攻击的防护IP地址。
[0049] 进一步地,处理器31按照被攻击的时间先后顺序生成被攻击的地址序列,所述被攻击的地址序列中包括至少两个被攻击的防护IP地址。处理器31根据所述被攻击的地址序列,判断所述第一防护地址序列中已使用的防护IP地址是否先后依次均被攻击;如果所述第一防护地址序列中已使用的防护IP地址先后依次均被攻击,则获取与所述第一防护地址序列对应的第一终端设备的标识,并确定所述第一终端设备为攻击源,并确定所述第一终端设备为攻击源。
[0050] 可选地,确定出攻击源之后,处理器31对攻击源进行防攻击处理。
[0051] 网络接口33或者处理器31实现上述功能的更多细节请参考后面方法实施例中的描述。
[0052] 可选地,调度设备还包括输入输出接口35,输入输出接口35用于与输入设备连接,接收用户通过输入设备输入的配置信息,例如防护IP地址。输入设备包括但不限于键盘、触摸屏、麦克风等等。输入输出接口35还用于与输出设备连接,输出处理器31确定出的攻击源信息。输出设备包括但不限于显示器、打印机等等。
[0053] 附图4是本申请实施例提供的另一种攻击防御设备的结构示意图。可选地,具有附图4所示结构的攻击防御设备是附图2中的调度设备20。调度设备包括存储单元40,接收单元41、处理单元42、和发送单元43。
[0054] 存储单元40,用于保存多个防护网际协议IP地址。
[0055] 接收单元41用于接收第一终端设备的防护地址获取请求。
[0056] 处理单元42,用于根据防护地址获取请求中包含的第一终端设备的标识,获得与第一终端设备的标识对应的第一防护地址序列,按照IP地址的保存顺序从所述第一防护地址序列中获取第一个未使用的防护IP地址,指示发送单元43向所述第一终端设备返回获取的未使用的防护IP地址,所述第一防护地址序列中包括至少两个顺序保存的所述防护IP地址,所述未使用的防护IP地址是指尚未向所述第一终端设备返回的防护IP地址.[0057] 所述处理单元42,还用于如果所述防护设备被攻击,所述调度设备获取被攻击的防护IP地址,并按照被攻击的时间先后顺序生成被攻击的地址序列。所述被攻击的地址序列中包括至少两个被攻击的防护IP地址;所述调度设备根据所述被攻击的地址序列,判断所述第一防护地址序列中已使用的防护IP地址是否先后依次被攻击;如果所述第一防护地址序列中已使用的防护IP地址先后依次被攻击,则获取与所述第一防护地址序列对应的第一终端设备的标识,并确定所述第一终端设备为攻击源。所述攻击源为后续防攻击处理的对象。
[0058] 附图4所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。附图4中上述各个单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。例如,采用软件实现时,上述接收单元41、处理单元42和发送单元43可以是由附图3中的CPU读取存储器中存储的程序代码后,生成的软件功能模块来实现。
图4中上述各个单元也可以由调度设备中的不同硬件分别实现,例如接收单元41和发送单元43由附图3中的网络接口33实现,处理单元由附图3中的处理器31实现,或者采用现场可编程门阵列(Field-Programmable Gate Array,FPGA)、或协处理器等可编程器件来完成。
显然上述功能模块也可以采用软件硬件相结合的方式来实现,例如接收单元41和发送单元
43由硬件可编程器件实现,而处理单元42是由CPU读取存储器中存储的程序代码后,生成的软件功能模块。
[0059] 下面结合附图5对本申请实施例提供的攻击防御方法进行介绍。可选地,该方法用于防范针对网站服务器的拒绝服务攻击。附图5是本申请实施例提供的攻击防御方法的流程图。可选地,附图5所示方法中涉及的调度设备、防护设备、终端设备、网站服务器的网络部署场景如附图2所示。附图5中的调度设备具备附图3或附图4所示的结构。
[0060] 请参照附图5,本申请实施例提供的拒绝服务攻击的防御方法包括以下步骤。
[0061] 本实施例步骤501~步骤503以调度设备对一个防护地址获取请求的处理过程为例,介绍调度设备向中终端设备提供防护IP地址的过程。
[0062] 步骤501,调度设备接收来自于第一终端设备的防护地址获取请求。
[0063] 在本申请实施例中为了区分不同的终端设备,用“第一终端设备”、“第二终端设备”的描述多个不同的终端设备。可选地,结合附图2来看,附图5中的第一终端设备是附图2中的终端设备301或终端设备302中的其中一个终端设备。
[0064] 本申请实施例以调度设备与第一终端设备之间的交互为例,对调度设备为终端设备提供防护IP地址的过程进行描述。在存在多个终端设备的实施场景中,每个终端设备可以采用相类似的过程从调度设备获得防护IP地址。
[0065] 防护地址获取请求中包括第一终端设备的标识。可选地,第一终端设备的标识包括但不限于第一终端设备的IP地址,或者第一终端设备的国际移动用户识别码(International Mobile Subscriber Identification Number,IMSI)、或者第一终端设备的移动台国际用户识别码(Mobile Subscriber ISDN Number,MSISDN)。防护地址获取请求可以通过源地址字段或者载荷携带第一终端设备的标识。例如第一终端设备的标识为第一终端设备的IP地址时,第一终端设备的标识可以携带在防护地址获取请求的源地址字段中。
[0066] 步骤502,调度设备根据接收到的防护地址获取请求中包含的第一终端设备的标识,获得与第一终端设备的标识对应的第一防护地址序列。第一防护地址序列中包括至少两个顺序保存的所述防护IP地址。
[0067] 调度设备可以在接收到防护地址获取请求之前、或者接收到防护地址获取请求之后生成防护地址序列。为了降低用户的业务等待时间,调度设备可以在接收来自于第一终端设备的防护地址获取请求之前,根据所述多个防护IP地址,生成至少两个防护地址序列,所述第一防护地址序列包括在所述至少两个防护地址序列中。
[0068] 可选地,调度设备根据配置的防护IP地址,采用排列方式,生成多个互不相同的防护地址序列,并且为每个终端设备的标识预先映射一个防护地址序列。可选地,防护IP地址是调度设备的管理员预先通过调度设备的输入输出接口在调度设备中设置的。
[0069] 排列是一个数学上的基本概念,排列是指从给定个数的元素中取出指定个数的元素进行排序。具体地,排列是从n个不同的元素中,任取m(m<=n)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列,其中m、n均为自然数。排序计算公式为
[0070]
[0071] 本申请实施例中生成地址防护序列时,通过基于设置的防护IP地址生成排列,生成的所有排列中的一个排列即为一个防护地址序列。例如,假设共有3个防护IP地址,所需获取的每个防护地址序列中包括2个(或者3个)防护IP地址,则基于3个防护IP地址一共可以生成6个防护地址序列。也就是说,可以通过6个防护地址序列识别出6个终端设备。这些防护IP地址可以是IPv4地址,IPv4地址可以用点分十进制方式表达,如126.155.255.254;或者这些防护IP地址可以是IPv6地址,IPv6用冒分十六进制表示,如ABCD:EF01:2345:
6789:ABCD:EF01:2345:6789。本申请实施例中为了描述简便,用IP 1,IP 2,和IP 3分别指代这3个防护IP地址,则采用排列方法生成的防护地址序列分别为:
[0072] IP 1-IP 2-IP 3,
[0073] IP 1-IP 3-IP 2,
[0074] IP 2-IP 1-IP 3,
[0075] IP 2-IP 3-IP 1,
[0076] IP 3-IP 1-IP 2,
[0077] IP 3-IP 2-IP 1。
[0078] 假设游戏客户端的数量为c,c与m、n的约束关系如下。
[0079]
[0080] 通过以下排列的取值可以理解,如果需要支持10万个游戏客户端,则对应需要10万个防护地址序列,可以按照以下公式来设定m、n的值。
[0081] ·
[0082] ·
[0083] ·
[0084] ·
[0085] 按照上述若干公式,可以看出当游戏客户端数目确定的情况下,防护地址序列的长度与防护IP地址的数量有相关性。例如,假设共有48个防护IP地址,防护地址序列则最短可以为3,即在48个防护IP地址上,发生3次攻击后可以定位攻击源。假设共有20个防护IP地址,防护地址序列则最短可以为4,即在20个防护IP地址上,发生4次攻击后可以定位攻击源。
[0086] 在具体实施过程中,防护地址序列长度1的取值可以根据可供使用的防护IP地址的数量范围、以及对定位攻击源及时性的需求灵活设置。例如,一种比较折衷的方案是有13个防护IP地址可供生成防护地址序列,每个防护地址序列中包括5个IP防护地址,这样发生5次攻击后可以定位攻击源。
[0087] 为了节约有限的防护IP地址资源,避免为长期不使用服务的终端设备预先分配防护地址序列而造成不必要的浪费,调度设备根据终端设备的请求,建立上述映射关系,而无需预先为终端设备映射防护地址序列。换句话说,调度设备预先生成一个防护地址序列集合,在第一终端设备第一次请求防护IP地址时,才从防护地址序列集合中选择出一个防护地址序列,建立第一终端设备与选择出的防护地址序列的一一映射关系,将对应的防护地址序列中的第一个防护IP地址返回给发送防护地址获取请求的终端设备。并从防护地址序列集合中去除选择出的防护地址序列。此后,当第一终端设备再次请求防护地址时,将对应的防护地址序列中的第二个防护IP地址返回给第一终端设备。可选地,可以采用以下流程来实现步骤502。
[0088] 步骤5021,调度设备根据第一终端设备的标识,查找是否存在与所述第一终端设备的标识对应的防护地址序列。
[0089] 步骤5022,如果不存在与所述第一终端设备的标识对应的防护地址序列,则从备选防护地址序列中选择一个防护地址序列,并将选择出的防护地址序列作为与所述第一终端设备的标识对应的第一防护地址序列,所述备选防护地址序列是指所述至少两个防护地址序列尚未被选择的防护地址序列。
[0090] 步骤5023,如果存在与所述第一终端设备的标识对应的防护地址序列,则将查找到的防护地址序列作为所述第一防护地址序列。
[0091] 步骤503,调度设备按照IP地址的保存顺序,从所述第一防护地址序列中获取第一个未使用的防护IP地址,向所述第一终端设备返回获取的未使用的防护IP地址,未使用的防护IP地址是指尚未向所述第一终端设备返回的防护IP地址。
[0092] 可选地,调度设备在第一终端设备对应的防护地址序列中记录各个防护IP地址的使用情况,例如设置标志位来记录已使用的防护IP地址。
[0093] 假设调度设备将上述防护地址序列“IP 1-IP 2-IP 3”设置为第一终端设备对应的防护地址序列,即第一防护地址序列为“IP 1-IP 2-IP 3”。调度设备第一次接收到第一终端设备的防护地址获取请求时,将第一个防护IP地址“IP 1”返回给第一终端设备。调度设备在防护地址序列“IP 1-IP 2-IP 3”中为“IP 1”设置一个已使用标记,在本申请中为了便于文字描述简洁,用下划线表示已使用标记,记为“IP 1-IP 2-IP 3”。
[0094] 假设调度设备向第一终端设备返回防护IP地址“IP 1”之后,防护IP地址“IP 1”因受到攻击而变得不可用,即终端设备无法再通过“IP 1”访问网站服务器,则第一终端设备会再次向调度设备发送防护地址获取请求,以便于获得新的防护IP地址。
[0095] 当调度设备第二次接收到第一终端设备的防护地址获取请求时,确定此时第一个未使用的防护IP地址为“IP 2”,向所述第一终端设备返回“IP 2”,并在防护地址序列“IP 1-IP 2-IP 3”中为“IP 2”也设置一个已使用标记,记为“IP 1-IP 2-IP 3”,以此类推。可选地,由于防护地址序列中的各防护IP地址是顺序保存的,可以仅为当前已返回的最后一个防护IP地址设置已使用标记,也可以达到再次接收到来自第一终端设备的防护地址获取请求时,从第一防护地址序列中获取第一个未使用的防护IP地址的目的。
[0096] 可选地,在上述步骤501中第一终端设备可以通过超文本传输协议(HyperText Transfer Protocol,HTTP)协议来构造防护地址获取请求。例如,调度设备开放一个指定端口用于向终端设备提供防护IP地址。在附图2所示的场景中,用户在需要访问网站服务器时,先要从调度设备获取防护IP地址。在这个过程中,终端设备301或302中的浏览器软件或者业务客户端根据预先设置的调度设备的IP地址和上述指定端口号,构造一个HTTP请求,该HTTP请求的目的地址为调度设备的IP地址、目的端口号为上述指定端口号,并向调度设备发送构造的HTTP请求。
[0097] 相应地,在上述步骤503中调度设备收到HTTP请求后,向第一终端设备,如附图2中的终端设备301或302,返回一个JavaScript对象表示法(JavaScript Object Notation,JSON)格式的字符串,简称JSON字符串。JSON字符串中携带防护IP地址。JSON字符串例如{"ip":"12.1.1.1","code":10000,"msg":"request success"},其中"12.1.1.1"即为防护IP地址。
[0098] 调度设备一方面执行步骤501~步骤503向终端设备提供防护IP地址的同时,另一方面监控防护设备是否被攻击的情况,即执行步骤504~步骤505。
[0099] 步骤504,调度设备监控防护设备被攻击的情况,如果被攻击则执行步骤505。如果防护设备未被攻击,则继续监控防护设备被攻击的情况。
[0100] 步骤505,如果所述防护设备被攻击,调度设备获取被攻击的防护IP地址,并按照被攻击的时间先后顺序生成被攻击的地址序列,所述被攻击的地址序列中包括至少两个被攻击的防护IP地址。
[0101] 进一步地,调度设备在被攻击的地址序列中发生变化时,即被攻击的地址序列中包括的IP地址数目递增时,或者监测到新的攻击时,执行步骤506~步骤507。
[0102] 本申请实施例在步骤506~步骤507中,仅以第一防护地址序列与攻击序列的比较过程进行说明。在实际执行过程中调度设备保存有多个防护地址序列与多个终端设备标识的映射关系,调度设备每次选取一个防护地址序列,根据被攻击的地址序列,确定选取的防护地址序列中已使用的防护IP地址是否先后依次均被攻击,如果被攻击则执行步骤507确定攻击源,如果选取的防护地址序列中已使用的防护IP地址并未先后依次均被攻击,则继续从多个防护地址序列中选取下一个防护地址序列,直至比较完所有与终端设备的标识映射的防护地址序列为止。
[0103] 步骤506,调度设备根据所述被攻击的地址序列,判断所述第一防护地址序列中已使用的防护IP地址是否先后依次被攻击。如果所述第一防护地址序列中已使用的防护IP地址是否先后依次均被攻击,执行步骤507。如果所述第一防护地址序列中已使用的防护IP地址并未先后依次均被攻击,则返回步骤504,继续监控防护设备被攻击的情况。
[0104] 虽然终端设备与防护地址序列是一一映射的,但是多个防护地址序列中的前几个防护IP地址可能是相同的,即多个防护地址序列部分相同。这样当被攻击的IP地址数量较少时,如果多个防护地址序列中已使用的IP地址是相同的,此时执行步骤506得到的结果中,可能出现多个防护地址序列中已使用的防护IP地址依次被攻击的情况,即多个终端设备被识别为攻击源,识别攻击源的准确性不高。因此为了提高识别攻击源的准确性,调度设备可以等待时机较为成熟时,例如较多数目的防护IP地址被攻击后、或者防护地址序列中已使用的防护IP地址的数量较多时,再执行步骤506,这样可以提高识别攻击源的准确性。
[0105] 可选地,在步骤506之前,调度系统确定防护地址序列中已使用的防护IP地址的数量超过阈值时,执行步骤506。这里的阈值是根据所述第一防护地址序列中包含的防护IP地址的总数确定的。可选地,如果防护地址序列的长度用m表示,阈值的取值用l表示,则l=m,或者l=m-1。
[0106] 步骤507,如果所述第一防护地址序列中已使用的防护IP地址先后依次均被攻击,则获取与所述第一防护地址序列对应的第一终端设备的标识,并确定所述第一终端设备为攻击源,所述攻击源为后续防攻击处理的对象。
[0107] 继续上面的例子,如果调度设备在第一时刻监控到IP 1被攻击,在第一时刻之后的第二时刻监控到IP 2被攻击,则调度设备生成被攻击的地址序列“IP 1-IP 2”。这里假定防护地址序列的长度m=3,阈值l=2。即假定调度设备确定防护地址序列中已使用的防护IP地址的数量超过2时,执行步骤506。调度设备根据被攻击的地址序列“IP 1-IP 2”,确定与各个已映射到终端设备的标识的防护地址序列已使用的防护IP地址是否先后依次被攻击。仍以第一防护地址序列为例,假定此时调度设备已经根据第一终端设备的请求,将第一防护地址序列中的IP 2提供给第一终端设备,即此时采用以上标记已使用的防护IP地址的方式,第一防护地址序列为“IP 1-IP 2-IP 3”,则第一防护地址序列中的已使用的防护IP地址为“IP 1-IP 2”。由于被攻击的地址序列“IP 1-IP 2”与第一防护地址序列中的已使用的防护IP地址构成的序列“IP 1-IP 2”相同,则调度设备确定与第一防护地址序列对应的第一终端设备为攻击源。换句话说,在防护地址序列长度为3时,调度设备在攻击发生2次后,能够锁定攻击源。
[0108] 可选地,调度设备确定出攻击源之后,对攻击源进行防攻击处理。例如调度设备不再向攻击源提供新的防护IP地址,这样攻击源无法继续对新的防护IP地址实施攻击。调度设备还可以将攻击源的标识发送给网关、防火墙等报文转发设备,以便于报文转发设备对攻击源发送的后续流量进行阻断、丢弃等等处理,或者,报文转发设备将攻击源发送的后续流量发送给流量清洗设备进行清洗。后续对攻击源的具体防攻击处理方式,可以由网络管理员根据实际情况通过策略进行配置。
[0109] 在调度设备采用附图5所述的防御方法识别攻击源的过程中,由于被攻击的IP地址在攻击发生后不可用,可能会对其他终端设备的服务造成影响。例如该被攻击的IP地址存在其他防护地址序列中,并且该IP地址在其他防护地址序列中是未使用的防护IP地址,则假设调度设备后续将被攻击的IP地址提供给其他终端设备后,其他终端设备实际上无法通过被攻击的IP地址访问网站服务器。为了避免对正常终端设备的服务造成影响,本申请实施例又提供了一种拒绝服务攻击的防御方法,如附图6所示。
[0110] 附图6所描述的防御方法基于附图5中描述的防御方法,其中步骤501~步骤507与附图5一致,请参考关于附图5的上述描述,在这里不进行重复描述。在本申请实施例中为了降低攻击对正常服务造成的影响,调度设备还维护一个备用防护IP地址集合。备用防护IP地址集合中的备用防护IP地址并不参与采用排列方式生成防护地址序列,而是用于在攻击发生时替换各防护地址序列中包括的被攻击的防护IP地址,特别是在被攻击的防护IP地址是防护地址序列中未使用的防护IP地址时,用备用防护IP地址对被攻击的防护IP地址进行替换。
[0111] 为了便于描述,将步骤502中用于采用排列方式生成防护地址序列的防护IP地址归类为第一防护地址集合。即第一防护地址集合中的防护IP地址是用于生成防护地址序列的防护IP地址。将不参与采用排列方式生成防护地址序列、而用于在攻击发生时进行上述替换的防护IP地址归类为第二防护地址集合。第一防护地址集合和第二防护地址集合中的防护IP地址都是防护设备提供的可供终端设备访问的IP地址。网络管理员可以根据受攻击的历史记录、应用客户端的总数目、以及网站服务器所提供业务对稳定性的需求,灵活确定第一防护地址集合和第二防护地址集合中防护IP地址数目或比例。例如如果防护设备受攻击的历史记录较低,或者应用客户端的总数目很大,则可以在第一防护地址集合中设置较多数目的防护IP地址,而第二防护地址集合中设置较少数目的防护IP地址,如共有10个防护IP地址,则在第一防护地址集合中设置9个防护IP地址,而在第二防护地址集合中仅设置1个防护IP地址。又例如,如果防护设备受攻击的历史记录较高,或者业务对稳定性的需求很高,则可以在第二防护地址集合中设置略数目的防护IP地址,如共有10个防护IP地址,则在第一防护地址集合中设置7个防护IP地址,而在第二防护地址集合中设置3个防护IP地址。显然,第一防护地址集合和第二防护地址集合互不重合。
[0112] 参考附图6,本申请实施例在步骤505调度设备获取被攻击的防护IP地址之后,还包括步骤508~步骤509。
[0113] 步骤508,调度设备从第二防护地址集合中获取一个防护IP地址。
[0114] 步骤509,调度设备用所述获取的防护IP地址替换所述至少两个防护地址序列中未使用的所述被攻击的防护IP地址。例如,假定被攻击的防护IP地址为第一防护IP地址,调度设备从第二防护地址集合中获取的防护IP地址为第二防护IP地址,调度设备将所述至少两个防护地址序列中未使用的第一防护IP地址替换为第二防护IP地址。
[0115] 下面结合两个实例,对附图5和附图6所示防御方法进行说明。
[0116] 实例1
[0117] 调度设备维护两个防护地址集合,分别为第一防护地址集合和第二防护地址集合。第一防护地址集合中的防护IP地址是用于生成防护地址序列的防护IP地址。第二防护地址集合中的防护IP地址不参与采用排列方式生成防护地址序列、而用于在攻击发生时对防护地址序列中受攻击的防护IP地址进行替换。第一防护地址集合和第二防护地址集合中的防护IP地址都是防护设备提供的可供终端设备访问的IP地址。
[0118] 第一防护地址集合中包括三个防护IP地址,分别为IP 1,IP 2,IP 3。第二防护地址集合中包括一个防护IP地址,为IP 4。
[0119] 根据第一防护地址集合,采用排列方法生成的防护地址序列分别为:
[0120] (1)IP 1-IP 2-IP 3,
[0121] (2)IP 1-IP 3-IP 2,
[0122] (3)IP 2-IP 1-IP 3,
[0123] (4)IP 2-IP 3-IP 1,
[0124] (5)IP 3-IP 1-IP 2,
[0125] (6)IP 3-IP 2-IP 1。
[0126] 假定上述6个防护地址序列被调度设备映射给了6个发送了防护地址请求的终端设备,并将每个防护地址序列中的第一个防护IP地址发送给终端设备。例如结合附图2,调度设备将防护地址序列(1)映射给终端设备301,将防护地址序列(1)中的IP 1发送给终端设备301。调度设备将防护地址序列(2)映射给终端设备302,将防护地址序列(2)中的IP 1发送给终端设备302。6个终端设备中的其余4个终端设备的情况也类似。
[0127] 此时标记了已使用的地址之后的防护地址序列为:
[0128] (1)IP 1-IP 2-IP 3,
[0129] (2)IP 1-IP 3-IP 2,
[0130] (3)IP 2-IP 1-IP 3,
[0131] (4)IP 2-IP 3-IP 1,
[0132] (5)IP 3-IP 1-IP 2,
[0133] (6)IP 3-IP 2-IP 1。
[0134] 此后,调度设备监测到IP 1受到攻击,用IP 4替换上述6个防护地址序列中未使用的IP 1,得到的新的防护地址序列为:
[0135] (1)IP 1-IP 2-IP 3,
[0136] (2)IP 1-IP 3-IP 2,
[0137] (3)IP 2-IP 4-IP 3,
[0138] (4)IP 2-IP 3-IP 4,
[0139] (5)IP 3-IP 4-IP 2,
[0140] (6)IP 3-IP 2-IP 4。
[0141] 由于IP 1受到攻击而不可用,终端设备301和终端设备302无法通过IP 1访问网站服务器,因此终端设备301和终端设备302再次向调度设备发送防护地址获取请求。调度设备将替换后得到的防护地址序列(1)中的IP 2发送给终端设备301,将替换后得到的防护地址序列(2)中的IP 3发送给终端设备302。此时标记了已使用的地址之后的防护地址序列为:
[0142] (1)IP 1-IP 2-IP 3,
[0143] (2)IP 1-IP 3-IP 2,
[0144] (3)IP 2-IP 1-IP 3,
[0145] (4)IP 2-IP 3-IP 1,
[0146] (5)IP 3-IP 1-IP 2,
[0147] (6)IP 3-IP 2-IP 1。
[0148] 之后,调度设备监测到IP 2受到攻击,调度设备生成被攻击的地址序列“IP 1-IP 2”。调度设备将被攻击的地址序列“IP 1-IP 2”与防护地址序列(1)-(6)进行比较,根据被攻击的地址序列“IP 1-IP 2”,判断每个防护地址序列中已使用的防护IP地址是否依次先后被攻击。据此,判断出防护地址序列(1)中由已使用的防护IP地址依次先后被攻击,因此确定防护地址序列(1)映射的终端设备301为攻击源。
[0149] 实例2
[0150] 攻击者可能同时对多个防护IP实施攻击,为了应对这种情况,可以在第一防护集合和第二防护地址集合中设置相同数目的防护IP地址,即为第一防护地址集合中的每个防护IP地址设置备用地址。与实例1类似,第一防护地址集合中的防护IP地址是用于生成防护地址序列的防护IP地址。第二防护地址集合中的防护IP地址不参与采用排列方式生成防护地址序列、而用于在攻击发生时对防护地址序列中受攻击的防护IP地址进行替换。第一防护地址集合和第二防护地址集合中的防护IP地址都是防护设备提供的可供终端设备访问的IP地址。
[0151] 第一防护地址集合中包括三个防护IP地址,分别为IP 1,IP 2,IP 3。第二防护地址集合中包括三个防护IP地址,为IP 4,IP 5和IP 6。
[0152] 根据第一防护地址集合,采用排列方法生成的防护地址序列分别为:
[0153] (1)IP 1-IP 2-IP 3,
[0154] (2)IP 1-IP 3-IP 2,
[0155] (3)IP 2-IP 1-IP 3,
[0156] (4)IP 2-IP 3-IP 1,
[0157] (5)IP 3-IP 1-IP 2,
[0158] (6)IP 3-IP 2-IP 1。
[0159] 假定上述6个防护地址序列被调度设备映射给了6个发送了防护地址请求的终端设备,并将每个防护地址序列中的第一个防护IP地址发送给终端设备。例如结合附图2,调度设备将防护地址序列(1)映射给终端设备301,将防护地址序列(1)中的IP 1发送给终端设备301。调度设备将防护地址序列(2)映射给终端设备302,将防护地址序列(2)中的IP 1发送给终端设备302。6个终端设备中的其余4个终端设备的情况也类似。
[0160] 此时标记了已使用的地址之后的防护地址序列为:
[0161] (1)IP 1-IP 2-IP 3,
[0162] (2)IP 1-IP 3-IP 2,
[0163] (3)IP 2-IP 1-IP 3,
[0164] (4)IP 2-IP 3-IP 1,
[0165] (5)IP 3-IP 1-IP 2,
[0166] (6)IP 3-IP 2-IP 1。
[0167] 此后,调度设备监测到IP 1、IP 2和IP 3先后受到攻击,用IP 4替换上述6个防护地址序列中未使用的IP 1,用IP 5替换上述6个防护地址序列中未使用的IP 2,用IP 6替换上述6个防护地址序列中未使用的IP 3,得到的新的防护地址序列为:
[0168] (1)IP 1-IP 5-IP 6,
[0169] (2)IP 1-IP 6-IP 5,
[0170] (3)IP 2-IP 4-IP 6,
[0171] (4)IP 2-IP 6-IP 4,
[0172] (5)IP 3-IP 4-IP 5,
[0173] (6)IP 3-IP 5-IP 4。
[0174] 由于IP 1受到攻击而不可用,终端设备301和终端设备302无法通过IP 1访问网站服务器,因此终端设备301和终端设备302再次向调度设备发送防护地址获取请求。调度设备将替换后得到的防护地址序列(1)中的IP 5发送给终端设备301,将替换后得到的防护地址序列(2)中的IP 6发送给终端设备302。此时标记了已使用的地址之后的防护地址序列为:
[0175] (1)IP 1-IP 5-IP 6,
[0176] (2)IP 1-IP 6-IP 5,
[0177] (3)IP 2-IP 4-IP 6,
[0178] (4)IP 2-IP 6-IP 4,
[0179] (5)IP 3-IP 4-IP 5,
[0180] (6)IP 3-IP 5-IP 4。
[0181] 之后,调度设备监测到IP 5,IP 6又同时受到攻击,调度设备生成被攻击的地址序列“IP 1–IP 2–IP 3-IP 5–IP6”。调度设备将被攻击的地址序列“IP 1–IP 2–IP 3-IP 5–IP6”与防护地址序列(1)-(6)进行比较,确定每个防护地址序列中已使用的防护IP地址是否先后被攻击。在本实施例中确定防护地址序列(1)中已使用的防护IP地址“IP 1-IP 5”先后被攻击,因此确定防护地址序列(1)映射的终端设备301为攻击源。防护地址序列(2)中已使用的防护IP地址“IP 1-IP 6”先后被攻击,因此确定防护地址序列(2)映射的终端设备302也为攻击源。
[0182] 通过上述实例可以看出,无论是DoS攻击,还是DDoS攻击,本申请实施例提供的防御方法都能够在攻击早期快速识别出攻击源,避免所有防护IP地址均被攻击。这样提高了对于DoS攻击,或DDoS攻击的实施早期防攻击处理的可能性,有助于提高网站服务器的服务稳定性。并且在这个过程中,仅需要数目有限的防护IP地址,是一种低成本的防御方案。
[0183] 本申请实施例还提供了一种攻击防御系统,攻击防御系统的示意图如图2所示。攻击防御系统包括调度设备和至少一个防护设备。调度设备和至少一个防护设备的功能、以及相互之间的交互过程请参照上述各实施例中的描述,在这里不再赘述。
[0184] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0185] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
[0186] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的范围。这样,倘若本申请的这些修改和变型属于本发明权利要求的范围之内,则本发明也意图包括这些改动和变型在内。