基于会话及http协议标准检测http隧道数据的方法

文档序号:8001140阅读:430来源:国知局
基于会话及http协议标准检测http隧道数据的方法
【专利摘要】本发明属计算机网络【技术领域】,是一种区分标准HTTP协议数据和HTTP隧道数据的方法。系统捕获HTTP端口的数据包,并根据IP地址和端口建立会话连接表。当数据包到达检测系统时:1、系统检查维护会话连接表,如果没有记录,则增加记录。如果是RST或FIN数据包则从会话连接表中删除记录。2、系统检查数据包内容并判断会话连接是否符合标准HTTP协议(例如:客户端命令GET、POST等,服务端响应HTTP/1.0、HTTP/1.1等)。如果符合则标记该会话为HTTP协议数据,否则标记为HTTP隧道数据。使用本发明可以识别HTTP隧道数据并对其实行差别服务,或阻止非HTTP协议数据穿透HTTP端口。
【专利说明】基于会话及HTTP协议标准检测HTTP隧道数据的方法

【技术领域】
[0001]本发明属计算机网络【技术领域】,是一种区分标准HTTP协议数据和HTTP隧道数据的方法。

【背景技术】
[0002]随着互联网技术的发展,如何控制内网用户访问互联网已经成了网络管理的重点。传统的网络管理以端口来区分各种网络服务,通过开放或关闭某些端口来实现外网访问的控制。WEB浏览作为最基本的互联网服务通常需要开放给用户使用,它所使用的是HTTP协议,默认端口为TCP80。鉴于HTTP端口一般是开放的,各类软件纷纷使用了 HTTP隧道技术与外部建立连接。HTTP协议数据和HTTP隧道数据都使用相同的端口,因此不能简单的通过关闭端口来控制HTTP隧道数据,否则用户将无法浏览网页。传统的端口控制方法已经无法应对HTTP隧道穿透技术,未经授权的外网访问严重威胁着内部网络的安全。


【发明内容】

[0003]本发明的目的在于提出一种区分标准HTTP协议数据和HTTP隧道数据的方法,使用本发明可以识别HTTP隧道数据并对其实行差别服务,或阻止非HTTP协议数据穿透HTTP端口。
[0004]为了方便叙述,首先将本发明涉及的常用术语和标记介绍如下:
[0005]1.SrcIP, SrcPort, DstIP, DstPort:分别表示源 IP、源端口、目标 IP、目标端口。
[0006]2.会话(Sess1n):客户端与服务器一次连接过程中的所有信息数据。
[0007]3.会话连接表(Sess1n Table):用于保存多个会话的数据表,通常可采用哈希表。
[0008]HTTP隧道数据检测原理:
[0009]标准的HTTP 协议遵从 RFC2616 (Hypertext Transfer Protocol—HTTP/1.1)和RFC1945 (Hypertext Transfer Protocol—HTTP/1.0)标准。
[0010]根据RFC文档的描述:
[0011]1、当HTTP客户端向HTTP服务端发起请求时,将发送请求命令:如“GET”、“HEAD”、“POST ”、“PUT ”、“DELETE ”、“ CONNECT ”等。其中“GET ”、“HEAD ”、“POST ”为最常见的 HTTP 命令,其他HTTP命令则较少使用或用于连接代理服务器。HTTP协议标准规定,请求命令应当位于客户端发给服务端的数据首行起始部分。
[0012]例如:
[0013]GET/index.html HTTP/1.1
[0014]Host:www.example, com
[0015]Connect1n:keep-alive
[0016]Accept:text/html
[0017]......
[0018]2、当HTTP服务端收到HTTP客户端的请求命令后,将返回响应信息:如“HTTP/1.12000K”、“HTTP/1.0404 Not Found”等。HTTP协议标准规定,响应信息应当位于服务端发给客户端的数据首行起始部分。
[0019]例如:
[0020]HTTP/1.1 2000K
[0021]Server:Apache
[0022]Content-Type:text/html ;charset = utf-8
[0023]Connect1n:keep-alive
[0024]......
[0025]HTTP隧道数据则采用私有协议,其不遵从HTTP协议标准。客户端发给服务端的数据起始部分不是“GET”、“HEAD”、“P0ST”等请求命令;服务端返回给客户端的数据起始部分也不是 “HTTP/1.1 2000Κ”、“ΗΤΤΡ/1.0404 Not Found” 等状态响应信息。
[0026]根据这些差别,我们可以通过检查一条会话连接客户端最开始的请求命令和服务端最开始的响应信息,来判断该会话是HTTP协议会话还是HTTP隧道会话。

