【TechTarget中国原创】上周爆发的百度DNS攻击事件引发出DNS技术讨论的热潮,有读者提出疑问:用什么方法可以让DNS支持加密?
TT安全专家Michael Cobb认为正确的提法是加密去支持DNS的,而不是DNS去支持加密。用来识别以及定位联网(因特网)设备的域名系统是一个公共的数据库,它本身并不安全……
【TechTarget中国原创】问:用什么方法可以让DNS支持加密?
答:我认为正确的提法是加密去支持DNS的,而不是DNS去支持加密。用来识别以及定位联网(因特网)设备的域名系统是一个公共的数据库,它本身并不安全。只要DNS去查询那些能够被破译或者被修改的请求与结果,域名系统就不太可能为某种形式的加密服务提供良好的支持基础。
以DNS缓存投毒(DNS cache poisoning)为例。攻击者利用这种技术让DNS服务器误认为它已经收到了可靠的验证消息,然而实际上它并没有收到。事实上,这是因为DNS响应通常不是签名加密的,所以导致了增加了受到攻击的可能性。
由于DNS超出了其最初的使用目的,现在它被用来连接各种各样的联网设备,从智能手机到厨房电器,什么都有,所以DNS请求以及DNS响应均需要受到更好的保护。然而,保护DNS的安全比较困难,这是因为任何变化都必须要向后兼容旧版本的系统,这些变化还跟因特网的规模有关。这一困难以及大型因特网厂商之间合作的缺乏,成为了实施新规则以改进DNS安全的原因,比如域名系统安全扩展(DNSSEC),尚有待于大家广泛采用(DNSSEC可以让DNS支持加密签名响应)。
另外一种帮助验证DNS结果的方法是Forward Confirmed Reverse DNS (FCrDNS)。FCrDNS检查一个IP地址是否有相匹配的正向DNS以及反向DNS项。这些项用来确认域名拥有者与使用此IP地址的网络拥有者之间是否存在有效的关系。虽然不是很强大,但是这个认证用作白名单已经足够了。由于发送垃圾邮件的机器与不符合FCrDNS检查的机器之间存在统计上的相关性,所以发送垃圾邮件以及钓鱼软件的人使用xx的计算机来伪造域时,通常无法通过这个验证。
就算是采用加密的方法,DNS服务器也可能会被病毒入侵,或者会被那些对公司不满的员工利用time-to-live (TTL)值把服务器的IP地址重新定向到一个恶意地址。每个被设置了恶意IP地址的DNS服务器必须进行手动xx,因为一个TTL可以设置长达68年之久。
此外,就是网址输入错误的问题。有多少次你输错了你想访问的网站地址,然而{zh1}却还是进入了一个网站?举个例子,paypal.com和paypa1.com是不同的域名,然而用户可能无法区分它们,尤其是它们的字体没有清楚的标示出字母l与数字1的区别时。这个问题在那些支持国际化的域名系统中更加严重,因为很多字符跟ISO 10646标准中的不同,然而在普通的电脑屏幕上显示却是一样的。钓鱼软件就经常利用这个漏洞。
和大多数因特网上使用的协议一样,保护客户端与服务器之间的对话安全以及隐私势在必行。如果大量的流行域名服务器都采用强有力的加密技术,那么许多DNS攻击就会没有用处。即便如此,DNS的安全程度远远不够,离加密服务这个概念还差很远。
更多信息:
由于研究人员Dan Kaminsky向全世界揭露了一个惊人的DNS漏洞,于是出现了很多利用这个安全漏洞的工具以及攻击技术。你可以学习。