




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 实现网络入侵检测与防御系统离不开具有数据包捕获和过滤功能的软件工 具包。 本文首先比较了具有代表性的包过滤机制如c s p ff c m u s t a n f o r dp a c k e t f i l t e r ) f l lb p f ( b e r k e l e yp a c k e tf i l t e r ) 等的优缺点,详细分析了b p f 模型;其次, 本文在n e t f i l t e r 功能框架的基础上以内核模块的方式在l i n u x 下实现了b p f 模 型,即m y b p f 模块。该模块以字符设备文件的形式为应用程序提供接口,并在 n e t f i l t e r 框架为i p v 4 定义的n fi pp r er o u t i n g 钩子上挂接了一个钩子函 数,该钩子函数实现b p f 虚拟机,完成对数据包的捕获;最后,本文对m y b p f 模块作了相应的测试并与在s o c kp a c k e t 套接口上实现的b p f 做了性能比 较。 关键词:网络信息安全:入侵检测与防御系统:b p f ;n e t f i l t e r :m y b p f a b s t r a c t 。i h e i m p l e m e n t a t i o no fi n t r u s i o nd e t e c t i o n & p r e v e n t i o ns y s t e md e p e n d so n s o m es o f t w a r es a d d l e b a g st oc a p t u r ea n df i l t e rp a c k e t s t l l i sp a p e rm a k e sa c o m p a r i s o nf i r s t l yo nt h em e r i t sa n dt h es h o r t c o m i n g so f s o m et y p i c a lp a c k e tf i l t e r i n gm o d e l s ,s u c ha sn i t ,c s p f ( c m u s t a n f o r dp a c k e t f i l t e r ) a n db p f ( b e r k e l e yp a c k e tf i l t e r ) e t c a m o n gt h e m ,b p fm o d e l i sd i s c u s s e d i nd e t a i l s e c o n d l y , w ei m p l e m e n tab p fm o d e lc a l l e dm y b p fo nl i n u xa sak e m e l m o d u l ei tc a nc o l l e c tp a c k e t sw i t h i nt h en e t f i l t e rf l a m e ,p r o v i d et h ea p p l i c a t i o n s w i t ha ni n t e r f a c ei nc h a rd e v i c ef i l em a n n e ra n d b ea t t a c h e dt ot h e n f ,i p p r e r o u t i n g h o o kd e f i n e db yn e t f i l t e rf r a m ef o ri p v 4a sah o o k f u n c t i o n f i n a l l y , w ee v a l u a t et h ep e r f o r m a n c eb e t w e e nm y b p fa n do t h e rb p fo n s o c kr c k e ts o c k e t k e y w o r d : n e t w o r ki n f o r m a t i o n s e c u r i t y ;i n t r u s i o n d e t e c t i o n & p r e v e n t i o n s y s t e m ;b p f ;n e f f i l t e r ;m y b p f l i n u x 平台下b p v 模型的研究与实现 第一章绪论 1 1 引言 第一章绪论 近年来,随着网络技术的快速发展和网络应用环境的不断普及,国内信息 安全市场呈现蓬勃发展的趋势,越来越多的企事业单位开始采用防火墙、反病 毒、入侵检测等安全产品来保障其日常工作的安全秩序。在目前市场竞争激烈 的状况之下,越来越多的厂商介入安全领域。而防火墙之类的安全产品的功能 单一,发掘潜力已趋饱和,急需全新的安全防护理念来推动行业市场的进一步 发展。 入侵检测是一种异常识别技术,随着用户安全意识的加强,网络入侵检测 系统已经获得了很大的发展,在网络安全体系中得到了越来越多的应用。但是 网络入侵检测系统仅是一个审计型的系统,它最大的问题在于只能检测攻击, 但不能阻止攻击。换而言之,仅仅依靠网络入侵检测系统并不能保护企业网络 免受恶意攻击。 另外,安全不是一个孤立的问题,光靠任何一款安全产品都不能保证企业 网络的安全。用户需要的是整体安全,需要一个联系紧密的安全防范体系。多 种安全产品的协作互动必将是安全领域的一个趋势。联动的概念最初是由防火 墙厂商c h e c k p o i n t 提出来的,c h e c k p o i n t 提出了o p s e c 开放接口,并与其它 厂商密切合作,实现了c h e c k p o i n t 防火墙和身份认证、内容安全、入侵检测等 产品的互动。现在市场上的主流网络入侵检测产品,例如n f rn i d 、s e c o s h i e l d 等,几乎都可以和c h e c k p o i n t 防火墙进行互动。 防火墙和入侵检测产品的互动并将它们集成在一个产品上,就产生了入侵 防御系统。入侵防御系统是一种主动的、积极的入侵防范、阻止系统。它作为 一种新的安全手段已受到越来越多的重视【t 2 1 。然而,网络入侵防御系统的实现 离不开对网络数据流的截获,这就需要借助于合适的捕获数据包的工具。 目前,具有代表性的包过滤机制主要有n i t ,c s p f ,b p f 和m p e 其中 n i t ( n e t w o r ki n t e r f a c e r a p ) 是s u n o s 的包过滤机q 3 1 3 :l ,它每接收到一个数据包就 先将它拷贝到一个缓存中并传递给n i t 模块,n i t 模块接着申请一个消息缓冲 区并将数据包拷贝到其中,之后送给过滤器模块以判断是接收还是拒绝该数据 包。n i t 的最大缺点在于大量的c p u 周期被浪费在拷贝最后被拒绝的数据包上, 从而降低了性能。 硕士研究生学位论文 图1 1n i t 和b p f 的对比图( 全部接收) 【9 1 p a c k t ls i 霜一b 内s 、 图1 , 2n i t 和b p f 的对比图( 全部拒绝) 【9 2 08孽口至毒、0一空型ko耋上 ,墨v重葛叠、l生肆t k定:4业 l i n u x 甲台下b p f 模型的研究与实现 第一章绪论 2 0 0 0 m e a nn u m b e ro fc p ui n s t r u c t i o n sp e rp a c k e t 6 2 瓣 一 f j i t l l r l j _ 2 3 :蜘 憔琵 ip i x i c r c i 1pi * a c k c ! sui t h 、k , l s l “h o l ”o “ l x k k i 、镰a hq lt 、 , i s t 弘- “t - l i h l g e t 。 , 1 , t w i , t l i l l k 1 1 t l r 、 k l l 1 i r l 、i 【 x , r i 印“b l 吣i 、t c 洲h d s l s “、,3 1 1 d “必雌r 图1 3b p f 和c s p f 过滤性能对比图【9 】 c s p f 口o 7 l ,即c m u s t a n f o r dp a c k e tf i l t e r 。它方面在包的原始位置进行 过滤,减少了内存操作,提高了性能;但另一方面它的过滤规则是通过基于内 存堆栈的过滤器实现的。而堆栈需要内存来模拟,再加上对堆栈操作的特殊性, 使得c s p f 方式的效率也较低。 b p f 8 , 9 , 1 0 , 1 1 ,即b e r k e l e yp a c k e tf i l t e r 。它一方面在包的原始位置进行过滤, 减少了内存操作,提高了性能;另一方面它的过滤规则是通过基于寄存器的过 滤器虚拟机实现的,从而迸一步避开了内存速度瓶颈,大大提高了运行性能。 m p f 7 “。”】,即m a c hp a c k e tf i l t e r 。它是一种b p f 的改进版本,在m a c h 3 0 o s 实现。它具有将多条过滤规则合为一条的功能。 图1 1 、图1 2 和1 3 分别对比了n i t 、c s p f 和b p f 等模型的性能。由此 可知:与n i t 、c s p f 相比,b p f 在性能和效率上具有较大的优势。 目前,在l i n u x 操作系统上使用的较多的数据包捕获工具是l i b p c a p ( 其 w i n d o w s 版本是w i n p c a p ) 。作为一个系统无关的分组捕获函数库,l i b p c a p 为不 同的平台提供了一致的编程接口,具有很好的跨平台兼容性 1 4 , 1 5 , 1 6 】。然而,在 l i n u x 下,l i b p c a p 是使用s o c kp a c k e t 类型的套接口来收集数据包的,每一 个被收集的数据包在内核态由b p f 虚拟机对其进行过滤以决定是否捕获该数据 包。对于较为上层的协议的分析,它往往需要相对较多的过滤代码来区分不同 硕士研究生学位论文 的协议,然后再过滤数据包,而过滤代码越多,所需的执行时间就越长,系统 过滤每个数据包的开销也就越大,从而降低系统的性能。因此,在l i n u x 平台 下l i b p c a p 捕获数据包的性能是还有可提高的空间的。 从上述分析可知:影响i i b l ;i c a p 在l i n u x 下捕获数据包的性能的关键在于数 据包的收集这一环节,系统化费了很多时间在通过b p f 过滤代码来判断不同的 协议上了。为提高捕获数据包的性能,本文借鉴了f r e e b s d 下b p f 模型的实现, 借助n e t f i l t e r 功能框架收集数据包,以内核模块的方式实现了一个用于捕获数 据包的m y b p f 模块。 m y b p f 模块将用于8 6 3 项目苏州古城区水环境监测系统,旨在为其“小 件”安全网关提供一种数据包过滤机制,该监测系统借助公网进行数据和控制 信号的传送。由于所涉及的节点数量和业务量有限,且关闭了一些标准的应用 服务端口,因此,采用基于规则的包过滤是行之有效的。 1 2 研究内容和目标 1 2 1 研究内容 1 、研究b p f 模型的结构、原理以及b p f 虚拟机的实现,并将b p f 虚拟机 以钩子函数的形式挂接到n e t f i l t e r 功能框架上; 2 、分析l i n u x 的n e t f i l t e r 内核防火墙功能及实现,充分了解n e t f i l t e r 完善 的可扩展的功能实现框架,为本文的m y b p f 模块提供收集数据包的功能; 3 、分析l i n u x 内核测试和调试方法,并对m y b p f 做相应的测试。 1 2 2 研究目标 本文的研究目标就是在l i n u x 平台下实现m y b p f 模块,为入侵防御系统提 供一个捕获数据包的机制。并达到以下预期结果: l 、在l i n u x 平台下以文件的形式为用户态进程提供使用b p f 虚拟机的接 口。通过这一接口,用户态进程可以进行读写相应数据包的内容、获取或设置 b p f 文件的状态信息、设置并修改过滤规则等操作; 2 、能够对过滤规则的正确性进行检查并根据过滤规则对收集到的数据流进 行正确的过滤,并将过滤所得的数据流拷贝到内核缓冲区中: 3 、收集网络数据流。 l i n u x 平台下b p f 模型的研究与实现第一章绪论 1 3 本文组织 本文共分为五章,各章主要内容如下: 第一章绪论 对m y b p f 模块的研究背景、内容、和目标等问题做了简要 的概述。 第二章b p f 模型全面介绍了b p f 模型的结构、原理以及b p f 虚拟机的 实现等问题。 第三章m y b p f 系统设计对m y b p f 进行系统设计并实现了m y b p f 模块。 第四章m y b p f 模块的测试主要阐述了在l i n u x 平台下内核模块的测试 方法,并对该模块做了功能和性能上的测试。 第五章总结与展望 对本论文的工作进行了总结,指出了在m y b p f 模块中 一些有待进一步改进和完善的问题。 1 4 本文所做的工作 本文的主要工作是设计和实现一个包过滤工具,即m y b p f 。该模块以b p f 模型为模板,借助n e t f i l t e r 功能框架收集数据包,以字符设备文件的形式为用户 态应用程序提供接口,并以l i n u x 内核模块的方式实现。 硕士研究生学位论文 第二章b p f 模型 b p f ( b e r k e l e y p a c k e tf i l t e r ) 即伯克利数据包过滤器,它是由当时洛仑兹伯 克利实验室的研究人员s t e v e nm c c a n e 和v a nj a c o b s o n 于1 9 9 3 年在u s e n i x 9 3 会议上正式提出的种用于u n i x 内核数据包过滤的机制【l ”。b p f 提出的背景 是当时在u n i x 网络功能使用中出现了对网络监控工具的强烈需求,以便用来分 析和排除网络故障。由于用于监控的程序都运行在用户态,而网络数据包的拷贝 必需跨越内核态和用户态的保护界限,这就需要称为包过滤器的内核代理程序以 提供内核级别的功能使用户程序能够访问未处理的原始网络流量数据。b p f 模型 以其独到的设计优点,提高了运行性能。本章主要介绍b p f 模型的结构及其实 现原理。 2 1 b p f 模型介绍 b p f 主要由网络分接头和包过滤器两个部件组成u o , t & 1 9 f ,如图2 1 所示。 图2 1b p f 原理图 b p f 模型实现包过滤的过程如下: i 、网络设备驱动程序收集网络数据包,交由过滤器处理; 2 、过滤器对收集到的数据包进行过滤。b p f 模型将其实现为b p f 虚拟机, 通过在b p f 虚拟机上执行过滤程序,过滤器决定是否捕获该数据包以及捕获该 6 l i n u x 平台下b p f 模型的研究与实现第二章b p f 模型 数据包的哪些部分: 3 、链路层设备驱动程序重新取得控制权,将过滤后的网络数据包提交给上 层的系统协议栈处理: 4 、在( 2 ) 中被捕获的数据存入缓存。b p f 模型以循环双缓冲为缓存机制: 在s t o r eb u t i e r 中有了数据之后,b p f 模型中的两个缓冲区在适当的时候翻转, 由应用程序从h o i db u f f e r 中读走被捕获的数据: 5 、应用程序对捕获到的数据进行处理。 2 2b p f 过滤功能的描述 一旦引入包过滤机制,系统就会对网络上的每个数据包进行过滤,判断该数 据包是否满足过滤条件,根据判断结果确定是否接收该数据包及接收该数据包的 哪些部分并复制数据包中的相应内容。包过滤机制的引入增加了系统处理数据包 的时间开销,因此过滤的性能是网络监听的关键,低效率的过滤程序更加会引起 数据包丢失和来不及分析等问题。 b p f 过滤功能由包过滤函数描述,有布尔表达树和可控制流图两种方式可 实现包过滤函数i 7 j 。 2 2 1 布尔表达树方式 树型模型具有以下特性: l 、树型模型中节点代表布尔关系如a n d 、o r 等,叶子代表谓词短语,而边表 示布尔操作和操作数的关系。如果函数返回t r u e ,则将数据包拷贝到上层;否则 忽略该数据包; 2 、树型模型中的操作往往基于堆栈。而堆栈需要内存来模拟,其中的p o p 和 p u s h 操作需要做指针的加减运算并从内存读取数据或将数据写入内存; 3 、树型结构可能进行重复操作。 2 2 2 可控制流图方式 c f g ( c o n f i g u r a b l e f l o w g r a p h i c ) 模型具有以下特性: 1 、c f g 模型中节点代表谓词短语,而边代表控制转换。如果谓词短语为t r u e 则转向右边,否则转向左边。每个c f g 图均有两个终结节点,分别表示返回t r u e 或f a l s e 。如果函数返回t r u e ,则将数据包拷贝到上层;否则忽略该数据包; 2 、c f g 模型可基于寄存器操作,从而减少访问内存的次数: 3 、c f g 模型在解释数据包时数据包的解释状态和路径是可记忆的,不需要重复 计算。 硕士研究生学位论文 图2 2 用两种方式分别表示了接收源i p 等于i p a d d r 的i p 包的函数。 可控制流图力式布尔袭达树方式 图2 2 包过滤函数描述图 从两种模型的特性中对比可知:c f g 模型在性能和效率上比树型模型有较 大的优势。因此,出于效率上的考虑,b p f 采用了c f g 模型。 2 3 b p f 虚拟机 b p f 虚拟机9 t 8 1 以c f g 为基本模型,同时也需要其他模块的配合,具体要 求如下: 1 、必须独立于协议,在添加新的协议支持时不需要修改内核。这就要求内核只 把数据包看作字节流; 2 、必须是通用的,指令集必须足够丰富以满足各种需要,计算模型相对通用, 使用控制流方式; 4 、有关包数据的引用尽量减少,将可能比较的域放到寄存器中,进行一次性的 全部比较; 4 、指令的解释只需用一条s w i t c h 语句分支处理,以方便解释执行: 5 、过滤机寄存器集合应该尽量少。 2 3 1 b p f 虚拟机的组成 b p f 模型具体实现为个虚拟机,由以下四个部分组成1 7 1 : 1 、累加器( a ) 2 、变址寄存器( x ) 3 、临时缓存( t e m p ) 5 、隐含的程序计数器( p c ) 其中,累加器a 是一个具有特殊用途的二进制3 2 位的寄存器类型的变量, 专门用来存放操作数或运算结果。在虚拟机执行某种运算前,两个操作数中的一 l i n u x 平台下b p f 模型的研究与实现 第二章b p f 模型 个通常应放在累加器a 中,运算完成后在累加器a 中即可得到运算结果:变址 寄存器x 也是一个二进制3 2 位的寄存器类型的变量,用于存放基地址或操作数: i 临时缓存是一个1 6 字长的寄存器类型的整型数组,用于存放中间变量:而隐含 的程序计数器为个指向用于描述b p f 过滤指令的结构类型的变量的指针,通 过对指针的操作来实现b p f 过滤代码的执行或跳转。 2 3 2b p f 虚拟机的指令格式 b p f 虚拟机采用定长的指令,具体格式如下 7 i : 0 p c o d e :1 6j t :82 f :8 k 指令格式 其中,o p c o d e 占1 6 位,用于指示指令类型和寻址模式; j t 和j f 各占8 位,分别对应真、假情况下的指令跳转偏移量,该偏移量从 当前指令开始计算; k 占3 2 位,为通用字段,可用于其它各种用途。 2 3 3b p f 虚拟机的指令集及其寻址模式 b p f 虚拟机的指令集采用汇编语言的语法格式,共六大类: l 、装载( l o a d ) 指令类用于将操作数拷贝到累加器( 1 d b 、l d h 、l d ) 或变 址寄存器( 1 d x ) 中,l d b 、l d h 、l d 分别复制1 个字节、2 个字节( 半个字) 和4 个字节( 个字) 。需要注意的是:l o a d 指令会自动把从网络数据包中装载的数 据转换为主机字节序的形式,即通过l o a d 指令取得的数据是按主机字节序存放 的: 2 、存储( s t o r e ) 指令类用于将累加器或变址寄存器中的值拷贝到临时缓 存( t e m p ) : 3 、算术( a l u ) 指令类使用指定操作对累加器中数据和操作数进行运算,并 将结果存回累加器中。使用变址寄存器或常量作为操作数。 4 、分支( b r a n c h ) 指令类用于比较在常量或者x 变址寄存器中的数据和 在累加器中的数据,若结果为t r u e ,则转跳到l t 处;否则转跳到l f 处。j e q 指 定比较操作为是否相等,j 昏指定比较操作为是否大于,j g e 指定比较操作为是否 大于等于,j s e t 指定操作为按位与;由指令格式可知,这四个指令跳转偏移量都 不能大于2 5 6 。因此b p f 指令集提供了无条件跳转指令i m p ,其偏移量最大可为 9 硕士研究生学位论文 ( 2 e x p 3 2 ) 一l 。 5 、返回( r e t u r n ) 指令类用于终止过滤器并指定捕获这个数据包的多少 字节,实际捕获字节数是数据包长度和这个制定值间的最小值,若过滤器返回0 , 则丢失整个数据包。 6 、其他( m i s c e l a n e o u s ) 指令类包括所有的其他指令,目前为寄存器转 移指令。t a x 指令用于将累加器中的数据复制到变址寄存器中,t x a 指令用于将变 址寄存器中的数据复制到累加器中。 表2 1 和2 2 分别列出了b p f 虚拟机的指令集及其寻址模式【7 i 。 表2 1b p f 指令集 操作码寻址模式 l d b k x + k 1 l d h k 】 x + k l d撑k l # l e nim k 】吲if x + k 1 l d x撑k l # l e nlm l k 】4 + ( n ( 1 肇o x f ) s tm 医1 s t xmt 1 i m p l l e q撑k ,l t ,l f i g t被,l t ,l f l g e般,l t ,l f l s e t救,l t ,l f a d d拌k x s u b撑kx m h l撑kx d i v搬x a n d拌k x o r撑kx l s h撑kx r s h撑kx r e t 群ka t a x t x a l i n u x 平台下b p f 模型的研究与实现第二章b p f 模型 在指令集中所使用的寻址方式表列如下: 表2 2b p f 寻址模式 寻址模式说明 群k k 中所代表的字面值 # l e n 数据包的长度 m k 临时缓存中偏移量k 处的字 k 数据包中k 字节偏移量处的字节、半字或字 x + k 】数据包中( x + k ) 字节偏移量处的字节、半字或字 l 当前指令的l 偏移量处 械,l t ,l f如果断言真,偏移量为l t :否则,偏移量为l f x 变址寄存器 4 + ( k 】& o x f )数据包k 字节偏移量处字节中的低4 位值乘以4 2 4 b p f 模型应用分析 任何一个应用或者模型都会有一个特定的应用范围或使用限制,b p f 模型也 不例外。 一方面,b p f 模型在设计体制上做了以下两大改进 i , 1 7 , 2 0 : b p f 重新设计了一种基于寄存器的“过滤器虚拟机”,它能够在基于寄存 器的r i s c 处理器上高效率地实现: b p f 使用了一种简单高效的非共享的缓存模型,这种模型在现代机器的 巨大地址空间条件下变为可行。 因此,与其它的数据包捕获机制相比,b p f 模型在性能和效率上有了很大的提高。 另一方面,从b p f 模型原理图可知:在b p f 模型中,每一个由n e t w o r k t a p 收集的数据包都是在交给过滤器过滤后传送给系统协议栈进行处理的;而在不运 行b p f 的情况下,数据包则不再交给过滤器,而是直接传送给系统协议栈进行 处理。因此,b p f 过滤器的存在对网络数据的传送而言是一个额外的开销,b p f 过滤规则的复杂程度直接影响了系统处理数据包的时间。为了尽可能小地影响系 统处理数据包的速度,b p f 所使用的过滤规则要相对简单、短小。这就限制了 b p f 模型的使用范围:它适合于作一些相对简单的协议分析,而把各种相对复杂 的专家系统、特征分析等技术交由入侵检测系统或入侵防御系统处理。 硕士研究生学位论文 第三章m y b p f 系统设计 在第二章中,本文分析了b p f 模型的结构、过滤功能、虚拟机和应用范围 等。本章将从设计目标和系统结构两个方面分析m y b p f 系统的设计。 3 1 m y b p f 设计目标 结合m y b p f 的应用环境和l m l l ) ( o s 的特点,本文旨在设计一个使用方便、 功能完善旦具有较高性能的包过滤工具,即m y b p f ,并期望达到以下目标: 1 、m y b p f 借助n e m l t e r 功能框架提供的钩子收集数据包。用户可根据需要 方便地把钩子函数挂接在不同位置的钩子上收集数据包: 2 、m y b p f 以内核模块的方式实现。用户可动态地将其加载或卸载; 3 、m y b p f 以字符设备文件的方式为应用程序提供接口。用户可通过i o c t l 命 令获取或设置相应的信息; 4 、m y b p f 以b p f 模型为模板,借助b p f 虚拟机对数据包进行过滤,以期具 有较高的性能。 3 2 m y b p f 系统结构 m y b p f 是b p f 模型在l i n u x 平台下的一个实现。和b p f 模型一样,为了尽 可能减少系统处理数据包的额外开销,m y b p f 也要求过滤规则相对简单,适用于 作相对简单的协议分析。它主要用于为入侵防御系统( i p s ) 收集感兴趣的数据 包,起到i p s 中的探测器的作用。 m y b p f 系统结构如图3 1 所示。其中,i p s 是一种主动的、积极的入侵防范、 阻止系统。i p s 分析器负责对捕获的数据进行处理,当它检测到攻击企图后,它 会自动地将攻击包丢掉或采取措施阻断攻击源。 a p i 实现为一个系统无关的分组捕获函数库,用于为不同的平台提供了一致 的编程接口,使之具有较好的跨平台兼容性,如l i b p c a p 。它负责在适当的时候 从h o l db u f f e r 中读取被捕获的数据,交给i p s 处理。 m y b p f 模块是本文工作的重点,它由字符设备文件接口、m y b p f d 类型变量 d 和钩子函数三个部分组成。其中,钩子函数m y b p ( h o o k ( ) 注册在n e t f i l t e r 功能 框架为i p v 4 协议定义的n fi pp r er o u t i n g 这个钩子上,该钩子函数实现 b p f 虚拟机,对流经该钩子的数据包进行过滤;m y b p f d 类型变量d 是一个用于 描述m y b p f 接口信息的变量,它在字符设备文件接口和钩子函数之间起 l i n u x 平台下b p f 模型的研究与实现第三章m y b p f 系统设计 一“一一“一一一一一一一 i :p a c k e t s ,1 ,一 网络设餐驱动程序l 图3 1 m y b p f 系统结构图 承上启下的作用;字符设备文件接口为应用程序或a p i 提供了一个使用接口。 数据包流经m y b p f 的过程如下: 1 、一旦有网络数据包到达网络接口,网络设备驱动程序把数据包交给协议 栈,到达n e t f i l t e r 功能框架为i p v 4 协议定义的n f i p _ p r er o u t i n g 这个钩子; 2 、一旦有网络数据包流经该钩子时,注册在该钩子上的钩子函数 m y b p f _ h o o k 0 就会被调用。m y b p f _ _ h o o k 0 实现了b p f 虚拟机,根据m y b p 删类型 的变量d 中的过滤代码在b p f 虚拟机上对数据包进行过滤,并捕获感兴趣的数 据到变量d 的缓冲区中; 3 、数据包重新交回协议栈; 4 、协议栈对数据包继续处理: 5 、被捕获的数据通过字符设备文件接口交给用户态的a p i ,再由a p i 交给 i p s 的分析器对其进行处理。 从m y b p f 的数据包的流经过程可知:钩子是由n e t f i l t e r 功能框架放置在协议 栈中的,只要数据包流经了m y b p f 所用的钩子,即可确定该数据包的低于该钩 子所在的协议的所有协议,否则,该数据包就不可能流经该钩子。因此,在为 m y b p f 编写过滤代码时就不需要区分低于钩子所在的低层协议的过滤代码,简化 了过滤代码的编写,提高了m y b p f 过滤数据包的性能。 硕士研究生学位论文 3 2 1 钩子函数 3 2 i 1 使用钩子函数的原因 从b p f 模型的分析可知,数据包的收集的效率直接影响了捕获数据包的性 能。一个高性能的捕获数据包工具需要借助一个高效的数据包收集机制。 n e t f i l t e r 最初是由r u s t yr u s s e l l 提出及主要实现的,是l i n u x 2 4 内核实现数 据包过滤、n a t 和数据包处理等的功能框架2 2 2 , 2 3 1 。它主要包括以下三个部分 2 2 , 2 4 】: l 、为每种网络协议定义一套钩子,钩子函数在数据包流过协议栈的几个关键 点( 即钩子) 处被调用; 2 、内核的任何模块可以对每种协议的一个或多个钩子进行注册,实现挂接, 这样当某个数据包被传递给n e t f i l t e r 框架时,内核能检测是否有任何模块对该协 议和钩子函数进行了注册; 3 、那些排队的数据包可以被传递给用户空间进行异步处理。一个用户进程 能检查数据包,修改数据包,甚至可以重新将该数据包通过离开内核的同一个钩 子函数中注入到内核中。 n e f f i l t e r 功能框架具有以下特点: l 、可扩展性。n e t f f i t e r 功能框架为每种协议定义了一套钩子。l i n u x 2 4 版本 的内核最多可为3 2 种网络协议定义一套钩子,协议开发者可根据需要在本协议 中添加一套钩子; 2 、使用简单而且灵活。n e t f i l t e r 功能框架为内核编程者提供了一对注册 和撤消钩子函数的接口,内核编程者可方便地根据需要在任意一个钩子处收集数 据包; 3 、功能强大。n e t t i l t e r 功能框架可方便地实现包过滤、n a t 和包处理等。 n f i p p r e r o u t l n gn l i p f o r w a r dn f i p p o s t r o u t i n g 一- 一一h o o k l p 一道r o u t e 卜一h o o k 3 t 一叫h o o k 4h 一, n fi pl o c a li n 一一;i j 二 l 生! 竺兰l 【r o u t e 】 ? n fi pl o c a lo u t j :一一 ! h o o k 5 ; l f 图3 2i p v 4 协议的钩子集 n e t f i i t e r 功能框架共为i p v 4 协议定义了n fi pp r er o u t i n g 、 n f i p f o r w a r d 、 n f j p l o c a l i n 、 n f i p l o c a l o u t 和 l i n u x 平台下b p f 模型的研究与实现第三章m y b p f 系统设计 n fi pp o s tr o u t i n g 等五个钩子,如图3 2 所示。 数据报流经n e t f i l t e r 功能框架为i p v 4 协议定义的钩子的过程如下: l 、数据报从左边流入钩子集,在进行i p 校验以后,数据报由第一个钩子 n fi pp r er o u t i n g h o o k l 】中的钩子函数进行相应的裁决; 2 、对在h o o k i 中被裁决为a c c e p t 的数据报进行路由选择,以决定该数据 报是需要转发还是发给本机: 3 、对于发往本机的数据报,注册在第二个钩子n f i p l o c a l _ i n h o o k 2 】 中的钩子函数对其进行裁决,并将裁决结果为a c c e p t 的数据报传递给上层协 议: 4 、对于应该被转发的数据报,注册在第三个钩子n fi pf o r w a r d h o o k 3 1 中的钩子函数对其进行裁决,并将裁决结果为a c c e p t 的数据报传递 给h o o k 4 ; 5 、注册在第四个钩子n fi pp o s tr o u t i n g 【h o o k 4 】中的钩予函数对流 经该钩子的数据报进行裁决,并将裁决结果为a c c e p t 的数据报传输到网络上; 6 、 由本机产生的数据报先由注册在第五个钩子 n fi pl o c a l o u t h o o k 5 1 中的钩子函数进行裁决,然后对裁决结果为 a c c e p t 的数据报进行路由选择,最后把流经n f _ i p _ p o s tr o u t i n g h o o k 4 后裁决结果为a c c e p t 的数据报发送到网络上。 从上述分析可知:n e t f i l t e r 功能框架以其可扩展性、使用简单而且灵活和功 能强大等特点,为m y b p f 模块提供了一个高效的数据包收集方式。通过在n e t f i l t e r 功能框架的钩子上收集数据包,m y b p f 模块不再需要用于区分不同低层协议的 b p f 过滤代码,简化了过滤规则,从而减少了系统的额外开销,提高了性能。 3 , 2 1 2 钩子函数相关数据类型 n e t f i l t e r 功能框架提供了以下两个与钩子函数直接相关的类型定义或声明: l 、t y p e d e fu n s i g n e d i n tn fh o o l f f m ( u n s i g n e di n th o o k n 啪、 s t r u c ts k _ b u f f ”s k b , c o n s ts t r u c tn e td e v i c e + i n , c o n s ts t r u c tn e t _ d e v i c e + o u t , i m ( + o k f i a ) ( s t r u c ts k _ b u f f + ) ) ; 该类型定义用于简化钩子函数的函数指针的定义。其中h o o k n u m 指定了该 钩子函数所在的钩子号;s k b 为一个指向网络数据包的二级指针:i n 、o u t 分别为 输入、输出网络数据包的网络接口的指针;而o k f n 则为该网络数据包通过裁决 ( 即裁决结果为a c c e p t ) 后所要执行的函数的指针。 2 、s t r u c tn fh o o k 硕士研究生学位论文 s t r u c tl i s t _ h e a dl i s t ; n f _ h o o k f n + h o o k ; i n tp f ; i mh o o k n u m ; m t p r i o r i t y ; ; 该结构类型声明描述了钩子函数的接口,通过它可指定钩子函数所在的协 议、钩子号、优先级以及在双向链表中的位置。其中,l i s t 包含指向前后两个链 表元素的指针:h o o k 为钩子函数的函数指针;p f 、h o o k n u m 分别为该钩子函数 所在的协议和钩子号;p r i o r i t y 则用于指定该钩子函数的优先级,该值越小,优 先级越高。 3 2 1 3 钩子函数的调用机制 一旦有数据报流经某个钩子,挂接在该钩子上的所有钩子函数就会按定的 优先级依次被调用。n e t f i t t e r 功能框架使用n fi t e r a t e ( ) 函数实现对挂接在钩子上 的所有钩子函数的调用。 n f _ i t e r a t e 0 函数定义在n e t f i l t e r c 文件中,其原型如下: s t a t i cu n s i g n e di n tn f _ i t e r a t e ( s t r u c tl i s t _ h e a d + h e a d , s t r u c ts k _ b u f f ”s k b , i n th o o k , c o n s ts t r u c tn e t d e v i c e + i n d e v , c o n s ts t m c t n e t _ d e v i c e + o u t d e v , s t r u c tl i s t h e a d ”i , i n t ( + o k f n ) ( s t r u c ts k _ b u f f + ) ) 该函数由n fh o o k _ s l o w o 函数调用,用于按优先级从高到低的顺序依次调用 执行挂接在某个钩子上的所有钩子函数,并根据不同的裁决结果返回不同的值。 其流程图如图3 - 3 所示: 每个被调用的钩子函数都会对数据报作出相应的裁决。可能的裁决及其结果 如下( 2 4 】: n f a c c e p t - 继续正常传递数据包 n fd r o p 直接丢弃该数据包 n f s t o l e n 一模块接管该数据包,不再继续传递该数据包 n f q u e u e 一排队该数据包 n f _ r e p e a t 一一再次调用该处理函数 6 l i n u x 平台下b p f 模型的研究与实现 第三章m y b p f 系统设计 图3 3 n f _ i t e r a t e o i 函数流程图 3 2 1 4 钩子函数的注册 在写好钩子函数后,内核模块需要将该钩子函数挂接到相应的钩子上,才能 使用该钩子函数对流经该钩子的数据包进行处理。n e t _ f i l t e r 功能框架为内核模块 提供了两个接口函数以实现钩子函数的挂接和卸载2 ”。 1 、n f _ r e g i s t e r _ h o o k 0 函数 该函数用于注册钩子函数,它以n f _ h o o k _ o p s 类型的变量为参数。 2 、n f _ u n r e g i s t e r _ h o o k o 函数 该函数用于卸载钩子函数,它同样以n fh o o k _ o p s 类型的变量为参数。 3 2 1 5 m y b p f _ h o o k o 钩子函数的实现 在m y b p f 中,m y b p fh o o k ( ) 钩子函数被挂接在n e f f i l t e r 功能框架为i p v 4 协 议定义的n f i p p r e r o u t i n g 这一钩子上,用户可根据需要将它挂接到其它 的钩子上。m y b p f _ h o o k 0 实现b p f 虚拟机,主要完成对流经该钩子的数据包进行 过滤和将捕获的数据拷贝到s t o r eb u f f e r 等功能。其流程图如图3 4 所示。 m y b p h _ h o o k ( ) 函数的算法描述如下: 硕士研究生学位论文 1 、检查是否需要过滤; 2 、在b p f 虚拟机上执行过滤代码,并将返回值存放在r e t 中: 3 、判断m y b p f 模块的行为是过滤还是捕获数据包。若是过滤数据包,转到4 ; 否则,转到5 : 4 、若r e t 值为0 ,则返回n fd r o p , 指示丢弃该数据包;否则返回y f _ a c c e p t , 指示接受该数据包; 5 、根据r e t 的值判断是否要捕获该数据包。若不要,则直接返回n f _ a c c e p t ;否则,执行下一步; 6 、计算要捕获的数据的总长度( 包括m y b p f _ 1 1 d r 头部的长度) ,确定存放该数据 包的起始位置: 7 、判断s t o r eb u f f e r 是否能存下被捕获的数据。若可以,转跳到1 0 执行;否则, 执行下一步: 8 、判断f r e eb u f f e r 是否为空。若是,将被丢弃数据包个数加l 后返回n f a c c e p t ; 否则,执行下一步: 9 、翻转缓冲区,唤醒等待队列中的进程,然后转跳到1 1 执行; 1 0 、判断是否在立即模式下。若是,唤醒等待队列中的进程后执行下一步;否则, 直接执行下一步: 1 1 、填充m y b p f 头部内容:_hdr 1 2 、将捕获的数据拷贝到s t o r eb u f f e r 中后返回n f 。_accept l i n u x 平台下b p f 模型的研究与实现第三章m y b p f 系统设计 图3 4 m y b p f _ h o o k o i 甬数流程图 9 硕士研究生学位论文 3 2 2 m y b p f _ d 数据类型 该类型定义在m y b p f h 头文件中,用于描述m y b p f 接口。该类型的定义主要 沿袭了b p f 模型在f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业自动化技术及其应用案例分析
- 工业自动化技术的创新发展
- 工作之余的放松之道如何有效利用假期旅行
- 工作生活平衡与压力管理技巧
- 工业领域中的绿色制造策略
- 工作效率提升的科技趋势分析
- 工作场合英语口语提升方法
- 工程施工中的材料管理优化
- 工程机械在变载条件下的动力特性研究
- 工程测量中的数据智能处理技术
- 英语歌曲欣赏troubleisafriend
- 邮轮乘务员职业道德与素养PPT完整全套教学课件
- 有限责任公司章程两个及以上股东样本
- 山东开放大学工作人员招聘考试真题2022
- 夏季预防中暑及中暑急救培训PPT
- 地缘政治与中国的地缘战略
- DB11T 065-2022电气防火检测技术规范
- 2022年和政县政务中心综合窗口人员招聘笔试试题及答案解析
- 铝电解电容器
- GB/T 10653-2001高聚物多孔弹性材料压缩永久变形的测定
- 幼儿园突发事件应急处置流程图
评论
0/150
提交评论