一种用于DNS服务的DDoS攻击防御方法及系统与流程

文档序号:15683553发布日期:2018-10-16 20:49阅读:156来源:国知局

本发明涉及无线网络通信领域,尤其涉及一种用于dns服务的ddos攻击防御方法及系统。



背景技术:

dns(domainnamesystem,域名系统)是互联网上作为域名和ip地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网。域名解析是把域名指向ip地址,让人们通过注册的域名可以方便地访问到网站的一种服务。域名解析工作由dns服务器完成,dns服务器是进行域名和与之相对应的ip地址转换的服务器。

dos(denialofservice,拒绝服务)攻击指造成dos的攻击行为,其目的是使计算机或网络无法提供正常的服务。最常见的dos攻击有计算机网络带宽攻击和连通性攻击。dos攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。这些服务资源包括网络带宽,文件系统空间容量,开放的进程或者允许的连接。这种攻击会导致资源的匮乏,无论计算机的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果。

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

相较dos攻击而言,ddos攻击成倍地提高了拒绝服务攻击的威力,且由于每个傀儡机发起的dns服务请求数量少量且合理,ddos攻击方式的无规律性,导致ddos攻击源很难被确定,也就很难防御ddos攻击。

因此,需要一种能有效地防御ddos攻击的方法和系统。



技术实现要素:

为了解决现有技术中防御ddos攻击的问题,提出了一种用于dns服务的ddos攻击防御方法及系统。

根据本发明的一个方面,提供了一种用于dns服务的ddos攻击防御方法,所述方法包括:

步骤1,接收包括访问目标域名信息的dns请求报文;

步骤2,从所述dns请求报文中提取所述访问目标域名的指定级别的父域;

步骤3,判断第一预定时长内指向所述指定级别的父域的dns请求个数是否大于预设的第一阈值,如果是,则丢弃此dns请求并将所述指定级别的父域添加到黑名单中,如果否,则向dns服务器转发指向所述指定级别的父域的dns请求。

其中,所述方法还包括:

在步骤1和步骤2之间执行下述步骤:

判断所述访问目标的域名是否在域名白名单中,如果是,则向dns服务器转发包括所述访问目标的域名的dns请求,如果否,则执行步骤2。

其中,所述方法还包括:

在步骤2和步骤3之间还执行下述步骤:

判断所述访问目标域名信息中的指定级别的父域是否在所述黑名单中,如果是,则丢弃此dns请求,如果否,则执行步骤3。

其中,所述步骤3包括:判断第一预定时长内指向所述指定级别的父域的dns请求个数大于预设的第一阈值时,将表示所述指定级别的父域的特征字符串添加到所述黑名单中。

其中,所述方法还包括:

在步骤2和步骤3之间还执行下述步骤:

判断第二预定时长内接收的所述访问目标的域名不在白名单中的dns请求个数是否大于预设的第二阈值,如果是,则丢弃此dns请求。

其中,判断所述访问目标域名信息中的指定级别的父域是否在所述黑名单中包括下述两种方式:

方式一,在解析所述dns请求报文后,判断所述访问目标域名信息中是否包含存在于所述黑名单中的特征字符串,如果包含则判断所述访问目标域名信息中的指定级别的父域在所述黑名单中;

方式二,通过将所述dns请求报文中的二进制字符串与所述黑名单字符串的二进制字符串进行对比,来判断所述dns请求报文中的二进制字符串是否包含所述黑名单字符串的二进制字符串,如果包含则判断所述访问目标域名信息中的指定级别的父域在所述黑名单中。

根据本发明的另一个方面,提供了一种用于dns服务的ddos攻击防御系统,所述系统包括:

接收模块,用于接收包括访问目标域名信息的dns请求报文;

提取模块,用于从所述dns请求报文中提取所述访问目标域名的指定级别的父域;

防御模块,用于判断第一预定时长内指向所述指定级别的父域的dns请求个数是否大于预设的第一阈值,如果是,则丢弃此dns请求并将所述指定级别的父域添加到黑名单中,如果否,则向dns服务器转发指向所述指定级别的父域的dns请求。

其中,所述防御模块还用于:

