DNS“递归与缓存分离”架构评测

近几年来,DNS解析服务频繁受到攻击。仅以国内为例,2009年5月19日晚21时左右,江苏、河北、山西、广西、浙江、天津、内蒙古、黑龙江、广东等省市出现大范围网络故障,各地网民均遇到网络不畅通、网页无法打开等问题。据工业和信息化部通信保障局发布的公告,确认该事件是由于暴风网站域名解析受到网络攻击,导致电信运营商的递归域名解析服务器收到大量异常请求而引发拥塞。此后不久又发生了百度域名被劫持事件,2010年1月12日,国内最大的中文搜索引擎公司百度的域名被解析到非法地址,导致网民无法正常登陆百度网站达8小时。这是百度成立以来最严重的访问故障事件,给该公司造成的直接损失超过700万元。

在诸多安全事件的背景下,DNS服务器的性能和安全性受到了空前关注。部分研究人员借鉴了被广泛采用的Web缓存技术,提出了“递归与缓存分离”的架构解决方案。该方案使用两台服务器来做DNS解析,其中一台只做DNS递归解析,另一台只做DNS缓存查询。研究人员认为这个方案与Web缓存技术一样,会带来两大优点:首先是整体性能的提升,因为DNS解析的两个过程已经被进行了分解,绝大多数情况下可以从缓存中得到结果,只有在必要时才需要递归解析,因而提高了性能;二是在受到攻击时具有更好的安全性,因为DNS攻击往往是针对递归解析的,由于两台服务器各司其职,至少可以保证缓存查询服务器的安全运行。

从表现上看来,“递归与缓存分离”架构确实有一定的吸引力,但事实真的如此吗?我们对这种架构进行了研究测试,得到这样一个结论:DNS技术与Web缓存技术存在本质区分,两者并不能够混为一谈。尽管“递归与缓存分离”架构可能会给性能和安全性带来一定程度的提升,但同时也存在更大的隐患,并不是一个理想的架构。

首先,让我们来看一看“递归与缓存分离”架构给性能带来的影响。据统计,正常应用环境下,超过90%的DNS解析请求在DNS系统稳定运行后是可以缓存命中的,只有少量解析请求需要递归进行,新架构对性能的提升可能会比较有限。为了验证这一点,我们做了一个传统的通用缓存架构和“递归与缓存分离”架构的性能对比测试。测试环境中共有5台配置相同的服务器(E5620@2.40GHz x 2/8GB内存/双千兆网卡),统一连接到一台千兆以太网交换机。其中3台安装了在国内拥有较大市场份额的IDNS服务软件,另2台作为高性能发包机使用。3台IDNS服务器中,1台为通用缓存架构,其余2台配置为“递归与缓存分离”的部署架构。(测试拓扑见图1)

接下来,我们在发包机上通过resperf工具,采用现网的域名日志分别对通用缓存架构和“递归与缓存分离”架构进行了压力测试。这个步骤一共进行5次,取最终稳定的QPS(query per second,每秒请求数)值做为结果。最终,通用缓存架构的QPS值稳定在20万,而“递归与缓存分离”架构的QPS值为20.2万。我们可以看出,DNS系统运行稳定后,“递归与缓存分离”架构只会面临很少量的递归请求,因此实际性能与通用缓存架构趋于一致,而不是大幅提升。

实际上,“递归与缓存分离”架构在实际使用中也带来了更多的安全问题。一方面,递归与缓存分离带来了新故障点,它们彼此间又相互影响,使维护监控工作变得复杂。另一方面,由于缓存服务是从递归服务处取得解析结果,“递归与缓存分离”架构在递归服务受到缓存污染攻击后会出现污染放大效应,且不容易被查觉,可能导致更严重的安全事件。此外,由于这种架构有着相对特殊的业务模型,缓存服务器受到的压力通常远大于递归服务器,因此恶意攻击者可以采用比缓存服务器小得多的攻击流量对递归服务器进行攻击。这是一个相当严重的问题,因为它来源于“递归与缓存分离”架构本身。一些研究者认为采用隐藏递归服务器IP外加访问控制策略的手段可以防止有针对性的攻击,但虽然大部分递归服务器的IP地址不会被公开,通过建立一个授权DNS的方式却可以很容易地得到递归服务器IP,并且如果攻击者采用了源端口为53的攻击方式,传统的访问控制手段显然也难以阻挡。

一些研究者还指出,采用“递归与缓存分离”架构可在DNS系统受到攻击,当大量递归请求产生导致递归服务器崩溃而无力返回解析结果时起到一定的保护作用。理由是缓存服务器的域名在TTL时间内缓存,还能够做有限度的正常解析,从而可以在类似2009年5月19日暴风影音攻击那样的情况下起到保护作用。其实,这种正常解析的效果是相对有限的,因为目前大型网站的域名倾向于使用较短的TTL,如百度、谷歌都只有20分钟。因此,“递归与缓存分离”架构可能能够正常解析一段时间,但肯定比较短暂。

还有一些观点认为,在缺乏专业抗攻击安全设备的情况下,用户可以测试使用不同的DNS系统或不同的功能模块或插件,利用合理的策略配置,在一定程度上应对攻击。我们也做了一个测试去验证这一观点,利用上一个测试环境,我们移除了一台服务器,将其余4台分别配置为发包机、压力机、BIND服务器及IDNS服务器。作为开放源代码的DNS服务器软件,BIND已经成为世界范围内使用最为广泛的产品,在测试中具有一定的代表性。压力机使用的是开源的dnsflood攻击工具,分别针对IDNS服务器和BIND服务器进行攻击。在此前提下,发包机再采用resperf工具及现网域名日志进行测试,观察www.baidu.com以及www.google.com的解析情况。(测试拓扑见图2)

我们在测试中注意到,针对标准的BIND服务器进行dnsflood攻击,很快便不能够解析包括www.baidu.com和www.google.com在内的所有域名;针对IDNS服务器进行攻击,可以解析出大部分域名,并能够正确解析www.baidu.com和www.google.com。这个差异来源于DNS服务系统的设计,根据文档说明,IDNS针对解析队列进行了一定程度的优化,在拥塞时将采用概率智能抛弃策略,随时保证到达的请求有机会获得解析。而对于百度、谷歌等实际中访问量较大的常见域名来说,获得解析结果的机会更大一些,从而在DNS系统受到攻击时仍然能够保持访问相对正常。

事实证明,随着技术的发展进步,DNS系统对类似暴风影音那一类的拒绝服务攻击已经可以做到一定程度的防护。用户在部署时可以通过测试、试用等手段评估更多的软件解决方案。而目前业界比较关注的DNS“递归与缓存分离”架构,还存在着较多的安全隐患,选择时宜慎重。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值