一种防范dns缓存攻击的方法及装置的制作方法

文档序号:7955584阅读:149来源:国知局
专利名称:一种防范dns缓存攻击的方法及装置的制作方法
技术领域
本发明涉及网络安全技术,尤其涉及一种防范DNS缓存攻击的方法及装置。
背景技术
DNS是域名系统(Domain Name System)的缩写,它是由解析器和域名服务器组成的。域名服务器(DNS Server)是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。请参考图1,一次正常的域名解析流程大体包括以下处理
首先由客户端发起域名解析请求,本地DNS服务器收到客户端的域名请求后,会去查找自己的管辖域,如果请求的是自己管辖域的域名,就将结果返回给客户端;如果不是自己管辖域的,会在缓存中查找,若没有找到,则会向上一级DNS服务器发起请求,上一级服务器将解析结果通过DNS Reply报文返回给本地DNS服务器,此时本地DNS服务器将解析结果存入缓存,以便以后再有请求解析该域名时,可以直接返回解析结果,同时会将解析结果返回给本次请求解析该域名的客户端。近年来DNS攻击事件屡屡发生,比如此前暴风影音DNS遭遇攻击事件。目前针对 DNS缓存进行攻击式攻击的行为非常常见。请参考图2以及图3,DNS缓存攻击主要有两类
第一类,DNS服务器会按照一定的机制对自己的缓存进行更新。缓存更新时,需要向上级服务器发送请求。而攻击者则向DNS服务器发送精心构造的DNS r印Iy报文。比如说, 如果DNS服务器更新www. google, com域名时,攻击者向DNS服务器发送精心构造的DNS reply报文,就有可能攻击成功,将奮google, com域名对应的IP地址改成攻击者指定的 IP地址。第二类,攻击者刻意利用一个不存在的某个域名的二级域名来发送请求,这样DNS 服务器由于无法解析自然会向上级DNS服务器发送域名解析请求;这个时候,攻击者则向 DNS服务器发送精心构造的DNS r印Iy报文,就有可能攻击成功。如攻击者想攻击www. google, com,它就可以发送aa. google, com(仅仅是示例,假设该域名并不存在)给DNS服务器,这个时候,攻击者发送精心构造的DNS reply报文,此报文回复的内容是“aa. google, com域名不存在,但是其在附加资源里将www. google, com改成攻击者指定的IP”,这样一来 DNS缓存攻击成功。针对目前的两种DNS缓存攻击,业界还没有简单且行之有效的解决方案。

发明内容
有鉴于此,本发明提供一种防范DNS缓存攻击的装置,其应用于DNS安全设备中, 该装置包括
请求处理单元,用于对收到的DNS请求报文的源端口进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及相应的修改记录,并将修改后的请求报文发送给DNS服务器;
响应处理单元,用于检查DNS服务器返回的响应报文是否能够匹配到所述会话特征, 如果是,则根据修改记录将该响应报文的目的端口还原为与原始请求报文源端口一致,然后将还原后的响应报文发送给DNS请求者。本发明还提供一种防范DNS缓存攻击的方法,其应用于DNS安全设备中,该方法包括
A、对收到的DNS请求报文的源端口进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及相应的修改记录,并将修改后的请求报文发送给DNS服务器;
B、检查DNS服务器返回的响应报文是否能够匹配到所述会话特征,如果是,则根据修改记录将该响应报文的目的端口还原为与原始请求报文源端口一致,然后将还原后的响应报文发送给DNS请求者。本发明通过对DNS请求报文的源端口和/或事务ID进行随机性修改,显著提高了本地DNS服务防范缓存攻击的能力。