在所述接收模块接收包括访问目标域名信息的dns请求报文后,以及在所述提取模块从所述dns请求报文中提取所述访问目标域名的指定级别的父域前,判断所述访问目标的域名是否在域名白名单中,如果是,则向dns服务器转发包括所述访问目标的域名的dns请求。

其中,所述防御模块还用于:

在所述提取模块从所述dns请求报文中提取所述访问目标域名的指定级别的父域后,在判断第一预定时长内指向所述指定级别的父域的dns请求个数是否大于预设的第一阈值前,判断所述访问目标域名信息中的指定级别的父域是否在所述黑名单中,如果是,则丢弃此dns请求。

其中,所述防御模块还用于判断第一预定时长内指向所述指定级别的父域的dns请求个数大于预设的第一阈值时,将表示所述指定级别的父域的特征字符串添加到所述黑名单中。。

其中,所述防御模块还用于:

在所述提取模块从所述dns请求报文中提取所述访问目标域名的指定级别的父域后,在判断第一预定时长内指向所述指定级别的父域的dns请求个数是否大于预设的第一阈值前,判断第二预定时长内接收的所述访问目标的域名不在白名单中的dns请求个数是否大于预设的第二阈值,如果是,则丢弃此dns请求。

其中,所述防御模块还用于通过下述两种方式判断所述访问目标域名信息中的指定级别的父域是否在所述黑名单中:

方式一,在解析所述dns请求报文后,判断所述访问目标域名信息中是否包含存在于所述黑名单中的特征字符串,如果包含则判断所述访问目标域名信息中的指定级别的父域在所述黑名单中;

方式二,通过将所述dns请求报文中的二进制字符串与所述黑名单字符串的二进制字符串进行对比,来判断所述dns请求报文中的二进制字符串是否包含所述黑名单字符串的二进制字符串,如果包含则判断所述访问目标域名信息中的指定级别的父域在所述黑名单中。

本发明中的ddos攻击防御方法及系统,通过统计指向访问目标的dns请求的数量来判断是否拦截指向该访问目的的dns请求。这样,即使每个傀儡机发起数量少且合理的dns请求,也可以有效地对ddos攻击进行防御。此外,通过白名单和黑名单对dns请求进行管理,可以快速地判断是否转发dns请求,增强处理时效。

本发明中针对攻击行为技术的目标是指定级别的父域,统计粒度更精确,更有利于dns系统的攻击判定以及进行更有效的攻击防御。

具体地,本专利中采用提取指定父域特征字符串的方式,形成黑名单,并以此作为dns请求的转发或者丢弃的依据,处理过程最大限度避免了对非攻击目标域名的影响,相对当前技术按照百分比丢弃dns请求的服务有损方案,处理更加精确,对服务零影响。另外,本专利提供了两种丢弃包含指定字符串dns请求的方法,其中二进制对比的方案高效实用,处理效率是一般dns软件处理的500倍,软件防火墙的20倍。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1示例性地示出各级域之间关系的示意图;

图2是根据本发明的用于dns服务的ddos攻击防御方法流程图;

图3是根据本发明的用于dns服务的ddos攻击防御系统模块图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

为了便于说明域名的级别,图1示出了表示各域名级别的示意图。其中,a表示未命名的树根,b表示顶级域,c表示第二级域,d表示普通域,e表示国家域。ae表示阿拉伯联合酋长国,zw表示津巴布韦。sun的域名为sun.tuc.noao.edu,cnri的域名为cnri.reston.va.us,33的域名为33.13.252.140.in-addr.arpa。

本发明提供了一种用于dns服务的ddos攻击防御方法,如图2所述,该方法包括:

步骤201,接收包括访问目标域名信息的dns请求报文;

步骤202,从dns请求报文中提取访问目标域名的指定级别的父域;

步骤203,判断第一预定时长内指向指定级别的父域的dns请求个数是否大于预设的第一阈值,如果是,则丢弃此dns请求并将该指定级别的父域添加到黑名单中,如果否,则向dns服务器转发指向该指定级别的父域的dns请求。

其中,第一预定时长的最小值为20ms,一般默认为1s。另外,预设的第一阈值可以通过对常规服务正常访问量的统计得出,此第一阈值为所有域名一周内每隔第一预定时长内请求个数的平均值的5倍。

