专利名称:一种防范dns缓存攻击的方法及装置的制作方法
技术领域:
本发明涉及网络安全技术,尤其涉及一种防范DNS缓存攻击的方法及装置。
背景技术:
DNS是域名系统(Domain Name System)的缩写,它是由解析器和域名服务器组成的。域名服务器(DNS Server)是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。请参考图1,一次正常的域名解析流程大体包括以下处理首先由客户端发起域名解析请求,本地DNS服务器收到客户端的域名请求后,会去查找自己的管辖域,如果请求的是自己管辖域的域名,就将结果返回给客户端;如果不是自己管辖域的,会在缓存中查找,若没有找到,则会向上一级DNS服务器发起请求,上一级服务器将解析结果通过DNS Reply报文返回给本地DNS服务器,此时本地DNS服务器将解析结果存入缓存,以便以后再有请求解析该域名时,可以直接返回解析结果,同时会将解析结果返回给本次请求解析该域名的客户端。近年来DNS攻击事件屡屡发生,比如此前暴风影音DNS遭遇攻击事件。目前针对 DNS缓存进行攻击式攻击的行为非常常见。DNS缓存攻击主要有两类
第一类,DNS服务器会按照一定的机制对自己的缓存进行更新。缓存更新时,需要向上级服务器发送请求。而攻击者则向DNS服务器发送精心构造的DNS r印Iy报文。比如说, 如果DNS服务器更新誦.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安全设备中,该方法包括
A、检测是否存在针对DNS服务器缓存进行攻击的行为,如果存在,则将被攻击的域名加入保护名单;
B、在所述攻击的行为发生时检查DNS响应报文中的域名是否在保护名单中,如果是, 则将该域名对应的生存时间修改为更短的生存时间,并将修改后的响应报文发送出去。本发明能够使得DNS缓存攻击将会被大大抑制,攻击成功的可能性将变成小概率事件。因为一方面,攻击者穷举攻击成功一次的可能性很低,即便成功了,攻击成功的生效时间又大幅度缩短了,所以本发明可以非常有效地防范DNS缓存攻击。
图1典型的DNS请求的处理流程。图2是一种DNS缓存攻击的原理示意图。图3是另一种DNS缓存攻击的原理示意图。图4是本发明防范DNS缓存攻击装置的逻辑结构图。图5是本发明另一种防范DNS缓存攻击装置逻辑结构图。图6是本发明两种防范DNS缓存攻击装置融合的逻辑结构图。图7是本发明两种防范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安全设备上的防范DNS缓存攻击的装置来防御正对DNS服务器缓存的攻击。所述DNS安全设备可以是网络安全设备也可能是DNS服务器本身,这里仅仅是一个物理意义上的载体。防范DNS缓存攻击装置是一个逻辑意义上的软件和/或硬件装置,其可以前置在DNS服务处理之前的一种安全防护装置,也可以是一个位置部署不受限制的安全装置,其可以是软件实现(即通过CPU运行内存中的软件代码实现),也可以是硬件或者固件实现,或者软硬结合来实现。请参考图4,本发明防范DNS缓存攻击装置包括攻击检测单元11、缓存防护单元 12。该装置运行在DNS安全设备时执行如下处理流程。步骤101,检测是否存在针对DNS服务器缓存进行攻击的行为,如果存在,则将被攻击的域名加入保护名单;本步骤由攻击检测单元11执行。本发明并不依赖攻击行为的检测方式。在现有技术中,已经有一些对于攻击行为检测的方式,比如说针对各个源IP地址进行DNS响应报文速率的统计,或者更进一步针对不可信的源IP进行速率统计;这些检测方式通常是通过对IP地址建立黑白名单的机制来防范攻击行为。然而这种方式对于分布式攻击来说防范效果并不好。本发明还可以与任何新的攻击检测方式进行配合,后文将介绍一种新的攻击检测方式。需要说明的是,攻击检测行为的存在是一种机器的判断,尽管各种攻击行为检测的结果可能存在大小不同偏差甚至误报,但其实并不影响在本发明中的运用。DNS缓存攻击往往是用针对性的,比如攻击某个特定的网站。通过分析攻击者的报文可以轻易发现这一点,然后将被攻击的域名(如www. google, com. hk)加入到保护名单(也称为黑名单),本发明正是从被攻击者的角度来入手解决DNS缓存攻击的问题。步骤102,在检测所述攻击的行为发生时检查DNS响应报文中的域名是否在保护名单中,如果是,则将该域名对应的生存时间修改为更短的生存时间,并将修改后的响应报文发送出去,本步骤缓存防护单元12执行。检测到攻击行为以后,本发明的做法是针对DNS响应报文进行修改后再发送。考虑到保护名单中的被攻击的域名在DNS服务器的缓存会被攻击者更新为错误的域名,本发明并不是一味阻止攻击行为的发生,比如找到攻击者并丢弃攻击者发出的报文,而是通过对DNS协议的利用让攻击者徒劳无功。本发明将检查DNS响应报文中是否携带有被攻击的域名;如果存在,则将这个响应报文中域名的生存时间(TTL)修改为更短的时间,比如小于 10秒或者是管理员根据经验配置的,较佳的方式是修改为1秒,这样DNS服务器仅仅会缓存该域名很短的时间,攻击者的目的就很难达到了。假设www. google, com. hk被攻击,本地DNS服务器接收到修改后的响应报文之后, 由于生存时间很短,那么本地DNS服务器会很快删除掉该域名的缓存。假设接下来又有用户向本地DNS服务器请求解析棚.google, com. hk的时候,由于缓存中被攻击的域名更快被删除掉。本地DNS服务器还是重新向上级DNS服务器发出请求。那也就是说攻击者每次攻击成功的时间很短,例如只有1秒。攻击者本来的目的是希望通过不断地穷举攻击达到将被攻击的域名的解析结果在本地DNS服务器中缓存相当长的时间(比如30分钟或者更长)。比如把www. google, com. hk的IP地址指向自己预设的主机IP地址,从而达到欺骗的目的。但是运用本发明之后,攻击者如果想达到过往的效果,是不可能的。攻击者每成功攻击一次DNS的缓存,其都需要依靠穷举式的暴力攻击方式,除非每一秒钟攻击者都能用穷举方式攻击成功,但这显然是不可能的;攻击者往往精心布置很久,收发大量的报文才能成功,1秒钟显然是不可能做到的。缓存防护单元12可以进一步设定缓存防护功能是否开启,当收到攻击检测单元上报攻击行为发生的时候,则可以开启缓存防护功能,即对报文的TLL进行修改。而且缓存防护单元12还可以依据预设的一些条件来关闭缓存防护功能,比如攻击检测单元上报攻击事件暂停,或者网络管理员通过远程命令来关闭。缓存防护单元12关闭之后,响应报文将会透传,也就是说这个环节将看起来像不存在一样,有利于与各种不同攻击检测机制相
纟口口。请参考图5,图6以及图7。图6给出了一种本发明与新的攻击检测机制结合实施方式。在这一实施方式中,本发明在此引入了一种新的通过报文修改使得攻击者难以攻击成功的防范缓存攻击的机制,在这个机制下本发明可以实施一种新的攻击检测方式。以下先介绍这种新的防范缓存攻击的机制,然后再介绍这种机制与本发明缓存防护机制的结
I=I O图4是本发明防范DNS缓存攻击装置中的一部分,其作用是通过报文的修改与还原来让攻击者无法成功攻击。图4中主要请求处理单元13、响应处理单元14、报文检查单元15以及存储单元(未标号)。该装置运行时执行如下处理流程。步骤201,检查收到的报文是否为DNS请求或者响应报文,如果发现DNS请求报文, 则转步骤202提交请求处理单元处理;如果发现是DNS响应报文,则转步骤203提交响应处理单元处理,本步骤由报文检查单元15执行。以本发明运行在网络安全设备上为例,通常安全设备都有丰富的报文检查手段, 针对各种应用进行安全检查。在进行检查之前通常需要区分报文到底属于哪种具体的应用,然后上送到相应的应用处理模块做处理。DNS是一种常见的应用,可以基于DNS应用的特征将报文过滤出来。而请求报文与响应报文在DNS协议中亦有规定有相应的识别标识。 本步骤的实现可以参考现有技术。进一步来说,本发明需要对本地DNS服务器发出DNS请求报文进行处理,因此可以进一步配置特定的过滤规则,比如根据报文的源IP地址或者MAC地址将本地DNS服务器发出的请求报文过滤出来送给请求处理单元处理;或者DNS服务器是从网络安全设备特定端口与上级服务器通信的,将该特定端口的报文都上送给本发明防范DNS缓存攻击装置就可以了,管理员仅仅需要配置一下ACL的报文上送规则即可。当然这一过滤并不是必须的,比如说本发明如果运行在DNS服务器上则并无此需求,因为DNS服务器本身发出的报文显然会全部经过本发明防范DNS缓存攻击装置。这种方式的好处是CPU负担比较轻,但需要用户配置,智能程度低一些。更为通用的一种情况是,并不需要区分DNS请求到底是谁发出的,这样做的好处是对使用本发明DNS安全设备的用户而言非常简单,无需进行端口或者过滤的配置,也不需要用户过多地去考虑其组网问题,这种方式会让设备的CPU负担加重一些,因为要额外处理一些并不需要处理的任务。因此是否将属于本地DNS请求报文过滤出来有针对性进行修改,取决于用户的实际需求。步骤202,对收到的DNS请求报文的源端口或事务ID进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及相应的修改记录,并将修改后的请求报文发送给 DNS服务器,其中所述会话特征包括修改后的源端口或事务ID。本步骤由请求处理单元13 执行。假设当前的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服务器缓存进行攻击的行为,如果存在,则将被攻击的域名加入保护名单;缓存防护单元,用于在所述攻击的行为发生时检查DNS响应报文中的域名是否在保护名单中,如果是,则将该域名对应的生存时间修改为更短的生存时间,并将修改后的响应报文发送出去。
2.根据权利要求1所述的装置,其特征在于,所述更短的生存时间不大于10秒或者是由管理员预先配置的。
3.根据权利要求1所述的装置,其特征在于,所述还包括请求处理单元,用于对收到的DNS请求报文的源端口和/或事务ID进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及相应的修改记录,并将修改后的请求报文发送给DNS服务器;其中所述会话特征包括源端口以及事务ID ;响应处理单元,用于检查DNS服务器返回的响应报文是否能够匹配到所述会话特征, 如果是,则提交给缓存防护单元,并将根据修改记录将该缓存防护单元发送出来的响应报文的目的端口和/或事务ID还原为与原始请求报文一致;如果否,则向攻击检测单元报告。
4.根据权利要求3所述的装置,其特征在于,所述攻击检测单元进一步用于判断未能匹配到会话特征的响应报文的速率超过预定的阈值,如果是,则判定为存在针对DNS服务器缓存进行攻击的行为。
5.根据权利要求3所述的装置,其特征在于,其中所述缓存防护单元,进一步用于在不存在攻击行为时,将响应报文透传回响应处理单元。
6.根据权利要求1所述的装置,其特征在于,还包括报文检查单元,用于检查收到的报文是否为DNS请求或者响应报文,如果发现DNS请求报文则提交给请求处理单元,如果发现DNS响应报文则提交响应处理单元。
7.根据权利要求6所述的装置,其特征在于,所述报文检查单元,进一步用于将属于本地DNS服务器发出的DNS请求报文过滤出来提交给请求处理单元。
8.—种防范DNS缓存攻击的方法,其应用于DNS安全设备中,该方法包括A、检测是否存在针对DNS服务器缓存进行攻击的行为,如果存在,则将被攻击的域名加入保护名单;B、在所述攻击的行为发生时检查DNS响应报文中的域名是否在保护名单中,如果是, 则将该域名对应的生存时间修改为更短的生存时间,并将修改后的响应报文发送出去。
9.根据权利要求8所述的方法,其特征在于,所述更短的生存时间不大于10秒或者是由管理员预先配置的。
10.根据权利要求8所述的方法,其特征在于,所述还包括C、对收到的DNS请求报文的源端口和/或事务ID进行随机修改,然后针对修改后的请求报文保存相应的会话特征以及相应的修改记录,并将修改后的请求报文发送给DNS服务器;其中所述会话特征包括源端口以及事务ID ;D、检查DNS服务器返回的响应报文是否能够匹配到所述会话特征,如果是,则转步骤 B,并将根据修改记录将该缓存防护单元发送出来的响应报文的目的端口和/或事务ID还原为与原始请求报文一致;如果否,则提交步骤A处理。
11.根据权利要求10所述的方法,其特征在于,步骤A进一步包括判断未能匹配到会话特征的响应报文的速率超过预定的阈值,如果是,则判定为存在针对DNS服务器缓存进行攻击的行为。
12.根据权利要求8所述的方法,其特征在于,步骤B进一步包括在不存在攻击行为时,将响应报文进行透传。
13.根据权利要求10所述的方法,其特征在于,还包括E、检查收到的报文是否为DNS请求或者响应报文,如果发现DNS请求报文则提交步骤 C,如果发现DNS响应报文则提交步骤D。
14.根据权利要求13所述的方法,其特征在于,步骤E进一步包括将属于本地DNS服务器发出的DNS请求报文过滤出来提交给步骤C处理。
全文摘要
本发明提供一种防范DNS缓存攻击的装置,其应用于DNS安全设备中,该装置包括攻击检测单元,用于检测是否存在针对DNS服务器缓存进行攻击的行为,如果存在,则将被攻击的域名加入保护名单;缓存防护单元,用于在所述攻击的行为发生时检查DNS响应报文中的域名是否在保护名单中,如果是,则将该域名对应的生存时间修改为更短的生存时间,并将修改后的响应报文发送出去。本发明对防范采用穷举方式攻击DNS缓存的效果非常显著。
文档编号H04L29/06GK102404318SQ20111033737
公开日2012年4月4日 申请日期2011年10月31日 优先权日2011年10月31日
发明者汪庆权 申请人:杭州迪普科技有限公司