浅析DNS的攻击与防范
2014-03-22张海清
张海清
摘 要:DNS是Internet的基本支撑,其安全性对整个Internet的运行起着举足轻重的作用。随着互联网应用的不断深化,DNS已成为网络攻击的热点目标。本文从DNS的工作原理出发,解析了DNS面临的安全威胁与受到的常见攻击,并提出了相应的防范方法。
关键词:DNS;网络攻击;防范技术
1 引言
DNS(Domain Name System)域名系统,提供了Internet的底层基础服务,它实现了将网络域名映射为网络IP地址,因此其安全性对整个Internet的安全性起着十分重要的作用。DNS作为当今全球最大、最复杂的分布式层次数据库系统,由于其开放、庞大、复杂的特性以及设计之初对于安全性的考虑不足,再加上人为的攻击和破坏,DNS已面临非常严重的安全威胁。
2 DNS的工作原理
DNS是为了实现域名和IP地址之间的转换,它的工作原理就是在域名与IP地址两者之间进行相互的映射,起到相当于翻译的作用。DNS可分为Server和Client两部分,当Client向Server发出域名的解析请求时,本地的Server先查询自己的数据库是否存在需要的内容,如果有则发送应答数据包并给出相应的结果,否则它将向上一层Server进行查詢。如此不断查询,直至找到相应的结果或将查询失败的信息反馈给Client。DNS具体的工作流程如下:
(1)Client首先向本地的Server发出查询请求,如要查询解析域名为www.china.com的IP地址;
(2)本地Server如没有对应的记录,转而向根Server寻求帮助;
(3)根Server返回com域的Server地址;
(4)本地Server向com域的Server发出域名解析请求;
(5)com域的Server返回china.com域的Server地址;
(6)本地Server继续向china.com域的Server发出域名解析请求;
(7)china.com域的Server向本地Server返回域名为www.china.com的IP地址查询结果;
(8)本地Server向Client成功返回域名www.china.com的解析结果,并且更新本地Server的缓存记录。
从上述DNS的工作流程中我们可以看到DNS的服务机制具有以下的漏洞和不足:
(1)DNS容易成为暴露用户行为的工具;
(2)Internet的DNS体系无法承受加密带来的开销和技术升级的成本;
(3)迭代查询,对根域与顶级域服务器的依赖非常严重;
(4)DNS主要使用无连接的UDP协议明文传送,很容易被伪造投毒;
(5)明文传输的DNS不具备任何保密性;
(6)DNS服务器具有软件漏洞。
3 常见的DNS攻击
由于DNS已成为了网络攻击的热门目标,因此也成为了互联网网络安全的一个十分重大的隐患。网络攻击者们通过攻击DNS达到了利用最少的成本,获得最大的效益,利用最少的资源,发起最有破坏力的攻击的目标,而且其攻击也可以轻而易举地绕过严密的安全监控和防护。如在2010年1月,网络攻击者们修改了百度的域名指向,以致百度网站出现无法访问的情况;2011年3月,网络攻击者们利用Bind 9软件出现的漏洞,使得部分DNS服务无法正常解析.com的域名。比较常见的DNS攻击有缓存投毒、DNS欺骗和DDoS攻击等,具体分析如下:
3.1 缓存投毒
缓存投毒是通过控制DNS的缓存服务器,把用户从原本需要访问的网站带到其它的网站,从而实现黑客的目的。缓存投毒实现的方式主要有两种:
3.1.1 攻击或控制用户ISP端的DNS缓存服务器的漏洞,将该ISP内的用户访问域名的响应结果改变;
3.1.2 利用权威域名服务器上的漏洞,在用户权威域名服务器同时被当作缓存服务器使用时,就可以实施缓存投毒,将错误的域名纪录存入服务器的缓存当中,使所有使用该服务器的用户得到的都是错误的DNS解析结果。从网络拓扑的角度来看,缓存投毒针对的DNS服务器是最接近用户的服务器,因此对这些服务器的攻击将会直接影响到连接这些服务器的所有用户。
3.2 DNS欺骗
DNS 欺骗是局域网常见的一种DNS攻击方式,是冒充域名服务器进行的一种欺骗行为。网络攻击者在DNS服务器响应之前先将虚假的响应结果交给用户,从而通过欺骗的手段使用户去访问恶意的网站。假设当用户提交给DNS服务器的域名解析请求报文数据包被截获,然后按网络攻击者的意图将一个虚假的IP地址作为应答信息返回给用户,用户就会把这个虚假的IP地址作为他所要的IP地址而进行访问,这样他就会被不知不觉地被欺骗到了网络攻击者想要其访问的那个网站,从而实现了DNS欺骗。
3.3 DDoS攻击
DDoS攻击主要有两种实现方式:
3.3.1 针对DNS的服务器软件,利用其软件程序中存在的各种漏洞,导致DNS服务器崩溃或拒绝提供服务;
3.3.2 利用DNS服务器作为中间的“攻击放大服务器”,去攻击其它互联网上的主机或服务器,导致被攻击的主机或服务器拒绝服务。
4 常见DNS攻击的防范方法
4.1 缓存投毒的防范方法
4.1.1 必须及时更新DNS的数据,重建DNS的缓存,根据DNS服务器的性能和网络的实际运行情况,将服务器缓存记录的TTL值适当减少,以防止缓存中毒;
4.1.2 将UDP端口随机化,在UDP端口的范围内随机选择使用端口,而不是固定使用53端口,这样可以使端口号和ID号的组合空间扩大到6万多倍 ,从而有效降低缓存投毒的命中率;
4.1.3 设置静态的DNS映射表,对动态DNS的更新进行限制,达到保护少数重要网站不受攻击的目的。
4.2 DNS欺骗的防范方法
4.2.1 防范由于ARP欺骗而引起的DNS欺骗,由于这种DNS欺骗是以ARP欺骗为基础的,所以可以通过将网关路由器的MAC地址和IP地址进行绑定以达到避免此类欺骗的目的;
4.2.2 在DNS欺骗中,客户端会收到一个合法的应答包和一个欺骗的应答包。欺骗应答包为了能尽量快地返回给客户端,它的报文结构比合法应答包简单,甚至只有一个应答域,而没有授权域和附加域。这样我们就可以通过监听DNS的应答包,按照一定的算法,鉴别出合法和欺騙两种应答包,进而避免DNS的欺骗攻击;
4.2.3 对DNS服务器做适当的安全配置和安全管理,限制DNS服务器作出应答的IP地址的范围,安装最新版的软件,关闭服务器的递归功能等;
4.2.4 个别安全级别要求较高的服务可以直接用IP地址进行访问,从而绕开DNS服务,这样全部针对DNS的攻击就都可以避免了。
4.3 DDoS攻击的防范方法
对于DDoS攻击可以采取以下几个防范措施:取消DNS服务器中允许查询网址的递回功能;部署入侵检测系统IDS;对重要的DNS服务器做冗余备份;安装相应的防火墙,对高DNS流量的请求进行限制和过滤。
4.4 除了上述防范攻击的方法之外,也应对DNS做好必要的保护措施,保证DNS的安全性,具体如下:
4.4.1 使用最新版本的DNS服务器软件,并且还要随着新漏洞的出现,不断升级或安装相应的补丁程序;
4.4.2 通过交叉检验功能,服务器反向查询已得到的IP地址所对应的主机名,再用该主机名查询DNS系统对应于该主机名的IP地址,判断两者是否一致,从而判定用户的合法性;
4.4.3 安装防火墙,将DNS服务器分为内部、外部服务器,并且进行隔离。内部服务器只提供内部网络域名的解析,外部服务器提供外部用户的查询,并处理内网服务器提交的解析请求;
4.4.4 通过设置访问控制列表ACL限制用户对DNS服务器的访问;
4.4.5 对区域传送进行限制,防止网络攻击者通过正常的查询命令获得详尽的的网络内部信息。
5 结束语
本文基于当前DNS的现状,阐述了DNS的工作原理,并对常见的DNS缓存投毒、DNS欺骗、DDoS攻击等进行了详细的分析和给出了防范这些攻击的方法,对于提高DNS的可靠性、安全性和抗攻击能力具有积极的作用。在日益发展的互联网中,DNS将占据着越来越重要的地位,如何更进一步提高DNS的主动、智能安全防御能力将是我们下一步工作和研究的重点。
参考文献
[1]孔政,姜秀柱.DNS欺骗原理及其防御方法[J].计算机工程,2010(2).
[2]董新科,邢雨,高维银.DNS网络安全系统分析与设计[J].计算机安全,2010(6).
[3]李基,杨义先. DNS安全问题及解决方案[M].北京:北京邮电大学信息安全中心,2005.