在步骤201和202之间还可以包括以下步骤:判断访问目标的域名是否在域名白名单中,如果是,则向dns服务器转发包括该访问目标的域名的dns请求,如果否,则执行步骤202。即,在判断指向指定级别的父域的dns请求个数是否大于预设的第一阈值前,先判断该dns请求报文中包括的访问目标的域名是否在域名白名单中,如果在域名白名单中,则转发到dns服务器,以保证域名白名单中的域名都能被正常解析。其中,域名白名单为维护人员定义的静态配置文件,如果有内容变更需要人工操作。

在步骤202和203之间还可以包括以下步骤:判断访问目标域名信息中的指定级别的父域是否在黑名单中,如果是,则丢弃此dns请求,如果否,则执行步骤203。即,当判断指定级别的父域在黑名单中时,则直接丢弃该次dns请求,不将其转发到dns服务器。其中,黑名单为静态配置文件,黑名单常规情况下为空,攻击过程中被加入黑名单的字符串需要人工判断后手动删除。

上述判断访问目标域名信息中的指定级别的父域是否在黑名单中包括下述两种方式:

方式一,在解析dns请求报文后,判断访问目标域名信息中是否包含存在于黑名单中的特征字符串,如果包含则判断访问目标域名信息中的指定级别的父域在黑名单中;

方式二,通过将dns请求报文中的二进制字符串与黑名单字符串的二进制字符串进行对比,来判断dns请求报文中的二进制字符串是否包含黑名单字符串的二进制字符串,如果包含则判断访问目标域名信息中的指定级别的父域在黑名单中。

步骤203还包括:判断第一预定时长内指向所述指定级别的父域的dns请求个数大于预设的第一阈值时,将表示所述指定级别的父域的特征字符串添加到所述黑名单中。

另外,在步骤202和203之间还可以包括以下步骤:判断第二预定时长内接收的访问目标的域名不在白名单中的dns请求个数是否大于预设的第二阈值,如果是,则丢弃此dns请求。即,判断某一预定时长内访问目标的域名不在域名白名单内的dns请求总量是否超过预设的阈值,如果超过该预定时长内的dns服务器的处理能力,则丢弃该预定时长内接收到的dns请求。其中,第二预定时长的最小值为20ms,一般默认为1s。预设的第二阈值可以通过对常规服务正常访问量的统计得出,此第二阈值为所有域名一周内每隔第二预定时长内请求个数的平均值的5倍。此处的预设的第二阈值可以根据dns服务器的具体处理能力来设定,例如dns服务器的处理能力为1秒最多处理2000个dns请求,则此处第二预定时长为1秒,预设的第二阈值为2000。

以下对上面描述中的父域进行说明。所有的域名都有父域,本发明的请求的域名可以为任何的级别,一般五-七级域名最具有代表性,而提取的三级父域是目前针对所有ddos攻击力最能通过统计发现攻击目标共性的级别。例如,当指定级别父域为三级域时,最终更容易被攻击的是*.客户关键字.bbbcdn.com。具体说明如下:

域名aaacdn.qq.bbbcdn.com,其3级父域是qq.bbbcdn.com;

而一般攻击的dns报文是*.qq.bbbcdn.com,例如:

1111.qq.bbbcdn.com;

1112.qq.bbbcdn.com;

1113.qq.bbbcdn.com。

上述中的指定级别的父域是程序启动时配置的,该指定级别设定为最可能被攻击的泛域名,取最低级别。

需要说明的是,上述方法中的指定级别的父域为访问目标所属父域的域名,例如,访问目标的域名为1.www.a.com,则该访问目标所属父域的三级域名为www.a.com。当然,除三级域名外也可以选择其他级别域名。

具体地,例如dns请求中访问目标的域名是1.www.a.com,该域名以字符串的形式表示。在提取指定级别的父域(例如三级域名)时,提取表示www.a.com的字符串。如果在第一预定时长内包括该www.a.com字符串的dns请求个数超过预设的第一阈值,将这些dns请求丢弃而不转发到dns服务器,并且将字符串www.a.com写入黑名单。当系统处于ddos攻击下时,只要dns请求的访问目标信息中包括字符串www.a.com,则将该dns请求丢弃不进行转发。

