基于dns协议标准检测dns隧道数据的方法

文档序号:8433953阅读:254来源:国知局
基于dns协议标准检测dns隧道数据的方法
【技术领域】
[0001]本发明属计算机网络技术领域,是一种区分标准DNS协议数据和DNS隧道数据的方法。
【背景技术】
[0002]随着互联网技术的发展,如何控制内网用户访问互联网已经成了网络管理的重点。传统的网络管理以端口来区分各种网络服务,通过开放或关闭某些端口来实现外网访问的控制。DNS域名解析作为最基础的互联网服务,通常需要开放给用户使用。它所使用的是DNS协议,默认端口为UDP53。鉴于DNS端口一般是开放的,许多软件纷纷使用了 DNS隧道技术与外部建立连接。DNS协议数据和DNS隧道数据都使用相同的端口,因此不能简单的通过关闭端口来控制DNS隧道数据,否则用户将无法解析域名。传统的端口控制方法已经无法应对DNS隧道穿透技术,未经授权的外网访问严重威胁着内部网络的安全。

【发明内容】

[0003]本发明的目的在于提出一种区分标准DNS协议数据和DNS隧道数据的方法,使用本发明可以识别DNS隧道数据并对其实行差别服务,或阻止非DNS协议数据穿透DNS端口。
[0004]DNS隧道数据检测原理:
[0005]标准的DNS 协议遵从 RFC1035 (Domain names-1mplementat1n andspecificat1n)标准。
[0006]根据RFC文档的描述:
[0007]1、DNS数据包所携带的内容大小(不包含IP头和UDP头)不得超过512字节。
[0008]2、DNS数据包必须包含头部信息,并在头部信息中表明该数据包是DNS Query还是DNS Response。
[0009]3、DNS客户端向服务端发送DNS Query域名查询请求,DNS服务端收到客户端查询请求后,将返回相同ID的DNS Response响应信息。
[0010]DNS隧道数据则采用私有协议,其不遵从DNS协议标准。为了携带更多数据信息,数据包的内容大小通常会超过512字节。客户端发给服务端的数据包内容不符合DNSQuery域名查询请求格式;服务端返回给客户端的数据包内容也不符合DNS Response响应信息格式。
[0011]根据这些差别,我们可以区分通过DNS端口的数据包是DNS协议数据包还是DNS隧道数据包。
【附图说明】
[0012]图1为本发明系统网络部署方式图
[0013]图2为DNS数据包头部信息格式
[0014]图3为本发明系统对客户端数据包检测流程图
[0015]图4为本发明系统对服务端数据包检测流程图
【具体实施方式】
[0016]下面结合附图对本发明做进一步的详细介绍。
[0017]系统网络部署方式:
[0018]参见图1,本发明系统通常部署在局域网连接互联网的出口网关处,从网络中捕获指定端口的数据包。该端口一般为m)P53,必要时也可以指定或者增加其他端口。
[0019]数据包检测方法:
[0020]检测的标准在于判断通过该端口的数据包是否符合DNS协议,只要不符合RFC1035文档描述的数据包即可判定为DNS隧道数据包,否则为DNS协议数据包。
[0021]RFC1035规定DNS数据包内容长度不得超过512字节。如果数据包内容长度大于512字节,则该数据包可判定为DNS隧道数据包。
[0022]参见图2,RFC1035规定DNS数据包必须包含12个字节的头部信息。头部信息前两个字节(共16位)为ID号,客户端发出的DNS查询包和服务端返回的DNS响应包必须具有相同的ID。头部信息第17位是QR标志位,QR标志位为O表示该数据包为DNS Query数据包,QR标志位为I表示该数据包为DNS Response数据包。头部信息第26-28位是保留位(Z标志位),DNS数据包的Z标志位必须为O。
[0023]这里选择以一种高效的检测方式为例:通过检测数据包内容长度、QR标志位和Z标志位,来判断是否为DNS协议数据包。但并不意味着本发明只能以此作为唯一检测方法。
[0024]1、客户端数据检测
[0025]参见图3,系统捕获到客户端发给服务端的数据包,首先计算不含IP头和UDP头的数据包内容长度。如果数据包内容长度大于512字节,则判定该数据包为DNS隧道数据包。然后提取数据包内容第17位(QR标志位)。如果QR标志位不为0,则判定该数据包为DNS隧道数据包。接着提取数据包内容第26-28位(Z标志位)。如果Z标志位不为0,则判定该数据包为DNS隧道数据包,否则为DNS协议数据包。
[0026]2、服务端数据检测
[0027]参见图4,系统捕获到服务端发给客户端的数据包,首先计算不含IP头和UDP头的数据包内容长度。如果数据包内容长度大于512字节,则判定该数据包为DNS隧道数据包。然后提取数据包内容第17位(QR标志位)。如果QR标志位不为1,则判定该数据包为DNS隧道数据包。接着提取数据包内容第26-28位(Z标志位)。如果Z标志位不为0,则判定该数据包为DNS隧道数据包,否则为DNS协议数据包。
[0028]客户端和服务端的数据通信是双向的。因此可选择只检测客户端数据,也可选择只检测服务端数据,还可以选择同时检测客户端数据和服务端数据。
[0029]该检测方法的优点在于其简单高效。使用该方法过滤DNS端口数据,可以保证所有DNS协议数据包正常通过,同时拦截大部分非DNS协议数据包,使之无法形成DNS隧道。要完整识别DNS协议数据包还是DNS隧道数据包,适当增加ID验证、其他标志位验证和查询响应内容格式验证即可。
[0030]以上实施例仅用于说明本发明而非限制。本领域的普通技术人员应当理解,对本发明修改变形或者等同替换,而不脱离本发明精神范围的,其均应涵盖在本发明的权利要求当中。
【主权项】
1.一种区分标准DNS协议数据和DNS隧道数据的方法。其包含以下步骤: (1):系统捕获指定端口数据包; (2):检查数据包的内容长度并判断其是否超过指定长度,如果超过则认为是DNS隧道数据; (3):检查数据包内容并判断其是否符合标准DNS协议。如果符合则认为是DNS协议数据,否则认为是DNS隧道数据。
2.根据权利要求1的方法,所述步骤(2)判断数据包是否为DNS协议数据包。其特征在于:检查数据包的内容长度是否超过512字节。
3.根据权利要求1的方法,所述步骤(3)判断数据包是否为DNS协议数据包。其特征在于:检查客户端发给服务端的数据包内容是否符合RFC1035描述的DNS Query数据包格式。
4.根据权利要求1的方法,所述步骤(3)判断数据包是否为DNS协议数据包。其特征在于:检查服务端发给客户端的数据包内容是否符合RFC1035描述的DNS Response数据包格式。
【专利摘要】本发明属计算机网络技术领域,是一种区分标准DNS协议数据和DNS隧道数据的方法。系统捕获DNS端口的数据包。当数据包到达检测系统时:1、系统检查数据包内容长度,如果大于512字节则认为是DNS隧道数据。2、系统检查数据包内容并判断其是否符合标准DNS协议(例如:客户端发送DNS Query,服务端回应DNS Response)。如果符合则认为是DNS协议数据,否则认为是DNS隧道数据。使用本发明可以识别DNS隧道数据并对其实行差别服务,或阻止非DNS协议数据穿透DNS端口。
【IPC分类】H04L29-06, H04L29-12
【公开号】CN104754071
【申请号】CN201310755997
【发明人】金琥
【申请人】金琥
【公开日】2015年7月1日
【申请日】2013年12月31日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1