(信息与通信工程专业论文)应用层协议过滤系统设计与实现.pdf_第1页
(信息与通信工程专业论文)应用层协议过滤系统设计与实现.pdf_第2页
(信息与通信工程专业论文)应用层协议过滤系统设计与实现.pdf_第3页
(信息与通信工程专业论文)应用层协议过滤系统设计与实现.pdf_第4页
(信息与通信工程专业论文)应用层协议过滤系统设计与实现.pdf_第5页
已阅读5页,还剩76页未读 继续免费阅读

(信息与通信工程专业论文)应用层协议过滤系统设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

f 一 寸 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:脯甬式欠 日期:沙卜年铲月加日 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:琶垒丛筮导师签名: 日期: 动o 年争月加e l 一 一 吨 摘要 摘要 随着i n t e r n e t 的快速发展,新的网络应用不断出现,如即时通讯、p 2 p 文件共 享、网络游戏等。这些新的网络应用使得网络拥塞严重、带宽紧张,严重影响了 正常业务的运转。此外,企事业单位、院校及宽带运营商等对网络流量管理有了 新的需求,如禁止网上聊天、p 2 p 下载和玩网络游戏等,从而保证重要业务的质量。 这些需求都需要对应用层协议流量进行过滤。在此背景条件下,本文对协议过滤 系统的设计与实现展开了一系列的研究工作,主要工作内容如下t ( 1 ) 设计实现了基于内存映射机制的高速数据捕获子系统和协议过滤子系统。 本文在分析现有的数据捕获和协议过滤设计所存在的问题基础上,设计了一个基 于内存映射的数据捕获和协议过滤子系统。避免了内核空间和用户空间的数据拷 贝,加速了内核到用户空间的数据包传递以及过滤信息的回注速度,从而提高了 系统的数据处理和过滤效率,可以满足目前高速网络处理需求。 ( 2 ) 设计实现了一个协议可扩展的应用层协议过滤系统。本系统在高速数据捕 获和协议过滤子系统基础上,对捕获的原始数据包进行p 分片重组和传输层的流 重组,运用基于正则表达式的协议识别技术对应用层数据进行分析、识别,并把 需要过滤的协议信息交给协议过滤子系统。该系统可透明的加入网络,也可安装 在网关服务器上使用,对流经它的网络流量进行采集、分析、识别及过滤。 ( 3 ) 设计实现了基于w e b 界面的管理子系统。该子系统运用了a p a c h e 和p h p 技术来控制管理应用层协议过滤系统,方便了管理人员的操作。 测试结果表明,与开源项目l 7 f i l t e r 相比,本文的协议过滤系统在协议识别和 协议过滤的性能上都有所提高,体现了本系统在系统架构设计上的优势。 关键词:内存映射,协议识别,协议过滤 , 叩 p r o t o c o l so na p p l i c a t i o nl a y e r u n d e rt h i sb a c k g r o u n d ,t h e r ei sas e r i e so fs t u d i e so nt h e r e a l i z a t i o no ft h ep r o t o c o lf i l t e r i n gs y s t e mi nt h i sd i s s e r t a t i o n t h e p r i m a r yw o r ki s s u m m a r i z e da sb e l o w : ( 1 ) d e s i g n i n ga n di m p l e m e n t i n gas u b s y s t e mo fh i g h s p e e dd a t ac a p t u r i n ga n d p r o t o c o lf i l t e r i n gb a s e do nm e m o r ym a p p i n gt e c h n o l o g y b a s e do nt h ea n a l y s i so f e x i s t i n gd e s i g n ,t h es u b s y s t e mo fh i g h - s p e e dd a t ac a p t u r i n ga n dp r o t o c o lf i l t e r i n gb a s e d o nm e m o r y m a p p i n gt e c h n o l o g yi sd e s i g n e d o u rs y s t e mc a na v o i dd a t ac o p i e sb e t w e e n t h ek e r n e ls p a c ea n du s e rs p a c e ,i m p r o v et h et r a n s m i s s i o ns p e e do fd a t a p a c k e ta n df i l t e r i n f o r m a t i o nb e t w e e nt h ek e r n da n du s e rs p a c e ,a n d s p e e du pt h es y s t e m sd a t a p r o c e s s i n gs p e e da n df i l t r a t i o ne f f i c i e n c y ( 2 ) d e s i g n i n ga n di m p l e m e n t i n ga na p p l i c a t i o nl a y e rp r o t o c o lf i l t e r i n gs y s t e m ,w i t h t h ep r o t o c o ls i g n a t u r ed a t a b a s em o d i f i a b l e t h es y s t e mc a p t u r e st h eo r i g i n a li pp a c k e t , m a k e sf r a g m e n tr e , a s s e m b l ya n dt r a n s p o r t l a y e rf l o wa n a l y s i s ,i d e n t i f i e sd a t ao nt h e a p p l i c a t i o nl a y e r , a n dr e c o r d st h ei n f o r m a t i o no ff i l t e r i n g t h i ss y s t e m ,b e i n gs n i f f e r , c o u l db et r a n s p a r e n tt ot h en e t w o r k a l s oi tc a nb ei n s t a l l e do nt h eg a t e w a yd e v i c e i t d e a l sw i t ht h en e t w o r kt r a f f i c t h r o u g ht h ec o l l e c t i o n ,a n a l y s i s ,i d e n t i f i c a t i o na n d f i l t e r i n g ,t om e e tt h ed e s i g nr e q u i r e m e n t s ( 3 ) d e s i g n i n ga n di m p l e m e n t i n gaw e bi n t e r f a c ef o rc o n t r o la n dm a n a g e m e n to f a p p l i c a t i o nl a y e rp r o t o c o lf i l t e r i n gs y s t e m t h ea p a c h ea n dp h pa r eu s e dt oc o n s t r u c t t h i ss u b s y s t e m t h i ss y s t e mc 冒t nc o n t r o la n dm a n a g et h e a p p l i c a t i o nl a y e rp r o t o c o l f i l t e r i n gs y s t e m ,f a c i l i t a t i n gt h eo p e r a t i o n s t e s tr e s u l t ss h o wt h a tt h e s y s t e m sp e r f o r m a n c eh a sag r e a ti m p r o v e m e n t , i i e 修 a b s t r a c t c o m p a r e dw i t hl 7 一f i l t e r m e a n w h i l et h et e s tr e s u l ta l s or e f l e c t st h ea d v a n t a g eo f t h e s y s t e ma r c h i t e c t u r e k e yw o r d s :m e m o r ym a p p i n g ,p r o t o c o li d e n t i f i c a t i o n ,p r o t o c o lf i l t e r i n g 1 4 本文组织结构5 第二章相关技术背景及理论基础6 2 1 协议识别技术介绍6 2 1 1 基于端口的协议识别技术6 2 1 2 基于流量特征的协议识别技术7 2 1 3 基于深层数据包的协议识别技术7 2 2 基于正则表达式的协议识别技术8 2 2 1 正则表达式8 2 2 2 正则表达式和有限状态自动机9 2 2 3l i n u x 系统提供的匹配引擎接口1 3 2 3 内存映射技术1 4 2 3 11 i n u x 虚拟内存系统1 4 2 3 2l i n u x 虚拟区域1 5 2 3 3 内存映射1 6 2 4 本章小结1 8 第三章应用层协议过滤系统需求描述1 9 3 1 系统概述1 9 3 1 1 系统描述1 9 3 1 2 系统功能1 9 3 1 3 系统部署2 0 3 2 系统需求2 1 3 2 1 总体描述2 1 i v 目录 3 2 2 功能需求2 2 3 2 3 性能规定2 6 3 3 本章小结2 6 第四章应用层协议过滤系统设计与实现2 7 4 1 系统开发环境2 7 4 2 协议过滤系统总体设计2 7 4 3 内存映射模块2 8 4 3 1v c f d m 设备内存映射设计与实现3 0 4 3 2v c f d m 设备内存组织及其初始化3 1 4 4 数据捕获模块3 4 4 5 协议过滤模块3 6 4 6 用户接口模块3 9 4 6 1 与v c f d m 交互设计与实现3 9 4 6 2 与用户程序接口设计与实现4 1 4 7 协议识别模块4 2 4 7 i 模块总体设计4 2 4 7 2i p 分片重组4 2 4 7 3 流重组管理4 3 4 7 4 协议识别设计与实现5 1 4 7 5 控制接口子模块5 3 4 8 用户管理模块5 4 4 9 本章小结5 5 第五章应用层协议过滤系统测试5 6 5 1 测试环境5 6 5 1 测试网络结构5 6 5 1 2 实验设备5 7 5 2 功能测试5 7 5 2 1 数据捕获功能测试5 7 5 2 2 数据重组测试5 8 5 2 3 协议识别测试5 9 v v i 第一章引言 1 1 研究背景 第一章引言 随着i n t e r n e t 的发展,人们在网络上的应用越来越频繁,网上用户、业务种类 和网络流量不断增长。据中国互联网络信息中心( c y n i c ) 最新发布的第2 3 次 中国互联网络发展状况统计报告【l 】显示,截至2 0 0 8 年1 2 月底,中国上网人数达 到2 9 8 亿人,宽带上网人数为2 7 亿人,手机上网人数有1 1 7 6 0 万。互联网的普 及率达到了2 2 6 。除传统数据业务外,p 2 p 协议传输等新型网络应用使得网络流 量呈几何级数膨胀趋势。网络的普及使得互联网已经成为人们获取信息的重要方 式。人们在互联网上开发了大量应用程序,制定了各种不同的通信协议。这些协 议通过互联网络为人们提供各种各样的服务,方便了人们的生活和工作。 但如果网络流量管理不当,也会给生活或者工作带来了一些负面影响。例如, p 2 p 协议在有多个用户同时进行下载的情况下会占用大量的网络资源,网络整体速 度和效能显著下降,严重影响网络的正常服务,企业和宽带运营商都希望关闭某 些协议的流量;s t o r m 蠕虫利用电驴协议传播自身,建立了一个庞大的僵尸网络, 对网络安全造成了一定的威胁;还有一些非法的信息通过各种网络应用进行传播, 对社会稳定也造成了危害。对这些负面影响的解决都需要对特定的协议进行识别 和过滤,因此,如何识别网络中应用层协议并在需要的时候对其加以限制和过滤 具有很高的实用价值。 1 2 研究现状 为了管理控制网络流量,国内外出现了许多相关的网络流量管理产品和软件项 目,流量管理产品有a l l o tc o m m u n i c a t i o n s 2 1 、l i g h t s p e e d 【3 j 和p a c k e t e e r 【4 j 等公司的 产品,以及国内的北京东方网信公司的p p c a c h e 5 】系统和北京派网软件有限公司的 p 锄a b i t 【6 】产品等等。这些硬件产品一般能够满足高速网络数据处理的要求,但价格 昂贵,致使一般的小中型企业望而却步。有关协议识别和过滤的软件项目主要有 l 7 f i l t e r 【7 1 、i p p 2 p 8 】以及防火墙类系统中的协议识别和过滤子系统等等。这些产品 或软件项目一般都包括数据捕获、协议识别和协议过滤等技术。 电子科技大学硕士学位论文 目前数据包捕获技术包括利用套接字接口、使用网络开发包和基于零拷贝的捕 包技术。 通常使用的套接子s o c k e t 包括:流式套接字( s o c ks t r e a m ) 年 1 数据报套 接字( s o c k及原始套接字 ,在中还有 套接d g r a m ) 以( s o c k r a w ) l i n u x n e t l i n k 字,它是和l i n u x 中n e t f i l t e r 9 联系起来的。套接字接口是操作系统内核提供的应 用程序访问网络链路层的编程接口。通过套接字应用程序可以获取到所需要的网 络数据包。利用原始套接字还可以访问位于底层的传输协议,也可对p 头信息进 行实际的操作。使用s o c k e t 接口开发网络数据捕获程序的优点是使用方便快捷, 并且在系统运行时不需要安装其他的驱动程序。 但是用套接字捕获报文时,报文从网卡进入到应用层要经过i p 、t c p u c p 协 议体系,需要将报文数据从操作内核空间复制到应用空间,这样会占用较多的 c p u 。并且s o c k e t 不能捕获到数据的以太网的包头,这就意味着利用套接字开 发的数据包捕获程序不能获得数据包中带有的m a c 地址的信息。 使用网络开发包捕获数据包也是比较常用的一种方式。网络安全开发包是指用 于网络安全研究和开发的一些专业的开发函数库。它的主要作用是提供用于网络 安全研究和开发的基本功能的实现,为研究者和开发者进一步研究和开发网络安 全提供编程接口,其直接功能是实现了某些网络安全技术,如网络数据包捕获技 术、网络数据包生成技术等。 l i b p c a p t l 0 】( p a c k e tc a p t u r el i b r a r y ) 是u n i x l i n u x 平台下的网络数据包捕获的 函数库。它是一个独立于系统,提供给用户层的包捕获a p i 接口,为底层网络监 听提供了一个可移植的框架。l i b p c a p 支持b p f ( b e r k e l e yp a c k e tf i l t e r ) 过滤机制。 目前很多优秀的网络数据处理软件都是以l i b p c a p 为基础,如著名的s n o r t 1 1 , b r o 1 2 】 在占 守。 在上述的两种数据捕获技术中,网络数据传输必须要经过操作系统并且进行了 多次内存拷贝,内存拷贝操作要消耗大量的c p u 周期和内存资源,从而增加了系 统的处理开销,零拷贝【1 3 :17 】技术应用而生。所谓零拷贝是指在报文收发过程中, 不会出现任何内存间的拷贝。零拷贝技术通过操作系统给网卡和用户区开了一段 共享内存,网卡接收到的数据都被写到这段共用内存中,因为这段内存是网卡和 用户区共用的,所以只要网卡接收到数据,用户程序就可以直接对这些数据进行 访问和操作。同样的,只要用户区程序有网络数据要发送,就可以由网卡程序直 接发送。这样减少了不必要的系统数据调用和中断,使c p u 能够有更多的时间来 处理其它事情。零拷贝技术利用d m a 技术将网络数据包直接存储到系统内核预先 2 第一章引言 分配的共享内存中,应用程序直接对这块内存进行访问,实现真正的“零拷贝 。 零拷贝中存在的最关键问题是同步问题,一边是处于内核空间的网卡驱动向缓 存中写入网络数据包,一边是用户进程直接对缓存中的数据包进行分析,由于两 者处于不同的空间,这使得同步问题变得更加复杂。 也有的产品或软件直接在内核处理网络数据包,这样也不用从内核到用户空间 的数据拷贝。但是由于协议的分析和识别需要耗费很多的c p u 资源,如果把这部 分处理代码放到内核来处理的话,会大大降低操作系统的运行效率,进而影响内 核重要的服务例程。并且,在内核编程也有很多限制,比如:不能访问c 库;必 须使用g n uc ;浮点数很难使用;内核只有一个很小的定长堆栈:由于内核支持 异步中断、抢占和s m p ,因此必须时刻注意同步和并发;可移植性差等等限制。 所以,这些软件项目大多在处理耗时数据时,都把分析处理数据部分放到了用 户空间来处理,而把性能要求比较高的少量代码放到内核中执行。比如,l 7 f i l t e r 项目的作者也正是看到了这一点,把原来在内核实现的协议识别部分移到了用户 空间,并用面向对象语言c + + 来重新实现了原来的代码。此外还有i p p 2 p 、s n o r t 、 b r o 等开源项目都是在用户空间处理网络数据包,以及许多垃圾邮件过滤系统也是 如此处理。 协议识别技术是相关研究中比较多的一个。文献【l8 】首先提出利用主机在传输层 表现出的行为模式来对当今日益复杂的网络协议进行分类,这种方法完全避开了 对报文内容的检查,将研究焦点转移到网络主机的行为上。文献【l9 】从网络直径的 角度对p 2 p 网络进行识别,指出了p 2 p 网络的直径一般大于5 个t t l 。z 锄d 一2 0 j 等人则第一次将机器学习的理论引入到协议识别技术中,结合数据挖掘技术运用 贝叶斯分类理论进行协议识别。文献【2 l 】首次全面的分析了s k y p e 的传输特征,指 出s k y p e 由超级节点和普通节点组成,并在软件第一次启动时会连接硬编码到软件 中几个固有超级节点,端口号为3 3 3 3 3 ,但后来的研究发现田】这几个固有节点会随 着版本不同而变化。 文献 2 3 】提出一种基于应用层特征字匹配方法,作者研究了几种当时流行的p 2 p 协议( g n u t e l l a , k a z a a ,d i r e c t c o n n e c ,tb i t t o r r e n ,te d o n k e y ) 的控制流和数据流,提取 了这几种p 2 p 协议中t c p 连接中应用层的特征字段。s u b h a b r a t as e n 等人于2 0 0 4 年初提出基于应用签名的p 2 p 流量检测方法【2 4 】,该方法把p a y l o a d 特征分为固定偏 移量特征和变化偏移量特征。第一步检查固定偏移量,第二步检查变化偏移量, 在性能和精度上都取得了令人满意的效果。文献【2 5 】利用应用层数据分析技术,对 多媒体流量进行分析识别。在文酬2 6 】中,s o m m e r 和p a x s o n 首次提到,相对于使 3 电子科技大学硕士学位论文 用精确匹配字符串的方法,使用正则表达式将会更加有效和灵活。目前s n o r t 、b r o 、 3 c o m 的产品等都已经采用了基于正则表达式的模式集。但这些都是基于n f a 的 识别引擎,m o s c o l a 等鲫使用d f a 取代n f a 并在提高吞吐量( t h r o u g h p u t ) 方面做 出了巨大贡献。之后又有文献在压缩d f a 方面相关研列弱j 。 协议过滤技术一般和数据发送函数联系起来,发送函数根据过滤规则进行数据 包的发送或丢弃操作。发送函数可以在内核实现也可以在用户空间实现。l 7 f i t e r 和i p p 2 p 通过n e t f i l t c r 的传输队列把过滤规则从用户空间传递到内核,在内核利用 n c t f i l t c r 的f o r w a r d 链表实现数据包的过滤。也有许多项目利用l i b n e t 2 s 开源开 发包在用户空间实现数据包的发送。这些过滤方式需要从用户空间到内核的数据 拷贝,性能受到影响。 有关协议识别和过滤系统的研究虽然很多,但存在以下几个问题需要解决: ( 1 ) 内核捕获的数据包如何高效的传递到用户空间。 ( 2 ) 用户空间的处理结果如何快速的回注到内核空间。 ( 3 ) 管理操作不方便,对操作人员要求较高。 已有研究虽然能够解决其中一个问题,但不能兼顾其它问题。零拷贝技术虽然 解决了数据捕获问题,但没有解决用户空间处理结果的回注问题。在l 7 f i l t e r 中, 数据的传输和回注是通过n e t f i l t e r 传输队列,即n e t l i n k 双工套接字,i p p 2 p 也是如 此。s n o r t 和b r o 的数据捕获是用l i b p c a p 开源库,结果的回注一般用的也是n e t l i n k 套接字,或者直接在用户空间发送数据包。它们的这种内核和用户空间数据交互 方式需要多次从内核到用户空间的数据拷贝,严重影响了性能。并且,在确定是 否过滤到来的数据包时,数据包要等待用户空间的回注结果,这不仅影响了系统 的吞吐量,还影响了其它重要业务的传输速率。并且它们的管理方式都是基于命 令行方式操作,对操作人员都有较高要求。 鉴于软件系统的在实际应用中的底层本和灵活性,有必要对上述问题展开研 究,在提高性能的同时提供方便的管理方式。 1 3 本文目的及主要工作 本文的目的是在保持现有协议识别准确率的情况下,从设计实现一个快速高 效的协议过滤系统,以达到有效控制网络流量、改善网络环境的目的,并且提供 良好的用户配置管理的功能,方便管理人员操作。本文的开展工作对现有具有协 议识别和过滤功能的设备和软件系统也有借鉴意义。 4 第一章引言 本文通过对应用层协议过滤系统的设计实现,进行了一系列的研究和应用开 发工作,这些工作主要包括: ( 1 ) 全面综述了协议识别技术的分类和特点,重点分析介绍了基于正则表达式 的协议识别技术和内存映射技术实现原理。 ( 2 ) 研究分析了基于内存映射机制的高速数据捕获和协议过滤技术。并通过基 于虚拟设备的内存映射技术,实现了内核和用户空间的数据包和过滤信息的交互。 ( 3 ) 研究分析了传输层的流重组算法和应用层协议识别算法,并在项目的实际 应用中实现,其中协议识别算法运用基于正则表达式的匹配算法识别应用层协议。 ( 4 ) 设计实现了一个应用层协议过滤原型系统,并对系统进行了功能和性能测 试。测试结果表明,与开源项目l 7 f i l t e r 相比,系统在协议识别和过滤的性能上都 有了很大的提高。 ( 4 ) 设计实现了基于w e b 界面的管理子系统。该子系统应用了a p a c h e 和p h p 技术控制管理应用层协议过滤系统,方便了管理人员的操作。 1 4 本文组织结构 论文一共分为六章。 第一章,引言。主要介绍协议过滤系统的相关背景及现状,并简述论文的主 要工作和组织结构。 第二章,相关技术背景及理论基础。本章详细介绍了协议过滤系统的相关背 景知识,包括协议识别技术,内存映射技术等,重点介绍了基于正则表达式的协 议识别技术。 第三章,应用层协议过滤系统需求描述。本章详细描述了应用层协议过滤系 统的需求分析,对系统的功能和部署进行的概述,并自顶向下给出了系统的各层 数据流图。 第四章应用层协议过滤系统设计与实现。本章对协议过滤系统的整体架构及 各个功能模块的设计和实现进行了详细的描述和分析。 第五章应用层协议过滤系统测试。本章对协议过滤系统的功能和性能进行了 测试,通过图表方式展示了测试结果。 第六章总结。对全文进行总结,并指出进一步的研究工作。 5 电子科技大学硕士学位论文 等。 第二章相关技术背景及理论基础 本章从协议过滤系统的相关技术入手,主要介绍协议识别技术、内存映射技术 2 1 协议识别技术介绍 2 1 1 基于端口的协议识别技术 在以t c p i p 协议通信的各主机之间,每台主机上都可以有一个以上的应用层 网络程序和外界通信,这些不同的网络程序共享同一个主机的妒地址。为了区分 这些不同网络程序的通信数据,t c p i p 协议规定为每一个通信的网络程序绑定一 个不同的端口号,端口号便是用来区分同一个主机上不同的网络程序的。在相互 通信的主机间多是用c s 模式,一些主机运行着服务器程序,为了方便让更多的 用户取得相应的服务,需要默认规定其服务端口号,比如目前广泛使用的w e b 服 务和域名解析服务,其默认端口号分别是8 0 和5 3 。为了统一管理各种服务的默认 端口号,国际互联网代理成员管理局( l n t e m e ta s s i g n e dn u m b e r sa u t h o r i t y ,i a n a ) 规定了紧密邦定0 1 0 2 3 号的公认端口服务和松散邦定1 0 2 4 4 9 1 5 1 号的注册端口。 表2 1 是几种常见的服务端口号。 表2 1 常用服务端口号 6 第二章相关技术背景及理论基础 通常使用这些公开端口进行通信的协议就代表某种特定的应用层服务。例如, 若某个t c p 流使用了端口号8 0 ,则可认为该流是w e b 服务,即h t t p 协议。基 于端口的协议识别技术就是利用了传输层端口号信息,根据公认端口号和注册端 口号来标识协议。算法简单,所需信息少,算法的时间复杂度是所有算法中最低 的。有很多软件都采用了这种方法来进行协议识别,比如著名的e t h e r e a l 、s n i f f e r 等,它们都是采用了端口信息进行了大部分协议的识别。但实际上新出现的协议 都不在i a n a 中注册其端口号,它们采用动态分配端口或私有端口( 4 9 1 5 2 6 5 5 3 5 ) , 甚至一些协议为了躲避封锁采用端口欺骗的手段,利用上述的公开默认端口号进 行通信,这样给协议识别工作带来了迷惑,增加了识别的困难。因此基于端口的 协议识别技术局限性越来越明显,需要研究新的识别方法。 2 1 2 基于流量特征的协议识别技术 由于基于端口的协议识别技术存在局限,尤其是对于目前大量涌现的采用动态 端口技术的p 2 p 协议的识别更是无能为力,基于流量特征的协议识别技术运用而 生。基于流量特征的协议识别技术采集网络数据,对t c p 和u d p 报文进行统计、 分析,并对其流量表现出的特征进行建模方式进行应用层的协议识别。 基于流量特征的协议识别方法对协议变化适应性强,不需要检测报文内容而避 免了密集计算,并且可以识别加密的协议,但是该方法也存在以下几个缺点: ( 1 ) 适合于将流量分成较粗的类型,如p 2 p 流量与非p 2 p 流量,难以按照应用 层协议细分。 ( 2 ) 识别的准确率不高。 ( 3 ) 需要统计分析大量的数据,不适合在线分析。 ( 4 ) 由于当前i p v 4 的地址紧张,企事业单位大多使用私有口在内部互联,而 使用n a t 方式和外界互联。因此,n a t 对外的公有口表现出典型的p 2 p 协议特 点,会引入识别的假阳性。 2 1 3 基于深层数据包的协议识别技术 为了提高协议识别的准确性和细分协议类型,大部分的研究转向基于深层数据 包的协议识别方法。该类方法通过提取应用层数据,分析应用层载荷所具有的协 议特征,建立协议特征库,运用模式匹配算法,判断网络数据流中是否包含特征 库中的某个特征值。如果特征匹配成功,该网络流就是对应应用层协议的数据流。 7 电子科技大学硕士学位论文 大多数产品和开源项目也都采用了此类方法,如c i s c o sp d m l , j u n i p e r s n e t s c r e e n i d p 以及l 7 f i l t e r 、i p p 2 p 等。 根据预先定义协议特征的不同,主要分为字符串模式和正则表达式模式。下面 主要介绍基于字符串匹配的技术,基于正则表达式匹配的技术在下一节作详细介 绍。 基于字符串的协议识别,就是为每一种应用层协议定义唯一的特征字符串,通 过将特征字符串与报文体中的数据进行匹配来确定流所属的协议。定义的特征字 符串必须是该协议特有的、交互过程中出现频率最高的字段,这样才能有效和其 他协议区别开来。 选定了合适的特征字之后,就需要模式匹配算法来和目标文本匹配了。模式匹 配算法按照匹配模式的数目分为单模式匹配和多模式匹配两类。单模式匹配算法 是指一次只能在文本串中对一个模式串进行匹配,而多模式匹配算法则是可同时 对多个模式串进行匹配。 经典的单模式匹配算法是1 9 7 7 年由d e k n u t h 和j h m o r r i s 一起提出的k m p 【3 0 】 算法和r s b o y e r 与j s m o o r e 一起提出的b m 3 1 】算法。在单模式匹配算法的研究 基础上,又研究出了多模式匹配算法,典型的是a h o c o r a s i c k ( a c ) 3 2 1 算法。 这些匹配算法效率虽然高效,但由于字符串的表达能力不够强大,所以最近的 协议识别研究热点转移到了基于正则表达式的匹配上来。 2 2 基于正则表达式的协议识别技术 2 2 1 正则表达式 正则表达式的思想最早由数学家s c k l e e n e 在文献【3 3 j 中提出。一个正则表达式 可以表示一种正则语言,比如正则表达式0 1 + 1 0 表示单个0 后面跟着任意多个1 或者单令1 后面跟着任意多个零的语言。正则表达式有三种基本的运算符:并, 连接,闭包,仅由有限次使用上述三个基本运算符得到的表达式都是正则表达式。 近年来,正则表达式作为一种强大、高效、快捷的文本处理工具迅速发展起来, 正则表达式理论加上不同实现对正则表达式的扩展语法,使使用者很方便的运用 正则表达式来处理和分析文本信息。扩展语法把正则表达式分为特殊字符和普通 文本字符两部分,其中特殊字符又称为“元子符,表2 2 列出部分l i n u x 中正则 表达式元子符及其意义。 8 第二章相关技术背景及理论基础 表2 - 2 正则表达式部分语法规则 正则表达式描述了一种匹配字符串的模式,因此可以用来检查一个文本中是否 包含某个子串,并且可以对匹配的字符串做一些处理。 由于正则表达式比字符串具有更强的表达能力与灵活性,采用正则表达式描述 协议的特征进行协议识别成为主要的研究方向,也是现在研究的热点。目前典型 的基于正则表达式的协议识别项目是l 7 f i l t e r ,l 7 f i l t e r 将每个协议特征用正则表 达式表示,至2 0 0 9 年4 月2 3 号的l 7 f i l t e r 已经支持的协议得到了1 2 5 个,随着一 些新应用的不断出现,l 7 f i l t e r 也在不断的更新其正则表达式模式。此外,在入侵 检测系统s n o r t 和b r o 中也都引入了正则表达式来表示规则。 2 2 2 正则表达式和有限状态自动机 基于正则表达式的匹配技术,需要把正则表达式转化为有限状态自动机才容易 在计算机上模拟实现。有限状态自动机分为两种:确定型有限状态自动机 ( d e t e r m i n i s t i cf i n i t ea u t o m a t o n ,d f a ) 和非确定型有限状态自动机o n o n d c t e r m i n i s t i c f i n i t e a u t o m a t o n ,n f a ) 。 确定型有限状态自动机形式化定义为一个五元组a = ( o ,6q o ,f ) ,其中 a 是d f a 的名称; q 是一个有穷状态集合; 9 电子科技大学硕士学位论文 是一个有穷字母表: 6 是一个转移函数,以一个状态和一个输入符号为输入,返回一个状态; q o q ,是唯一的初始状态; f 是一个接受状态集合( 可空) 。 用五元组表示d f a 既乏味又不直观,所以通常用状态转移图或状态转移表来 表示d f a 。 状态转移图中的每个节点代表一个状态,如果存在转移函数6 ( q ,a ) = p ,其中q 是q 中的状态,a 是中的输入符号,则有从节点q 到节点p 的带a 标记的箭弧。 并且有一个进入初试状态q o 的带s t a r t 标记的箭弧,接受状态的节点用双圆圈表示。 对于中的任何一个字符串q ,若存在一条从q o 到某个接受状态的通路,且这条 通路上所有箭弧的标记字符依序连接成的字符串等于q ,则称q 可为d f a 识别。 图2 1 是能识别偶数个a 和偶数个b 的d f a 的状态转移图。 图2 - 1 识别偶数个a 和偶数个b 的d f a 的状态转换图 它对应的状态转移表如表2 3 所示。 表2 3d f a 状态转移表 状态转移表习惯上行对应状态,列对应输入字符,元素表示状态转移函数的值。 从表2 3 可以看出,当在状态0 时,如果输入是a ,则转移到1 状态,如果输入是 b ,则转移到3 状态,其它的状态类似。按照这个状态转移表正好可以识别偶数个 1 0 第二章相关技术背景及理论基础 a 和偶数个b 的正则表达式。状态转移表也给计算机的编程实现提供了一个好的表 达方式。 d f a 的确定性表现在转移函数的输出恰好返回一个状态,也就是说对任何状态 和输入字符唯一的确定了下一个状态。如果转移函数可以返回0 个、1 个或多个状 态,便是非确定型有限状态自动机的概念。 非确定型有限状态自动机和d f a 一样,也可形式化定义为一个五元组a = ( q , ,6q o ,f ) ,其中: 6 是一个转移函数,以一个状态和一个输入符号作为输入,返回q 的一个子 集合; q o 是初始状态,属于q ; f 是一个接受状态集合( 可空) 。 其它符号的解释等同d f a 。 一个n f a 也可以用状态转移图和状态转移表表示。对于中的任何一个字符 串q ,若存在一条从某个初始状态节点到某个接受节点的通路,且这条通路上所 有弧的标记字符串依序连接成的字符串等于q ,则称q 可为n f a 所识别。图2 2 是识别正则表达式( a l b ) * a b a * b 的n f a 。 aa b 图2 - 2 识别( a i b ) a b a b 的n f a 的状态转移图 图2 2 表示的n f a 对应的状态转移表如表2 4 所示。 表2 4 n f a 状态转移表 电子科技大学硕士学位论文 从表2 - 4 可以看出n f a 的非确定性。当在状态0 时,如果输入是a ,则会转移 到o 状态或1 状态。如果从o 状态走不通,它会回溯到0 状态,再从1 状态开始 匹配。直到找到能够识别的路径,如果所有的路径都不能匹配目标字符串,则表 示不能匹配。 正则表达式转化为等同n f a 的经典算法是t h o m p s o n 构造算法【3 4 1 ,其基本思 想是利用e 转换将正则表达式的非确定有限自动机片断组合在一起,最终构成整 个正则表达式对应的n f a 。主要方法是首先为基本的正则表达式构造的n f a ,如 图2 3 所示的n f a 分别对应着正则表达式、a 。 川 b 1 o p s 的 其它操作即可。 有两种方法都可以建立页表:使用r e m a p _ _ p f n r a n g e 函数一次全部为该区域建 立页表,另一个方法是通过n o p a g e 方法为该区域一次建立一个页表,n o p a g e 方法 更灵活。v c f d m 设备驱动使用n o p a g e 方法来实现缺页处理方法。 n o p a g e 函数具有以下原型: s t r u c tp a g e 宰( * n o p a g e ) ( s t r u e tv m a r e a s t r u c t 幸v m a , u n s i g n e d l o n ga d d r e s s ,i n t 宰t y p e ) : 参数a d d r e s s 是引起错误的虚拟地址,下整到页对齐开始的位置。n o p a g e 函数 定位并返回指向用户所需要的p a g e 结构指针。 缺页处理流程如图禾3 所示。 第四章应用层协议过滤系统设计与实现 开始 蝥 v e s m 三e v n 妄d 岁 = n 获取页偏移p g o f f 根据页偏移调用 v m a l l o c _ t o _ p a g e 获取对 应内核地址 调用g e t _ p a g e 递增该页 引用计数 返回该页地址 图4 - 3v c f d m _ m m _ n o p a g e 函数流程 缺页处理函数的主要功能是返回引起缺页的地址对应的s t m c tp a g e 指针,程序 首先判断引起缺页的地址是否已经超出了该映射的区域,如果没有超过地址范围, 则计算该地址对应的内核地址,首先计算该地址在文件中的偏移量,代码为: p g o f f = ( ( v m a - v m _ p g o f f p a g e _ s h i f t ; 之后根据这个偏移量计算内核地址,代码为: d m a p a g e = v m a l l o ct op a g e ( ( v o i d 枣) ( ( u n s i g n e dl o n g ) v e d m _ d e v o r i g i n a l _ b u f + p g o f f 幸p a g e _ s i z e ) ) ; d m a p a g e 就是要求的s t r u c tp a g e 指针,把这个地址返回即可。 4 3 2v c f d m 设备内存组织及其初始化 v c f d m 设备包括过滤表f i l t e r _ t a b l e ,接收环r x _ b u s y _ r i n g ,空闲环r x _ b u s y _ r i n g , 以及用于存放数据包的缓冲区d a t ab u f 这些结构在内存中连续的分配,如图4 - 4 所示。 过滤表f i l t e rt a b l e 用来存储由协议识别模块分析的需要过滤的流的信息,每个 表目是一个连接的五元组和其所属协议信息。表目结构如下: t y p e d e fs t r u c t s t r u c tq u i n t u p l e 5a d 毗一个连接的五元组 c h a rm a r k ;协议标号 u n s i g n e di n tk a d d r ;该表目内核地址 3 1 电子科技大学硕士学位论文 u n s i g n e di n tp a d d r ;该表目用户地址 v c f d m f i l t e r _ t ; 图4 - 4v c f d m 内存分配图 能够做到快速找到相关流信息,优化查找算法,对该块内存的组织至关重

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论