发明内容
本申请提供一种DNS泛洪攻击的防御方法和装置,可以实现更加精确的防御,减少对正常DNS请求的影响。
本申请采用如下技术方案。
一种域名系统DNS泛洪攻击的防御方法,包括:
根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
其中,所述根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址可以包括:
根据预定时间长度内收到的DNS请求,分别统计不同的源IP地址和目的IP地址之间的访问参数;
分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间;
分别对不同的源IP地址进行判断,当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址。
其中,所述访问参数可以包括以下任意一种或任意多种:
预定时间长度内的访问天数、预定时间长度内的平均每天访问次数、预定时间长度内的平均访问间隔、预定时间长度内的访问时间分布、预定时间长度内的域名解析成功率。
其中,所述分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间可以包括:
对于不同的目的IP地址,分别进行如下操作:对于一个目的IP地址和所对应的源IP地址之间不同种类的访问参数,分别根据该目的IP地址和所对应的源IP地址之间的该种访问参数,计算该种访问参数的平均值和方差,得到该目的IP地址的该种访问参数的合理区间的上限为平均值加N1倍方差,下限为平均值减N2倍方差;N1和N2为正数。
其中,所述当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址可以包括:
当一个源IP地址对于所对应的目的IP地址,有至少M种访问参数在合理区间内时,确定该源IP地址为合法源IP地址;其中,M为预设门限。
其中,所述的防御方法还可以包括:
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,对于不是合法源IP地址的源IP地址进行认证;对于认证成功的源IP地址,按照预设的发送频率,将该源IP地址发送的DNS请求转发给相应的DNS权威服务器。
其中,所述的防御方法还可以包括:
根据预定时间长度内收到的DNS请求的统计数据,确定以下一种或多种被攻击对象:被攻击IP地址、被攻击域名。
其中,所述符合预定条件的DNS请求可以包括以下一种或多种:
目的IP地址为被攻击IP地址的DNS请求;
请求解析的域名为被攻击域名的DNS请求。
其中,所述的防御方法还可以包括:
更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
一种域名系统DNS泛洪攻击的防御方法,包括:
根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名;
更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
其中,所述根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名可以包括:
对于不同的预定域名分别进行如下操作:
统计在不同周期内收到的,请求解析的域名为该预定域名的DNS请求的请求量并记录;
根据该预定域名已记录的不同周期的请求量,生成该预定域名的请求量门限值;
当该预定域名在一个周期的请求量超过所述请求量门限值时,确认该预定域名为被攻击域名。
其中,所述的防御方法还可以包括:
指示所述第二DNS权威服务器的高速缓存读取所述被攻击域名的响应信息并保存。
其中,所述的防御方法还可以包括:
根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
一种域名系统DNS泛洪攻击的防御装置,包括:第一处理器和第一存储器;
所述第一存储器用于保存用于进行DNS泛洪攻击防御的程序;所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,进行如下操作:
根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
其中,所述根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址可以包括:
根据预定时间长度内收到的DNS请求,分别统计不同的源IP地址和目的IP地址之间的访问参数;
分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间;
分别对不同的源IP地址进行判断,当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址。
其中,所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,还可以进行如下操作:
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,对于不是合法源IP地址的源IP地址进行认证;对于认证成功的源IP地址,按照预设的发送频率,将该源IP地址发送的DNS请求转发给相应的DNS权威服务器。
其中,所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,还可以进行如下操作:
根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名;
更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
一种域名系统DNS泛洪攻击的防御装置,包括:第二处理器和第二存储器;
所述第二存储器用于保存用于进行DNS泛洪攻击防御的程序;所述用于进行DNS泛洪攻击防御的程序在被所述第二处理器读取执行时,进行如下操作:
根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名;
更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
其中,所述根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名可以包括:
对于不同的预定域名,分别进行如下操作:
统计在不同周期内收到的,请求解析的域名为该预定域名的DNS请求的请求量并记录;
根据该预定域名已记录的不同周期的请求量,生成该预定域名的请求量门限值;
当该预定域名在一个周期的请求量超过所述请求量门限值时,确认该预定域名为被攻击域名。
其中,所述用于进行DNS泛洪攻击防御的程序在被所述第二处理器读取执行时,还可以进行如下操作:
指示所述第二DNS权威服务器的高速缓存读取所述被攻击域名的响应信息并保存。
其中,所述用于进行DNS泛洪攻击防御的程序在被所述第二处理器读取执行时,还可以进行如下操作:
根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
一种域名系统DNS泛洪攻击的防御装置,包括:
分析模块,用于根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
清洗模块,用于当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
一种域名系统DNS泛洪攻击的防御装置,包括:
确定模块,用于根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名;
分级模块,用于更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
控制模块,用于指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
本申请至少一个实施例中,可以通过大数据分析来确定合法源IP地址,根据合法源IP地址进行流量清洗,可以提高防御的精确性,降低误杀正常DNS请求的可能,减少对递归服务器的影响,而且可以避免和攻击者比拼资源。
本申请实施例的一种实现方式中,可以根据统计结果得到不同目的IP地址的访问参数的合理区间,从而甄别出合法源IP地址,更加精确和可靠。
本申请至少一个实施例中,将被攻击域名的流量迁移到预定的DNS权威服务器上,这样可以缓解解析被攻击域名的DNS权威服务器上的流量,并隔离被攻击域名和其它域名。
本申请实施例的一种实现方式中,预定的DNS权威服务器配备有高速缓存,可以读取所述被攻击域名的响应信息并保存;这样DNS请求不会到达DNS权威服务器,而是由高速缓存直接回复,从而可以避免性能瓶颈,降低DNS权威服务器的性能负荷。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的不同特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一种配置中,进行DNS泛洪攻击防御的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括一个或多个模块。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
首先简单介绍一下DNS的原理和请求过程。
DNS域名的组织结构如图1所示;在最顶层的是根域名(Root),可以用一个“.”表示,在此基础上延伸出其他所有的域名。在根域名下就是顶级域名(也可称为一级域名),大致分为地区顶级域名、类别顶级域名、新增顶级域名三大类,图中每一类都举出了3例子作为代表,其实还有很多。顶级域名位于根域名之下,而在顶级域名下又有二级域名,以“.com”为例,“.com”下列出了三个常见的二级域名,比如“.163”、“.QQ”、“.tom”等,以此类推,后面可能会有很多层这样的结构,可以统一称为子域。下一层为上一层的子域;比如在“.163.com”这个域名层级关系中,“.news”就是“.163.com”的子域,同理“v”就是“.news.163.com”的子域,以此类推。但在输入或书写的时候是从最低一级的写起(最左边时最低级的域名),直至顶级域名,而DNS查询和解析顺序正好相反。
DNS查询的过程如图2所示,以www.abc.com为例,包括步骤201~208:
201、DNS客户端先向DNS递归服务器查询www.abc.com;
202、DNS递归服务器检查本地资源记录,若存在则作授权回答;若不存在,则检查本地缓存,如存在则直接返问结果。若本地资源记录和缓存中都不存在时,则向根服务器发送递归请求;
203、根服务器返回递归响应,包含com域的DNS权威服务器的IP地址;其中,一个域的DNS权威服务器是维护该域内DNS信息的服务器,该服务器可以作出授权回答,即确定地回答出任意某个地址是否在其域内;
204、DNS递归服务器继续向com域的DNS权威服务器发送递归请求;
205、com域的DNS权威服务器返回递归响应,包含abc域的DNS权威服务器的IP地址;
206、DNS递归服务器继续向abc域的DNS权威服务器发送递归请求;
207、abc域的DNS权威服务器返回递归响应,DNS递归服务器得到对于域名www.abc.com的授权回答,保存在本地缓存中;
208、DNS递归服务器将DNS响应返回给DNS客户端,完成此次查询。
下面简单介绍一下DNS DDoS的攻击原理和示例
(1)利用僵尸网络发起的DNS DDoS攻击。
图3介绍了DNS DDoS攻击的一个示意图,攻击者利用肉鸡发动DNS DDoS攻击,攻击导致DNS权威服务器资源被耗尽,拒绝服务,使正常用户1、正常用户2、正常用户3也无法使用DNS服务。
(2)利用递归服务器发起跳板攻击
图4介绍了以DNS递归服务器为跳板对权威服务器进行的DNS DDoS攻击。
比如一个例子中,发动DNS DDoS攻击时,攻击者向作为跳板的递归服务器发送大量的域名查询请求,请求查询的域名的二级域名相同,二级域名的子域名随机构造,例如:aaa.abc.com、bbb.abc.com、123.abc.com等。这时,递归服务器在本地缓存中由于查询不到,需要向权威服务器发起递归查询请求,因为其二级域名相同,所以全部请求会被发送到该二级域名的权威DNS服务器,本例中即abc的权威服务器。由于访问量巨大,很可能使得该权威服务器瘫痪,实现了以递归服务器为跳板的对权威服务器的DDoS攻击。
实施例一、一种DNS泛洪攻击的防御方法,如图5所示,包括步骤S110~S120:
S110、根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
S120、当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
本实施例中,预定时间长度内收到的DNS请求,可以是指包含多个域的DNS权威服务器的系统在预定时间长度内所收到的DNS请求;该系统可以但不限于为提供云解析服务的系统或平台,后文称为云解析系统。
本实施例中,可以通过大数据分析来确定合法源IP地址,根据合法源IP地址进行流量清洗,可以提高防御的精确性,降低误杀正常DNS请求的可能,减少对递归服务器的影响,而且可以避免和攻击者比拼资源。
本实施例中,DNS请求可以封装成IP报文的形式,其中源IP地址是IP报文的发送方地址,本实施例中可以是DNS递归服务器;目的IP地址是IP报文的发送目标的地址,本实施例中可以是DNS权威服务器。
本实施例中,可以通过已有的DDoS检测方案或其它检测方案,来得知发生DNS攻击。
本实施例中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器,即:正常放行源IP地址被认定为合法的DNS请求。其中,相应的DNS权威服务器可以是指DNS请求中目的IP地址对应的DNS权威服务器。
本实施例中,当存在多个合法源IP地址时,源IP地址为合法源IP地址可以是指:该源IP地址是多个合法源IP地址中的一个。
本实施例中,对于发生DNS泛洪攻击时,所收到的符合预定条件的DNS请求中,不是合法源IP地址的DNS请求,可以进行处理后发送给目的IP地址,也可以忽略或丢弃。
本实施例中,可以周期性执行S110,即不断更新合法源IP地址。
本实施例的方法当使用在云解析系统中时,可以在系统入口安装分光设备,将收到的DNS请求都复制一份给大数据分析系统进行步骤S110,得到合法源IP地址;当发生DNS泛洪攻击时,将所收到的符合预定条件的DNS请求这部分流量牵引到流量清洗系统,由流量清洗系统根据合法源IP地址进行步骤S120,将IP地址是合法源IP地址的流量回注到云解析系统中。
一种实现方式中,根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址可以包括:
根据预定时间长度内收到的DNS请求,分别统计不同的源IP地址和目的IP地址之间的访问参数;
分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间;
分别对不同的源IP地址进行判断,当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址。
本实现方式中,可以根据统计结果得到不同目的IP地址的访问参数的合理区间,从而甄别出合法源IP地址,更加精确和可靠。
本实现方式中,如果在预定时间长度内,IP地址1发送DNS请求给IP地址2,则IP地址1和IP地址2形成一对源IP地址和目的IP地址;根据预定时间长度内IP地址1发送给IP地址2的DNS请求,可以得到这一对源IP地址和目的IP地址之间的访问参数。这样根据预定时间长度内收到的DNS请求,可以统计出一对或多对源IP地址和目的IP地址之间的访问参数。
本实现方式中,不同的目的IP地址可以是指在预定时间长度内收到的DNS请求的目的IP地址的并集,或至少并集中的一部分,不同的源IP地址可以是指在预定时间长度内收到的DNS请求的源IP地址的并集,或至少并集中的一部分。
本实现方式中,一个目的IP地址所对应的源IP地址,可以是指在预定时间长度内,向该目的IP地址发送过DNS请求的一个或多个源IP地址;一个源IP地址所对应的目的IP地址,可以是指在预定时间长度内,该源IP地址所发送的DNS请求的一个或多个目的IP地址。
本实现方式中,访问参数可以包括以下任意一种或任意多种:
预定时间长度内的访问天数、预定时间长度内的平均每天访问次数、预定时间长度内的平均访问间隔、预定时间长度内的访问时间分布、预定时间长度内的域名解析成功率
其中,可以从DNS请求的应答报文中可以获知域名解析是否成功。
实际应用中,还可以增加其他访问参数。
其中,访问参数的计算过程可以参见后文的例子,也可以自行设计。
本实现方式中,分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间可以包括:
对于不同的目的IP地址,分别进行如下操作:对于一个目的IP地址和所对应的源IP地址之间不同种类的访问参数,分别根据该目的IP地址和所对应的源IP地址之间的该种访问参数,计算该种访问参数的平均值和方差,得到该目的IP地址的该种访问参数的合理区间的上限为平均值加N1倍方差,下限为平均值减N2倍方差。
比如假设有5种访问参数,不同的目的IP地址包括IPa、IPb、IPc,则可以对于IPa,分别计算5种访问参数各自的合理区间,得到IPa的5种访问参数的合理区间;对于IPb和IPc也这样操作,得到IPb的5种访问参数的合理区间,以及IPc的5种访问参数的合理区间。
其中,N1和N2可以相等,也可以不等。
其中,N1和N2可以但不限于是正数,可以但不限于是整数,也可以具有小数部分。
其中,N1和N2可以但不限于取值为3。
其它实现方式中,也可以用其它方式计算合理区间的上、下限,比如以平均值上下浮动一定比例,或平均值乘以预定数值来作为上、下限。
本实现方式中,当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址可以包括:
当一个源IP地址对于所对应的目的IP地址,有至少M种访问参数在合理区间内时,确定该源IP地址为合法源IP地址;其中,M为预设门限。
比如假设共有5种访问参数,M为3,源IP地址A对应目的IP地址B和C,如果A和B之间的访问参数,有3个或3个以上落在B的合理区间内,A和C之间的访问参数,有3个或3个以上落在C的合理区间内,则认为A是合法源IP地址。
其它实现方式中,也可以通过其它大数据分析的方法,来确定合法源IP地址;比如分别根据不同源IP地址的历史DNS请求的统计情况,建立该源IP地址的行为模型,当一个源IP地址在预定时间长度内发送DNS请求的统计数据符合该行为模型时,认为该源IP地址为合法源IP地址。其它确定合法源IP地址的做法也可以采用,这里不再一一列举。
一种实现方式中,所述防御方法还可以包括:
根据预定时间长度内收到的DNS请求的统计数据,确定以下一种或多种被攻击对象:被攻击IP地址、被攻击域名。
本实现方式中,被攻击域名可以包括二级域名,也可以包括某一级子域的域名。
本实现方式中,根据预定时间长度内收到的DNS请求的统计数据,确定被攻击IP地址可以包括:
对于不同的目的IP地址,分别统计在不同周期内该目的IP地址收到的DNS请求的请求总量并记录;
分别根据不同的目的IP地址已记录的不同周期的请求总量,生成该目的IP地址的请求总量门限值;
当一个目的IP地址在一个周期的请求总量超过所述请求总量门限值时,确认该目的IP地址为被攻击IP地址。
其中,可以根据不同周期的请求总量生成基准线(可以是以记录请求总量的时刻为横坐标,以请求总量为纵坐标的多个点连接成的线),请求总量门限值是一个大大偏离基准线的值;如果一个目的IP地址在某个周期的请求总量大大偏离该基准线,比如高于基准线中的各点10倍以上,则可以认为该目的IP地址为被攻击IP地址。一个目的IP地址确认为被攻击IP地址的那个周期开始,可以不将该目的IP地址的请求总量放入基准线,直到该目的IP地址的请求总量恢复正常。
其中,请求总量门限值也可以采用经验值、实验值或其它计算方式,比如可以是已记录的一个或多个周期的请求总量的平均值的倍数,再比如可以是对不同周期的请求总量平均值和方差的计算结果,例如平均值加上一定倍数的方差等;一个目的IP地址确认为被攻击IP地址的那个周期开始,可以不将该目的IP地址的请求总量纳入平均值的计算,直到该目的IP地址的请求总量恢复正常。
其中,如果一个预定域名的请求量主要集中在某一个或几个子域名上,则可以将这个或这些子域名也确认为被攻击域名。
本实现方式中,根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名可以包括:
对于不同的预定域名,分别进行如下操作:
统计在不同周期内收到的,请求解析的域名为该预定域名的DNS请求的请求量并记录;
根据该预定域名已记录的不同周期的请求量,生成该预定域名的请求量门限值;
当该预定域名在一个周期的请求量超过所述请求量门限值时,确认该预定域名为被攻击域名。
其中,可以根据不同周期的请求量生成一个预定域名的基准线(可以是以记录请求量的时刻为横坐标,以请求量为纵坐标的多个点连接成的线),请求量门限值是一个大大偏离基准线的值;如果某个周期一个预定域名的请求量大大偏离该基准线,比如高于基准线中的各点10倍以上,则可以认为该预定域名为被攻击域名。一个预定域名确认为被攻击域名的那个周期开始,可以不将该预定域名的请求量放入基准线,直到该预定域名的请求量恢复正常。
其中,请求量门限值也可以采用经验值、实验值或其它计算方式,比如可以是已记录的不同周期的请求量的平均值的倍数,再比如可以是对不同周期的请求量平均值和方差的计算结果,例如平均值加上一定倍数的方差等;当采用平均值计算门限值时,一个预定域名确认为被攻击域名的那个周期开始,可以不将该预定域名的请求量纳入平均值的计算,直到该预定域名的请求量恢复正常。
本实现方式中,符合预定条件的DNS请求可以包括以下一种或多种:
目的IP地址为被攻击IP地址的DNS请求;
请求解析的域名为被攻击域名的DNS请求。
相当于,当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器可以包括:
当发生DNS泛洪攻击时,在目的IP地址为被攻击IP地址,或请求解析的域名为被攻击域名的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
当应用在云解析系统中时,相当于是从云解析系统的入口牵引目的IP地址为被攻击IP地址,或请求解析的域名为被攻击域名的这部分流量,进行流量清洗,将源IP地址为所述合法源IP地址的流量回注到云解析系统中。
本实现方式中,所述防御方法还可以包括:
更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
这样可以缓解解析被攻击域名的DNS权威服务器上的流量,并隔离被攻击域名和其它域名。
其中,NS信息用于指示用来解析域名的DNS权威服务器;假设abc.com原先的NS信息是ns1.hichina.com,如果abc.com确认为被攻击域名,则可以将abc.com的NS信息更改为预定的DNS权威服务器:ns2.hichina.com。
其中,预定的DNS权威服务器可以有一个或多个,即:可以将所有被攻击域名的NS信息改到同一个DNS权威服务器上,或分布到不同的DNS权威服务器上。
其中,响应信息可以是指解析结果,比如是域名对应的IP地址或子域的DNS权威服务器的IP地址。
其中,可以通过调用顶级域名服务商提供的接口来更改域名的NS信息。
其中,将被攻击域名的NS信息修改为预定的DNS权威服务器后还可以包括:
如果一个域名不再被认定为被攻击域名,则将该域名的NS信息恢复成原先的DNS权威服务器,比如上例中,就是将abc.com迁移回ns1.hichina.com。
其中,所述防御方法还可以包括:
指示所述第二DNS权威服务器的高速缓存读取所述被攻击域名的响应信息并保存。
这样请求解析被攻击域名的DNS请求不会到达第二DNS权威服务器,而是由第二DNS权威服务器的高速缓存直接回复,从而可以避免性能瓶颈,降低DNS权威服务器的性能负荷。
其中,高速缓存可以是指cache。
其它实现方式中,也可以不设置高速缓存,或设置其它类型的缓存。
其它实现方式中,也可以不修改NS信息,直接通过各DNS权威服务器的高速缓存来读取并保存被攻击域名的响应信息,这样也可以加快被攻击域名的响应速度,缓解DNS权威服务器的压力。
一种实现方式中,所述防御方法还可以包括:
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,对于不是合法源IP地址的源IP地址进行认证;对于认证成功的源IP地址,按照预设的发送频率,将该源IP地址发送的DNS请求转发给相应的DNS权威服务器。
本实现方式中,相当于对不是合法源IP地址的DNS请求先进行源IP地址的认证,认证通过后限速发送,以该方式尽量降低DNS泛洪攻击对DNS权威服务器性能的影响。
本实现方式中,可以但不限于通过别名协议对源IP地址进行认证,即针对源IP地址发送的DNS请求中请求解析的域名,返回相应的二级域名,然后看该源IP地址是否继续发送请求解析的域名为该二级域名的DNS请求,如果是则至少可以判断出该源IP地址是真实IP地址,且该源IP地址所属的设备中安装有别名协议,有较大可能不是进行攻击的机器。本实现方式中,预设的发送频率比如可以是每秒允许该源IP地址发送S个DNS请求,如果超过S个,则多余的DNS请求先缓存或丢弃;如果没超过S个,则可以正常转发,这样可以达到限速的目的。
其它实现方式中,对于不是合法源IP地址的DNS请求也可以只进行限速或只进行认证,还可以直接丢弃或忽略,还可以采用其它方式进行处理。
下面用一个云解析系统的例子说明本实施例。
本例子中的云解析系统的架构如图6所示,包括大数据分析系统、流量清洗系统、域名NS调度系统、高速缓存硬件。在机房的互联网服务提供商(Internet ServiceProvider,ISP)入口处部署分光器,分光器复制的流量输入光分流器;光分流器将流量接入预处理服务器,预处理服务器处理后接入大数据分析系统。
其中,分光器用于在数据通过光纤传输后将数据复制一份供大数据分析系统使用。粗浅的说,分光器的概念类似于“三通”的意思,即原来的流量正常通行(如图6中原来的流量正常送到核心路由器,并分配到各机房的路由器),同时分一股出来供大数据分析系统使用。
光分流器是一种通过光源变化的原理将一股载有光信号的光纤分出多个载有光信号的光纤设备,类似于网络集线器(HUB)的工作原理。
本例中的云解析系统可以包含多个域的DNS权威服务器,所针对的DNS请求主要来自DNS递归服务器(或称为本地域名服务器);该DNS请求可以是封装有IP头和用户数据包协议(User Datagram Protocol,UDP)头,数据载荷为DNS报文的报文,本例中将这样的DNS请求称为DNS协议报文。
大数据分析系统用于确定合法源IP地址(本例中为合法递归服务器IP地址)的数据和被攻击对象(本例中包括被攻击IP地址和被攻击域名),作为大数据分析系统的输出数据,是流量清洗系统和域名NS调度系统的关键数据输入。
流量清洗系统主要用于防御通过僵尸网络发起的DNS DDoS攻击,根据大数据分析系统所确定的合法递归服务器IP地址的数据,放行合法递归服务器IP地址发送的DNS协议报文,对其他IP地址发送的DNS协议报文进行验证和/或限制访问(即发送DNS协议报文)的频率。
域名NS调度系统用于根据大数据分析系统的输出数据对域名的NS信息进行调度,隔离被攻击域名和正常域名,避免系统性能瓶颈导致更多域名响应受影响。其中,NS信息提供域名服务器的记录,用来指定各域名分别由哪个DNS权威服务器来进行解析。
高速缓存硬件:根据大数据分析系统的输出数据,将被攻击域名的响应信息写入高速缓存硬件,提升响应能力,避免系统性能瓶颈。因为系统只对被攻击域名通过高速缓存硬件进行缓存,其他域名仍然由相应的权威服务器响应,所以域名的变更不受影响。
下面分别介绍系统架构中的各部分。
(1)大数据分析系统
预处理服务器分析光分流器送上来的DNS协议报文,获取DNS协议报文中的信息,并获取应答报文中的信息。预处理完成后的数据格式如下:
本例中,源IP是指DNS协议报文的源IP地址,本例中一般是DNS递归服务器的IP地址;目的IP是指DNS协议报文的目的IP地址,一般是一或多个域的DNS权威服务器的IP地址。
预处理后的DNS协议报文数据发送给大数据分析系统。
1.1、大数据分析系统确定合法递归服务器IP的数据。
本例中,大数据分析系统每天运行一次,假设预定时间长度为7天,即:每次根据7天内的DNS协议报文数据统计出每一对源IP(src_ip)和目的IP(dst_ip)的以下种类的访问参数:访问天数(Day),平均每天访问次数(Countperday),平均访问间隔(Interval),访问时间分布(Accesstime),域名解析成功率(Resrate)。
其中,当源IP发送一个DNS协议报文给一个目的IP,看成该源IP访问该目的IP一次。比如7天内,有6天收到源IP a发送给目的IP A的DNS协议报文,有3天收到源IP b发送给目的IP A的DNS协议报文,则a和A这一对源IP和目的IP的访问天数为6天,b和A这一对源IP和目的IP的访问天数为3天。
访问参数的统计结果如下:
本例中,7天内访问天数可以是指在7天内,共有几天src_ip发送DNS协议报文给dst_ip;比如7天内,在第1、3、5、6、7天都存在src_ip发送给dst_ip的DNS协议报文,则7天内访问天数是5天。
7天内平均每天访问次数可以是指在7天内,src_ip发送DNS协议报文给dst_ip的总数除以天数(即:7);比如7天内,src_ip总共发送了105个DNS协议报文给dst_ip,则7天内平均每天访问次数是105/7=15。
7天内平均访问间隔可以是指在7天内,src_ip发送DNS协议报文给dst_ip的时间间隔的平均值;比如7天内src_ip发送了3次DNS协议报文给dst_ip,第一次和第二次发送之间的时间间隔为interval1,第二次和第三次发送之间的时间间隔为interval2,则7天内平均访问间隔可以是(interval1+interval2)/2。
7天内访问时间分布可以是指在7天内,src_ip发送DNS协议报文给dst_ip的次数在各预定时间段的占比;比如将一天划分为4个时间段:0点~6点、6点~12点、12点~18点、18点~24点;在7天内src_ip发送给dst_ip的DNS协议报文中,有15%是0点~6点发送,30%是6点~12点发送,35%是12点~18点发送,20%是18点~24点发送。
7天内域名解析成功率可以是指在7天内,src_ip发送给dst_ip的DNS协议报文中域名解析成功的报文个数,除以src_ip发送给dst_ip的DNS协议报文的总数;比如7天内,src_ip总共发送了100个DNS协议报文给dst_ip,其中99个域名解析成功,则7天内域名解析成功率是99%。
大数据分析系统针对上述统计结果计算每个目的IP的各种访问参数的方差。举例来说,对目的IP 1.1.1.1,计算7天内访问天数的方差Dayσ,N表示7天内访问这个目的IP的源IP总数,
表示访问这个目的IP的各源IP在7天内的访问天数的平均数,Day
i(i=1,2,…,N)分别是每个源IP在7天内对这个目的IP的访问天数。
比如7天内共有3个源IP访问这个目的IP,三个源IP在7天内对该目的IP的访问天数分别为3天、5天、7天,则
分析每个源IP在7天内对这个目的IP的访问天数是否落入三倍方差的范围,即Day
i是否在
里面。
类似的,根据上述统计结果,大数据分析系统可以得出每个目的IP的五种访问参数(Day、Countperday、Interval、Accesstime、Resrate)的合理范围区间。
平均每天访问次数的合理区间:
其中,
分别是访问该目的IP的各源IP的7天内平均每天访问次数、7天内平均访问间隔、7天内访问时间分布(包括各预定时间段的占比)、7天内域名解析成功率的平均值(由7天内访问该目的IP的各源IP的相应访问参数之和,除以7天内访问该目的IP的源IP的个数得到);
其中,Countperdayσ、Intervalσ、Accesstimeσ、Resrateσ分别是7天内平均每天访问次数、7天内平均访问间隔、7天内访问时间分布、7天内域名解析成功率的方差。其中,Accesstimeσ可以包括各预定时间段的占比的方差,比如分为四个预定时间段:0点~6点、6点~12点、12点~18点、18点~24点,则四个预定时间段的占比各有一个方差,访问时间分布的合理区间将会有四个;可以当一个源IP的访问参数中,四个预定时间段的占比都在合理区间内时,认为该源IP的“访问时间分布”这种访问参数在合理区间内。
如果某源IP对于发送过DNS协议报文的每个目的IP,都有至少三种访问参数都落在该目的IP的合理区间,那么就标识此源IP是一个合法的递归服务器IP地址。
最后生成的合法递归服务器IP地址的数据格式如下:
legal_local_ip STRING COMMENT'合法的递归服务器IP地址'
count_time DATETIME COMMENT'计算时间,时间单位是ms(unix时间戳x1000)'
1.2、大数据分析系统实时分析被攻击对象的数据
大数据分析系统每1秒一次根据DNS协议报文的数据统计出这一秒内,每个目的IP的请求总量和预定的二级域名的请求量。其中,预定的二级域名可以是要重点监控的二级域名,或者是请求量比较多的二级域名,比如请求量排名前100位的二级域名(TOP 100)。预定的二级域名也可以包括本云解析系统提供解析服务的各二级域名。
访问总量的数据格式如下:
statis_time DATETIME COMMENT'时间,时间单位是ms(unix时间戳x1000)'
dst_ip STRING COMMENT'目的IP'
total_count STRING COMMENT'请求总量统计'
比如一秒内,有100个DNS协议报文中的目的IP是IP地址X,则对于IP地址X,这一秒的请求总量为100。
预定的二级域名请求量的数据格式如下:
比如一秒内,30个DNS协议报文中的请求域名为aaa.abc.com,50个DNS协议报文中的请求域名为bbb.abc.com,则这一秒二级域名abc.com的请求量为80。
根据以上两个数据,大数据分析系统生成每个目的IP的请求总量和预定的二级域名请求量的DNS请求量的基准线,可以将以统计请求总量/请求量的时刻为横坐标,以请求总量/请求量为纵坐标的多个点连接成线,作为基准线;当请求总量/请求量大大偏离请求总量的基准线时,可以认为发生了DNS攻击。
当某个目的IP的请求总量大大偏离相应请求总量的基准线时,可以认为该目的IP为被攻击IP地址。
当某个二级域名的请求量大大偏离相应请求量的基准线时,可以认为该二级域名是被攻击域名;另外,当确认被攻击域名后,还可以通过对DNS攻击期间(请求量大大偏离曲线期间)DNS协议报文的数据进行统计,来得知请求量主要集中在被攻击域名的哪一个或哪几个子域名上,将该子域名也确认为被攻击域名;比如在确定abc.com是被攻击域名后,还可以进一步确认123.abc.com也是被攻击域名。
(2)流量清洗系统
图7是清洗过程的示意图,对牵引流量进行特征匹配,筛选出DNS协议报文,忽略其它格式的报文(可以正常放行其它格式的报文);其中,牵引流量可以是DNS攻击期间以下一种或多种DNS协议报文:
目的地址为被攻击IP地址的DNS协议报文;
请求域名为被攻击域名的DNS协议报文。
对筛选出进行协议解析,得到DNS协议报文的数据;
判断DNS协议报文的源IP是否为合法递归服务器IP地址;如果是合法递归服务器IP地址,则让该DNS协议报文通行,通过核心路由器一路分发到相应的DNS权威服务器;即:将正常流量回注到系统中。如果不是合法递归服务器IP地址,则可以进行客户端认证和报文限速。这里是将递归服务器视为客户端。
在清洗过程中,根据大数据分析系统确定的合法递归服务器IP地址,放行正常的递归请求),保护正常用户的访问体验。
流量清洗系统可以对除合法递归服务器IP地址以外的其他源IP的DNS请求进行客户端认证和报文限速,可以有效防御通过僵尸网络发起的DNS DDoS攻击。
图8是客户端认证过程示意图,客户端的本地DNS向别名(cname)策略服务请求abc.com,得到cname策略服务返回的xxx.abc.com;如果客户端接下来向cname策略服务请求xxx.abc.com,则cname策略服务返回的abc.com;验证通过,后续客户端的DNS请求可以直接送给后端的DNS权威服务器。
图8的过程中,通过别名(cname)反弹来验证源IP所属设备是否具有cname协议,是否为真实IP地址。
(3)域名NS调度系统
1.2已经介绍了大数据分析系统如何实时分析被攻击域名,被攻击域名的数据输入给域名NS调度系统,域名NS调度系统可以相应更改被攻击域名的NS。其中,NS是域名服务器记录,用来指定该域名由哪个DNS权威服务器来进行解析,比如可以记录该DNS权威服务器的IP地址。
以万网为例,可以将NS分级为ns1.hichina.com和ns2.hichina.com,ns1.hichina.com提供正常域名的解析服务,ns2.hichina.com则提供被攻击域名的解析服务。
域名NS调度的过程包括如下步骤301~304:
301、大数据分析系统向域名NS调度系统输入被攻击域名,比如说123.abc.com,对应的二级域名是.abc.com。
302、域名NS调度系统调用顶级域名服务商提供的接口更改域名注册的NS信息。abc.com的顶级域名就是.com,假如abc.com原先的NS信息是ns1.hichina.com,那么现在域名NS调度系统将abc.com的NS信息更改为ns2.hichina.com。ns2.hichina.com对应的服务器从ns1.hichina.com对应的服务器中,同步abc.com的响应信息(即:解析结果,是域名对应的IP地址或子域的DNS权威服务器的IP地址)。
303、NS更改全部生效时间预期为1小时,在这期间,DNS请求流量会逐步从ns1.hichina.com迁移到ns2.hichina.com上,缓解ns1.hichina.com的流量,隔离被攻击域名和其他域名。
304、在攻击停止后,系统观察30天,如果没有进一步的DNS DDoS攻击(即不再被认定为被攻击域名),系统再将abc.com迁移回ns1.hichina.com。
(4)高速缓存硬件
1.2已经介绍了大数据分析系统如何实时分析被攻击域名,被攻击域名的数据输入给高速缓存硬件,由高速缓存硬件加速被攻击域名的响应。过程包括如下步骤401~403:
401、大数据分析系统向高速缓存硬件输入被攻击域名,比如说123.abc.com,对应的二级域名是.abc.com。
402、高速缓存硬件从DNS权威服务器(可以是ns1.hichina.com或ns2.hichina.com对应的服务器)读取123.abc.com和.abc.com的响应信息,并写入硬件。
403、对于123.abc.com和.abc.com的DNS请求不会到达DNS权威服务器,而是由高速缓存硬件直接回复,从而可以避免性能瓶颈,降低DNS权威服务器的性能负荷。
图6中,ns1.hichina.com对应的服务器为NS1DNS权威服务器;ns2.hichina.com对应的服务器为NS2DNS权威服务器。
本例子利用大数据分析,域名调度分级,流量清洗等方法设计了一整套防御体系,可以更为精确地进行防御,防止影响用户的正常使用,而且有效的避免了和攻击者比拼资源,可以帮助云解析系统成功防御DNS泛洪攻击,实现更安全的云解析服务。
实施例二、一种DNS泛洪攻击的防御方法,如图9所示,包括步骤S210~S230:
S210、根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名;
S220、更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
S230、指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
本实施例可以缓解解析被攻击域名的DNS权威服务器上的流量,并隔离被攻击域名和其它域名。
本实施例中,NS信息用于指示用来解析域名的DNS权威服务器;假设abc.com原先的NS信息是ns1.hichina.com,如果abc.com确认为被攻击域名,则可以将abc.com的NS信息更改为预定的DNS权威服务器:ns2.hichina.com。
本实施例中,预定的DNS权威服务器可以有一个或多个,即:可以将所有被攻击域名的NS信息改到同一个DNS权威服务器上,或分布到不同的DNS权威服务器上。
本实施例中,响应信息可以是指解析结果,比如是域名对应的IP地址或子域的DNS权威服务器的IP地址。
本实施例中,可以通过调用顶级域名服务商提供的接口来更改域名的NS信息。
一种实现方式中,将被攻击域名的NS信息修改为预定的DNS权威服务器后还可以包括:
如果一个域名不再被认定为被攻击域名,则将该域名的NS信息恢复成原先的DNS权威服务器,比如上例中,就是将abc.com迁移回ns1.hichina.com。
一种实现方式中,所述防御方法还可以包括:
指示所述第二DNS权威服务器的高速缓存读取所述被攻击域名的响应信息并保存。
这样请求解析被攻击域名的DNS请求不会到达第二DNS权威服务器,而是由第二DNS权威服务器的高速缓存直接回复,从而可以避免性能瓶颈,降低DNS权威服务器的性能负荷。
其中,高速缓存可以是指cache。
其它实现方式中,也可以不设置高速缓存,或设置其它类型的缓存。
其它实现方式中,也可以不修改NS信息,直接通过各DNS权威服务器的高速缓存来读取并保存被攻击域名的响应信息,这样也可以加快被攻击域名的响应速度,缓解DNS权威服务器的压力。
一种实现方式中,所述根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名可以包括:
对于不同的预定域名,分别进行如下操作:
统计在不同周期内收到的,请求解析的域名为该预定域名的DNS请求的请求量并记录;
根据该预定域名已记录的不同周期的请求量,生成该预定域名的请求量门限值;
当该预定域名在一个周期的请求量超过所述请求量门限值时,确认该预定域名为被攻击域名。
其中,生成请求量门限值的细节可参见实施例一。
一种实现方式中,所述的防御方法还可以包括:
根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
本实现方式的具体实现细节可参见实施例一。
实施例三、一种DNS泛洪攻击的防御装置,包括:第一处理器和第一存储器;
所述第一存储器用于保存用于进行DNS泛洪攻击防御的程序;所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,进行如下操作:
根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
一种实现方式中,所述根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址可以包括:
根据预定时间长度内收到的DNS请求,分别统计不同的源IP地址和目的IP地址之间的访问参数;
分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间;
分别对不同的源IP地址进行判断,当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址。
本实现方式中,所述访问参数可以包括以下任意一种或任意多种:
预定时间长度内的访问天数、预定时间长度内的平均每天访问次数、预定时间长度内的平均访问间隔、预定时间长度内的访问时间分布、预定时间长度内的域名解析成功率。
本实现方式中,所述分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间可以包括:
对于不同的目的IP地址,分别进行如下操作:对于一个目的IP地址和所对应的源IP地址之间不同种类的访问参数,分别根据该目的IP地址和所对应的源IP地址之间的该种访问参数,计算该种访问参数的平均值和方差,得到该目的IP地址的该种访问参数的合理区间的上限为平均值加N1倍方差,下限为平均值减N2倍方差;N1和N2为正数。
本实现方式中,所述当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址可以包括:
当一个源IP地址对于所对应的目的IP地址,有至少M种访问参数在合理区间内时,确定该源IP地址为合法源IP地址;其中,M为预设门限。
一种实现方式中,所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,还可以进行如下操作:
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,对于不是合法源IP地址的源IP地址进行认证;对于认证成功的源IP地址,按照预设的发送频率,将该源IP地址发送的DNS请求转发给相应的DNS权威服务器。
一种实现方式中,所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,还可以进行如下操作:
根据预定时间长度内收到的DNS请求的统计数据,确定以下一种或多种被攻击对象:被攻击IP地址、被攻击域名;
本实现方式中所述符合预定条件的DNS请求可以包括以下一种或多种:
目的IP地址为被攻击IP地址的DNS请求;
请求解析的域名为被攻击域名的DNS请求。
本实现方式中,所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,还可以进行如下操作:
更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
本实现方式中,用于进行DNS泛洪攻击防御的程序可以分成三部分或三个子程序,一部分用来根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址,以及被攻击对象;一部分用来对发生DNS泛洪攻击时所收到的符合预定条件的DNS请求进行处理;一部分用来更改NS信息并指示同步响应信息。
本实施例中,所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,所进行的操作可以对应于实施例一的S110~S120;其它实现细节可参见实施例一。
实施例四、一种DNS泛洪攻击的防御装置,包括:第二处理器和第二存储器;
所述第二存储器用于保存用于进行DNS泛洪攻击防御的程序;所述用于进行DNS泛洪攻击防御的程序在被所述第二处理器读取执行时,进行如下操作:
根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名;
更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
一种实现方式中,所述根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名可以包括:
对于不同的预定域名,分别进行如下操作:
统计在不同周期内收到的,请求解析的域名为该预定域名的DNS请求的请求量并记录;
根据该预定域名已记录的不同周期的请求量,生成该预定域名的请求量门限值;
当该预定域名在一个周期的请求量超过所述请求量门限值时,确认该预定域名为被攻击域名。
一种实现方式中,所述用于进行DNS泛洪攻击防御的程序在被所述第二处理器读取执行时,还可以进行如下操作:
指示所述第二DNS权威服务器的高速缓存读取所述被攻击域名的响应信息并保存。
一种实现方式中,所述用于进行DNS泛洪攻击防御的程序在被所述第二处理器读取执行时,还可以进行如下操作:
根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
本实现方式中,用于进行DNS泛洪攻击防御的程序可以分成三部分或三个子程序,一部分用来根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址,以及被攻击对象;一部分用来对发生DNS泛洪攻击时所收到的符合预定条件的DNS请求进行处理;一部分用来更改NS信息并指示同步响应信息。
本实施例中,所述用于进行DNS泛洪攻击防御的程序在被所述第一处理器读取执行时,所进行的操作可以对应于实施例二的S210~S230;其它实现细节可参见实施例二。
实施例五、一种DNS泛洪攻击的防御装置,如图10所示,包括:
分析模块51,用于根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
清洗模块52,用于当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
一种实现方式中,所述分析模块根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址可以包括:
所述分析模块根据预定时间长度内收到的DNS请求,分别统计不同的源IP地址和目的IP地址之间的访问参数;分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间;分别对不同的源IP地址进行判断,当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址。
本实现方式中,所述访问参数可以包括以下任意一种或任意多种:
预定时间长度内的访问天数、预定时间长度内的平均每天访问次数、预定时间长度内的平均访问间隔、预定时间长度内的访问时间分布、预定时间长度内的域名解析成功率。
本实现方式中,所述分别根据不同的目的IP地址和所对应的源IP地址之间的访问参数,确定不同的目的IP地址的访问参数的合理区间包括:
对于不同的目的IP地址,分别进行如下操作:对于一个目的IP地址和所对应的源IP地址之间不同种类的访问参数,分别根据该目的IP地址和所对应的源IP地址之间的该种访问参数,计算该种访问参数的平均值和方差,得到该目的IP地址的该种访问参数的合理区间的上限为平均值加N1倍方差,下限为平均值减N2倍方差;N1和N2为正数。
本实现方式中,所述当一个源IP地址对于所对应的目的IP地址的访问参数至少部分在合理区间内时,确定该源IP地址为合法源IP地址包括:
当一个源IP地址对于所对应的目的IP地址,有至少M种访问参数在合理区间内时,确定该源IP地址为合法源IP地址;其中,M为预设门限。
一种实现方式中,所述清洗模块还可以用于当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,对于不是合法源IP地址的源IP地址进行认证;对于认证成功的源IP地址,按照预设的发送频率,将该源IP地址发送的DNS请求转发给相应的DNS权威服务器。
一种实现方式中,所述分析模块还可以用于根据预定时间长度内收到的DNS请求的统计数据,确定以下一种或多种被攻击对象:被攻击IP地址、被攻击域名。
本实现方式中,所述符合预定条件的DNS请求可以包括以下一种或多种:
目的IP地址为被攻击IP地址的DNS请求;
请求解析的域名为被攻击域名的DNS请求。
本实现方式中,上述防御装置还可以包括:
调度模块,用于更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
本实施例中,分析模块、清洗模块所进行的操作可以对应于实施例一的S110~S120;其它实现细节可参见实施例一。
实施例六、一种DNS泛洪攻击的防御装置,如图11所示,包括:
确定模块61,用于根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名;
分级模块62,用于更改被攻击域名的名称系统NS信息,将被攻击域名的NS信息从第一DNS权威服务器修改为预定的第二DNS权威服务器;
控制模块63,用于指示所述第二DNS权威服务器从所述第一DNS权威服务器中,同步所述被攻击域名的响应信息。
一种实现方式中,所述确定模块根据预定时间长度内收到的DNS请求的统计数据,确定被攻击域名包括:
所述确定模块对于不同的预定域名,分别进行如下操作:统计在不同周期内收到的,请求解析的域名为该预定域名的DNS请求的请求量并记录;根据该预定域名已记录的不同周期的请求量,生成该预定域名的请求量门限值;当该预定域名在一个周期的请求量超过所述请求量门限值时,确认该预定域名为被攻击域名。
一种实现方式中,上述防御装置还可以包括:
所述第二DNS权威服务器的高速缓存;
所述控制模块还用于指示所述第二DNS权威服务器的高速缓存读取所述被攻击域名的响应信息并保存。
一种实现方式中,上述防御装置还可以包括:流量清洗模块;
所述确定模块还可以用于根据预定时间长度内收到的DNS请求的统计数据,确定合法源IP地址;
所述流量清洗模块可以用于当发生DNS泛洪攻击时,在所收到的符合预定条件的DNS请求中,将源IP地址为所述合法源IP地址的DNS请求转发给相应的DNS权威服务器。
本实施例中,确定模块、分级模块、控制模块所进行的操作可以对应于实施例二的S210~S230;其它实现细节可参见实施例二。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。