另外,还需要说明的是,在本发明中,选择特征字符串时,通常选择表示访问目标所属父域的域名的特征字符串。这是考虑到ddos攻击的特点,即傀儡机通常会将攻击目标离散化,这样选择访问目标所属父域的域名进行统计,能够准确判断攻击对象,从而防御攻击。其中,提取父域的域名的特征字符串采用下述方法:提取从指定父域左边第一字符开始,到第一个“.”结束的字符串。

本发明还提供了一种用于dns服务的ddos攻击防御系统,如图3所示,该系统包括:

接收模块301,用于接收包括访问目标域名信息的dns请求报文;

提取模块302,用于从dns请求报文中提取访问目标域名的指定级别的父域;

防御模块303,用于判断第一预定时长内指向该指定级别的父域的dns请求个数是否大于预设的第一阈值,如果是,则丢弃此dns请求并将指定级别的父域添加到黑名单中,如果否,则向dns服务器转发指向指定级别的父域的dns请求。

其中,该防御模块303还用于:在所述接收模块301接收包括访问目标域名信息的dns请求报文后,以及在所述提取模块302从所述dns请求报文中提取所述访问目标域名的指定级别的父域前,判断所述访问目标的域名是否在域名白名单中,如果是,则向dns服务器转发包括所述访问目标的域名的dns请求。

其中,该防御模块303还用于:在所述提取模块302从所述dns请求报文中提取所述访问目标域名的指定级别的父域后,在判断第一预定时长内指向所述指定级别的父域的dns请求个数是否大于预设的第一阈值前,判断所述访问目标域名信息中的指定级别的父域是否在所述黑名单中,如果是,则丢弃此dns请求。

其中,所述防御模块303还用于判断第一预定时长内指向所述指定级别的父域的dns请求个数大于预设的第一阈值时,将表示所述指定级别的父域的特征字符串添加到所述黑名单中。

其中,该防御模块303还用于:在所述提取模块302从所述dns请求报文中提取所述访问目标域名的指定级别的父域后,在判断第一预定时长内指向所述指定级别的父域的dns请求个数是否大于预设的第一阈值前,判断第二预定时长内接收的所述访问目标的域名不在白名单中的dns请求个数是否大于预设的第二阈值,如果是,则丢弃此dns请求。

其中,所述防御模块303还用于通过下述两种方式判断所述访问目标域名信息中的指定级别的父域是否在所述黑名单中:

方式一,在解析所述dns请求报文后,判断所述访问目标域名信息中是否包含存在于所述黑名单中的特征字符串,如果包含则判断所述访问目标域名信息中的指定级别的父域在所述黑名单中;

方式二,通过将所述dns请求报文中的二进制字符串与所述黑名单字符串的二进制字符串进行对比,来判断所述dns请求报文中的二进制字符串是否包含所述黑名单字符串的二进制字符串,如果包含则判断所述访问目标域名信息中的指定级别的父域在所述黑名单中。

其中,指定级别的父域为三级域名。

本发明中的ddos攻击防御方法及系统,通过统计指向访问目标的dns请求的数量来判断是否拦截指向该访问目的的dns请求。这样,即使每个傀儡机发起数量少且合理的dns请求,也可以有效地对ddos攻击进行防御。此外,通过白名单和黑名单对dns请求进行管理,可以快速地判断是否转发dns请求,增强处理时效。

本发明中针对攻击行为技术的目标是指定级别的父域,统计粒度更精确,更有利于dns系统的攻击判定以及进行更有效的攻击防御。

具体地,本专利中采用提取指定父域特征字符串的方式,形成黑名单,并以此作为dns请求的转发或者丢弃的依据,处理过程最大限度避免了对非攻击目标域名的影响,相对当前技术按照百分比丢弃dns请求的服务有损方案,处理更加精确,对服务零影响。另外,本专利提供了两种丢弃包含指定字符串dns请求的方法,其中二进制对比的方案高效实用,处理效率是一般dns软件处理的500倍,软件防火墙的20倍。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1