图1典型的DNS请求的处理流程。图2是一种DNS缓存攻击的原理示意图。图3是另一种DNS缓存攻击的原理示意图。图4是本发明防范DNS缓存攻击的流程图。图5是本发明防范DNS缓存攻击装置的逻辑结构图。
具体实施例方式本发明旨在大幅度提高攻击者对DNS缓存进行攻击的难度,相应使得DNS服务在网络中处于更加安全的境地。通常来说,本地DNS服务器接收到上一级DNS服务器返回的响应报文(DNS r印Iy)报文后会对报文做如下处理
i.检查r印Iy报文目的端口,在DNS服务器发起的域名请求(DNS Request)中包含了它自身的UDP端口号,在收到上一级DNS服务器回复的DNS r印Iy报文后,它会检查端口号,如果不相等的话,就说明不是对DNS服务器发起请求的响应,协议栈则会丢弃该数据报文。ii.检查r印Iy报文问题域
DNS服务器收到上一级DNS服务器回复的DNS r印Iy报文,会提取DNS r印Iy报文中的问题域,然后和发起DNS请求中的问题域比较,如果不一致,则会丢弃该数据报文。iii.检查R印Iy报文事务ID (TID)
在DNS服务器发出的查询请求中会包含一个TID,用来标识某个查询,在收到的DNS 回复报中同样会包含TID,表示是对某个TID查询请求的结果的响应。DNS服务器会根据 TID来判断是它发出的某个请求的响应,如果两个TID不相等的话,则会丢弃该数据报文。iv.检查授权域和附加域
授权域和附加域中的域名必须和问题域中的域名是同属于某个域名下的子域名。如果上述所有条件都满足了,DNS域名服务器就会接受该响应数据包是对它发出的某个查询请求的响应,使用相应数据包中的数据,并缓存结果。综上所述,如果攻击者成功对DNS服务器缓存攻击,必须要满足上面4个条件,缺一不可。而这个四个条件中,条件二 reply报文问题域和条件四授权域及附加域是很容易满足的,关键是在于满足条件i中的端口号和条件iii中的报文事务ID (TID)0本申请发明人通过研究攻击行为发现
DNS报文是基于UDP协议的一种应用。虽然理论上UDP端口号在理论上是16位,但是实际上只有一段很小取值范围的端口被用作UDP报文的源端口。在老式系统中的这个范围是1(^4/1025-4999/5000,不足4000个组合;在一些新的系统中这个范围是49151-65535, 组合提高到约16000。而事务TID也只有16位,变化的组合最多也就只有65536次。而且以上所述仅仅是理论上的可能性,事实上DNS服务器并没有把这些组合的可能性利用起来。比如DNS服务器如果仅仅利用了更小范围的源端口,即随机性很低;而这个情况一旦被攻击者获知,攻击的难度进一步大幅度降低。而且TID的利用上也可能存在同样的问题, TID的随机性未必会完全被利用起来。所以在现实的网络环境中,理论上以上两个条件组合在一起的可能性组合并不是很多,而实际网络应用中的可能性组合更低。这样一来,攻击都完全可以伪造DNS r印Iy报文,进行穷举攻击.穷举攻击响应可能在上级DNS响应到达之前到达本地DNS服务器。而通常DNS服务器只接受第一条符合要求的响应,而将后到的响应丢弃,攻击者的目的就达到了。本发明利用位于DNS安全设备上的防范DNS缓存攻击的装置来大幅度提升攻击者的难度。所述DNS安全设备可以是网络安全设备,也可能是DNS服务器本身,这里仅仅是一个物理意义上的载体。防范DNS缓存攻击装置是一个逻辑意义上的软件和/或硬件装置, 其可以前置在DNS服务处理之前的一种安全防护装置,也可以是一个位置部署不受限制的安全装置,其可以是软件实现(即通过CPU运行内存中的软件代码实现),也可以是硬件或者固件实现,或者软硬结合来实现。请参考图4以及图5,本发明防范DNS缓存攻击装置包括请求处理单元11、响应处理单元12以及报文检查单元13。该装置运行时执行如下处理流程。步骤101,检查收到的报文是否为DNS请求或者响应报文,如果发现DNS请求报文, 则转步骤102提交请求处理单元处理;如果发现是DNS响应报文,则转步骤103提交响应处理单元处理,本步骤由报文检查单元13执行。以本发明运行在网络安全设备上为例,通常安全设备都有丰富的报文检查手段, 针对各种应用进行安全检查。在进行检查之前通常需要区分报文到底属于哪种具体的应用,然后上送到相应的应用处理模块做处理。DNS是一种常见的应用,可以基于DNS应用的特征将报文过滤出来。而请求报文与响应报文在DNS协议中亦有规定有相应的识别标识。 本步骤的实现可以参考现有技术。进一步来说,本发明需要对本地DNS服务器发出DNS请求报文进行处理,因此可以进一步配置特定的过滤规则,比如根据报文的源IP地址或者MAC地址将本地DNS服务器发出的请求报文过滤出来送给请求处理单元处理;或者DNS服务器是从网络安全设备特定端口与上级服务器通信的,将该特定端口的报文都上送给本发明防范DNS缓存攻击装置就可以了,管理员仅仅需要配置一下ACL的报文上送规则即可。当然这一过滤并不是必须的,比如说本发明如果运行在DNS服务器上则并无此需求,因为DNS服务器本身发出的报文显然会全部经过本发明防范DNS缓存攻击装置。这种方式的好处是CPU负担比较轻,但需要用户配置,智能程度低一些。更为通用的一种情况是,并不需要区分DNS请求到底是谁发出的,这样做的好处是对使用本发明DNS安全设备的用户而言非常简单,无需进行端口或者过滤的配置,也不需要用户过多地去考虑其组网问题,这种方式会让设备的CPU负担加重一些,因为要额外处理一些并不需要处理的任务。因此是否将属于本地DNS请求报文过滤出来有针对性进行修改,取决于用户的实际需求。步骤102,对收到的DNS请求报文的源端口或事务ID进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及相应的修改记录,并将修改后的请求报文发送给 DNS服务器,其中所述会话特征包括修改后的源端口或事务ID。本步骤由请求处理单元11 执行。假设当前的DNS请求者就是本地DNS服务器向上级发出的(还可能是上网用户主机发出的,本发明可以采用相同流程进行处理),当收到DNS服务器发出的DNS请求报文时, 这表明DNS服务器有可能需要更新内部的缓存,或者是DNS服务器遇到无法解析的域名需要上级的协助;这一时刻正是最容易被攻击者利用的时候。以修改源端口为例(事务ID的修改与还原的原理一致),本发明在此将DNS请求报文进行修改,使得其首先在源端口上呈现出更高的随机性。由于报文的源端口一共有16比特的长度,经过本发明的修改,其组合可能性一下子提升到了 65535种可能;重要的是这一修改并不会影响正常的业务通信,因为本发明后续流程还会做还原操作。在报文修改之后,需要将修改后的报文会话特征保存下来,并且保存该源端口的修改记录,然后再把修改后的请求报文发送给上级DNS服务器。会话特征通常是五元组(也可以是其他特征与源端口或事务ID的组合),其包括报文源IP地址、目的IP地址、源端口、 目的端口以及协议类型。当响应报文返回的时候,会话特征可以帮助我们找到对应的会话。 然后对进行各种检查确定响应报文是否合法。进一步来说,考虑到有些DNS服务器可能没有对16比特的TID (报文事务ID)的随机性加以合理利用。本发明进一步可以对TID进行随机修改,并且将TID作为一个新的会话特征保存在存储单元(参考图5,未标号)中,在本实施方式中,会话特征就变成了六元组。请参考表1的示例
权利要求
1.一种防范DNS缓存攻击的装置,其应用于DNS安全设备中,其特征在于,该装置包括请求处理单元,用于对收到的DNS请求报文的源端口或事务ID进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及相应的修改记录,并将修改后的请求报文发送给DNS服务器,其中所述会话特征包括修改后的源端口或事务ID ;响应处理单元,用于检查DNS服务器返回的响应报文是否能够匹配到所述会话特征, 如果是,则根据修改记录将该响应报文的目的端口或事务ID还原为与原始请求报文源端口或事务ID —致,然后将还原后的响应报文发送给DNS请求者。
2.根据权利要求1所述的装置,其特征在于,所述请求处理单元进一步用于将所述DNS 请求报文的源端口以及事务ID均进行随机修改。
3.根据权利要求1所述的装置,其特征在于,所述会话特征包括报文源IP地址、目的 IP地址、源端口、目的端口以及协议类型。
4.根据权利要求1所述的装置,其特征在于,还包括报文检查单元,检查收到的报文是否为DNS请求或者响应报文,如果发现DNS请求报文则提交给请求处理单元,如果发现 DNS响应报文则提交响应处理单元。
5.根据权利要求4所述的装置,其特征在于,所述报文检查单元,进一步用于将属于本地DNS服务器发出的DNS请求报文过滤出来提交给请求处理单元。
6.一种防范DNS缓存攻击的方法,其应用于DNS安全设备中,其特征在于,该方法包括A、对收到的DNS请求报文的源端口或事务ID进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及相应的修改记录,并将修改后的请求报文发送给DNS服务器, 其中所述会话特征包括修改后的源端口或事务ID ;B、检查DNS服务器返回的响应报文是否能够匹配到所述会话特征,如果是,则根据修改记录将该响应报文的目的端口或事务ID还原为与原始请求报文源端口或事务ID —致, 然后将还原后的响应报文发送给DNS请求者。
7.根据权利要求6所述的方法,其特征在于,步骤A进一步将所述DNS请求报文的源端口以及事务ID均进行随机修改。
8.根据权利要求6所述的方法,其特征在于,所述会话特征包括报文源IP地址、目的 IP地址、源端口、目的端口以及协议类型。
9.根据权利要求6所述的方法,其特征在于,还包括C、检查收到的报文是否为DNS请求或者响应报文,如果发现DNS请求报文则转步骤A 处理,如果发现DNS响应报文则转步骤B处理。
10.根据权利要求9所述的方法,其特征在于,所述步骤C进一步包括将属于本地DNS 服务器发出的DNS请求报文过滤出来,然后转步骤B。
全文摘要
本发明提供一种防范DNS缓存攻击的装置,该装置包括请求处理单元,用于对DNS请求报文的源端口和/或事务ID进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及修改记录,并将修改后的请求报文发送给DNS服务器;响应处理单元,用于检查DNS服务器返回的响应报文是否能够匹配到所述会话特征,如果是,则根据修改记录将该响应报文的目的端口和/或事务ID还原为与原始请求报文源端口和/或事务ID一致,然后将还原后的响应报文发送给DNS请求者。本发明能显著提升本地DNS服务器防范缓存攻击的能力。
文档编号H04L29/12GK102404317SQ20111033737
公开日2012年4月4日 申请日期2011年10月31日 优先权日2011年10月31日
发明者汪庆权 申请人:杭州迪普科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1