




已阅读5页,还剩68页未读, 继续免费阅读
(计算机软件与理论专业论文)基于netfilter的智能垃圾邮件过滤防火墙的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 电子邮件已经成为人们日常生活中通信、交流的重要手段之一,但垃圾邮件 问题也日益严峻,邮件用户平均每天收到的垃圾邮件数量已经超过了正常邮件 数,严重干扰了用户的正常工作。 本文针对当前网络上大量泛滥的垃圾邮件问题,在研究n e t f i l t e r 安全框架及 其扩展机制和当前的反垃圾邮件技术的基础上,结合当前垃圾邮件和反垃圾邮件 技术的发展趋势,提出了一个通用的、高准确、高效率的智能垃圾邮件过滤模型。 具体而言,本文的研究工作主要包含以下内容: 研究了n e t f i l t e r 安全框架的设计思想及实现技术,着重分析了n e l z f i l t e r 框架的扩展机制及其应用;对垃圾邮件的产生机理及其特点进行了详细 阐述,并重点讨论了当前的反垃圾邮件技术,给出了当前垃圾邮件问题 解决方案的不足及面临的挑战。 提出了一个基于n e t f i l t e r 的智能垃圾邮件过滤防火墙模型。模型通过对 已有的垃圾邮件过滤技术合理布局,将费时,费资源的计算后移,降低 对垃圾邮件判断的代价:通过将文本分类技术引入并对其进行改进以获 取更好的邮件过滤效果。 设计并实现了一个l i n u x 下的智能垃圾邮件过滤防火墙系统,该系统在 n e t f i l t e r 框架上扩展了对应用层s m t p 协议和p o p 3 协议的支持。为了获 得好的性能整个系统都在内核空间实现。 重点研究了系统实现中的b a y e s 模型、用户模板、内核空间与用户空间 通信和中文信息处理所必须的分词等关键技术的原理及其实现。 实验证明,本文设计并实现的智能垃圾邮件过滤系统具有很好的过滤效果和 性能,可以对当前大量泛滥的垃圾邮件起到有效的遏制作用。 关键词:防火墙垃圾邮件n e t f i l t e r 贝叶斯用户模板中文分词 a b s t r a c t e l e c t r o n i cm a i l ( e - m a i l ) i sb e c o m i n go n eo ft h ef a s t e s ta n dm o s te c o n o m i c a i w a y so fc o m m u n i c a t i o na v a i l a b l e a tt h es a n l et i m e ,t h eg r o w i n gp r o b l e mo fj u n k m a i l ( a l s or e f e r r e dt oa s “s p a m ”) h a sg e n e r a t e da n e e df o re - m a i lf i l t e r i n g e m a i lu s e r h a sr e c e i v e dn u m b e r so fs p a mm o r et h a no n e so fn o r m a ie - m a i la n de - m a i lu s e r sh a v e b e e nd i s t u r b e db ys p a m t r y i n gt or e s o l v et h i sp r o b l e m ,i nt h i sp a p e r ,an i c e l y ,e f f e c t i v e ,c o m m o n l ys p a m f i l t e rm o d e la r ep r o p o s e da f t e ra n a l y z i n ga n dr e s e a r c h i n gn e t f i l t e rs e c u r i t yf r a m e w o r k a n de x t e n s i v ec a p a c i t y ,c o m b i n gt h et r e n do fs p a r ea n da n t i - s p a mt e c h n o l o g y t h er e s e a r c hw o r ka n dt h ec o n t r i b u t i o nc a nb es u m m a r i z e di nt h ef o l l o w i n ga s p e c t s : r e s e a r c h i n gt h ei d e aa n di m p l e m e n to f n e t f i l t e rs e c u r i t yf r a m e w o r k p o i n t i n g o u tt h ep r o b l e ma n dd e f i c i e n c yo fa n t i s p a ms y s t e m sb e s i d e sas u m m a r y a b o u tt h ep r o d u c ea n dc h a r a c t e r i s t i co f s p a ma n da n t i - s p a mt e c h n o l o g y a ni n t e l l i g e n ts p a mf i l t e rf i r e w a l lm o d e lb a s e do nn e t f i l t e ri sp r o p o s e di n t h i sp a p e rt h r o u g hd e c r e a s i n gt h ec o s to fs p a mf i l t e r t h em o d e lt a k e st h e v a s tc o m p u t i n gt ot h el a t e r , a n dt h e nf i l t e rs y s t e mi sn ol o n g e rf i l t e ri fs p a m h a sb e e nf o u n db e f o r ei tn e e dt a k ei n t oa c c o u n t i n v e s t i g a t i n ga n t i s p a m p r o b l e m f r o mt h et e x tc a t e g o r i z a t i o n p e r s p e c t i v ea n di n t r o d u c i n gt h e a p p r o a c h e so f b a y e sa n du s e rp r o f i l eu s i n gv e c t o rs p a c em o d e l i no r d e rt ov a l i d a t ep r e v i o u sm o d e la s p a mf i l t e rf i r e w a l ls y s t e mi sd e s i g n e d a n di m p l e m e n t t h es y s t e mc a l lf i l t e rs m t pp r o t o c o la n dp o p 3p r o t o c o l t h r o u g he x t e n d i n gn e t f i l t e rs e c u r i t yf r a m e w o r ka n dr u ni nk e r n e ll e v e li n l i n u xi no r d e rt og e tg o o dp e r f o r m a n c e r e s e a r c h i n g t h e k e y t e c h n o l o g yt h e o r y a n d i m p l e m e n ta b o u tn a i v e b a y e s i a nc l a s s i f i e r ,u s e rp r o f i l e ,c o m m u n i c a t i o n sb e t w e e nk e r n e ls p a c ea n d u s e rs p a c e ,c h i n e s ew o r ds e g m e n t a t i o nt h a tn e e db yp r o c e s s i n gc h i n e s e c h a r a c t e r i ti sp r o v e nb ye x p e r i m e n tt h a tt h ei n t e l l i g e n tm a i lf i l t e rf i r e w a l ls y s t e m d e s i g n e da n di m p l e m e n t e db yt h i sp a p e rs h o w sag o o de f f e c ta n dp e r f o r m a n c ea n dt h e g r o w i n gp r o b l e mo fs p a r ec a nb es t o p p e de f f e c t i v e l y k e y w o r d s :f i r e w a l l ;s p a r e ;n e t f i l t e r ;b a y e s i a nm o d e l ;u s e rp r o f i l e ;c h i n e s ew o r d s e g m e n t a t i o n 西北大学学位论文知识产权声明书 本人完全了解学校有关保护知识产权的规定,即:研究生在校攻 读学位期间论文工作的知识产权单位属于西北大学。学校有权保留并 向国家有关部门或机构送交论文的复印件和电子版。本人允许论文被 查阅和借阅。学校可以将本学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学 位论文。同时,本人保证,毕业后结合学位论文研究课题再撰写的文 章一律注明作者单位为西北大学。 保密论文待解密后适用本声明。 学位论文作者签名:盘堑垒指导教 枷j ,年,月。日 西北大学学位论文独创性声明 本人声明:所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,本论文不包含其他人已经发表或撰写过的研究成果,也不包含 为获得西北大学或其它教育机构的学位或证书而使用过的材料。与我 一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。 学位论文作者签名:玲知岳 - o o ,年6 月日 第一章绪论 本章首先介绍了课题的研究背景和意义,随后阐明了课题研究的主要内容和 目的,最后给出了论文的章节安排。 1 1 研究的背景和意义 根据中国反垃圾邮件中心调查结果,中国网民数量目前已经接近1 亿,9 0 以上用户上网的首要目的是收发电子邮件,但是用户收到的邮件中6 0 以上是 垃圾邮件( 见图1 1 和1 2 ) ,大量的垃圾邮件严重影响了用户对互联网的正常使 用,垃圾邮件不仅耗费网络带宽和计算机时空开销,而且会对用户的正常工作造 成严重的干扰 ”。另一方面,全球的垃圾邮件发送者假冒、伪造中国的邮件地址, 或者利用中国的服务器转发大量垃圾邮件,这些行为导致中国的大量i p 地址被 投诉或被认定为垃圾邮件的源头【2 】而被屏蔽,严重影响了中国网民的正常工作和 学习以及i s p 的形象。 c o , m k , i e s ( 2 0 0 5 5 矗,簿“_ 。 i ;莹_ i b 虹赣醋宣p 出谢i l pu n i t e ds 协t e s2 4 6 1 , 2 pc b i ,5 5 s t 3 审s i o , a t 1 xk m 洲3 2 5 一 豳1 1 中国垃圾邮件发送黼陛疆! 世算薷= 位 图1 2 垃圾自5 件增长趋势。 目前已经有不少的垃圾邮件过滤系统,可按用户设定的过滤规则过滤,如过 滤掉那些包含某些关键字和词的邮件,过滤掉发自某些地址的邮件等。但单纯采 用信息检索中关键字匹配检索方法来过滤包含这些词的邮件还是远远不够的,自 然语言中词的多义性和同义性所带来的关键词检索方法的固有缺陷使这类过滤 系统的正确过滤能力大为减弱。因此,研究垃圾邮件特征、历史、产生机制和当 前的反垃圾邮件技术以及应用智能过滤技术解决垃圾邮件问题变得非常具有现 实意义。 在捍卫网络安全和信息安全的过程中,防火墙技术越来越多的受到人们的青 睐。状态检测防火墙采用新一代防火墙技术,它监视每一个有效的连接状态,并 根据这些信息决定网络数据包是否通过防火墙,与传统的无连接过滤检测技术不 同,基于连接状态的包过滤在进行包的检查时,考虑每个数据包的历史关联性, 不用对每个数据包进行孤立的规则检查,从而大大提高了转发效率。与应用层防 西北大学计算机科学系硕士研究生学位论文 火墙相比而言,状态检测防火墙使用用户定义的规则,不依赖预先定义的应用层 信息,因而执行效率比应用层防火墙高的多。 n e t f i l t e r 是l i n u x 下一个非常优秀的基于状态的内核防火墙,可以通过 i p t a b l e s 进行配置,但是它缺乏对应用层攻击检测和内容过滤。为此本文提出了 一个基于n e t f i l t e r 的垃圾邮件过滤防火墙模型,用来解决目前大量泛滥的垃圾邮 件问题,它兼顾对网络层攻击的监测和对应用层内容的过滤。整个系统运行在内 核空间,因此可以获得很好的运行效率,弥补了应用层防火墙检测效率不高的缺 陷,同时遵循了将代价最高的处理放在最后的原则。 可以预测,将网络层防火墙与应用层防火墙相结合解决应用层安全问题必然 是防火墙未来的发展趋势。 1 2 研究的内容和目的 本文研究了n e t f i l t e r 安全框架的设计思想及实现技术,着重分析了n e t f i l t e r 框架的扩展机制及其应用。对垃圾邮件的产生机理及其特点进行了详细阐述,并 重点讨论了当前的反垃圾邮件技术,给出了当前垃圾邮件问题解决方案的不足及 面临的挑战。 提出了一个基于n e t f i l t e r 的智能反垃圾邮件过滤防火墙模型。模型通过合理 使用已有的垃圾邮件过滤技术,将费时,费资源的计算后移,降低对垃圾邮件判 断的代价;通过对基于邮件内容过滤算法的改进使其适应防火墙这种要求运算时 间短的系统中应用。该模型在n e t f i l t e r 框架上扩展了对应用层s m t p 协议和p o p 3 协议的支持并应用垃圾邮件过滤技术对垃圾邮件进行过滤。 n e t f i l t e r 是一个l i n u x 下的防火墙框架,具有非常好的可扩展性和性能, n e t f i l t e r 已经实现了对网络层攻击的防御,但是缺少对应用层安全防御的支持。 为了对本文提出的模型进行验证,设计并实现了一个l i n u x 下的智能垃圾邮件过 滤防火墙一m f f w ,并针对系统中b a y e s 分类技术、用户模板技术、分词技术 以及内核空间与用户空间的通信技术等给出了详细的论述。 具体的说,本文的工作主要包含以下内容: 研究了n e t f i l t e r 安全框架的设计思想及实现技术,着重分析了n e t f i l t e r 框架的扩展机制及其应用;对垃圾邮件的产生机理及其特点进行了详细 阐述,并重点讨论了当前的反垃圾邮件技术,给出了当前垃圾邮件问题 解决方案的不足及面临的挑战。 提出了一个基于n e t f i l t e r 的智能垃圾邮件过滤防火墙模型。模型通过对 已有的垃圾邮件过滤技术合理布局,将费时、费资源的计算后移,降低 西北大学计算机科学系硕士研究生学位论文 2 对垃圾邮件判断的代价;通过将文本分类技术引入并对其进行改进以获 取更好的邮件过滤效果。 设计并实现了一个l i n u x 下的智能垃圾邮件过滤防火墙系统,该系统在 n e t f i l t e r 框架上扩展了对应用层s m t p 协议和p o p 3 协议的支持。为了获 得好的性能整个系统都在内核空间实现。 重点研究了系统实现中的b a y e s 模型、用户模板、内核空间与用户空间通 信和中文信息处理所必须的分词等关键技术的原理及其实现。 1 3 论文结构和章节安排 本文的章节安排如下:文章第二章主要研究n e t f i l t e r 体系结构的基本原理、 特征和功能。第三章主要研究什么是垃圾邮件以及垃圾邮件的基本特征,同时对 当前的反垃圾邮件的措施和技术进行研究。第四章在研究了前两个问题的基础 上,针对当前反垃圾技术以及防火墙技术的不足,提出一个基于n e t f i l t e r 的内核 智能垃圾邮件过滤系统模型,并对模型的整体框架进行了具体的阐述。第五章详 细阐述了智能垃圾过滤系统实现中的几个关键技术,包括b a y e s 统计方法,用户 模板,以及进行中文处理所必须的分词技术和完成用户空间和内核空间数据交换 的通信技术。第六章介绍对系统各个方面的评价方法以及对系统测试的试验数 据。第七章对所做的工作进行了总结并探讨应进一步开展的研究工作。 西北大学计算机科学系硕士研究生学位论文 第二章n e t f it a r 体系结构的研究 l i n u x 操作系统以其开放源码、高性能和高可靠性等诸多优势在商业服务器 和个人桌面系统中得到日益广泛的应用。为了解决l i n u x 系统安全问题,l i n u x 内核的开发团队中逐步形成了专门的内核防火墙开发小组,并随着l i n u x 内核版 本升级不断推陈出新。最早的l i n u x 下的i p 防火墙出现在1 1 系列内核中,它是 由a i mc o x 从f r e e b s d 系统的i p f w 防火墙移植到l i n u x 中来的;2 0 系列内核 中的i p f w a d m 由j o s v o s 等人进行了改进和增强:到了2 2 x 内核发布时,i p c h m n s 和单独开发的n a t 等模块已经可以比较完整地实现内核级的i p 防火墙的功能, 但是由于没有充分考虑到扩展性和维护性问题,因此后续开发比较困难。r u s t y r u s s e l l 领导的l m u x 内核i p 防火墙项目小组在2 3 x 以后的开发过程中,总结了 以往的开发经验,逐步形成了抽象、通用化的可扩展防火墙核心框架 _ n e t f i l t c r 3 1 。 2 1n e t f i l t e r 在内核网络结构中的位置及其组成部分 图2 1n e t f l l t e r 在网络结构中的位置 l i n u x 2 4 内核中的n e t f i l t e r 位于 l i n l l ) ( 网络层( i p 层) 和防火墙内核功能 模块之间( 如图2 1 所示) ,在l i n u x 2 4 内 核中实现的防火墙虽然构建在i p 层中, 但并未对l i n u x2 4 内核的网络结构造成 破坏,而是通过n e t f i l t e r 结构将防火墙 对数据包的处理引入i p 层中,防火墙的 代码与实现i p 层的代码完全分离,从而 构成不同的模块,使网络层和防火墙在 结构上很清晰,防火墙代码修改和功能 扩充更加容易【4 j 。 n e 伍l t e r 框架包含以下三部分: a 为每种网络协议( i p v 4 、i p v 6 等) 定义 一套钩子函数( p v 4 定义了5 个钩子函数) ,这些钩子函数在数据报流过协议栈 的几个关键点时被调用。在这几个注册点中,协议栈将把数据包及钩子函数 标号作为参数传入n e f f i l t e r 框架。 b 内核中任何模块都可以对每种协议的一个或多个钩子进行注册、挂接,这样 当某个数据包被传递给n e f f i l t e r 框架时,内核检测是否有模块对该协议和钩 西北大学计算机科学系硕士研究生学位论文 子函数进行了注册。若注册了,则调用该模块在注册时使用的回调函数,从 而使得这些模块就有机会检查( 可能还会修改) 该数据包、丢弃该数据包或指 示n e t f i l t e r 将该数据包传入用户空间的队列。 c n e t f i l t e r 可以将排队的数据包传递给用户空间程序进行异步处理。一个用户 进程能检查数据包、修改数据包、甚至可以重新将该数据包通过离开内核的 同一个钩子函数再次注入到内核中。 2 2n e t f i l t e r 在l i n u x 2 4 内核中的实现 2 _ 21n e t f i l t e r 的工作原理 n e t f i l t e r 安全框架为内核中其它模块动态参与i p 层中的数据包处理提供了 途径,可以通过下面方法来达到设计目的: 在内核中建立了一个函数指针链表,称为钩予函数链表,加入列链表中的函 数指针所指的函数称为钩子函数( h o o k f u n c t i o n ) 。 内核模块需要参与i p 层中对数据包的处理时,通过调用n e t f i l t e r 中钩子函 数的回调函数来注册内核模块的数据包处理函数,n e t f i l t e r 将在钩子函数链表中 记录下此模块中的数据包处理函数指针。i p 层在数据包处理过程中,会检查相 应的钩子函数链表中是否有钩子函数被注册,如果存在注册的钩子函数,便会调 用此函数,并且根据该函数的处理结果,决定是继续完成i p 层中的后续处理过 程,还是丢弃此数据包,中断数据包的传输:如果不存在注册的钩子函数,则继 续完成i p 层中的后续处理。 内核模块不需要参与i p 层的数据包处理时,调用n e t f i l t e r 钩子函数的注销 函数,n e t f i l t e r 从钩子函数链表中去掉此钩子函数指针,这样i p 层检测不到钩 子函数的存在,会继续其后续操作。 由此可见,通过n e t f i l t e r 结构,内核模块可以动态地参与i p 层中数据包的 处理,这使得防火墙代码可完全从i p 层的功能实现代码中分离出来,形成独立 的内核模块。同时可以根据需要,添加新的防火墙功能模块,新添功能模块的代 码集中在此内核模块中,代码结构清晰容易修改,而且新添功能不会影响其它的 防火墙功能和i p 层的功能。同时数据包的处理权在i p 层和防火墙功能模块之间 切换时,不需复制数据包,它们对同一数据包内存空间进行操作,节省了数据包 在内存中的复制时间,使防火墙对数据包的处理可以保持高速进行。 西北大学计算机科学系硕士研究生学位论文 2 2 2n e f f i l t e r 在i p v 4 中的钩子机制 图2 2 是l i n u x 2 4 在i p v 4 中所实现的防火墙的系统框架图,此框架图中定 义了五个防火墙处理点,在图中用灰色框标记,这五个处理点可以利用c 语言 的宏定义来描述【5 】: n fi fp r er o u t i n g ( 其中的i p 指整个防火墙处理都是在i p 层完成,以 下皆是) ,该处理点对应于进入防火墙的数据包,当该数据包在进行路由选择之 前进行的防火墙检测处理: n fi fl o c a li n ,该处理点对应于进入防火墙的数据包,在进行路由选 择之后,本数据包将传给本地进程进行处理,在传给本地进程处理之前进行的防 火墙检测处理; n fi pf o r w a r d ,该处理点对应于进入防火墙的数据包,当该数据包进行 路由选择之后,其路由决定是需要进行转发的数据包,在该数据包进行转发之前 进行的防火墙检测处理: n fi fp o s tr o u t i n g ,该处理点对应于进入防火墙的数据包和由防火墙 本地进程产生的数据包都适用,当进入防火墙的数据包在转发之后输出防火墙之 前在该点将进行防火墙检测处理,当由本地进程产生的数据包在路由选择输出防 火墙之前在该点也将进行防火墙检测处理; n fi pl o c a lo u t ,该处理点对应于由本地进程产生的数据包,在进行 路由选择之前进行的防火墙检测处理。 图2 2n e t r l t e r 功能框架图 箭头标明了i p 包在包含n e t f i l t e r 框架的i p 层的流向,i p 包从最左端进入系 统,进行i p 校验和版本检查后经过第一个挂载点n f i p p r e r o u t i n g 注册的 钩子函数进行处理;经过路由选择,决定该数据包需要转发还是发给本机;若该 数据包是发给本机的,则经过n f i p l o c a l i n 注册的钩子函数处理以后然后 西北大学计算机科学系硕士研究生学位论文 传递给上层协议:若需要转发,则转至n fi pf o r w a r d 注册的钩子函数进行 处理;所有需要发送到网络的数据包,无论是本机发送的还是转发的,都需要经 过最后一个钩子函数n fi pp o s tr o u t i n o 处理以后,才能发送到网络上。 本地网络层以上产生的数据包通过n fi pl o c a lo u t 注册的钩子函数处理 后,才可以进行路由选择,然后由n fi pp o s tr o u t i n g 处的钩子函数处理 后发送到网络上。 具体各钩子函数挂接点,i p 报文通过的时机以及通常在该点实现的防火墙 功能如表2 1 所示。 表2 1 钩子函数挂接表 2 2 3n e t f i l t e r 在i p v 4 中的实现 本节对n e t f i l t e r 在i p v 4 协议栈中实现的关键数据结构和函数调用进行分析, 图2 3 列举t i p v 4 瞳j 络层中的几个关键函数,也是n e t f i l t e r 框架实现钩子函数挂接 的关键。 传输层 网络层 i p l o c a l d e li v e r0 1 i p r c v 01 i p _ q u e u e x m it0 i p o u t p u t0 i i p _ f i n i s h _ o u t p u t0n e t _ b h ( ) t 链路层 图2 3i p v 4 网络层处理流程 l i n u x 核心网络堆栈中有一个全局变量: s t r u c tl i s t _ h e a dn f _ h o o k s n p r o t o 【n f _ m a x _ h o o k s 该变量是一个二维数组,其中第一维指定协议族,第二维指定h o o k 的类型 ( 表2 i 中定义的类型之一) 。注册一个n e t f i l t e rh o o k 实际就是在由协议族和 h o o k 类型确定的链表中添加一个新的节点。 西北大学计算机科学系硕士研究生学位论文 以下代码摘自n e t e o r e n e t f i l t e r ,n f _ r e g i s t e r h o o k o i 函数的实现: i n tr f f _ r e g i s t e r h o o k ( s t r u e tn fh o o k _ o p s + r e g 、 s t r u c tl i s t h e a d + i ; b r _ w r i t e _ l o c k _ b h ( b r _ n e t p r o t q _ l o c k ) ; f o r ( i - - n f _ h o o k s r e g - p f r e g - h o o k n u m n e x t ; i ! = & n f _ h o o k s ) e g - p f r e g - h o o k n u m ; i _ i - n e x t ) i f ( r e g 一 p r i o r i t y p f i o f i t y ) b r e a k ; ) l i s t _ a d d ( & r e g - l i s t ,i - p r e v ) ; b r _ w r i t e _ u n l o c k _ b h ( b r _ n e t p r o t 0 - l o c k ) ; r e t u r n0 ; n e t f i l t e r 中定义了一个宏n f _ h 0 0 k ,n f _ h o o k _ s l o w 0 函数实际上就是 n fh o o k 宏定义替换的对象,在n fh o o k 中执行注册的h o o k 函数。 n f _ h o o k 在l i n u x 核心网络堆栈的适当地方以适当的参数调用。例如,在i p _ r c v o 函数( 位于n e t i p v 4 i p _ i n p u t c ) 的最后部分,调用n f _ h o o k 函数,执行 n f i p p r e _ r o u t i n g 类型的h o o k 。i p _ r c v ( ) 是l i n u x 核心网络堆栈中用于接收 i p v 4 数据包的主要函数。在n fh o o k 的参数中,也包含一个o k f n 函数指针, 该函数是用于数据包被接收后完成后续的操作,例如在i pr c v 中调用的 n f _ h o o k 中的o k f n 函数指针指向i p _ r c v _ f i n i s h ( ) i 函数( 位于n e t i p v 4 i p _ i n p u t c ) , 该函数用于i p 数据包被接收后的诸如i p 选项处理等后续处理。 在检查点上,函数n f _ h o o ks l o w 调用函数n f _ i t e r a t e 遍历对应链表并调用链 表上的结构n f _ h o o k _ o p s 中定义的函数。如果结构中的函数返回n f _ a c c e p t , 则继续调用下一个结构中的函数;如果结构中的函数返回n fd r o p 或 n fs t o l e n 或n fq u e u e ,则将这个值返回给n fh o o ks l o w ;如果结构中的 函数返回n f _ r e p e a t , 贝j j 重复调用此结构上的函数;如果到了链表上的最后一个 结构,则把这个结构中函数的返回值返回给n f _ h o o k _ s l o w 。在n fh o o k s l o w 中 判断n f _ i t e r a t e 的返回值,如果是n f _ a c c e p t ,则允许数据包通过,并将数据 包传递给协议栈中的下一个函数;如果是n fd r o p ,则释放数据包,协议栈流 程中断:如果是n fs t o l e n ,同样中断协议栈的流程,但是没有释放这个数据 西北大学计算机科学系硕士研究生学位论文 包;如果是n f _ q u e u e ,则将这个包发送到用户空间处理,同时中断协议栈的 流程。 如果在内核编译参数中取消c o n f i g n e t f i l t e r 宏定义,n f _ h o o k 宏定 义直接被替换为o k f n ,内核代码中的相关部分如下( 1 i n u x n e t f i l t e r h ) : # i f d e fc o n f i g _ n e t f i l t e r 群l d e fc o n f i g n e t f i l t e r d e b u g # d e f i n en f h o o kn f h o o k s l o w # e l s e # d e f i n en f _ h o o k ( p f , h o o k ,s k b ,i n d e v , o u t d e v , o k f n ) ( 1 i s t _ e m p t y ( & n f _ h o o k s ( p 。 o o k ) 】) ? ( o k f n ) ( s k b ) :n f h o o k _ s l o w ( ( p f ) ,( h o o k ) ,( s k b ) ,( i n d e v ) ,( o u t d e v ) ,( o k f n ) ) ) # e n d i f # e l s e 卜! c o n f i g _ n e t f i l t e r | # d e f i n en f _ h o o k ( p f , h o o k ,s k b ,i n d e v , o u t d e v , o k f n ) ( o k f n ) ( s k b ) # e n d i f + c o n f i g n e t f i l t e r + , n fh o o k 宏的参数分别为: 1 p f 协议族名字,n e t f i l t e r 架构同样可以用于i p 层之外,因此这个变量 还可以是诸如p fi n e t 6 ,p fd e c n e t 等名字; 2 h o o k :h o o k 点的名字,对于i p 层,就是取上面的五个值之一: 3 s k b :l i n u x 网络协议栈中数据包处理的基本单位; 4 i n d e v :接收数据包的网络设备,以s t r u c tn e t 结构表示;_device 5 o u t d e v :发送数据包的网络设备,以s t r u c tn e t 结构表示;_device 6 o l d n :是个函数指针,当所有的该h o o k 点的所有登记函数调用完后,转 而走此流程。 可见o k f n 函数是必不可少的,当n e t f i l t e r 被启用时,它用于完成接收的数 据包后的后续操作,如果不启用n e t f i l t e r 做数据包过滤,则所有的数据包都被接 受,直接调用该函数做后续操作。 在i p 层代码中,如i p 的转发函数中有: d e v , d e v 2 ,i p _ f o r w a r d _ f i n i s h ) ; 如果在编译内核时没有配置n e t f i l t e r 时,就相当于调用最后一个参数,此例 西北大学计算机科学系硕士研究生学位论文 中即执行i pf o r w a r df i n i s h 函数;否则进入h o o k 点,执行通过n fr e 百s t e rh o o k ( ) 登记的功能,这句话表达的可能比较含糊,实际是进入n fh o o ks l o w ( ) 函 数,再由它执行登记的函数。 这些注册点是已经在内核中定义好的,除非你是这部分内核代码的维护者, 否则无权增加或修改,而在此检测点进行的处理,则可由用户指定。像p a c k e t f i l t e r , n a t , c o n n e c t i o nt r a c k 这些功能,也是以这种方式提供的。正如n e t f i l t e r 的当 初的设计目标一提供一个完善灵活的框架,为扩展功能提供方便。 2 3 基于n e f f i l t e r 的防火墙扩展机制 操作系统内核可有微内核和单一内核两种体系结构。w i n d o wn t 就是微内 核体系结构,l i n u x 操作系统则是单一内核体系结构。微操作系统中内核很小, 只实现了最基本的服务,如内存管理、进程管理,而网络协议、文件系统都在其 上实现,这样做的好处是内核小,易于扩展,弊端是层与层之间的信息交换使得 系统的运行效率较低。单一体系结构系统由于不存在微体系结构中的那么多层 次,内存管理、网络协议、文件系统等都在同一个大的内核程序中实现,运行速 度较快,但是可扩展性较差。 2 3 1l i n u x 内核模块机制 在l i n u x 早期的版本中没有引进模块机制,那时候要修改和编写内核代码是 一件非常复杂的事,因为每次修改和编写完内核代码都必须重新编译一遍内核, 如过程序中有错误的话,甚至会使整个系统崩溃。有了模块机制后编写和修改内 核代码将不会陷入那样的噩梦。 在内核空间编写程序不像在用户空间编写程序那样有丰富的库函数提供,在 内核空间编写程序之前首先要了解内核和其它已经载入内核的模块所提供了那 些系统调用和变量,通过这些系统调用和变量来完成自己的工作。这些系统调用 和变量在l i n u x 是通过e x p o r t 机制来完成的。 对于模块而言,l i n u x 提供用于模块载入和模块卸载的接口函数就是定义在 文件u i n u x i n c l u d “i n u 小心h 中的m o d u l ei r t i 和m o d u l ee x h 两个系统调用,这两 个系统调用分别是命令i n s m o d 和r m m o d 的入口函数。 模块编程还需要了解的是内核符号表和模块引用计数。内核符号表是一个用 来存放所有模块可以访问的那些符号以及相应地址的特殊的表。可以通过查看 p r o c k s y m s 文件查看当前内核符号表的情况,它包括了内核标识符地址和名称。 模块除了能够使用自己定义的变量和函数,还能使用内核提供的和其它模块导出 西北大学计算机科学系硕士研究生学位论文 10 到内核符号表的变量和函数。如果需要导出自己的变量或者函数到内核符号表, 可以使用: e x p o r t _ s y m b o l ( y o u r o w n v a r ) ; e x p o r t _ s y m b o l ( y o u r o w n f u n c ) ; 除了共用的内核符号表,每个模块还有一个独立的引用计数器,记录了该模 块当前被引用的次数,卸载操作进行时必须判断引用计数,如果模块还在使用中 或者被别的加载的模块引用中,那么就不能卸载。在l i n u x m o d u l e h 中定义了三 个宏,用来维护引用计数器: m o di n cu s ec o u n t增加模块的用户数 m o dd e cu s ec o u n t 减少模块的用户数 m o d i n u s e 用来检查目前这个模块是不是正在被使用,也就是检查 用户数是否为零 可以使用l s m o d 参看引用数,如表2 2 所示。 表2 2 已加载系统模块列表 溪麓篱黼i 漆黧巍l誊雾鬻耀滚黧黧霪鬻戮 鬻甏掌 裔舞蠢鬻 誊量n 毹镒甜醋戮镳黪黪戮攀释 鬻黼黧隧震 8 3 5 2 1 瓣糍黼籍i 弼赫鬻穗l 臻 黼l 戳黼嚣黧6 7 2 0 1 翮! 畿溺| ;黧黼l8 1 8 00 【n en e 2 k p c i 】 囊翁豢滋鬻甏鍪霪 3 0 2 7 20 ( a u t o c l e a n ) i 瑟羹溢黼露戆慧 3 2 1 9 20 ( a u t o c l e a n ) 【i d e - c d 】 攀粼| ;| i 畿黼鞘 2 4 4 8 40 ( u n u s e d ) j 磐蒺;囊鍪簧锾嚣;篓篓嚣:囊 6 7 1 3 6l 通过此三个宏定义就可以保证当某个模块正在被使用时强制调用 m o d u l ee x i t o 卸载模块等非法操作。 通过这个模块机制,我们就可以将我们的邮件处理函数和数据结构注册到内 核中。在内核编程中如果没有显式的声明是s t a t i c 类型就默认e x p o r t 出去,这样 会产生名字污染问题。在本文实现的防火墙模块中有很多文件,他们之间需要共 享一些函数和数据结构,为此需要在每个文件的末尾加入 e x p o r tn os y m b o l s 这个宏定义告诉编译器在默认情况下不e x p o r t 任何函 数和数据结构,除非在程序中显式的使用e x p o r ts y m b o l ( y o u r o w n f u n c ) 或 e x p o r t _ s y m b o l ( y o u r o w n v a r ) 将一个函数或变量e x p o r t 出去,从而防止名字污 染问题。 在一个防火墙模块中如果一个函数或变量不想让其它文件中的函数或变量 看见,可以显式的在其声明前加s t a t i c ,否则默认是可见的,但是对其它模块是 西北人学计算机科学系硕士研究生学位论文 不可见的。 2 3 2l i n u x 内核防火墙模块的实现 通过前面关于i p v 4 中n e t f i l t e r 实现的分析,可以看出n e t f i l t e r 本身没有提 供任何过滤报文的代码,它仅仅是一个可扩展的框架。基于该框架下进行开发的 程序员无须过多涉及内核协议栈的改动,只须对一个或多个这样的挂接点上挂接 内核模块,从而在数据报通过挂接点时进行过滤或修改这些数据报,并向 n e t f i l t e r 返回预定义的返回值。用户挂接内核模块要通过n f _ r e g i s t e r _ h o o k 函数 实现,其函数原形为在2 2 3 小节中引入的i n tn f _ r e g i s t e r _ h o o k ( s t r u c tn f _ h o o k _ o p s * r e g ) 参数r e g 的类型s t r u c tn f _ h o o k _ o p s 定义如下: s t r u c tn f _ h o o k _ o p s s t r u c tl i s t h e a dl i s t ; n fh o o k f n * h o o k ;p 用户在此注册资金的处理函数+ i m p f ;产结构对应的协议栈号+ i n th o o k n u m ;p 结构对应的检查点号+ i n tp r i o r i t y ;p结构的优先值+ ) ; 我们的工作就是生成一个s t r u c tn fh o o ko p s 结构的实例,并用 n f _ r e g i s t e r _ h o o k ( ) 将其挂接到h o o k 上。其中1 i s t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业消防培训合同标准文本
- 2025版合同:服务咨询合同
- 2025「规范」停车场买卖合同范本
- 2025【企业物品借用协议】物品借用合同
- 2025年能量系统优化合作协议书
- 2025一层房屋买卖合同
- 2024年三月份航空货运合同台账保险责任划分模块
- 班级心理健康教育的重要性计划
- 2025年电视制式转换器合作协议书
- 2025住宅室内装修合同模板(标准版)
- 国内外化工发展情况及安全形势
- 读书分享读书交流会《四世同堂》
- 2024年人教精通版四年级下册英语期末专项复习-阅读理解
- 中医推拿基础培训课件
- 防电信诈骗安全教案
- 产品履历表完
- 保健食品备案产品可用辅料及其使用规定
- 肺癌伴胸腔积液护理查房
- 健康管理中的健康教育与健康促进研究
- 2024年中考化学复习把握中考方向共研备考策略
- 新闻宣传“三审三校”审查表
评论
0/150
提交评论