一种DNS域名异常访问检测方法及装置与流程

文档序号:14914688发布日期:2018-07-11 00:24阅读:353来源:国知局

本发明属于计算机网络通信领域,具体涉及一种DNS域名异常访问检测方法及装置。



背景技术:

在计算机网络通信中,主机之间需要知道通信对端的IP地址才能够通过IP网络与对方进行通信。然而32位的IPv4地址(IPv6地址为128位)对于通信参与者来说是不容易记忆的。因此,更为直观的域名(如www.google.com.hk)被广泛采用以解决IP地址难以记忆的问题。然而网络通信是基于IP协议来运转的,通过域名并不能直接找到要访问的主机。因此主机需要将用户输入的域名转换为IP地址,这个过程被称为域名解析。

为了完成域名解析,需要域名系统(Domain Name System,DNS)来配合,其是一种用于TCP/IP应用程序的分布式数据库,提供域名与IP地址之间的转换。通过域名系统,用户进行某些应用时,可以直接使用便于记忆的且有意义的域名,而由网络中的DNS服务器将域名解析为正确的IP地址然后返回给用户的主机。域名服务器,是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。域名解析过程是指当某一个应用进程需要将主机名解析为IP地址时,该应用进程就成为域名系DNS的一个客户,并把待解析的域名放在DNS请求报文中发给域名服务器,域名服务器在查找域名后将对应的IP地址放在回答报文中返回给客户机应用进程。DNS递归服务器是DNS解析系统中的重要设备,DNS递归服务器根据缓存中的域名地址信息,对终端用户发起的DNS查询进行响应。

目前,对DNS系统的攻击方式主要有以下几种方式:

第一种攻击方式是流量型拒绝服务攻击。例如基于用户数据包协议(UDP,User Datagram Protocol)流(flood)、基于传输控制协议(TCP,Transmission Control Protocol)flood、DNS请求flood,或拼(PING)flood等。该种方式下的攻击的典型特征是消耗掉DNS服务器的资源,使其不能及时响应正常的DNS解析请求。其中,资源的消耗包括对服务器CPU、网络资源等的消耗。

第二种攻击方式是异常请求访问攻击。例如超长域名请求、异常域名请求等。该种方式下的攻击的特点是通过发掘DNS服务器的漏洞,通过伪造特定的请求报文,导致DNS服务器软件工作异常而退出或崩溃而无法启动,达到影响DNS服务器正常工作的目的。

第三种攻击方式是DNS劫持攻击。例如DNS缓存“投毒”、篡改授权域内容、ARP欺骗劫持授权域等。该种方式下的攻击的特点是通过直接篡改解析记录或在解析记录传递过程中篡改其内容或抢先应答,从而达到影响解析结果的目的。

第四种攻击方式是攻击者利用DNS进行攻击。例如攻击者控制僵尸机群采用被攻击主机的IP地址伪装成被攻击主机发送域名解析请求,大量的域名解析请求被DNS服务器递归查询解析后,DNS服务器发送响应给被攻击者,大量的响应数据包从不同的DNS服务器传回构成了分布式拒绝服务(DDoS,Distributed Denial of Service)攻击。

从上述四种攻击的描述中可以看到,当DNS服务器遭受到DNS攻击时,在DNS服务器端多数表现为DNS域名异常访问。通过对DNS域名异常访问的探测,能够及时发现DNS攻击行为的发生,从而可以采取有效措施,使损失降到最小。



技术实现要素:

本发明的目的是提供一种DNS域名异常访问检测方法及装置,基于KL散度(又称相对熵),及时探测DNS域名异常访问的发生并告警,在DNS域名异常访问发生后,能通过对DNS访问域名的详细分析,提取出DNS异常域名,使DNS服务器运维人员能及时调整DNS服务器的解析规则,消除DNS域名异常访问的影响。

为实现上述目的,本发明的技术方案是:

一种DNS域名异常访问检测方法,步骤包括:

获取DNS服务器与DNS客户端的镜像DNS报文;