【专利附图】

【附图说明】
[0027]图1为本发明系统网络部署方式图
[0028]图2为本发明系统会话连接表维护处理流程图
[0029]图3为本发明系统对客户端数据包检测流程图
[0030]图4为本发明系统对服务端数据包检测流程图

【具体实施方式】
[0031]下面结合附图对本发明做进一步的详细介绍。
[0032]系统网络部署方式:
[0033]参见图1,本发明系统通常部署在局域网连接互联网的出口网关处,从网络中捕获指定端口的数据包。该端口一般为TCP80,必要时也可以指定或者增加其他端口。
[0034]会话连接表的维护:
[0035]参见图2,系统从网络中捕获到指定端口数据包,从数据包中提取SrcIP、DstIP、SrcPort> DstPort等信息,与会话连接表中已有的项目进行对比。如果会话连接表中不存在该会话记录,则新增本次会话信息到会话连接表中。如果已经存在该会话连接记录,则更新会话最后活动时间。当收到会话结束数据包(TCPRST、TCP FIN)或者会话超时则从会话连接表中删除本次会话信息。
[0036]会话协议检测方法:
[0037]检测的标准在于判断会话数据是否符合HTTP协议,只要符合即可判断该会话为HTTP协议会话,否则为HTTP隧道会话。这里选择以一种高效的检测方式为例:通过检测会话数据前4个字节,来判断是否为HTTP协议。但并不意味着本发明只能以此作为唯一检测方法。
[0038]1、客户端数据检测
[0039]参见图3,系统捕获到客户端发给服务端的会话数据,首先进行组包排序等操作。然后提取客户端数据内容的前4个字节,并将这4个字节统一转换为大写字符。再与“GET”、“HEAD”、“POST”等请求命令进行匹配。(“GET”命令只有3个字节,但HTTP协议标准规定HTTP请求命令后紧跟着空格作为分隔符。因此以“GET”命令加一个空格字符来匹配。同理“CONNECT”命令则截取前4字节,以“CONN”来匹配。)如果匹配成功则标记该会话为HTTP协议会话,否则标记为HTTP隧道会话。
[0040]2、服务端数据检测
[0041]参见图4,系统捕获到服务端发给客户端的会话数据,首先进行组包排序等操作。然后提取服务端数据内容的前4个字节,并将这4个字节统一转换为大写字符。再与“HTTP”等响应信息进行匹配。如果匹配成功则标记该会话为HTTP协议会话,否则标记为HTTP隧道会话。
[0042]在一次会话连接里,客户端数据和服务端数据是双向的。因此可选择只检测客户端数据,也可选择只检测服务端数据,还可以选择同时检测客户端数据和服务端数据。
[0043]以上实施例仅用于说明本发明而非限制。本领域的普通技术人员应当理解,对本发明修改变形或者等同替换,而不脱离本发明精神范围的,其均应涵盖在本发明的权利要求当中。
【权利要求】
1.一种区分标准HTTP协议数据和HTTP隧道数据的方法。其至少包含以下步骤: (1):系统初始化会话连接表; (2):系统捕获指定端口数据包; (3):分析数据包中的IP地址和端口信息,维护会话连接表中的会话状态; (4):分析会话的数据内容,判断会话是否符合HTTP协议标准。如果符合则标记该会话为HTTP协议数据,否则标记为HTTP隧道数据。
2.根据权利要求1的方法,所述步骤(4)判断会话是否符合HTTP协议标准。其特征在于:检查客户端发给服务端的请求命令是否符合HTTP协议标准。
3.根据权利要求1的方法,所述步骤(4)判断会话是否符合HTTP协议标准。其特征在于:检查服务端发给客户端的响应信息是否符合HTTP协议标准。
【文档编号】H04L12/26GK104243228SQ201310248911
【公开日】2014年12月24日 申请日期:2013年6月7日 优先权日:2013年6月7日
【发明者】金琥 申请人:金琥
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1