1 概述
1.1 背景
DNS作为一项互联网基础业务,对整个互联网的正常运转起着至关重要的作用,但是DNS系统作为全球最大最复杂的分布式层次数据库系统,由于其开放,庞大,复杂的特性以及设计之初对于安全性的考虑不足,使其本身非常的脆弱,很容易遭到攻击。DNS服务器已经变成了互联网架构中脆弱的一环,从2009年暴风影音事件造成多省断网到2010年百度被劫持域名事件可以看出,最近几年针对DNS的攻击越来越多,影响也越来越大,因此如何保护DNS系统的安全就成为了目前互联网安全的首要问题之一。
1.2 DNS面临的威胁
1.2.1 DNS Flood攻击
直接发送海量DNS查询报文到DNS服务器,或通过发送大量不存在的域名查询报文,引起服务器持续向上层服务器发送递归请求,从而消耗掉大量服务器资源,导致DNS服务器无法响应正常的DNS请求。
1.2.2 DNS欺骗
DNS欺骗是最常见的DNS安全问题之一。当一个DNS服务器由于自身的设计缺陷,接收了一个错误的信息,那么就将做出错误的域名解析,从而引起众多网络安全问题。常见的DNS欺骗有3种:
1) DNS缓存投毒
通常所采用的DNS缓存投毒技术,就是攻击者利用本地DNS服务器自身对来自权威DNS服务器信息无法进行验证这一特点,通过精心构造虚假的DNS response来对本地DNS的缓存进行欺骗。攻击者猜测本地DNS与权威DNS通信的一些特性,根据这些信息,攻击者伪造大量的回应包,例如猜测DNS的响应ID,由于本地DNS对这些伪造的包难以辨识,攻击者可以成功的将自己构造的回应包发到本地DNS中,实现缓存投毒。
2) 客户端信息劫持
当用户发起DNS解析请求时,攻击者监听DNS会话,猜测DNS服务器的响应ID,抢先将虚假的响应提交给客户端,从而欺骗客户端去访问恶意的网站
3) DNS重定向
攻击者将DNS名称查询请求重定向到恶意DNS服务器上,被劫持域名的解析就完全在攻击者的控制之下。
1.3 现有DNS安全手段的不足
1.3.1 系统扩容
利用提高DNS服务器的性能或者增多DNS服务器量的方法改善每秒处理DNS请求的能力,这种扩容对付用户访问量的增加是有效的,但是面对现在的DNS攻击能力,每秒请求流量甚至可以到达千万QPS,只依靠系统扩容是远远不够的。
1.3.2 DNSSEC
DNSSEC是由IETF提供的一系列DNS安全认证的机制。它提供了一种来源鉴定和数据完整性的扩展。DNSSEC的确可以提高DNS系统的安全性,但是DNSSEC的全面部署是一个很困难的任务,难以在短时间内完成,而且DNSSEC本身是很消耗性能的,这也有可能成为DNS的新隐患。
1.3.3 防火墙
防火墙本身并没有专门针对DNS的防护手段,面对多种多样的DNS攻击手段,显得束手无策。
2 迪普科技DNS防护技术
2.1 技术概述
针对传统DNS防护手段的不足,迪普科技提出了一个系统的,全方位的防护方案。整个DNS防护系统的核心分为5大块,包括DNS预处理,DNS检测,DNS防护,DNS Cache,DNS信息分析及统计。这个系统为DNS服务系统提供专项的安全监控,消除攻击,日志分析,域名管理和监控等服务,实现对DNS服务器的全面保护和监控。
2.2 DNS报文预处理
在网络上经常会存在一些不符合规范的DNS报文(域名超长,非法字符等),这些报文虽然量不大,但是由于报文内容不规范,可能导致服务器出现未知的问题。一般情况下,DNS防护模块无法区分不规范报文和正常报文,可添加专门的预处理模块进行过滤,对于DNS报文,严格按照RFC1034,1035,2181的规定,对于不符合的报文直接进行丢弃。
此外,还可以添加DNS访问控制,用户可以根据需要设置域名,IP以及DNS类型的黑白名单,对报文进行过滤。例如,如果出现一些IP或者域名经常发动攻击,那么可以让这部分报文不经过后续的识别和防护模块,而是直接过滤掉,可以提高整个系统的运行效率。同样,对于一些可信的IP或者域名,也可以不经过后续模块而是直接交给DNS服务器处理,这样可以提高用户访问速度。
2.3 DNS检测和预警
常规根据请求流量阈值的方法来判断是否发生攻击,是有一定的局限性的。例如,在发生一些热点事件时,产生的正常DNS请求流量也会超过平时配置的防护阈值,这样将会发生误报;还有一种情况是,攻击者只发送不多的虚假域名DNS请求,这些请求会造成频繁逐级进行递归查询,造成资源耗尽,但是这种攻击的流量可能恰恰在阈值之下,这样也将会产生漏报。这些是传统的DNS攻击识别的缺陷。而迪普科技采用两种更准确的方法来识别攻击:
1) 实时分析DNS解析失败率。当请求域名不存在,从而导致服务器回应no such name,如果解析失败率增大,则说明有大量无法解析的请求产生(超过指定的阈值),因此可能存在攻击。通过解析失败率即使在攻击流量不大的情况下,也可以发现攻击行为。
2) 实时分析DNS响应报文与请求报文的比例关系。如果攻击流量很大导致服务器被攻击瘫痪,这样服务器将无法回应报文,也就是不会产生no such name 报文,因此可采用一种互补的检测方式,当服务器瘫痪无法回复报文时,那么必然存在DNS服务器响应报文与请求报文之间比例的失衡,当这个比值不断缩小时,就可以认为服务器出现了问题,有可能遭到了攻击。
通过以上两种方法,无论采用什么样的攻击方式都可以迅速的发现并采取进一步的防护手段。
2.4 DNS防护
1) DNS每源IP限速
支持按每源IP限速、每源IP范围限速,可以为不同的源IP设置不同的限速阈值,支持访问量TOP N源IP的识别与展示
2) DNS每域名限速
支持按每域名限速,可以为不同的域名设置不同的限速阈值,支持访问量TOP N域名的识别与展示
3) DNS多级域名限速
上面的方法对于域名离散的攻击是没有办法防护的,但是经过观察,域名的离散通常不是全离散,而是域名部分离散,因此可以把域名分为多级进行防护(.com属于顶级域名,baidu.com属于二级域名,以此类推),对每一个域级单独进行统计并观察,例如,如果产生 *.baidu.com 这样的针对百度子域进行攻击的报文,用传统的全域名进行统计是无法进行防护的,但是针对二级域名就可以轻松的发现并丢弃这种攻击。迪普科技目前支持8级域的检测防护,可以很好的防御针对这种部分子域进行随机的DNS攻击。
4) TCP反弹防护
图1 TCP反弹防护技术
几乎所有的DNS攻击都是用UDP报文,可以利用这个特性来防护一些离散的DNS攻击,当检测到DNS攻击时,设备会回应给客户端一个带有TC标示位的应答报文,这时,正常的主机会重新发起基于TCP的53端口的请求,设备接到TCP的请求后,转化为UDP请求送给DNS服务器,以免DNS服务器由于处理大量TCP报文负载过大。但是,由攻击软件发送的模拟攻击报文不会重发TCP的DNS请求报文,因此所有的DNS攻击都会被设备丢弃而不会到达DNS服务器。
5) DNS重传校验
图2 DNS重传校验技术
当设备检测到有攻击后,会把后续收到的第一个请求报文缓存在本地,不直接转给服务器。正常主机在一段时间(2-5秒)没有收到响应报文后会重发DNS请求报文,但是攻击报文依然会在短时间内不停的发送请求,通过这个特性,我们就可以马上丢弃这些不符合重传时间间隔的攻击报文。
6) 智能指纹识别
当遇到IP地址以及域名都随机的情况下,DNS报文的其它字段可以成为识别DNS攻击的重要手段。通过对报文的三层以及四层进行指纹特征识别,这些字段必然存在一些雷同的指纹特征(例如它的源端口可能是雷同的),因此可以根据这些雷同的指纹特征对DNS请求报文进行检测和防护,这样就可以避开IP地址和域名随机的难题,找到了攻克它的方法。由于攻击报文要做到所有字段全随机十分困难,因此可以利用指纹识别方法进行有效的DNS攻击防护。
7) DNS缓存投毒防护
当收到请求报文后,根据源、目的IP,源、目的端口以及DNS ID五元组建立DNS会话,这时,没有会话的DNS回应报文全部作为恶意投毒攻击而丢弃,只有建立会话的回应报文才递交给后端DNS服务器。会话信息伪造的难度远远大于DNS响应ID,因此攻击者很难将投毒的攻击报文成功发送到DNS服务器。
同时,采用DNS防护设备内置的Cache,可直接提供DNS的解析功能,避免了DNS被投毒后发送的错误解析结果。通过上述两种方法的结合,可有效的对缓存投毒进行防护。
8) DNS 重点域名监控
可以对一些经常受到攻击的热点域名进行重点检测,把这些域名和指定的IP组进行配置,当某个时刻IP出现变化且变化范围不在IP组内时,就发出告警,由管理员向权威服务器确认这个变化,由此可以判断服务器是否遭到攻击。利用这个检测机制,可以及时发现DNS欺骗攻击。
9) DNS回复报文过滤
这种方法主要是为了对设备收到的回复报文进行检测,然后按照指定的规则进行过滤。如果应答中的IP包括内网地址、特殊用途地址、或者用户自定义的地址,则将DNS解析结果中的这些IP地址进行过滤,保留正常地址,之后再对回复报文进行转发,如果解析结果中的所有IP都为非法地址,则将整个报文丢弃。这样就可以使含有非法地址的回复报文无法到达DNS服务器。
2.5 DNS Cache
图3 DNS Cache
由于DNS防护设备的网络处理性能一般总是大于DNS服务器,因此可以利用DNS Cache代替DNS服务器进行回复,这样就可以有效的降低DNS服务器的负荷。当遭到DNS离散攻击时,DNS请求报文首先匹配DNS Cache中的表项,如果命中则直接由DNS Cache回复这个请求;如果未命中,则需要上送DNS 服务器进行递归请求,由于DNS Cache已经回复了大多数的DNS请求,倘若递归请求依然较大,很有可能是攻击流量,可以对这些递归请求进行限速处理,以免DNS 服务器受到影响。
通常情况下,DNS Cache模块会和DNS 防护模块配合使用,先通过DNS Cache对大多数常用请求进行回复,再通过DNS 防护模块对剩下的递归请求进行过滤,最后到达DNS 服务器的流量就非常小了。这样既可以保证用户的正常上网,又大大减轻了DNS服务器的负担。
2.6 DNS信息分析和统计
针对检测和清洗的DNS异常流量,提供丰富的攻击日志和报表统计功能,包括攻击前流量信息、清洗后流量信息、攻击流量大小、时间及排序等信息以及攻击趋势分析等各种详细的报表信息,便于了解网络流量状况。
图4 DNS每源IP流量统计及日志
图5 DNS的解析失败率
2.7 其他攻击防护
除了对DNS攻击防护外,迪普科技的DNS防护方案还可以对其他常规ddos攻击进行有效地防护
1. 大容量硬件ACL
通过配置硬件ACL,只放通需要的报文,例如:DNS相关报文,管理IP所发起的SSH等管理协议报文,使DNS服务器免遭除DNS攻击之外的常规ddos攻击。
2. 丰富的DDoS攻击防护手段
通过SYN Cookie,限制连接数,多维度限速,源IP有效性检查,协议行为识别,异常攻击特征智能识别等技术全方位支持TCP Flood,UDP Flood,SYN Flood,ICMP Flood等DDoS攻击的防护。
原文链接:http://www.dptech.com/index.php?m=content&c=index&a=show&catid=639&id=36
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/23463