对所述DNS报文的DNS数据进行KL散度计算;

如果KL散度大于一散度阈值,则对当前周期内的各域名进行KL散度贡献度计算;

将KL散度贡献度超出一贡献度阈值的域名判定为异常域名,发送DNS域名异常访问告警信息并写入数据库;

如果所述KL散度不大于所述散度阈值,则判断当前周期与正常周期相比是否有TopN新增域名,如果有TopN新增域名(本发明中,TopN为按照访问次数统计的排名,N根据需要设定),则发送DNS域名异常访问告警信息并写入数据库;

如果没有TopN新增域名,则判断TopN域名访问次数变化率(即当前周期的TopN排名为K的域名访问次数与正常周期的TopN排名为K的域名访问次数的差值占正常周期的TopN排名为K的域名访问次数的比率)是否超出一变化阈值,如果超出,则发送DNS域名异常访问告警信息并写入数据库。

进一步地,所述DNS数据包括当前周期和正常周期内的域名访问次数。

进一步地,所述KL散度计算公式为D(p||q)=E[log(p)-log(q)],其中p为当前周期内的域名访问次数概率分布,q为正常周期内的域名访问次数概率分布。

进一步地,所述KL散度贡献度计算公式为C(k)=P(k)[logP(k)-logQ(k)],其中P(k)为当前周期内按查询次数排名为K的域名在当前统计周期内的查询概率,Q(k)为正常周期内按查询次数排名为K的域名在正常周期内的查询概率。

进一步地,所述DNS域名异常访问告警信息包括告警时间、异常域名、域名异常访问次数。

进一步地,所述变化阈值可为正常周期内TopN域名访问次数的50%,该50%为经验值,可根据DNS应用环境的不同调整。

进一步地,如果所述KL散度贡献度超过贡献度阈值,则在发送DNS域名异常访问告警信息并写入数据库后结束当前周期异常访问检测,否则直接结束当前周期异常访问检测。

进一步地,如果有TopN新增域名,则在发送DNS域名异常访问告警信息并写入数据库后结束当前周期异常访问检测。

进一步地,如果TopN域名访问次数变化率超过变化阈值,则在发送DNS域名异常访问告警信息并写入数据库后结束当前周期异常访问检测。

一种DNS域名异常访问检测装置,包括DNS域名分析器,所述DNS域名分析器连接路由器,包括存储器和处理器,所述存储器存储计算机程序,所述程序被配置为由所述处理器执行,所述程序包括上述方法的各步骤指令。

需指出的是,本发明的散度阈值、贡献度阈值、变化阈值因DNS应用环境的不同而有不同数值,需要根据异常访问时的域名分布情况进行设置,设置的原则是既能发现域名异常访问,又能减少误报警情况。

本发明取得的技术效果是:1)当基于域名的DNS攻击发生时,通过计算KL散度能够减少异常域名定位的计算时间,快速定位异常域名。通过比较TopN新增域名变化及域名访问次数变化率,能够补充探测KL散度不能发现的域名异常。2)DNS运维人员可跟据提取的DNS域名特征信息对DNS查询包进行限流,从而消除DNS域名攻击给DNS客户端及DNS服务器带来的影响。

附图说明

图1为DNS域名分析器的部署示意图。

图2为本发明的一种DNS域名异常访问检测方法流程图。

具体实施方式

为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。

本实施例提供一种DNS域名异常访问检测装置,其主要组成部分为DNS域名分析器,部署于路由器旁并连接路由器,如图1所示。

结合上述DNS域名分析器,本实施例还提供一种DNS域名异常访问检测方法,流程如图2所示,其步骤如下:

1)所述DNS域名分析器接收镜像的DNS报文。

2)所述DNS报文的DNS数据包括当前周期内的域名访问次数和正常周期内的域名访问次数,先计算当前周期内的域名访问次数概率分布p和正常周期内的域名访问次数概率分布q,再利用公式D(p||q)=E[log(p)-log(q)]进行KL散度计算。

