国际著名网络安全专家Roland Dobbins曾说过,域名系统就像是“空气”,平时我们感觉不到它的存在,但是一旦出现问题,其影响可能是“致命”的。近年来的“163.net域名劫持”事件、“adobe.com域名劫持”事件、“Google域名劫持”事件、“twitter域名劫持”事件、“百度域名劫持”事件以及“暴风影音断网门”都说明了域名系统安全性面临的巨大风险以及在安全性遭受到破坏时将会导致的巨大损失。那么,为什么长久以来DNS系统总是会遭受到类似域名劫持的攻击呢?本文尝试从技术角度对域名系统的安全性进行分析及建议。
本文第一部分简要介绍了域名系统(DNS)的概念和基本原理,第二部分分析了DNS系统易遭受的各种攻击。第三部分综述了目前已有的安全解决方案,第四部分进行了总结。
一、 概述
DNS系统
DNS是英文Domain Name System(域名系统)的缩写,它是一种可以将域名和IP地址相互映射的以层次结构分布的数据库系统,为互联网的运行提供关键性的基础服务。各种基于域名的Web访问,email系统、文件共享系统等都依靠DNS服务得以正常实现。DNS系统采用备份技术和缓存技术保证了数据库运行的可靠性和服务速率。
DNS服务原理
DNS系统采用递归查询请求的方式来响应用户的查询。
下面引用老师的课件插图来进行说明:

1) 用户向DNS 客户端发送DNS请求,客户端先查看本地缓存,如果缓存中有该域名,则直接返回给用户;客户端若没有域名的相关缓存,则向本地域名服务器提出解析请求。
2) 本地域名服务器在收到请求后,先查看缓存,若缓存中有相关记录,则应答客户端的请求;否则,本地域名服务器直接向根域名服务器提出请求。
3) 根域名服务器接到请求后,将包含有所需解释的域名的顶级域名服务器返回给本地域名服务器。
4) 本地域名服务器根据根域名服务器的返回结果,向顶级域名服务器发送请求。
5) 顶级域名服务器接到请求后,将包含所查询的域名的域名服务器返回给本地域名服务器。
6) 本地域名服务器根据返回结果连接包含域名的域名服务器,得到查询结果,
然后将查询结果缓存,并向客户端应答。
7) 客户端接到应答后,将查询结果缓存,然后向用户应答。


二、 安全威胁
DNS的安全威胁主要可分为几种:DNS欺骗、分布式拒绝服务攻击、DNS软件漏洞攻击、管理缺陷等。下面分别对这几类攻击进行介绍。
DNS欺骗
DNS的查询请求是基于UDP的,DNS客户端会接受首先到达的DNS应答包,而将后到达的DNS应答包当作是冗余包简单丢弃掉。客户端对DNS应答包的验证仅通过随机发送的查询ID和UDP端口号,除此之外没有任何的验证。这就给DNS欺骗提供了机会。
1、DNS ID欺骗
DNS ID欺骗中的攻击者必须跟用户处于同一个局域网内。
|