针对DNS服务器的抗DDoS安全网关系统
技术领域
本发明涉及计算机网络安全。具体来说,涉及到DNS服务的拒绝服务攻击(DDoS:Distributed Denial of Service)检测和防御的方法及装置。
背景技术
DNS(Domain Name System)是一个用于管理主机名字和地址信息映射的分布式数据库系统,它将便于记忆和理解的名称同枯燥的IP地址联系起来。整个分布式系统组织为树状结构,全球共有13个根服务器节点,用于解析顶级域域名,如com、net、cn等,其下有各层子DNS服务器,用于解析各自管辖域域名如edu、org等,形成树状结构。域名请求发生时,请求首先到达首选DNS服务器,在本地没有对应域名缓存信息的情况下,迭代发发送请求到各层服务器,依次查找各层管辖域的服务器,直到最小管辖域的服务器回应域名请求。
DNS服务是Internet的基础,对DNS服务的攻击将对整个网络造成严重的影响。针对DNS的各种攻击方式中,分布式拒绝服务攻击(DDoS)是攻击者常用的手法,其影响力最大,打击面最广、攻击效果最明显。由于协议本身的设计缺陷,使得DNS很容易受到此攻击,受到攻击的DNS将无法响应正常的域名解析。
目前,针对DDoS的防范办法有很多,但针对DNS服务的DDoS攻击还没有有效的解决方法。现有的DDoS防御方法不能满足DNS服务保护的要求,例如一种基于数据挖掘的DDoS检测和防御方法,它通过对大量数据包作数据挖掘,并进行特征提取,并根据此DDoS攻击的特征展开过滤,此方法可以有效避免服务器因为攻击而瘫痪的情况,但是此方法在实际实现过程中存在很大问题:容易使得正常流量的某些特征与检测到的特征相符,以至于误杀正常流量;另外,此方法不能根据DNS服务的特性,如网络流量特性,域名请求数据包特点等,而只是根据流量的特征展开检测和防御,因此不能满足DNS服务的安全需求。
发明内容
有鉴于此,本发明就现有DNS服务拒绝服务攻击的特点,提出了一种基于统计分析的检测方案,可以准确的检测到DNS拒绝服务攻击,进而提出了一种基于流量控制的防御方法,有效地过滤攻击流量,保证DNS服务的正常运行。
另外,本发明在此基础上提供了一种针对DNS服务器的抗DDoS安全网关系统,通过将其部署在被保护服务器与外部网络之间,可以有效地保护DNS服务器免受拒绝服务攻击。
本发明提供的针对DNS服务的基于统计分析的检测方案,包括:
基于自学习的网络流量状态统计和特征挖掘;通过网络性能参数阈值设定来实现对DNS异常流量的检测和定位。
所述的网络流量状态统计,具体包括:确定时间段内对域名解析失败率的统计,通过对域名请求标志位的检查计算得到;确定时间段内对网络流量的统计,对所有目标地址为DNS服务器IP,端口为53的请求包的计数;
所述的特征挖掘,具体包括:对域名请求规律的特征挖掘,其中域名请求规律是指两个方面的规律:请求的域名规律和源IP规律。
所述网络性能参数阈值设定,涉及到的参数阈值及设置方法,具体包括以下五个方面的内容:
●正常情况下DNS服务器最大域名请求流量Fmax:DNS服务器正常情况下能够正常解析的最大流量;
●域名解析成功率Rok:假设单个时间窗内DNS成功解析次数与解析总次数之比;
●正常最小域名解析成功率MinRok:MinRok是域名解析成功率的底线,当DNS服务器上域名解析的成功率低于MinRok时,则认为有攻击发生。
● IP请求次数检测阈值Lip:正常情况下单个时间窗内单个IP发起DNS请求的平均次数,当超过此阈值时开始检测。
●单个IP域名请求最大失败率MaxEip:当前时间窗内某个IP访问次数达到检测阈值Lip时,需要计算此IP的域名请求失败率Eip。
本发明提供的针对DNS服务的基于统计分析的防御方法,包括:
部署了攻击特征防御、基线防御两道步骤实现防御,保证通常网络状况下的攻击防御能力和个别、恶劣攻击环境下的基本防御能力;当攻击特征防御效果不佳时,即当过滤攻击包的数量小于总攻击流量的1/5时,启动基线防御。
另外,本发明提供的针对DNS服务的基于规则和特定防御算法的防御方法,还包括:方法中采取了根据检测的防御信息进行流量牵引,对牵引来的流量进行过滤。
所述基于规则的和基于特定防御算法的过滤,具体包括:对白名单中的IP发来的域名请求放行,对黑名单中的IP的域名请求封禁,并对非频繁的域名请求运用TC流量控制工具限制流量。所述黑名单是IP请求次数大于检测阈值Lip,且域名请求失败率大于最大失败率MaxEip的IP列表,所述非频繁域名请求是指请求次数很少的域名,所述白名单是检测器通过统计得到的域名请求成功率大于最小成功率MinRok的IP列表。
本发明提供的针对DNS服务的抗DDoS安全网关系统,包括检测器、过滤器两个核心设备,其中
所述检测器从DNS拒绝服务攻击发生时出现的大量域名请求数据包这一特征入手,检测所有访问者IP地址并记录他们的域名请求次数和成功率,对得到的数据和正常情况及设定的检测阈值进行对比分析,并且依据统计量的情况,动态调节检测阈值的大小,使得检测模块具有自学习能力。检测器是系统中唯一能够拥有全局观点的部件,通过路由器的镜像端口获取网络流量,并实现流量牵引方案的制定和对过滤器的管理,它知道当前网络的部署结构,实现流量牵引方案的制定和对过滤器的管理。
所述过滤器在攻击发生时,接受检测器发送的防御信息,根据检测器发送的防御信息进行流量牵引,对牵引来的流量进行基于规则的和基于特定防御算法的过滤,它只在网络中发现攻击的情况下才会进行流量牵引,它对网络中流量的感知是阶段性和部分性的,过滤器通过在Linux内核Netfilter框架上注册自己的数据包过滤函数和数据结构实现对数据包的过滤。
所述过滤器,其过滤过程将封禁黑名单的DNS域名请求,允许通过可信任的IP(白名单)发起的域名请求,并使用Linux下TC流量控制工具限速分流单位时间内通过的非频繁域名请求。所述黑名单是IP请求次数大于检测阈值Lip,且域名请求失败率大于最大失败率MaxEip的IP列表,所述非频繁域名请求是指请求次数很少的域名,所述白名单是检测器通过统计得到的域名请求成功率大于最小成功率MinRok的IP列表。
另外,所述过滤器还具有基线防御的能力,具体包括,
对DNS请求流量进行基于白名单的过滤,只允许白名单中IP的数据包通过;封禁丢弃黑名单发送的域名请求数据包;进行正常防御的过滤规则的防御效果检测,以便当过滤规则的防御效果达到预定要求时回到正常防御状态。
本发明提供的针对DNS服务的抗DDoS安全网关系统支持两种部署模式:串接模式和旁路模式,其中
串接模式下,检测器和过滤器部署在同一硬件平台上,放置在被保护DNS服务器之前,与被保护DNS服务器串接,流经被保护DNS服务器的所有流量必经过抗DDoS安全网关系统。
旁路模式下,检测器和过滤器部署在不同硬件平台上,检测器通过与连接被保护DNS服务器的上一跳路由器的镜像端口相连,获取流量进行检测,过滤器安置相对于正常流量路径的旁路环境上,无攻击发生时,抗DDoS网关系统并不对流量作牵引和过滤。攻击发生时,检测器通知过滤器攻击发生,过滤器启动流量牵引将正常流量路径上的流量牵引到旁路,展开过滤。旁路模式下,允许部署多个旁路环境,每个旁路环境中安置一台过滤器。
附图说明
图1为针对DNS服务的抗DDoS安全网关系统串接部署图。
图2为针对DNS服务的抗DDoS安全网关系统旁路部署图。
图3为针对DNS服务的抗DDoS安全网关系统检测流程图。
图4为针对DNS服务的抗DDoS安全网关系统过滤流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步描述。
本发明提供的针对DNS服务的抗DDoS安全网关支持两种部署模式:串接模式和旁路模式,分别如图1和图2所示。
如图1所示,串接部署模式,针对少量服务器或出口带宽较小的网络,本发明提供串行部署方式,通过抗DDoS安全网关设备“串联”网络入口端,对针对DNS服务的DDoS攻击进行检测、分析和阻断。
如图2所示,旁路部署模式,针对IDC、ICP或关键业务系统,本发明提供了旁路部署的方式。通常,检测器部署在网络任意位置,过滤器设备“旁路”部署在网络入口下端。检测器主要对网络入口的流量提供监控功能,及时检测针对DNS服务的DDoS攻击。当发现DDoS攻击发生时,检测器会及时通知过滤器,随后由过滤器启动流量牵引机制,从路由器或交换机处分流可疑流量至过滤器,在完成DDoS攻击的过滤后,过滤器再将“干净”的流量注入网络中。同时也可支持集群方式部署。
上述串接和旁路两种不同模式的部署,其差别在于在攻击发生时,串接模式下不进行流量牵引,而旁路需要做流量牵引。串接模式适用于较少服务器的网络环境中,系统和被保护的DNS服务器串接,所有域名请求和应答流量都经过安全网关系统;旁路模式适用于较大规模或较关键的网络环境中,其特点是,正常服务状态下,网关系统的存在不会对系统造成资源和部署结构上的影响——-检测器靠镜像获取检测流量,过滤器处在正常流量路径的旁路上,不对流量产生任何影响,而只在攻击状态下,牵引流量,过滤流量。
串接和旁路两种不同的部署模式下,其检测和过滤的过程是相同的,下面分别对检测和过滤的过程进一步描述。
针对DNS服务的安全网关系统的检测过程基本思想是从DNS拒绝服务攻击发生时出现的大量域名请求数据包这一特征入手,检测所有访问者IP地址并记录他们的域名请求次数和成功率,对得到的数据和正常情况及设定的检测阈值进行对比分析,并且依据统计量的情况,动态调节检测阈值的大小,使得检测模块具有自学习能力。其检测流程如图3所示。
如上所述检测阈值的设定,其阈值设定方法描述如下:
时间窗T的设定:检测只在特定时间段内完成,这样检测特征及时有效。时间窗的取值不宜过大或过小,过大会降低检测的及时性,并且会导致某些统计结果过期,而导致检测准确性的降低;过小,则不能对统计数据作有效的积累。一般可以定为10秒。
正常情况下DNS服务器最大域名请求流量Fmax的设定:它取决于所在网络的通信能力和DNS服务器本身的处理能力。它是衡量当前域名解析流量是否正常的首选判断因素。正常情况下域名请求流量F<Fmax。
域名解析成功率Rok的设定:假设单个时间窗内DNS解析总次数为Nall,成功解析次数为Nok,则Rok=Nok/Nall,其中,通过对单个时间窗内的DNS协议包捕获,并作标志位检查,当Nok同时满足下列条件时计数加1:
●查询响应区分位QR为1;
●查询类型为1即A类查询,(由域名查询IP地址);
● Rcode返回码,为0(没有差错)。
正常最小域名解析成功率MinRok的设定:MinRok的计算方式如下:假设(x1,x2,...xn)为正常情况下某一时刻对DNS服务器解析成功率的观测值,分布如图所示,其呈现出中间高两边低,近乎对称的正态分布规律。
对任一成功率x,其概率密度函数为
依上述假设,(x
1,x
2,...x
n)为n个成功率的统计,其中正常情况最小值为x
min,则发生攻击的概率为
于是对于特定攻击概率,可求得对应的x
min,即为正常情况下的最小成功率MinR
ok,这里所指的特定攻击概率是对网络中正常情况的评估,由DNS服务器维护者根据服务器所服务于的网络群体的性质特征和网络状况得出的衡量值。
IP请求次数检测阈值L
ip的设定:定义为正常情况下单个时间窗内单个IP发起DNS请求的平均次数,当超过此阈值时开始检测。计算如下,L
ip=T内域名请求总数N
all/访问到服务器的IP总数n,即单个时间窗内单个IP请求次数的数学期望,亦可表示为
其中x
i为IP
i对DNS服务器的请求数,n为T内访问到DNS服务器的IP个数。
单个IP域名请求最大失败率MaxEip的设定:若连续三个时间窗内,Eip>m·MaxEip,则将此IP列为恶意IP,其中m为可变系数,可由用户指定,例如m为2,表示允许IP失败率在最大失败率两倍之内。三个时间窗和m的设定将允许单个IP有一定请求异常,避免误测。MaxEip的值需要人为指定,例如允许某一IP域名请求5次失败1次,则MaxEip=1/5。
针对DNS服务的安全网关系统的过滤过程描述为:
检测器记录本时间窗内域名请求的数量及命中率情况,判定是否有攻击发生,同时将该时间窗内统计得到的黑名单和白名单列表传递给过滤工作,用来过滤攻击和定向分流。防御流程如图4所示。
图4中,过滤过程将封禁黑名单的DNS域名请求,允许通过可信任的IP(白名单)发起的域名请求,并使用tc工具限速分流单位时间内通过的非频繁域名请求,非频繁域名请求是指请求次数很少的域名。
上述对黑名单IP进行封禁,是指,将源IP在黑名单中的请求包丢弃。对黑名单IP列表中的IP进行封禁,有效地提高了过滤效率,这是现有DNS解析不具备的功能,是对原有DNS协议的弥补。
上述对非频繁域名请求的流量限制,是使用Linux操作系统中流量控制器(TC)来实现的:在输出端口处建立基于目的IP地址或目的子网的网络号的流量控制,分以下几个方面进行:建立队列、建立分类、建立过滤器,对现有的队列、分类、过滤器进行监视。
其基本使用步骤如下:
1.建立队列,一般情况下,针对一个网卡只需建立一个队列。例如:
将一个cbq队列绑定到网络物理设备eth0上,其编号为1:0;网络物理设备eth0的实际带宽为10Mbit,包的平均大小为1000字节;包间隔发送单元的大小为8字节,最小传输包大小为64字节。
·tc qdisc add dev eth0root handle1:cbq bandwidth10Mbit avpkt1000cell8mpu64
2.建立分类,分类建立在队列之上。一般情况下,针对一个队列需建立一个根分类,然后再在其上建立子分类。对于分类,按其分类的编号顺序起作用,编号小的优先;一旦符合某个分类匹配规则,通过该分类发送数据包,则其后的分类不再起作用。
3.建立过滤器,过滤器主要服务于分类。一般只需针对根分类提供一个过滤器。例如:
应用分类器到cbq队列的根,父分类编号为1:0;过滤协议为IP,优先级别为100。
·tc filter add dev eth0parent1:0protocol IP prio100route
本发明从DNS攻击原理和攻击特征入手,构建了基于攻击特征统计的检测方法,其依据正常情况下的统计数据。检测模型的选择使检测及时有效,有效降低了误测漏测的概率;过滤方案中采用牵引流量和限制流量的防御方式,使得流量在攻击发生时得以分散,有效减低对服务器的冲击,提高了安全性和抗攻击能力。