3)所述KL散度超过一散度阈值时,则标记所述统计周期为DNS异常访问周期,利用公式C(k)=P(k)[logP(k)-logQ(k)]计算所述统计周期的各域名的KL散度贡献度;其中,P(k)为当前周期内按查询次数排名为K的域名在当前统计周期内的查询概率,Q(k)为正常周期内按查询次数排名为K的域名在正常周期内的查询概率。

4)如果KL散度贡献度超出一贡献度阈值,则提取其异常域名,发送DNS域名异常访问告警信息并写入数据库,结束当前周期访问检测,如果未超出,则直接结束当前周期访问检测。

5)如果所述KL散度比对正常,分析TopN域名的变化及域名访问次数变化情况。

6)如果有TopN新增域名,则发送DNS域名异常访问告警信息并写入数据库,结束当前周期访问检测。

7)如果域名访问次数变化率超出一变化阈值(即正常周期内TopN域名访问次数的均值的50%,该50%为经验值,可根据DNS应用环境的不同而改变),则发送DNS域名异常访问告警信息并写入数据库,结束当前周期访问检测。

基于上述方法列举两种情况的实例,具体如下:

实例一:KL散度发现异常的情况

获取DNS服务器与DNS客户端的镜像DNS报文,该DNS报文的DNS数据包括:正常周期三级域名Top20访问次数为[6929,4125,2882,2558,2247,1909,1606,1524,1521,1493,1492,1438,1396,1393,1366,1327,1310,1111,1096,1090],当前周期三级域名Top20访问次数为[5162,5125,4291,3877,3699,2909,2396,2255,2099,2077,1799,1698,1586,1031,913,871,832,637,583,579]。

1.KL散度计算:

利用公式D(p||q)=E[log(p)-log(q)],计算结果为0.0592836940216,大于散度阈值0.05,则触发KL散度贡献度计算。

2.KL散度贡献度计算:

利用公式C(k)=P(k)[logP(k)-logQ(k)],计算结果为[-0.0469338,0.01241366,0.02787585,0.02674004,0.03239344,0.0204169,0.01567415,0.01433331,0.01004723,0.01031805,0.00314446,0.00216838,0.00064735,-0.00952581,-0.01053159,-0.01040258,-0.01055334,-0.0095469,-0.00972182,-0.0096733];

根据需要将贡献度阈值设为0.01,上述计算结果大于0.01的则判定为异常域名访问,则可探测出当前周期内排名为2~10的域名异常访问。

实例二:KL散度未发现异常的情况

获取DNS服务器与DNS客户端的镜像DNS报文,该DNS报文的DNS数据包括:正常周期三级域名Top20访问次数为[6929,4125,2882,2558,2247,1909,1606,1524,1521,1493,1492,1438,1396,1393,1366,1327,1310,1111,1096,1090],当前周期三级域名Top20访问次数:[6758,5125,5082,5058,5047,4909,3606,1634,1591,1583,1512,1498,1486,1453,1396,1382,1350,1259,1188,1002]。

1.KL散度计算:

利用公式D(p||q)=E[log(p)-log(q)],计算结果为0.0253884375402,小于散度阈值0.05,不触发KL散度贡献度计算,而转由查看当前周期与正常周期相比是否有Top20新增域名,本实例中未发现新增域名,则需进一步计算域名访问次数变化率。

2.访问次数变化率计算:

利用公式(N-M)/M,其中,N为当前周期Top20排名为K的域名访问次数,M为正常周期Top20排名为K的域名访问次数,计算结果为[0.72420263,0.02278788,-0.04059681,-0.01016419,0.06408545,-0.00838135,0.05915318,0.06167979,0.00723208,0.01205626,0.00268097,0.01599444,0.00787966,0.00430725,0.0124451,-0.00602864,-0.00839695,0.07470747,0.0100365,0.00825688]。

根据需要将变化阈值设为50%,上述计算结果大于50%的则判定为异常域名访问,则发现排名为1的域名异常访问。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1