百度公共DNS之域名安全威胁
1.安全事件
尽管已经有超过30年历史,DNS仍然是整个互联网中最脆弱的一环。下面盘点一下近年来比较严重的DNS安全事件。
2009年5月19日南方六省断网事件。一起由于游戏私服私斗打挂dnspod,殃及暴风影音域名解析,然后进一步殃及电信local dns,从而爆发六省大规模断网的事故。事件影响深远。
2010年1月12日百度域名劫持事件。baidu.com的NS记录被伊朗网军(Iranian Cyber Army)劫持,然后导致www.baidu.com无法访问。事件持续时间8小时,是百度成立以来最严重的故障事件,直接经济损失700万人民币。
2013年5月4日DNS劫持事件。由于主流路由器厂商安全漏洞而导致的全网劫持事件,号称影响了800万用户。
2013年8月25日CN域被攻击事件。cn域dns受到DoS攻击而导致所有cn域名无法解析事故。
2014年1月21日全国DNS故障。迄今为止,大陆境内发生的最为严重的DNS故障,所有通用顶级域(.com/.net/.org)遭到DNS污染,所有的域名全被指向了位于美国的一个IP地址(65.49.2.178)。
2.攻击手段
query flood 通过不断的发DNS请求报文来耗尽目的DNS资源,形成拒绝服务。具体分类包括源IP是否随机以及目的域名是否随机等。
response flood 通过不断的发DNS响应报文来达到拒绝服务的目的。
udp floodv DNS底层协议为UDP,基于UDP的各种flood攻击也都会给DNS带来危害。
折射攻击(反射攻击) 伪造源IP为第三方,借助DNS的回包来达到DoS掉第三方的目的。属于“借刀杀人”的手段。
放大攻击 折射攻击的一种。通过恶意的构造响应报文来达到流量放大作用,从而对第三方形成带宽攻击。请求报文几十字节,响应报文几千字节,意味着可以形成百倍以上流量放大系数。
缓存投毒 每一台DNS都有缓存,缓存投毒指的是通过恶意手段污染DNS缓存,形成DNS劫持或者拒绝服务。
漏洞攻击 利用各种漏洞来达到入侵并控制DNS服务器目的。漏洞不仅仅指DNS程序本身的,也有可能是机器或者网络其它的“问题点”。
社会工程学手段 所有的系统都需要人的维护,而人永远是安全中最脆弱的一环。
3.防御手段
对于权威DNS来说,由于请求来源多是运营商或者公共DNS厂商的递归DNS,源IP相对比较固定,可以 实施源IP白名单策略。该策略对于伪造源IP的攻击具有一定削弱作用。对于域名随机的攻击来说,如果权威DNS本身承载的域名量不是很大,可以考虑域名白 名单策略。如果源IP就是运营商的,然后请求域名也是合法的,只能靠一定限速策略以及DNS服务器本身性能了。
对于递归DNS来说,各种白名单策略误伤都会很严重,因此也主要靠DNS服务器本身性能了。
高性能DNS服务器目前比较流行的做法是基于Intel DPDK来实施。
另外一种推荐实施的策略是RRL(Response Rate Limit),该策略对于防御折射攻击/放大攻击有一定效果。尽管折射攻击的目标不是DNS本身,但是不防御的话如果把第三方打挂仍然会产生连带责任,因此建议实施RRL。