已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下, 独立进行研究所取得的成果。除文中已经注明引用的内容外,本 论文不包含任何其他个人或集体已经发表或撰写过的科研成果。 对本文的研究在做出重要贡献的个人和集体,均已在文中以明确 方式标明。本人完全意识到本声明的法律责任由本人承担。 论文作者签名:刘耋日期:垫q j 生篁旦 关于学位论文使用授权的声明 本人完全了解贵州大学有关保留、使用学位论文的规定,同 意学校保留或向国家有关部门或机构送交论文的复印件和电子 版,允许论文被查阅和借阅;本人授权贵州大学可以将本学位论 文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或其他复制手段保存论文和汇编本学位论文。 ( 保密论文在解密后应遵守此规定) 论文作者签名:爿杰导师签名 摘要 随着网络规模的不断扩大与应用技术的不断进步,越来越多的业务需要对数 据包进行实时、快速的分类过滤。数据包过滤是一个用软件或硬件设备对向网络 上传或从网络下载的数据流进行有选择的控制过程。数据包过滤技术是防火墙的 基本技术,几乎所有路由器都内嵌这种功能。l i n u x 下的n e t f i l t e r i p t a b l e s 中包过 滤使用简单的线性分级算法,这样缺乏效率,特别是当网络变得越来越复杂,防 火墙需要匹配的规则越来越多的时候,防火墙的性能将会急剧下降,造成系统瓶 颈。因此提出了基于二叉树的包过滤算法m y - f f d t c r ,大大提高了包过滤的性能。 该算法是高适应性的数据包过滤技术,适用于大量规则的包过滤过滤规则达到 一种快速匹配,存储结构灵活。m y - f i l t e r 算法简单,具有较好的时闻复杂度和空 间复杂度。 关键字: 能 l i m t x 操作系统,n e t 何l t e r ,包过滤,线性链表,二叉树,h a s h 算法,网络性 a b s t r a c t w i t ha ni n c r e a s i n gs c a l eo ft h en e t w o r ka n dt h ed e v e l o p m e n to ft h ea p p l i c a t i o n t e c h n o l o g y , m o r ea n dm o r es e r v i c e sn e e dd a t ap a c k e t sc l a s s i f i c a t i o na n d f i l t e rf o rr e a l t i m ea n ds p e e d i n e s s t h ed a t ap a c k e tf i l t e r si st h ec o n 缸o u e dp r o c e s st h a ti no r d e rt o p a s so l la n dd o w n l o a dd a t ap a c k e t sf r o mn e t w o r kw i t ht h es o f t w a r e o rh a r d w a r e e q u i p m e n t s t h ep a c k e tf i l t e ri st h eb a s i ct e c h n o l o g yi nt h ef i r e w a u ,a l n l o $ tt o u t e r s h a v et h i sk i n do ff u n c t i o n t h ep a c k e tf i l t e ro ft h en e t f i l t e r i p t a b l e si nt h el i n u xo s u s e ss i m p l el i n e a r i t yg r a d u a t i o na l g o r i t h m ,s oi ti st h el a c ko fe f f i c i e n c y e s p e c i a l l y w h e nt h en e t w o r kc h a n g e sm o r oa n dm o r ec o m p l e xa n dt h ef i r e w n l ln e e d st om a t c h t h en u m b e ro fm l e * t h ep e r f o r m a n c eo ff i r e w a l lw i l lb ef a l ls u d d e n l y , a n di tw i l l b e c o m et h es y s t e mb o t t l e n e c k t h e r e f o r eii n t r o d u c ean e wp a c k e tf i l t e ra l g o r i t h mt h a t b a s e0 1 1b i n a r yt r c e t h e r n l ei sm y f i l t e r t h ea l g o r i t h m se n h a n c et h ep e r f o r m a n c eo f p a c k e tf f l t e r - g r e a t l y t h i sa l g o r i t h mi st h eh i g hc o m p a t i b l ep a c k e tf i l t e r , a n di ts u i t a b l e p a c k e t 丘l t 盯o ft h en u m b e ro fm i e s ,t h er o l eo ff i l t e rc a l la c h i e v et h ef a s tm a t c h , a n d t h em e m o r ys t r u c t u r ei sf l e x i b l e t h ea l g o r i t h mo fm y f i l t e ri ss i m p l ea n di th a sb e t t e r t i m ec o m p l e xa n ds p a t i a lc o m p l e x k e yw o r d s : l i n u xo p e r a t i n gs y s t e m , n e t f i l t e r ,p a c k e tf i l t e r , l i i 地a rl i s t , b i n a r yt r e e ,h a s h a l g o r i t h m ,n e t w o r kp e r f o r m a n c e 4 第一章绪论 在信息化社会中,网络信息系统在政治、军事、金融、商业、交通、电信、 文教等方面发挥越来越大的作用。社会对网络信息系统的依赖也日益增强,各种 各样完各的网络信息系统,使得秘密信息和财富高度集中于计算机中。另一方面, 这些网络信息系统都依靠计算机网络接收和处理信息,实现其相互间的联系和对 目标的管理、控制。以网络方式获得信息和交流信息已成为现代信息社会的一个 重要特征。网络正在逐步改变人们的工作方式和生活方式,成为当今社会发展的 一个主题。 网络技术的迅猛发展使企业通过利用网络来提商办事效率和市场反应速度, 以便更具竞争力。通过使用网络技术,任何一个单位的数据资料的传输和存取都 变得方便、快捷,但同时也面对t m c m e t 开放带来的数据安全的新挑战和新危险: 即客户、销售商、移动用户、异地员工和内部人员的安全访问;以及保护国家机 关、企事业的机密信息不受黑客和商业间谍的入侵。越来越多的通信都通过电子 邮件进行:移动员工、远程办公人员和分支机构都利用网络来从远程连接他们的 企业网络:而在网络上通过w w w 方式完成的商业贸易现在已经成为企业收入 的重要组成部分。但是这个庞大的网络及其相关的技术为不断增长的安全威胁提 供了可乘之机,因而企业必须学会保护自己免受这些威胁的危害。 随着网络规模的不断扩大与应用技术的不断进步,越来越多的业务需要对数 据包进行实时、快速的分类过滤。例如, 进行尽可能快的查找;在网络安全领域, 在路由器转发数据包时,需要对路由表 防火墙、入侵检测等也需要对数据包进 行分类然后过滤;在网络计费方面,基于资源利用的业务流量计费策略将得到发 展,在这类应用中,将对具体的应用进行分流,然后对不同的业务流实施不同的 o o s 策略,计费策略是针对流来进行的,这些都离不开对数据包的快速分类; 另外诸如o o s 路由控制、区分业务实施等也需要快速地对数据包进行分类。由 此可见,对数据包过滤算法的研究具有重要的现实意义。 数据包过滤是一个用软件或硬件设备对向网络上传或从网络下载的数据流 进行有选择的控制过程。数据包过滤器通常是在将数据包从一个网站向另一个网 络传送的过程中允许或阻止它们的通过。数据包过滤器使得管理员能够对特定协 议的数据包进行控制,使得它们只能传送到网络的局部:能够对电子邮件的域进 行隔离;能够进行其它的数据包传输上的管控功能。数据包过滤器是防火墙中应 用的一项重要功能,它对口数据包的包头进行检查以确定数据包的源地址、目 的地址和数据包利用的网络传输服务。 网络包过滤就是根据网络上传送包的包头信息将包进行过滤。在因特网的分 层模型中,要传输的数据被各层协议的包头依次封装着,每一层的包头都包含着 若干域,它们分别携带着该层协议的特征数据。包过滤规则r u l e 可以涉及到从数 据链路层到应用层的任何域,它对所涉及的域及域的取值或取值范日加以定义。 使用包过滤的原因: 控制:能够允许某些类型的包通过,或者不允许某些类型的包通过。例如, 包的头部含有目的地址的信息,因此,你可以设置过滤规则禁止网络内部的包到 达某些外部的网络地址。举个实例,当你用n c t s c a 【p c 浏览d f l b c - r t 文档时,在它 的页面上会出现来自d o u b l e c l i c k n c t 的烦人广告,让包过滤禁止任何去或者来自 d o u b l c c l i c k n c t 的包就可以解决问题了。 安全:如何在混乱的i n t e r n e t 和你的有序的网络之间通信? 设置了防火墙来 把守你的大门是十分必要的。例如,你可以允许任何包出去,但是对著名的“p i n g o f d e a t h ( 来自外部的攻击者) 感到焦虑。又例如,你不允许外部t e l n c t 到内部 的机器( 尽管每个用户都有密码) 。等等,都可以通过设置规则解决。 警觉:有时候一台配置不好的内部机器向外面不断发包。包过滤能够及时向 网络管理员报告此类异常,这样,管理员就能够做出相应的行动。以防不测。 6 2 1l i n u x 简介 第二章l i n u x 操作系统简介 l i n u x 操作系统核心最早是由芬兰的u n u st o r v a l d s19 9 1 年8 月在芬兰赫 尔辛基大学上学时发布的,后来经过众多世界项尖的软件工程师的不断修改和完 善,li n u x 得以在全球普及开来,在服务器领域及个人桌面版得至4 越来越多的应 用,在嵌入式开发方面更是具有其它操作系统无可比拟的优势,并以每年1 0 6 的用户递增数量显示了l i n u x 强大的力量。 l i n u x 是一个支持多用户、多任务、多进程、实时性较好的、功能强大而稳 定的操作系统,也是目前运行硬件平台最广泛的操作系统。l i n u x 最大的特点在 于它是g n u 的一员,遵循公共版权许可证( c a p i 乜e n e r a lp u b l i cu c e n s e ) 及开放源代码的原则,从而使其成为发展最快、拥有用户最多的操作系统。 2 2l i n u x 的网络能力 u n u x 的组网能力非常强大,它的t c p i p 代码是最高级的。l i f l u x 提供了对 于当前的t c p i p 协议的完全支持,并且包括了对下一代i n t e m e t 协议i p v 6 的支 持。u n u x 内核还包括了i p 防火墙代码、i p 防伪、i p 服务质量控制及许多安全 特性。这些特性可以和像c i s c o 这样的公司提供的高端路由设备的特性相媲美。 此外,利用r e d h a tu n u x 提供的s a m b a 组( 并不是r e d h a tu n u x 独有) ,u n u x 可以作为w i n d o w s 客户机的打印和文件服务器,还可以用做n t 的文件和打印 服务器。运用l i n u x 包含的a p p l e t a l k 模块,u n u x 甚至可以作为一个m a c i n t o s h 客户机的文件和打印服务器。让a p a c h e 这个世界上应用范围最广的w e b 服务 器软件系统跑在l i n u x 上,你就可以运行自己的i n t r a n e t 或者i n t e m e tw e b 服务 器。l i n u x 还包含了一个f c p 服务程序、一个电子邮件传输代理程序以及,p o p 和i m a p 邮件服务程序。如果你愿意,你还可以在i n t e m e t 上免费获得一个u n u x 的l d a p 服务程序。性能超群稳定的a p a c h e 服务器也是许多网络管理员选择 l i n u x 的原因。 1 、l i n u x 支持多种不同的网络协议:t cp l p 协议、i p v 6 协议、i p x s p x 协 7 议集、i s d n 功能、对p p p 、s l i p 及p l i p 的支持、业余无线电等。 2 、li n u x 系统作为文件和打印服务器提供了一个很好的解决方案。 3 、li n u x 系统中的i n t e m e t i n t r a n e t 功能。l i n u x 提供的i n t e m e t 和i n t r a n e t 服务包括邮件、新闻、w w w 服务器和其他一些服务。 4 、u n u x 系统下应用程序的远程执行。 5 、u n u x 系统的网络互连功能,一个l i n u x 系统可以按要求设置为路由器, 网桥等。 2 3l i n u x 的性能 l i n u x 操作系统在短短的几年之内得到了非常迅猛的发展,这与l i n u x 具有 的良好特性是分不开的。l i n u x 包含了u n i x 的全部功能和特性。简单的说,l i _ n u x 具有以下主要特性: 1 、开放性 开放性是指系统遵循世界标准规范,特别是遵循开放系统互连( o s d 国际标 准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容可方便地实现互连。 2 、多用户 多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资 源( 例如:文件、设备) 有特定的权限,互不影响l i n u x 和u n i x 都具有多用户的 特性。 3 、多任务 多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程 序,而且各个程序的运行互相独立。l i n u x 系统调度每一个进程平等地访问微处 理器由于c p u 的处理速度非常快,其结果是,启动的应用程序看起来好像在 并行运行事实上,从处理器执行一个应用程序中的一组指令到l i n u x 调度微处 理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。 4 、良好的用户界面 l i n u x 向用户提供了两种界面:用户界面和系统调用。l i n u x 的传统用户界 面是基于文本的命令行界面,即s h e l l ,它既可以联机使用,又可存在文件上脱 机使用。s h d t 有很强的程序设计能力,用户可方便地用它编制程序,从而为用 a 户扩充系统功能提供了更高级的手段。可编程s h c u 是指将多条命令组合在一起, 形成一个s b e u 程序,这个程序可以单独运行,也可以与其他程序同时运行。 系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提 供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。 l m u x 还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施, 给用户呈现一个直观、易操作、交互性强的友好的图形化界面。 5 、设备独立性 设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装 它们的驱动程序,任何用户帮可以象使用文件一样,操纵、使用这些设备,而不 必知道它们的具体存在形式 具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简 化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的 连接。这种连接( 也称作设备驱动程序) 保证每次调用设备提供服务时,内核以 相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时,操作允许 在这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在 于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。 而设备独立性的操作系统能够容纳任意种类及任意数量的设备,因为每一个设备 都是通过其与内核的专用连接独立进行访问。l i n u x 是具有设备独立性的操作 系统,它的内核具有高度适应能力,随着更多的程序员加入l i n u x 编程,会有更 多硬件设备加入到各种l j n 旺内核和发行版本中。另外,由于用户可以免费得到 l i n u x 的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部 设备。阎 6 、提供了丰富的网络功能 完善的内置网络是l i n u x 的一大特点。l i n u x 在通信和网络功能方面优于其 他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能 力,也没有内置这些联网特性的灵活性,而l n u x 为用户提供了完善的、强大的 网络功能。 支持i n t e r n c t 是其网络功能之一,l i n u x 免费提供了大量支持i n t e r a c t 的软件, ( 美) r o b e r tl o v e 著,陈莉君等译u n u x 内核设计与实现( 第2 版) 。机城工业出版杜,2 0 0 6 ,l 9 i n t e m e t 是在u n i x 领域中建立并繁荣起来的,在这方面使用l i n u x 是相当方便的, 用户能用l i n u x 与世界上的其他人通过i n t e r a c t 网络进行通信。 文件传输是其网络功能之二,用户能通过一些l i n u x 命令完成内部信息或文 件的传输。 远程访问是其网络功能之三,l i n u x 不仅允许进行文件和程序的传输,它还 为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功 能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地 方。 7 、可靠的系统安全 l i n u x 采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子 系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全 保障。 8 、良好的可移植性 可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自 身的方式运行的能力。 l i n t t x 是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何 环境中和任何平台上运行。可移植性为运行l i n t t x 的不同计算机平台与其他任何 机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接 口。【2 1 j 2 4l i n u x 下c 语言编程 c 语言是一种在u n i x 操作系统的早期就被广泛使用的通用编程语言。由 于c 语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,c 开始进 入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用, 成为当代最优秀的程序设计语言之一。c 语言能在编程领域里得到如此广泛支持 的原因:它是一种非常通用的语言。几乎你所能想到的任何一种计算机上都有至 少一种能用的c 编译器,并且它的语法和函数库在不同的平台上都是统一的; ( 美) c h i i s 胁k a n n j 临i y a 著浏戚勇荨译i n t e r a c t 防火墙与冈络安全f m 】| 七京:机械工业出版挂,1 9 9 8 1 0 用c 语言写的程序执行速度很快:c 语言是所有版本的u n i x 上的系统语言。【1 1 l l i a u x 上可用的c 编译器是g n uc 编译器,它建立在自由软件基金会的编 程许可证的基础上,因此可以自由发布。当使用g c c 编译c 代码时,它会试着 用最少的时间完成编译并且使编译后的代码易于调试。易于调试意味着编译后的 代码与源代码有同样的执行次序,编译后的代码没有经过优化有很多选项可 用于告诉g c c 在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可 执行文件。 l i a u x 包含了一个叫g d b 的g n u 调试程序。g d b 是一个用来调试c 和c + + 程序的强力调试器,使用者能在程序运行时观察程序的内部结构和内存的使用情 况。冽 i l l 倪缝利l i n u x 内核分析及编程l 电子工业出版社2 0 0 5 , 9 m l ( 美) b r i a aw k 删d g h 柚等著,徐宝文等译c 程序设计语言( 第2 版) 机械工业出版社姗1 第三章基于l i n u x 的数据包过滤 数据包过滤技术是防火墙的基本技术,几乎所有路由器都内嵌这种功能。其 基本原理是依据系统内事先设定好的访问规则列表,检查数据流中每个数据包的 源地址、目的地址、源端口号、目的端口号、协议类型以及连接状态等信息,并 以此来确定是否允许数据包通过。对于o s i 模型来说,数据包过滤模块工作在 网络层与数据链路层之间。数据包过滤的核心技术是其定义的规则表,过滤器检 查规则表中的每一条规则直至发现数据包中的信息与菜规则相符。如果没有一条 规则能够匹配,防火墙就会使用默认规则。一般情况下,默认规则就是要求防火 墙丢弃该数据包。 3 1l i n u x 包过滤的发展史 l i a u x 的防火墙技术经历了若干代的沿革,一步步的发展而来。最开始的 i p f w a d m 是a l a nc o x 在l i n u xk e r n e l 发展的初期,从f r e c b s d 的内核代码中移植 过来的。后来经历了i p c h a i n s ,再经由p a u lr u s u 在l i n 呱k e r n e l2 3 系列的开 发过程中发展了n c t f i | t e r 这个架构。 基于2 2 内核的i p c h a i n s 没有提供传递数据包到用户空间的框架,所以任何 需要对数据包进行处理的代码都必须运行在内核空间,而内核编程却非常复杂, 而且只能用c 语言实现,并且容易出现错误并对内核稳定性造成威胁。创建一 个不依赖于接口地址的数据包过滤规煲1 j 是不可能实现的必须利用本地接口地址 来判断数据包是本地发出、还是发给本地的或是转发的。转发链只有输出接口的 信息,因此管理员必须考虑数据包的源。伪装和数据包过滤都在同一个模块内实 现,导致防火墙代码过于复杂,并且i p c b a i 璐代码即不模块化又不易于扩展。阉 n e t f i t e r 框架的概念的提出及主要实现是由r u s t yr u s s e l l 完成的,他是 i p c h a i n s 的合作完成者及当前l i n 呱内核m 防火墙的维护者。还有m a r cb o u c h e r 、 j a m e sm o r r i s 、h a r a l dw e r e 等都参与了n c l 商t e r 项目。 辫r h t m t , c 缸r e 4 t 击v t :f i r e w a l i r - - a n e w 咄血缸q 矗c o m p u t e rc o n e n 血t t o m , 2 0 0 3 , 2 6 ( :l 棼1 3 0 2 - 1 3 1 7 1 2 3 2l i n u x 下i p 数据包的处理流程 口协议栈是i a n u x 操作系统的主要组成部分,也是l i n u x 的特色之一,素以 高效稳定著称。n c t f i l t e r 与口协议栈是密切结合在一起的,要想理解n e t f i l t e r 的工作方式,必须理解口协议栈是如何对报文进行处理的。1 6 j 1 、报文发送流程 2 ,报文接收流程 报文接收流程之驱动程序阶段 嗍高峰许等防火墙包过滤规则问题的研究i j l 计算机应用2 3 2 3 6 报文接收流程之协议栈阶段: 1 4 茎銎 3 、报文转发流程 3 3n e t f i l t e r 简介 l i n u x 提供了一个防火墙工具n c t f i l t e r i p t a b l e s 。一般的防火墙大多采用链表 的形式组织规贝l j ( i p t a b l e s 采用偏移量的方式组织规则,实质跟链表类似) ,这是一 种最简单的实现方式,在规则数目很少的情况下比较合适,但当规则数目很大时。 性能也随之下降,性能与规则数是线性关系。l i n u x 上基于n e t f l i t e r 的防火墙是 从i p c h a i n s 、i p f w a d m 发展到i p t a b l e s 。对每个数据包做允许、拒绝的决定。过滤 规则基于协议包头信息协议包头中的主要信息包括:i p 源、目的地址、内装 协议、t c p ,u d p 源、目标端口、i c m p 消息类型、t c p 包头中的a c k 位。如果 包的进入接口和出口匹配,且规则匹配,则要么丢弃或转发,若没有匹配规则, 配置的缺省参数会决定是转发还是丢弃数据包。川 n e t f i l t e r 是嵌入内核口协议栈的一系列调用入口,设置在报文处理的路径上。 网络报文按照来源和去向,可以分为三类:流入的、流经的和流出的,其中流入 和流经的报文需要经过路由才能区分,而流经和流出的报文则需要经过投递,此 外,流经的报文还有一个f o r w a r d 的过程,即从一个n i c 转到另一个n i c 。 嗍 n e t f i l t e r 就是根据网络报文的流向,在以下几个点插入处理过程: _ w _ p r e _ r o u t n n o ,在报文作路由以前执行; n f 口 ,在报文转向另一个以前执行;_ f o r w a r d n i c n f 毋p o s tr o u q 矾g ,在报文流出以前执行: m 胡安磊等n 叫x 中n c t f l r 盯f i p t a b l e s 的应用研究计算机应用与软件,2 0 0 4 ,1 0 1 8 1 粱京章等善于规则的防火墙匹配算法研究计算机工程与应用,2 0 0 5 二0 :1 6 “1 醴1 7 2 1 5 面一 一n 一 n fi pi x ) o 也玳,在流入本地的报文作路由以后执行; n fi pl o c a lo u t ,在本地报文做流出路由前执行。 n e t f i l t e r i p t a b l e s 应用程序被认为是l i n u x 中实现包过滤功能的第四代应用程 序。n e t f i l t e r i p t a b l e s 包含在2 4 以后的内核中,它可以实现防火墙、数据包过滤、 n a t ( 网络地址翻译) 和数据包的分割等功能。n e t f i i t e r 工作在内核,而i p t a b l e s 是让用户定义规则集的表结构。可以用i p t a b l e s 为u n i x 、l i n u x 和b s d 个人工作 站创建一个防火墙。也可以为一个子系统创建防火墙以保护其它的系统平台。 i p t a b l e s 只读取数据包头,不会绘信息流增加负担,也无需进行验证。 n e t f i l t e r 是为包分割的框架,不属于普通的b e r k e l e y 套接字接口。首先,每 个协议定义了“挂钩( b o o m s ) 用来很好地定义遍历那个协议栈的指针。在每一个这 些指针上,协议会要求有包和挂钩号的n e t t i l t e r 框架。用一个s t t u c tl i s l h c a d n f h o o k s 【m 哏饼旧】【n fm a xh 0 0 k s 】二维数组结构存储,一维为协议族,二维 为上面提到的各个调用入口。而简单的说,n e 陆d t e r 的架构就是在整个网络流程 的若干位置放置了一些检测点( h 0 0 k ) ,而在每个检测点上上登记了一些处理 函数进行处理( 如包过滤,n a t 等,甚至可以是用户自定义的功能) 。例 n e t f i l t e rh o o k 位置 其次,对于每一个协议来说,内核部分能常驻监听不同的挂钩所以当一个 包经过n e t 五j l t e r 框架的时候,它会被检查是否已经驻在了那个协议和挂钩:如果 是,它们每一个都有一个机会( 也许交替地) 按照顺序检查一遍包,然后丢弃包 ( n fd r o p ) ,允许包经过( n f _ a c c e p t ) ,告诉n e t f i l t e r 忘记包( n fs t o l e n ) , 或者让i l c t f i l t e r 为用户空间排列一下包( n f _ o 嘶) 。第三部分是那些被选择了 排列后送往用户空间的包( 按照i p _ q u e u e 驱动) ;这些包被异步处理。 i 矧r u s t y r u s s e l l i i b u i n o t f i l t e rh a c k i n g h o w r o h t l p :w w w i p t a b l e s o r s d o c u m e n t a t i o n h o w t o n e t f i l t e r - h a c k i n g - h o w t o t x t 1 6 n fi pl o c a lo u t c o n n c c t i o nt r a c k i n g ( f r a g m e n t a t i o nr e a s s e m b l y ) m a n g l et a b l e ( r e c o m p u t e df o r w a r dd e c i s i o ni n ) d n a t ( n a tt a b l e ) ( r e c o m p u t e df o r w a r dd e c i s i o ni n ) 丘l t e rt a b l e f f ,n k p t i f 上 , n f t p p r e r o u t i n g - n fi f f o r w a r d n f 疋_ p o s tr o 侧g c o n n e c t i o nt r a c k i n g l m a n g l et a b l e m a n g l et a b l e ( f r a g m e n t a t i o nr e a s s e m b l y ) l f i l t e rt a b l e s n a t ( n a tt a b l e ) l g l et a b l e ( f r a g 嘴n t a t i o nr e a s s e m b l y ) d n a t ( m a tt a b l e ) c o m a e c t i o n 口a d 【i n g i n g r e s sqd i s c ( n t h m a t i o n + r e f i - a gm e n t a t i o n ) h 口o tn a p h t i n g r e s sqd i s c f fn e c e s s a r y f o r w a r d i n g d e ;n n n fi pl o c a li n m a n g l et a b l e f i l t e rt a b l e s n a t ( n a tt a b t e ) c o n n e c t i o nt r a c k i n g ( c o n f i r m a t i o no n y ) f i l t e r 表:该表不会对数据包进行修改,而只对数据包进行过滤。它是通过 钩子函数n f i p l o c a l _ i n ,n f i p f o r w a r d 及n f 毋l o c a l _ o u t 接入 n e t f i l t e r 框架的。因此对于任何一个数据包只有一个地方对其进行过滤。 n a t 表:监听三个n e t :f i l t e r 钩子函数:n f 口- p r er o u i 州g 、 n f 一皿- p o s t _ r o u t i n g 及n fi p l o c a lo u t 。n f 旺p r e _ r o u t i n g 实现 对需要转发的数据包的源地址进行地址转换而n l 珊一p o s t _ r o u t i n g 则对需 要转发的数据包的目的地址进行地址转换。对于本地数据包的目的地址的转换则 由n fi pl d o 地o u t 来实现。 m a n g l e 表:在n f _ i p _ p r e _ r o u t i n g 和n f i p l o c a l _ o u t 钩子中进行 注册。使用m a n g l e 表,可以实现对数据包的修改或给数据包附上一些外带数据。 1 7 3 4i p t a b l e s 算法分析 i p t a b l e s 仅仅在内存中指定一个控制队列( 因此命名为“i p t a b l e s ”) ,并且像信 息包来自哪里这样的信息,每一个h o o k 之间应该开始遍历。当一张表被注册后, 通过利用g e t s o c k o p t ( ) f f 订s e t s o c k o p t ( ) ,用户空间可以读取和替换其中的内容。 i p t a b l e s 不向任何n e t f i l t e rh o o k 注册:它主要依赖其他的模块去完成这个工作 并且在适当的时候注入信息包:一个模块必须分别注册n e t f i l t eh o o k 和i p _ t a b l e s , 并且提供一种当h o o k 到达的时候来呼叫i pt a b l e s 的机制 1 、n c t f i l t e r 中核心的数据结构 m _ h o o k _ o p s 是在检查点上引用的结构; i p t _ e a t r y 是规则的数据结构; i p t _ t a b l e 是规则表的数据结构: i p ti p 是存储与口头部有关的防火墙规则信息的数据结构: i p te n t r ym a t c h 这个结构存储m a t c h 的信息,这里的匹配主要是指与礤无 关的防火墙规则信息。由系统缺省设置的匹配主要有三个t c p ,、l l d p ”、“i c m p ; i p t _ e n t r y _ t a r g e t 是t a r g e t 结构信息,也就是决定一个分组命运的信息。可以理解 为a c t i o n 信息,其意义是指当一个分组与r u l e 和m a t c h 信息匹配后。如何处置该 分组。处置方法一般有三种:一、命令常数,比如d r o p 、a c c e p t 等等;二、 系统预定义的模块处理函数,比如“s n 盯、d n a t ”等等;第三种是用户自己 写模块函数。 2 、n e t f i l t e r 的实现原理( 阍 , n e t f i l t e r i p t a b l e s 由两部分组成,一部分是n e t f f f l t e r 的”钩子”,另一部分则是 知道这些钩子函数如何工作的一套规则,这些规则存绪在被称为i p t a b l e s 的数据 结构之中。钩子函数通过访问i p t a b l e s 来判断应该返回什么值给n e t f i l t c r 框架。 在i p t a b l e s 中一个t a b l e 就是一组类似的防火墙r u l e s 的集合。i p t a b l e s 里面默认 定义了三个t a b l e :f i l t e r 、m a n g l e 、和n a t 。我们所关心的是f i t e r 表,该模块的 功能是过滤报文,不作任何修改,或者接受,或者拒绝。它在n f i p l o c a l _ i n 、 n f i p f o r w a r d 和n fn , l o c a lo u t 三处注册了钩子函数,也就是说,所 f 埘王永滨_ 旺防火墙规则的可视化输入与翻译们计算机应用研究2 嘲,1 8 1 2 :1 0 7 - 1 f 1 8 1 8 有报文都将经过f i l t e r 模块的处理。【9 】 i p t a b l e s 防火墙规则的组织结构:第一级是t a b l e 级,每一个防火墙可以有多 个t a b l e ;第二级是h o o k 级,每一个t a b l e 都有一个h o o k 集合,每个h o o k 都有 一个防火墙规则链;第三级基本规则级,基本规则级的规则包括三部分,口规 则信息、匹配规则信息和t a r g e t 。面这三个组成部分的每一个都可以包括同类型 的多个部分规则。t a b l e 、c h a i n 和r u l e 三者的关系:t a b l e 是实现某项功能所有规 则的总和,c h a i n 是在某个检查点上所引用规则的集合,r u l e 是一个单独的规则。 m a t c h 在规则中用于匹配数据包中的各项参数,每个m a t c h 匹配特定的参数,所 以一个规则中可以有多个m a t c h ,这包括系统已定义的m a t c h ,也包括通过内核 模块另外添加的m a t c h 。t a r g e t 在规则中决定如何处理匹配到的数据包,因此在 t a r g e t 中实现了具体的网络安全功能。嗍 ( 1 ) 规则填写过程: i p t a b l e s 应用程序将命令行输入转换为程序可读的格式 ( i p t a b l e s - s t a n d a l o n e c :m a i n o :d o _ e o m m a n d 0 ,然后再调用l i b i p t c 库提供的 i p t e _ c o m m i t 0 函数向核心提交该操作请求。在l i b i p t c h b i p t c c 中定义了 i p t cc o m m i t 0 ( 即t cc o m m l t 0 ) ,它根据请求设置了一个s t r u c ti p t _ r e p l a c e 结 构,用来描述规则所涉及的表( f i l t e r ) 和h o o k 点( f o r 、矾珏【d ) 等信息,并 在其后附接当前这条规则一一个s t r u e ti p t _ e n t r y 结构( 实际上也可以是多个规则 e n t r y ) 组织好这些数据后,i p t e _ e o m m i t o 调用s e t s o e k o p t 0 系统调用来启动核心 处理这一请求,核心对于s e t s o c k o p t 0 的处理是从协议栈中一层层传递上来的, 调用过程如下图所示: 【,l 卢朝晖等善于l i a m t 啻n t t l i l t e t f i - p t a b l 蚤技术及其应用海南师范学院学报( 自然科学鹱) ,2 f 1 0 3 ,l l 州r u s t yi r u s s , 1 1 1 i n t t x2 4p a c k e tf i l t e r i n gh o w i o h t t p w w , w s e t f i h e r o r g d o c u m e n t a t i o n h o w l o p a e k e t - f i l t e r i n g - h o w i d h t m l ;一 ( 2 ) 规则应用过程: 以上描述了规则注入核内i p t a b l c s 的过程,这些规则都挂接在各自的表的相应h o o k 入 口处,当报文流经该h o o k 时进行匹配,对于与规则匹配成功的报文,调用规则对应的t a r g e t 来处理例如:f l l t c - r 表中添加了如上所述的规则:拒绝所有转发报文。应用过程如下图所 示: n e t f i l t e r 的规则是数组方式顺序保存,但每个元素( 规则) 的大小是不同的,每 条规则除了基本部分相同外,还包括不同数量的匹配和目标项。规则匹配是顺序 匹配,雨编辑时实际上是将整个规则集全部替换。1 1 2 1 1 2 3 | 3 、i p t a b l e s 的包过滤实现 所有的数据包都将通过默认的三个表:f i l t e r 表、p r e r o u t i n g 表和p o s t r o u t i n g 表。这里我们只分析用来做包过滤的f i l t e r 表。它含有3 个链( c h a i n ) : i t z l 刘建峰等,l i a u x 防火墙内核中n c t f i l t e a 和i p t a b l t s 的分析微计算机信息2 0 0 6 t 3 2 0 o u t p u t :来源于系统本机发往另一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一致决定解除劳动合同书模板
- 甘肃省天水市秦安县二中2023-2024学年高三1月阶段性测试数学试题文试题
- 公共设施租赁合同模板
- 地下照明设施引孔施工协议
- 环保质量管理办法
- 管式折叠纸盒课程设计
- 《“一带一路”铁路项目 铁路内燃机车操作规程(征求意见稿)》及编制说明
- 墙绘地铁站施工合同
- 服装物流配送协议
- 年产15000吨松香树脂项目可行性研究报告
- 高考英语创设语境记忆3500词汇(短文语境、配套练习)05篇
- 转体梁转体施工工法
- YY/T 1833.3-2022人工智能医疗器械质量要求和评价第3部分:数据标注通用要求
- 生物体中结构色
- 博物馆教育资源与当前语文课程融合的探究
- 防范和惩治统计造假、弄虚作假等违法违规行为的政策解读(统计培训课件)
- 地源热泵监理细则
- 人工智能及其应用课件
- 设备部-工作总结及-计划-课件
- CreloxPCRISPRCas技术和病毒载体在课件
- 导管滑脱预防措施pdca循环图应用分析(罗燕小组)课件
评论
0/150
提交评论