著录项信息
专利名称 | 域名系统流量检测方法与域名服务器 |
申请号 | CN201010129301.6 | 申请日期 | 2010-03-19 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2010-09-08 | 公开/公告号 | CN101826996A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/26 | IPC分类号 | H;0;4;L;1;2;/;2;6;;;H;0;4;L;2;9;/;1;2查看分类表>
|
申请人 | 中国科学院计算机网络信息中心 | 申请人地址 | 北京市海淀区中关村南四街4号院2号楼506室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中国互联网络信息中心 | 当前权利人 | 中国互联网络信息中心 |
发明人 | 李晓东;毛伟;尉迟学彪;王欣;金键 |
代理机构 | 北京同立钧成知识产权代理有限公司 | 代理人 | 刘芳 |
摘要
本发明提供一种域名系统流量检测方法与域名服务器,其中方法包括:获取检测周期内接收到的域名查询请求的数量和测量指标类型的实际值;根据所述域名查询请求与测量指标的映射关系和所述域名查询请求的数量,获取所述测量指标类型的预测值;确定所述测量指标类型的实际值和所述测量指标类型的预测值的第一差值;在判断出所述第一差值大于预先获取的阈值时,输出域名系统流量异常报警信息。域名服务器可用于执行域名系统流量检测方法。本发明的域名系统流量检测方法与域名服务器,降低了判定DNS流量异常时的误报率,提高了检测DNS流量异常的准确性。
1.一种域名系统流量检测方法,其特征在于,包括:
获取检测周期内接收到的域名查询请求的数量和测量指标类型的实际值;其中获取所述测量指标类型的实际值包括:在接收到任一域名查询请求时,获取所述任一域名查询请求包括的测量指标,在所述任一域名查询请求包括的测量指标的类型,与已接收到其他域名查询请求包括的测量指标的类型不同时,将所述测量指标类型的实际值增1;
根据域名查询请求与测量指标的映射关系和所述域名查询请求的数量,获取所述测量指标类型的预测值;其中,所述域名查询请求与测量指标的映射关系具体为:所述域名查询请求的数量和所述测量指标类型的预测值满足公式log(V1′)=βlog(N1)+K;确定所述测量指标类型的实际值和所述测量指标类型的预测值的第一差值;
在判断出所述第一差值大于预先获取的阈值时,输出域名系统流量异常报警信息;其中获取所述阈值的过程包括:获取多个测试周期内接收到的域名查询请求的数量和测量指标类型的实际值;对所述多个测试周期的域名查询请求的数量和测量指标类型的实际值进行线性拟合,并根据拟合结果获取参数β和参数K;根据公式log(V2′)=βlog(N2)+K,计算每个测试周期的测量指标类型的预测值;确定每个测试周期的测量指标类型的实际值和测量指标类型的预测值的第二差值;获取多个测试周期的第二差值中最大的第二差值作为所述阈值,以供检测域名系统流量;
其中,N1为所述检测周期内的域名查询请求的数量;
V1′为所述检测周期内的测量指标类型的预测值;
N2为每个测试周期的域名查询请求的数量;
V2′为每个测试周期的测量指标类型的预测值;
β、K为预先获取的、表示所述域名查询请求的数量和所述测量指标类型的预测值之间映射关系的参数,参数β的取值范围为0~1,参数K的取值范围为0~100。
2.根据权利要求1所述的域名系统流量检测方法,其特征在于,所述测量指标为查询域名或源IP地址。
3.根据权利要求1所述的域名系统流量检测方法,其特征在于,当所述测量指标包括多个测量参数时,分别获取各所述测量参数类型的实际值和各所述测量参数类型的预测值;
分别确定各所述测量参数类型的实际值与各所述测量参数类型的预测值的第一差值;
在任一第一差值大于所述任一第一差值对应的第一阈值时,输出域名系统流量异常报警信息。
4.一种域名服务器,其特征在于,包括:
实际值获取模块,用于获取检测周期内接收到的域名查询请求的数量和测量指标类型的实际值;所述实际值获取模块包括:第一获取子模块和第二获取子模块;所述第一获取子模块,用于在接收到任一域名查询请求时,将所述域名查询请求的数量增1;所述第二获取子模块包括:测量指标获取单元,用于在接收到所述任一域名查询请求时,获取所述任一域名查询请求包括的测量指标;判断增值单元,用于在判断所述任一域名查询请求包括的测量指标的类型,与已接收到其他域名查询请求包括的测量指标的类型不同时,将所述测量指标类型的实际值增1;
预测值获取模块,用于根据域名查询请求与测量指标的映射关系和所述域名查询请求的数量,获取所述测量指标类型的预测值;其中所述域名查询请求和测量指标的映射关系具体为:所述域名查询请求的数量和所述测量指标类型的预测值满足公式log(V1′)=βlog(N1)+K;
第一差值确定模块,用于确定所述测量指标类型的实际值和所述测量指标类型的预测值的第一差值;
判断输出模块,用于在判断出所述第一差值大于预先获取的阈值时,输出域名服务器流量异常报警信息;
阈值获取模块,用于获取所述阈值,所述阈值获取模块包括:第二实际值获取单元、第二参数获取单元、预测值获取单元、第二差值确定单元和阈值获取单元;
所述第二实际值获取单元,用于获取多个测试周期内接收到的域名查询请求的数量和测量指标类型的实际值;所述第二参数获取单元,对所述多个测试周期的域名查找请求的数量和测量指标类型的实际值进行线性拟合,并根据拟合结果获取参数β和参数K;所述预测值获取单元,用于根据公式log(V2′)=βlog(N2)+K,计算每个测试周期的测量指标类型的预测值;所述第二差值确定单元,用于确定每个测试周期的测量指标类型的实际值和测量指标类型的预测值的第二差值;所述阈值获取单元,用于获取多个测试周期的第二差值中最大的第二差值作为所述阈值;
其中,N1为所述检测周期内的域名查询请求的数量;
V1′为所述检测周期内的测量指标类型的预测值;
N2为每个测试周期的域名查询请求的数量;
V2′为每个测试周期的测量指标类型的预测值;
β、K为预先获取的、表示所述域名查询请求的数量和所述测量指标类型的预测值之间映射关系的参数,参数β的取值范围为0~1,参数K的取值范围为0~100。
5.根据权利要求4所述的域名服务器,其特征在于,所述测量指标为查询域名或源IP地址。
域名系统流量检测方法与域名服务器\n技术领域\n[0001] 本发明涉及通信技术领域,尤其涉及一种域名系统流量检测方法与域名服务器。\n背景技术\n[0002] 域名系统(Domain Name System;简称为:DNS)是互联网的重要基础设施之一,负责提供域名和网际协议(Internet Protocol;简称为:IP)地址之间的映射和解析,是网页浏览、电子邮件等几乎所有互联网应用中的关键环节。因此,域名系统的稳定运行是实现互联网正常服务的前提。但是,近来针对域名系统的网络攻击行为日益猖獗,域名系统的滥用现象层出不穷,再加上DNS协议本身固有的局限性,域名系统的安全问题面临严峻考验,因此,如何快速有效的检测域名系统的行为异常,避免灾难性事件的发生成为当今域名系统乃至整个互联网所面临的一个重要议题。\n[0003] 由于DNS服务器是通过对其所接收的DNS查询请求进行应答实现对外域名解析服务的,DNS查询数据流直接反映了DNS服务器对外服务的整个过程,因此,现有技术通常通过检测DNS流量的情况来有效评估DNS服务器的服务状况,进而实现对域名系统异常行为的检测。\n[0004] 现有技术中常用的检测DNS流量异常的方法是对发往DNS服务器端的DNS查询请求数据流中的一个或多个测量指标(例如:域名查询请求、源IP地址、查询域名、端口号等)的数量进行实时检测,一旦某时刻某一测量指标的数量超过规定的阈值,则做出DNS流量异常报警,即说明域名系统行为异常。\n[0005] 由于导致DNS流量异常的原因是多方面的,现有技术仅通过瞬时测量某个独立的测量指标来判定DNS流量是否异常,这种方法存在片面性,误报率高,不能准确、有效的实现对DNS流量异常的检测。\n发明内容\n[0006] 本发明的目的是提供一种域名系统流量检测方法与域名服务器,用以提高DNS流量异常检测的准确性。\n[0007] 本发明提供一种域名系统流量检测方法,包括:\n[0008] 获取检测周期内接收到的域名查询请求的数量和测量指标类型的实际值;\n[0009] 根据域名查询请求与测量指标的映射关系和所述域名查询请求的数量,获取所述测量指标类型的预测值;\n[0010] 确定所述测量指标类型的实际值和所述测量指标类型的预测值的第一差值;\n[0011] 在判断出所述第一差值大于预先获取的阈值时,输出域名系统流量异常报警信息。\n[0012] 本发明提供一种域名服务器,包括:\n[0013] 实际值获取模块,用于获取检测周期内接收到的域名查询请求的数量和测量指标类型的实际值;\n[0014] 预测值获取模块,用于根据域名查询请求与测量指标的映射关系和所述域名查询请求的数量,获取所述测量指标类型的预测值;\n[0015] 第一差值确定模块,用于确定所述测量指标类型的实际值和所述测量指标类型的预测值的第一差值;\n[0016] 判断输出模块,用于在判断出所述第一差值大于预先获取的阈值时,输出域名系统流量异常报警信息。\n[0017] 本发明的域名系统流量检测方法与域名服务器,根据一段时间内的测量指标类型的实际值、域名查询请求的数量以及域名查询请求和测量指标之间的映射关系,对DNS流量进行检测,与现有技术相比,降低了判定DNS流量异常时的误报率,提高了检测DNS流量异常的准确性。\n附图说明\n[0018] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。\n[0019] 图1为本发明实施例一提供的域名系统流量检测方法的流程图;\n[0020] 图2为本发明实施例一提供的获取参数和阈值的方法的流程图;\n[0021] 图3为本发明实施例二提供的域名系统流量检测方法的流程图;\n[0022] 图4为本发明实施例二中多个测试周期的查询域名和域名查询请求的双对数变换后的拟合曲线;\n[0023] 图5为本发明实施例二中多个测试周期的源IP地址和域名查询请求的双对数变换后的拟合曲线;\n[0024] 图6为本发明实施例的实验过程中域名查询请求的数量与查询域名的数量随时间的分布示意图;\n[0025] 图7为本发明实施例的试验过程中计算代价和测量指标的变化示意图;\n[0026] 图8为本发明实施例三提供的域名服务器的结构示意图;\n[0027] 图9为本发明实施例四提供的域名服务器的结构示意图。\n具体实施方式\n[0028] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。\n[0029] 在介绍本发明的技术方案之前,首先简单介绍一下堆积定律:\n[0030] 堆积定律(Heap’s Law)最早起源于计算语言学中,用于描述文档集合中所含单词总量与不同单词个数之间的关系,假设一个文档集合含有N个单词,其中不同单词的个数β\n称为字典的大小记为V,则有:V=KN ,其中,K和β为表示单词总数N和字典大小V之间映射关系的参数,其为常数且0<β<1。曾对大量的英文文档进行统计验证了该定律的正确性,并获取到参数K和β的范围,通常0<K<100,0.4≤β≤0.6。该定律说明:随着文本数量的增加,其中涉及的不同单词的个数占文本中单词总量的比例先是突然增大,然后增速放缓,但始终在提高,即随着观察到的文本越来越多,新单词一直在出现,但新单词出现的概率在降低。\n[0031] 本发明技术方案基于上述堆积定律,即在正常网络下,某时间段内DNS服务器端所接收到的DNS查询请求数和查询请求中包括的各测量指标之间遵循堆积定律。\n[0032] 实施例一\n[0033] 图1为本发明实施例一提供的域名系统流量检测方法的流程图,本实施例的执行主体为域名服务器,如图1所示,本实施例的检测方法包括:\n[0034] 步骤11,获取检测周期内接收到的域名查询请求的数量和测量指标类型的实际值;\n[0035] 本实施例根据一段时间内DNS服务器接收到的DNS查询请求的状况检测DNS服务器的工作状态。其中,本实施例称“一段时间”为一个检测周期,即在检测周期结束时输出对DNS服务器流量检测的结果。且该检测周期可以是根据实际应用设定的检测DNS服务器流量的时间间隔,可以时间划分,例如一小时为一个检测周期,也可以根据查询量来划分,例如以每接收一千万次查询请求为一个检测周期。\n[0036] 具体的,DNS服务器接收DNS查询请求,并统计检测周期内DNS查询请求的数量,同时统计测量指标类型的实际值。其中,测量指标从查询请求中获取,例如可以是查询请求中包含的源IP地址或查询域名等;而测量指标类型用于区别不同的测量指标,例如当以源IP地址作为测量指标时,源IP地址:192.168.200.1与源IP地址:192.168.200.2属于不同类型的测量指标,且对应测量指标类型的实际值为2。\n[0037] 本步骤11统计测量指标类型的实际值的过程为:DNS服务器接收到任一DNS查询请求时,获取任一DNS查询请求中的测量指标;并判断获取的任一DNS查询请求中的测量指标的类型,与已经接收到其他域名查询请求包括的测量指标的类型是否相同;若判断结果为不同时,则DNS服务器将相应测量指标类型的实际值增1,并在检测周期结束时获取到测量指标类型的实际值。\n[0038] 步骤12,根据域名查询请求与测量指标的映射关系和域名查询请求的数量,获取测量指标类型的预测值;\n[0039] 具体的,在正常网络状态下,DNS查询请求的数量和测量指标之间遵循堆积定律。\n其中,DNS查询请求的数量相当于堆积定律中的单词总数,而测量指标类型的数量相当于字典大小,即不同的单词数。则DNS查询请求和测量指标类型在数量上满足公式(1),即DNS查询请求和测量指标类型之间的映射关系,公式(1)如下所示:\n[0040] log(V1′)=βlog(N1)+K (1)\n[0041] 由上述可知,若知道DNS查询请求的数量和测量指标类型的数量之间的任一个,根据公式(1)就可以求出另一个;具体的,将根据已知的DNS查询请求的数量和公式(1)计算出的测量指标类型的数量称为测量指标类型的预测值;其中,公式(1)中的各个变量或参数的意义如下:\n[0042] N1为检测周期内的域名查询请求的数量;\n[0043] V1′为在正常网络状态下根据域名查询请求的数量计算出的检测周期内的测量指标类型的预测值;\n[0044] β、K为预先获取的、表示域名查询请求的数量和测量指标类型的预测值之间映射关系的参数,参数β的取值范围为0~1,参数K的取值范围为0~100,具体的参数β、K的获取过程将在后续进行详细介绍。\n[0045] 进一步,由堆积定律可知,当DNS查询请求的数量增加时,测量指标类型的数量会突然增大,然后增速放缓,但始终会增加。在正常网络状态下,根据DNS查询请求的数量和公式(1)计算出测量指标类型的预测值,应该与测量指标类型的实际值相同或相近。\n[0046] 步骤13,确定测量指标类型的实际值和测量指标类型的预测值的第一差值;\n[0047] 具体的,将实际统计出的测量指标类型的实际值和根据公式(1)计算出的测量指标类型的预测值做差,并将差值取绝对值,获取第一差值。\n[0048] 根据DNS查询请求和测量指标类型之间的映射关系即堆积定律可知,若网络正常,则测量指标类型的实际值和测量指标类型的预测值应该相同或相近,因此,第一差值的大小可以表征测量指标类型的实际值和测量指标类型的预测值的接近程度,进而可以表明域名系统流量状况。\n[0049] 步骤14,在判断出第一差值大于预先获取的阈值时,输出域名系统流量异常报警信息。\n[0050] DNS服务器在获取到第一差值后,将第一差值和预先获取的阈值进行比较,当比较出第一差值大于预先获取的阈值时,说明测量指标类型的实际值和测量指标类型的预测值相差较大,进而说明此时DNS服务器流量不正常,应输出流量异常报警信息。\n[0051] 在本实施例中,并不限定阈值的获取方式,该阈值可以是在实际应用中获取的经验值,也可以是根据应用场景预设的允许波动的范围值。本实施例优选在正常网络状态下,通过获取多个测试周期的测量指标类型的实际值和测量指标类型的预测值之间的第二差值,并取其中最大的第二差值作为本步骤14中的阈值。值得说明的是,该阈值在执行本步骤之前获取,但并不限制获取该阈值之后一定要进入检测周期。\n[0052] 本实施例的域名系统流量检测方法,根据域名查询请求和测量指标类型之间的映射关系即堆积定律,获取测量指标类型的预测值;将测量指标类型的实际值和预测值进行比较,根据两者差值的范围来判断DNS服务器流量是否异常;其中,堆积定律将域名查询请求和测量指标结合起来检测DNS流量,与现有技术相比,可以降低判定DNS流量异常时的误报率,提高检测DNS流量异常的准确性;同时本发明技术方案基于检测周期内的域名查询请求来检测DNS服务器的流量,并不像现有技术那样瞬时做出判断,因此,进一步提高了检测DNS流量异常的准确性和有效性。\n[0053] 通常,DNS服务器通过对其所接收的域名查询请求进行应答来实现对外域名解析服务,其中典型的域名查询请求包括时间戳,源IP地址,端口号,查询域名,资源类型等字段。因此,在本实施例中,从查询请求中获取的测量指标是指域名查询请求中的各个字段值,即测量指标可以是时间戳、源IP地址、端口号、查询域名、资源类型等。\n[0054] 进一步,本实施例提供的获取阈值以及公式(1)中参数的实现方式具体如下:\n[0055] 在正常网络状态下,设置多个测试周期,则如图2所示,该实现过程具体包括以下步骤:\n[0056] 步骤111,获取每个测试周期内接收到的域名查询请求的数量和测量指标类型的实际值;\n[0057] 其中测试周期与检测周期相类似,其区别在于测试周期在检测周期之前,以提供检测周期所需的各种参数和信息,并且测试周期一般选择在网络性能比较稳定的时期,即在正常网络状态下,进行测试。\n[0058] 具体的,本步骤111获取测量指标类型的实际值的过程与步骤11相同,不再详细论述。\n[0059] 步骤112,对获取到的多个测试周期内的域名查询请求的数量和测量指标类型的实际值进行线性拟合,并根据拟合结果获取参数β和参数K;\n[0060] 其中,线性拟合可以采用最小二乘法、对等分三组平均法或是分段最佳斜率平均法,本实施例优选为最小二乘法,即通过最小二乘法确定域名查询请求的数量和测量指标类型的实际值之间的线性关系,以及线性系数,即参数β和参数K。\n[0061] 步骤113,根据域名查询请求和测量指标的映射关系,计算每个测试周期的测量指标类型的预测值;\n[0062] 具体的,根据公式(2)计算每个测试周期的测量指标类型的预测值,其中公式(2)如下:\n[0063] log(V2′)=βlog(N2)+K (2)\n[0064] 其中,N2为每个测试周期的域名查询请求的数量;V2′为每个测试周期的测量指标类型的预测值;β、K为根据上述步骤111和步骤112获取的参数,其中参数β的取值范围为0~1,参数K的取值范围为0~100。\n[0065] 步骤114,确定每个测试周期的测量指标类型的实际值和测量指标类型的预测值的第二差值;\n[0066] 具体的,将每个测试周期的测量指标类型的实际值和测量指标类型的预测值做差并取绝对值的结果作为第二差值。\n[0067] 步骤115,获取多个测试周期的第二差值中最大的第二差值作为阈值,以供检测域名系统流量。\n[0068] 值得说明的是,本实施例提供的方法同时可以获取参数和阈值,即在获取参数β和参数K后,直接进行后续操作以获取阈值,即获取参数和阈值使用相同的测试周期,但是,在实际应用中获取参数和阈值的过程可以是独立的,即可以设置不同的测试周期分别用于获取参数和阈值,本实施例提供一种较佳的实施方式,其效率较高。\n[0069] 本实施例中的参数和阈值,通过对正常网络进行测试获取,其测试过程和实际检测过程相似,因此,基于本实施例提供的参数和阈值检测DNS流量,其检测准确性、有效性高。另外,本实施例并未对测试周期和测试周期的数量进行限制,一般而言测试周期的数量越多所得到的阈值越接近实际情况,基于该阈值检测DNS流量时检测效果就越好。\n[0070] 网络攻击的方式多种多样,例如:攻击方为了降低本地DNS缓存命中率,提高攻击效果,往往会随机生成任意域名发往攻击对象;或者攻击者为了提高自己的隐蔽性,而通过控制超大规模的僵尸网络,甚至伪造大量的源IP地址实现攻击,因此,导致域名系统流量异常的原因也是多样的。基于此,本实施例中的测量指标不仅可以是从域名查询请求中获取的单个测量参数,例如源IP地址或者查询域名等,还可以是多个测量参数的集合,例如同时包括源IP地址和查询请求等以应对多种情况。其中测量参数即指从域名查询请求中获取的源IP地址、查询域名或端口号等。\n[0071] 当测量指标包括多个测量参数时,本实施例提供的域名系统流量检测方法需要分别获取各测量参数类型的实际值和各测量参数类型的预测值;并分别确定各测量参数类型的实际值与各测量参数类型的预测值的第一差值;并在任一第一差值大于任一第一差值对应的第一阈值时,输出域名系统流量异常报警信息。其中各第一差值对应的第一阈值可以相同也可以不同,各第一阈值的获取过程同上述步骤111至步骤115所述。\n[0072] 本实施例提供的域名系统流量检测方法,根据多个测量参数对域名系统流量进行检测,其适应性更强。\n[0073] 进一步,在本发明以下各实施例中将以源IP地址和查询域名为例进行说明。\n[0074] 实施例二\n[0075] 图3为本发明实施例二提供的域名系统流量检测方法的流程图。本实施例将基于上述实施例实现,具体的本实施例将结合实际应用对本发明的技术方案从整体上做进一步说明。\n[0076] 以CN域名为例,截止2009年底,CN域名注册量达到1345.6万,CN域名服务器每天接收到的来自世界各地的DNS查询请求总量接近15亿次,每秒接收的查询峰值接近6万次。一旦CN域名服务器出现异常情况,将危及到其下数以千万计的二级域名的安全。因此,本实施例将在CN域名服务器上实施本发明提供的技术方案,即根据本发明提供的方法检测CN域名服务器的流量。具体的本实施例以半小时为一测试周期,总的测试时间为24小时,并以查询域名和源IP地址两个测量指标为例,如图3所示,本实施例的方法包括:\n[0077] 步骤31,将查询域名的实际数量值记为Vname、源IP地址的实际数量值记为Vip以及将DNS域名查询请求的数量记为N,并分别将Vname、Vip、N初始化为0;\n[0078] 步骤32,接收DNS域名查询请求,并更新Vname、Vip和N;\n[0079] 具体的,获取域名查询请求中的信息,该信息包括查询域名和源IP地址;判断其中的查询域名是否是新出现的域名,若是,则将Vname增加1,以实现对Vname的更新;反之,Vname保持不变;同理,判断源IP地址是否是新出现的源IP地址,若是,则将Vip加1,以实现对Vip的更新;反之,Vip保持不变。例如,获取的当前域名查询请求中的源IP地址为\n192.168.200.1,并与之前已接收到其他域名查询请求包括的源IP地址进行比较,判断是否已经存在源IP地址:192.168.200.1,若存在,则Vip保持不变;若不存在,则将Vip加1。\n[0080] 步骤33,判断测试周期是否已到;\n[0081] 本步骤判断从开始接收域名查询请求是否已经半个小时,若是,则执行步骤34;\n反之,则执行步骤32;\n[0082] 步骤34,记录当前测试周期的Vname、Vip和N;\n[0083] 即累计每个测试周期的查询域名的实际值Vname、源IP地址的实际值Vip和域名查询请求的数量N,并存储起来,以供后续处理使用。\n[0084] 步骤35,判断测试时间是否已到;\n[0085] 本实施例中指从开始到此时,是否已经到了24小时,例如可以通过计时器来记录测试周期和测试时间;若是,则执行步骤36;反之,则执行步骤31;\n[0086] 步骤36,分别计算参数βname,Kname和参数βip,Kip;\n[0087] 具体的,本步骤根据记录的多个测试周期(具体为48个测试周期)内的Vname和N进行线性拟合,双对数变换后的拟合结果如图4所示,其中虚线为拟合结果,并根据拟合结果得到参数βname=0.4937,Kname=6.7017;同理,本步骤根据记录的多个测试周期内的Vip和N进行线性拟合,双对数变换后的拟合结果如图5所述,其中虚线为拟合结果,并根据拟合结果得到参数βip=0.3759,Kip=6.5222。\n[0088] 图4、图5的横坐标为域名查询请求的累计总数,纵坐标分别为查询域名的累计总数和源IP地址的累计总数,结合图4和图5对上述结果进行分析,可知在正常网络状态下,查询域名的累计总数、源IP地址的累计总数和DNS域名查询请求的总数在双对数变换后存在线性关系,即符合堆积定律。\n[0089] 步骤37,计算查询域名对应的阈值Yname和源IP地址对应的阈值Yip;\n[0090] 具体的,本步骤计算每个测试周期的查询域名的预测值记为V’name、源IP地址的预测值记为V’ip,以第i(1≤i≤48)个测试周期为例,其计算过程为:\n[0091] 根据步骤36中计算出的参数βname,Kname,利用公式(3)计算V’name;\n[0092] log(V’name)i=βnamelog(Ni)+Kname (3)\n[0093] 其中(V’name)i为第i个测试周期的查询域名的预测值;Ni为第i个测试周期内的DNS域名查询请求的数量;\n[0094] 根据公式(4)计算第i个测试周期的查询域名的实际值(Vname)i和查询域名的预测值(V’name)i之间的绝对误差Yi;\n[0095] Yi=|log(V’name)i-log(Vname)i| (4)\n[0096] 根据上述方法计算出每个测试周期的绝对误差,并将最大绝对误差作为阈值Yname,即\n[0097] Yname=max{Yi}=max{|log(V’name)i-log(Vname)i|} (5)\n[0098] 在本实施例中,i大于等于1小于等于48,即进行测试的测试周期数为48,且该测试周期的个数是根据测试周期的长度和测试时间求出的,但是并不限于此,根据具体应用环境可以选择不同的测试周期和测试时间。\n[0099] 同理,根据公式(6)和公式(7)计算Yip,\n[0100] log(V’ip)i=βiplog(Ni)+Kip (6)\n[0101] Yip=max{|log(V’ip)i-log(Vip)i|} (7)。\n[0102] 在计算出上述各个参数和阈值之后,通过步骤38及后续步骤对CN域名服务器的流量进行检测,假设检测周期也为半个小时;\n[0103] 步骤38,检测周期开始,将Vname、Vip和N初始化为0;\n[0104] 步骤39,接收域名查询请求,并更新Vname、Vip和N;具体的,该步骤同步骤32;\n[0105] 步骤40,判断检测周期是否结束;\n[0106] 即判断从测试开始到当前时刻,是否已经达到预先设定的检测周期的时长(例如,30分钟),若是,则执行步骤41;反之,则执行步骤39;\n[0107] 步骤41,记录当前检测周期的Vname、Vip和N,并计算V’name、V’ip;\n[0108] 具体的,获取当前检测周期内的CN域名查询请求的数量、查询域名的实际值和源IP地址的实际值后,根据公式(3)和上述步骤计算出的参数βname,Kname计算出V’name;根据公式(6)和上述步骤计算出的参数βip,Kip计算出V’ip;\n[0109] 步骤42,计算检测周期的Vname和V’name、V’ip和Vip的绝对差值;\n[0110] 即计算|log(V’name)-log(Vname)|和|log(V’name)-log(Vname)|;\n[0111] 步骤43,分别比较绝对差值与其对应的阈值的大小关系,并当存在绝对差值大于阈值时进行CN域名服务器流量异常报警。\n[0112] 具体的,分别比较绝对差值|log(V’name)-log(Vname)|与阈值Yname的大小,绝对差值|log(V’name)-log(Vname)|与阈值Yip的大小;若|log(V’name)-log(Vname)|大于Yname,或者|log(V’ip)-log(Vip)|大于Yip,或者|log(V’name)-log(Vname)|大于Yname,且|log(V’ip)-log(Vip)|大于Yip时,则发出流量异常报警;反之,说明CN域名服务器流量正常,进一步说明CN域名服务器的工作状态良好,则执行步骤38,即开始新的检测周期。\n[0113] 在本实施例中,同时以查询域名和源IP地址为例进行了说明,但是需要说明的是这两个过程是独立的,是并行实施的两个过程,即如步骤43所述,只要查询域名和源IP地址之中有一个对应的绝对差值大于对应的阈值,即发出流量异常报警。\n[0114] 具体的,若攻击者通过域名进行网络攻击,则可以通过查询域名数据量的变化情况来判断;若攻击者通过伪造源IP地址进行网络攻击,则由此所导致的流量异常将无法体现在Vname和V’name的差异上,这时可以通过观察Vip的异常变化情况,来实现流量异常检测的目的。\n[0115] 本实施例基于CN域名服务器对本发明的技术方案进行了全面详细的说明,本实施例的域名系统流量检测方法同时基于DNS域名查询请求的数量与查询域名的数量之间的映射关系和DNS域名查询请求的数量与源IP地址的数量之间的映射关系,可以从不同的角度对CN域名服务器的流量进行检测,可以进一步提高检测的准确性,降低误报率;同时,本发明技术方案计算量相对较小,部署成本较低,适合在大型DNS服务器上使用。\n[0116] 进一步,本实施例对CN域名服务器进行了多个检测周期的检测,并得到如图4和图5中的圆圈所示的双对数变换后的检测结果,由图可知与双对数变换后的拟合结果基本一致,说明CN域名服务器工作状态正常。\n[0117] 进一步,发明人在C++语言环境下,通过模拟向DNS服务器端发送大量不存在的域名查询请求来实施分布式拒绝服务(Distributed Denial of Service;简称为:DDOS)攻击的实验,对本发明的技术方案的性能进行了测试。\n[0118] 具体的:在C++语言环境下,采用STL(Standard Template Library)中的标准关联容器set来记录查询域名的实际值Vname的集合和源IP地址的实际值Vip的集合,并在内存中进行维护,每来一个DNS查询请求就对这两个集合进行插入操作;本实验中设置测试周期的长度和测试周期的数目分别为30分钟和48,通过测试阶段得到βname=0.4937,Kname=6.7017,由此计算得到的阈值Yname=0.03。并从第50个周期开始实施DDOS攻击,此时DNS服务器端接收到的DNS查询请求异常增多,图6为本发明实施例的实验过程中域名查询请求的数量与查询域名的数量随时间的分布示意图,可以看到在该周期结束时所观测到的Vname异常增大,数据点的位置与拟合直线发生明显偏离,经过计算|log(V’name)-log(Vname)|为0.09,超过获取的阈值Yname=0.03,此时,通过流量异常报警信息提示域名系统流量异常。\n[0119] 此外,本发明提供的技术方案还可以对于查询域名的实际值Vname增量异常过小、源IP地址的实际值Vip异常增大或增量异常过小的情况进行有了效检测。其原理相似,故不再一一论述。\n[0120] 由于set容器封装了一种非常高效的平衡检索二叉树:红黑树(Red-BlackTree),在对set集合进行二分查找和插入时的时间复杂度为O(log2V),其中V为Vname或Vip。如图\n4 8\n7所示,设V大小为10 时对其进行查找所需时间为t,则当V上升为10 时对其进行查找所需时间仅为2t,可见V的增大对于查找和插入的计算代价的增长作用有限。因此,本发明技术方案计算量相对较小,部署成本较低,适合在大型DNS服务器上使用。\n[0121] 实施例三\n[0122] 图8为本发明实施例三提供的域名服务器的结构示意图,如图8所示,本实施例的域名服务器包括:实际值获取模块81、预测值获取模块82、第一差值确定模块83和判断输出模块84。\n[0123] 其中,实际值获取模块81用于在接收到域名查询请求时获取检测周期内接收到的域名查询请求的数量和测量指标类型的实际值;预测值获取模块82与实际值获取模块\n81连接,用于根据域名查询请求和测量指标的映射关系和域名查询请求的数量,获取测量指标类型的预测值;其中映射关系是指域名查询请求的数量和测量指标类型的数量之间满足的堆积定律,如公式(1)所示。\n[0124] 第一差值确定模块83与实际值获取模块81和预测值获取模块82连接,用于在获取测量指标类型的实际值和测量指标类型的预测值后,计算测量指标类型的实际值和预测值的差值,并取绝对值确定第一差值,并将第一差值提供给判断输出模块84;判断输出模块84将第一差值与预先获取的阈值进行比较,判断第一差值和阈值的大小,并在判断出第一差值大于阈值时,输出域名服务器流量异常报警信息;若判断出第一差值小于阈值时,则不输出域名服务器流量异常报警信息,继续对下一检测周期进行判断。\n[0125] 本实施例的域名服务器可用于执行本发明实施例提供的域名系统流量检测方法,由实际值获取模块获取检测周期内的域名查询请求的数量和测量指标类型的实际值,并由预测值获取模块根据域名查询请求和测量指标类型之间的映射关系,即堆积定律获取测量指标类型的预测值,将测量指标类型的预测值和实际值结合起来检测域名服务器的流量,一方面基于对检测周期内的域名查询请求的统计结果对域名服务器进行流量检测,而不是实时进行检测,可以降低判定域名服务器流量异常时的误报率;另一方面通过将测量指标类型的实际值和根据映射关系计算出的测量指标类型的预测值进行比较,并根据比较结果判断域名服务器流量是否发生异常,与直接基于实际值的变化进行判断相比,提高了检测DNS流量的准确性和有效性。\n[0126] 其中,本实施例中的测量指标可以是域名查询请求的数据包中的各个字段值,例如源IP地址、端口号、查询域名等。\n[0127] 进一步,本实施例的实际值获取模块81包括:第一获取子模块811和第二获取子模块812。\n[0128] 其中,第一获取子模块811用于在检测周期内接收到任一域名查询请求时,将域名查询请求的数量增1,以获取检测周期的域名查询请求的数量。\n[0129] 第二获取子模块812用于获取检测周期内测量指标类型的实际值,具体包括:测量指标获取单元8121和判断增值单元8122。测量指标获取单元8121用于在检测周期内接收到任一域名查询请求时,获取任一域名查询请求中包括的测量指标,例如源IP地址、查询域名、端口号等;判断增值单元8122用于将测量指标获取单元8121获取到的测量指标类型与已接收到其他域名查询请求包括的测量指标的类型进行判断,并在判断出测量指标获取单元8121获取到的测量指标的类型与已经收到的其他域名查询请求包括的测量指标的类型不同时,将测量指标类型的实际值增1,以获取检测周期内的测量指标类型的实际值。\n[0130] 进一步,本实施例中的预测值获取模块82中预先存储有域名查询请求和测量指标的映射关系,该映射关系具体为公式(1)所示的关系,即堆积定律,具体详见本发明域名系统流量检测方法实施例相应部分的描述。\n[0131] 由于测量指标和域名查询请求之间符合堆积定律,因此,根据变形后的堆积定律可以准确计算出网络在正常状态下的测量指标的预测值,对堆积定律进行取对数处理,一是为了简化计算过程,二是为了更加直观的显示测量指标和域名查询请求之间的关系。\n[0132] 实施例四\n[0133] 图9为本发明实施例四提供的域名服务器的结构示意图,本实施例基于实施例三实现,如图9所示,本实施例的域名服务器还包括:参数获取模块85和阈值获取模块86。\n[0134] 其中,参数获取模块85包括第一实际值获取单元851和第一参数获取单元852。\n其中第一实际值获取单元851用于获取多个测试周期内接收到的域名查询请求的数量和测量指标类型的实际值,并将获取的结果提供给第一参数获取单元852;第一参数获取单元852对第一实际值获取单元851提供的多个测试周期的域名查询请求的数量和测量指标类型的实际值进行线性拟合,并根据拟合结果获取参数β和参数K,并将获取的参数提供给预测值获取模块82。\n[0135] 其中,阈值获取模块86包括第二实际值获取单元861、第二参数获取单元862、预测值获取单元863、第二差值确定单元864和阈值获取单元865。阈值获取模块86的工作原理如下:\n[0136] 第二实际值获取单元861用于获取多个测试周期内接收到的域名查询请求的数量和测量指标类型的实际值,并将所获取的结果提供给第二参数获取单元862;第二参数获取单元862对第二实际值获取单元861提供的多个测试周期的域名查询请求的数量和测量指标类型的实际值进行线性拟合,并根据拟合结果获取参数β和参数K,并将获取的参数值提供给预测值获取单元863;预测值获取单元863将第二参数获取单元862提供的参数带入公式(2)中,计算每个测试周期的测量指标类型的预测值;第二差值确定单元864与第二实际值获取单元861和预测值获取单元863连接,用于在获取每个测试周期的测量指标类型的实际值和测量指标类型的预测值后,将测量指标类型的实际值和测量指标类型的预测值做差并取绝对值,以获取第二差值,并将获取的第二差值提供给阈值获取单元865;\n阈值获取单元865用于将多个第二差值进行比较,获取其中最大的第二差值作为阈值,并将最大的第二差值提供给判断输出模块84。\n[0137] 本实施例的域名服务器,通过上述各模块提供了一种获取本发明技术方案所需的参数和阈值的实施方式,通过对正常网络进行测试获取,由于测试过程和实际检测过程相似,因此,基于本实施例提供的阈值检测域名服务器的流量,其检测准确性、有效性高。\n[0138] 值得说明的是,本实施例提供的域名服务器中第二实际值获取单元与第一实际值获取单元、第二参数获取单元和第一参数获取单元分别具有相同的功能,在实际实现时可以作为一个功能模块实现,也可以是独立的功能模块,本实施例不对此进行限制。\n[0139] 进一步,本实施例的域名服务器可用于执行本发明实施例提供的域名系统流量检测方法,其详细的工作原理和流程可参见本发明实施例提供的域名系统流量检测方法部分的描述。\n[0140] 具体的,当测量指标包括多个测量参数时,本实施的域名服务器可以具有多套相应的功能模块用于根据不同的测量参数对域名服务器的流量进行检测,也可以使用同一套功能模块结合不同的软件实现根据多个测量参数对域名服务器的流量进行检测,本实施例并不对此进行限制。\n[0141] 总之,本发明实施例根据对一段时间内的域名查询请求的统计结果进行流量检测的技术方案,与实时检测相比,其可以降低对因域名查询请求数量的增多导致的域名服务器流量的正常增长的情况误判率,提高了检测的准确性;另外,根据测量指标和域名查询请求满足的堆积定律计算测量指标类型的预测值,基于测量指标类型的预测值和实际值的比较结果对流量进行检测,进一步提高了对域名服务器流量检测的准确性。\n[0142] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。\n[0143] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
法律信息
- 2021-03-09
专利权的转移
登记生效日: 2021.02.24
专利权人由中国科学院计算机网络信息中心变更为中国互联网络信息中心
地址由100190 北京市海淀区中关村南四街四号变更为100190 北京市海淀区中关村南四街4号院2号楼506室
- 2012-05-23
- 2010-10-27
实质审查的生效
IPC(主分类): H04L 12/26
专利申请号: 201010129301.6
申请日: 2010.03.19
- 2010-09-08
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-12-10
|
2008-06-28
| | |
2
| |
2009-10-28
|
2009-05-27
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |