防火墙包过滤规则的优化和分析_第1页
防火墙包过滤规则的优化和分析_第2页
防火墙包过滤规则的优化和分析_第3页
防火墙包过滤规则的优化和分析_第4页
防火墙包过滤规则的优化和分析_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

/目录TOC\o"1-3"\h\u第一章引言 41.1课题的国内外概况 41.2本论文题目的理论意义和好用价值 5其次章包过滤防火墙技术 72.1包过滤防火墙技术简介 72.2防火墙包过滤技术的特点 82.3包过滤防火墙工作原理 92.4数据包过滤技术 122.5数据包过滤类型 162.5.1.IP包过滤 162.5.2.TCP包过滤 172.5.3.UDP数据包过滤 172.5.4.源端口过滤 17第三章具体实现 203.1数据库表的建立 203.2封包监视的设计 23第四章防火墙系统的设计和实现 284.1总体框架模型设计 284.2包过滤驱动程序设计 284.3上层应用程序的设计 294.4.防火墙的优化 29第五章总结和展望 31参考文献 32致谢 33第一章引言1.1课题的国内外概况包过滤防火墙是最简洁的一种防火墙,它在网络层截获网络数据包,依据防火墙的规则表,来检测攻击行为。包过滤防火墙一般作用在网络层(IP层),故也称网络层防火墙(NetworkLevFirewall)或IP过滤器(IPfilters)。数据包过滤(PacketFiltering)是指在网络层对数据包进行分析、选择。通过检查数据流中每一个数据包的源IP地址、目的IP地址、源端口号、目的端口号、协议类型等因素或它们的组合来确定是否允许该数据包通过。在网络层供应较低级别的平安防护和限制。包过滤防火墙工作在网络层,对数据包的源及目地IP具有识别和限制作用,对于传输层,也只能识别数据包是TCP还是UDP及所用的端口信息,如下图所示。现在的路由器、SwitchRouter以及某些操作系统已经具有用PacketFilter限制的实力。由于只对数据包的IP地址、TCP/UDP协议和端口进行分析,包过滤防火墙的处理速度较快,并且易于配置。简洁介绍近年来,Internet的快速增长促进了信息技术的飞速发展,它的迅猛成长正在使世界成为一个整体。但随之而来的是数据的完整性和平安性问题。人们一方面要把自己的内部网接入Internet,以便公司成员可以最大可能地利用Internet上的资源,同时大家都须要把自己的数据有意识地爱惜起来,以防数泄密及受到外界对内部系统的恶意破坏。而当前能接受的有效措施就是防火墙。防火墙大致可以分为两大类:包过滤防火墙和代理防火墙。其中包过滤技术由于可以和现有的路由器集成,也可以用独立的包过滤软件实现,运用较灵敏,应用比较广泛。本文由此绽开,主要介绍包过滤。起先文章介绍了一些网络的基本概念,数据包截取须要用到的特殊重要的库函数winpcap的结构。在此基础上回顾了当前包过滤技术探讨的进展和现状,着重介绍了包过滤的原理、以及优点和缺点。最终介绍了一个在单机上实现的简洁的对指定端口实现数据包抓取的程序。随着网络技术的飞速发展,网络平安问题日益突出。防火墙是目前广泛运用的一种网络平安技术,已成为企业内部和公用网络之间的一道必备的屏障,个人用户也纷纷安装了个人防火墙软件。防火墙往往放在网络的出口,成为一个信息流量的堵塞点,若造成网络堵塞,再平安的防火墙也无法应用。在实现中须要解决的主要问题是如何提高包过滤的性能。本文探讨目标是实现一种基于Windows的包过滤型防火墙。其核心问题是如何基于NDIS中间驱动程序在Windows内核中截获数据包,并提高包过滤的性能。1.2本论文题目的理论意义和好用价值防火墙技术的发展离不开社会需求的变更,着眼将来,我们留意到以下几个新的需求。·远程办公的增长。这次全国主要城市先后受到SARS病毒的侵袭,干脆促成大量的企事业在家办公,这就要求防火墙既能抗拒外部攻击,又能允许合法的远程访问,做到更细粒度的访问限制。现在一些厂商推出的VPN(虚拟专用网)技术就是很好的解决方式。只有以指定方式加密的数据包才能通过防火墙,这样可以确保信息的保密性,又能成为识别入侵行为的手段。·内部网络“包厢化”(compartmentalizing)。人们通常认为处在防火墙爱惜下的内网是可信的,只有Internet是不行信的。由于黑客攻击技术和工具在Internet上顺手可及,使得内部网络的潜在威逼大大增加,这种威逼既可以是外网的人员,也可能是内网用户,不再存在一个可信网络环境。由于无线网络的快速应用以及传统拨号方式的接着存在,内网受到了前所未有的威逼。企业之前的合作将合作伙伴纳入了企业网络里,全国各地的分支机构共享一个论坛,都使可信网络的概念变得模糊起来。应对的方法就是将内部网细分成一间间的“包厢”,对每个“包厢”实施独立的平安策略。Internet的快速发展,为人们供应了发布信息和检索信息的场所,但同时它也带来了信息污染和信息被破坏的紧急,网络的平安性问题已成为一个重要探讨课题。在Internet上存在两种平安性问题:①Internet服务本身所固有的脆弱性;②主机配置和访问限制难于实现或过于困难而产生的平安漏洞。Internet平安的脆弱性的表现形式主要有Internet蠕虫(Worm),身份验证机制的脆弱性,网上传输的信息易窃取及易被欺瞒等。其中蠕虫程序和计算机病毒有区分,它是一个独立、完整的程序,本身并不损坏任何文件或窃取信息,但它严峻干扰了网络的正常操作,使受感染的计算机处于重负载状态,拒绝其他机器用户的服务请求。而通过破译口令的加密方式和截获传递口令报文的方法,就可以获得该帐户的权限,其身份验证机制的脆弱性由此表现出来。特殊是一些TC或UD服务的身份验证仅仅依靠报文中的IP地址,管理员不能对某个用户定义访问权限,必需以主机为单位来定义访问权限,该主机上全部用户的权限都一样,这样就简洁产生平安问题.当运用Telnet或FTP和远程主机相连并进行身份验证时,运用的用户口令以明文的形式在Internet上传输,这样只需监视、截获连接中包含用户名和口令的IP报文,就很简洁获得某台主机的帐户。E-mail在网上也是以明文传输,通过监视网上交换的电子邮件可以获得有关某个站点的信息。其次章包过滤防火墙技术2.1包过滤防火墙技术简介防火墙是专用网络系统,旨在防止未经授权的访问或从。防火墙是用于防止未经授权的Internet网络的互联网连接的用户访问私营,尤其是内部网,虽然运用防火墙爱惜互联网从单一的电脑也越来越大,随着越来越多的电脑用户成为世界知道,网络平安问题的。防火墙可以是即时通讯在硬件和软件,或两者相结合的,一般可分为下列之一类别:数据包过滤,应用网关,电路级网关和代理服务器。虽然他们都不同层次的不同状况在好用性和缺点,本文只处理数据包过滤器,如他们更有可能得到有效的硬件实现探讨。包过滤字段的标题是基于他们对网络资源的众所周知的方法限制访问滤波要求的实力,依据指定的数据包分类过滤规则。这些规则可以看作是头字段的逻辑功能的数据包。分类数据包也出现在计算其他领域,如路由,策略路由,区分交通服务质量,然而,并非全部的人都运用或须要分类的基础上多包头中的字段。例如,一个简洁的包转发路由器只须要依据数据包进行分类在一个领域(目的地的IP地址)来执行正确的路途。过滤的概念和分类是紧密联系在一起,因此,这些条款将用于在本文件比较松散,除非区分要避开混淆。总的想法包过滤,或分类,是人起先在后来扩大由他人创立和雅各布森,虽然包分类问题时,防火墙的主要焦点本文件的背景是计算机网络在许多领域。快速和有效的数据包分类在多个领域的头是一个具有挑战性的问题。主要有两种方法来实施该系统的过滤:翻译为基础和模式为基础。第一种方法由一个指令集的规范规则和一名翻译引擎说明处理实力的指示表,而后者匹配图案用一些比较机制,不须要翻译引擎。它也可以运用这些做法都一起实现便利和效率之间的平衡。防火墙是内部、外部两个网络之间的一个阻隔,通过允许和拒绝经过防火墙的数据流,防止不希望的、未授权的通信,并实现对进、出内部网络的服务和访问的审计和限制防火墙对网络用户供应访问限制服务和通信平安服务,对网络用户基本上是“透亮”的,并且只有授权的管理员方可对防火墙进行管理。防火墙一般要解决的平安问题可分为被爱惜系统(即内部网)的平安问题和自身的平安问题。防火墙产品主要分为两类:包过滤和应用级防火墙本标准规定了包过滤防火墙的各级平安要求。包过滤防火墙依据平安功能策略建立包过滤规则。过滤规则的主要要素有源IP地址、目的IP地址、协议号、源端口、目的端口、连接标记和另外一些IP选项,以及包到达或发出的接口。包过滤防火墙工作在网络层,对数据包的源及目地IP具有识别和限制作用,对于传输层,也只能识别数据包是TCP还是UDP及所用的端口信息,如下图所示。现在的路由器、SwitchRouter以及某些操作系统已经具有用PacketFilter限制的实力。由于只对数据包的IP地址、TCP/UDP协议和端口进行分析,包过滤防火墙的处理速度较快,并且易于配置。包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此确定整个包的命运。它可能会确定丢弃(DROP)这个包,可能会接受(ACCEPT)这个包(让这个包通过),也可能执行其它更困难的动作。在Linux系统下,包过滤功能是内建于核心的(作为一个核心模块,或者干脆内建),同时还有一些可以运用于数据包之上的技巧,不过最常用的照旧是查看包头以确定包的命运。2.2防火墙包过滤技术的特点包过滤防火墙工作在网络层,对数据包的源及目地IP具有识别和限制作用,对于传输层,也只能识别数据包是TCP还是UDP及所用的端口信息,如下图所示。现在的路由器、SwitchRouter以及某些操作系统已经具有用PacketFilter限制的实力。

由于只对数据包的IP地址、TCP/UDP协议和端口进行分析,包过滤防火墙的处理速度较快,并且易于配置。(1)优点:对于一个小型的、不太困难的站点,包过滤比较简洁实现。因为过滤路由器工作在IP层和TCP层,所以处理包的速度比代理服务器快。过滤路由器为用户供应了一种透亮的服务,用户不须要变更客户端的任何应用程序,也不须要用户学习任何新的东西。因为过滤路由器工作在IP层和TCP层,而IP层和TCP层和应用层的问题毫不相关。所以,过滤路由器有时也被称为“包过滤网关”或“透亮网关”,之所被称为网关,是因为包过滤路由器和传统路由器不同,它涉及到了传输层。过滤路由器在价格上一般比代理服务器便宜。(2)缺点:一些包过滤网关不支持有效的用户认证。规则表很快会变得很大而且困难,规则很难测试。随着表的增大和困难性的增加,规则结构出现漏洞的可能性也会增加。这种防火墙最大的缺陷是它依靠一个单一的部件来爱惜系统。假如这个部件出现了问题,会使得网络大门放开,而用户其至可能还不知道。在一般状况下,假如外部用户被允许访问内部主机,则它就可以访问内部网上的任何主机。包过滤防火墙只能阻挡一种类型的IP欺瞒,即外部主机伪装内部主机的IP,对于外部主机伪装外部主机的IP欺瞒却不行能阻挡,而且它不能防止DNS欺瞒。虽然,包过滤防火墙有如上所述的缺点,但是在管理良好的小规模网络上,它能够正常的发挥其作用。一般状况下,人们不单独运用包过滤网关,而是将它和其他设备(如堡垒主机等)联合运用。

综上可见,包过滤防火墙技术面太过初级,就好比一位保安只能依据访客来自哪个省市来推断是否允许他(她)进入一样,难以履行爱惜内网平安的职责。2.3包过滤防火墙工作原理包过滤防火墙工作在OSI网络参考模型的网络层和传输层,它依据数据包头源地址,目的地址、端口号和协议类型等标记确定是否允许通过。只有满足过滤条件的数据包才被转发到相应的目的地,其余数据包则被从数据流中丢弃。包过滤方式是一种通用、廉价和有效的平安手段。之所以通用,是因为它不是针对各个具体的网络服务实行特殊的处理方式,适用于全部网络服务;之所以廉价,是因为大多数路由器都供应数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能很大程度上满足了绝大多数企业平安要求。在整个防火墙技术的发展过程中,包过滤技术出现了两种不同版本,称为“第一代静态包过滤”和“其次代动态包过滤”。第一代:静态包过滤这种类型的防火墙依据定义好的过滤规则审查每个数据包,以便确定其是否和某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制订。报头信息中包括IP源地址、IP目标地址、传输协议(TCP、UDP、ICMP等等)、TCP/UDP目标端口、ICMP消息类型等。包过滤类型的防火墙要遵循的一条基本原则是“最小特权原则”,即明确允许那些管理员希望通过的数据包,禁止其他的数据包。图简洁包过滤防火墙其次代:动态包过滤这种类型的防火墙接受动态设置包过滤规则的方法,避开了静态包过滤所具有的问题。这种技术后来发展成为所谓包状态监测(StatefulInspection)技术。接受这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且依据须要可动态地在过滤规则中增加或更新条目。图动态包过滤防火墙包过滤方式的优点是不用改动客户机和主机上的应用程序,因为它工作在网络层和传输层,和应用层无关。但其弱点也是明显的:过滤判别的依据只是网络层和传输层的有限信息,因而各种平安要求不行能充分满足;在许多过滤器中,过滤规则的数目是有限制的,且随着规则数目的增加,性能会受到很大地影响;由于缺少上下文关联信息,不能有效地过滤如UDP、RPC一类的协议;另外,大多数过滤器中缺少审计和报警机制,它只能依据包头信息,而不能对用户身份进行验证,很简洁受到“地址欺瞒型”攻击。对平安管理人员素养要求高,建立平安规则时,必需对协议本身及其在不同应用程序中的作用有较深化的理解。因此,过滤器通常是和应用网关协作运用,共同组成防火墙系统。包过滤是一种内置于Linux内核路由功能之上的防火墙类型,其防火墙工作在网络层。(1)运用过滤器。数据包过滤用在内部主机和外部主机之间,过滤系统是一台路由器或是一台主机。过滤系统依据过滤规则来确定是否让数据包通过。用于过滤数据包的路由器被称为过滤路由器。数据包过滤是通过对数据包的IP头和TCP头或UDP头的检查来实现的,主要信息有:IP源地址IP目标地址协议(TCP包、UDP包和ICMP包)TCP或UDP包的源端口TCP或UDP包的目标端口ICMP消息类型TCP包头中的ACK位数据包到达的端口数据包出去的端口在TCP/IP中,存在着一些标准的服务端口号,例如,HTTP的端口号为80。通过屏蔽特定的端口可以禁止特定的服务。包过滤系统可以堵塞内部主机和外部主机或另外一个网络之间的连接,例如,可以堵塞一些被视为是有敌意的或不行信的主机或网络连接到内部网络中。(2)过滤器的实现。数据包过滤一般运用过滤路由器来实现,这种路由器和一般的路由器有所不同。一般的路由器只检查数据包的目标地址,并选择一个达到目的地址的最佳路径。它处理数据包是以目标地址为基础的,存在着两种可能性:若路由器可以找到一个路径到达目标地址则发送出去;若路由器不知道如何发送数据包则通知数据包的发送者“数据包不行达”。过滤路由器会更加细致地检查数据包,除了确定是否有到达目标地址的路径外,还要确定是否应当发送数据包。“应当和否”是由路由器的过滤策略确定并强行执行的。路由器的过滤策略主要有:拒绝来自某主机或某网段的全部连接。允许来自某主机或某网段的全部连接。拒绝来自某主机或某网段的指定端口的连接。允许来自某主机或某网段的指定端口的连接。拒绝本地主机或本地网络和其它主机或其它网络的全部连接。允许本地主机或本地网络和其它主机或其它网络的全部连接。拒绝本地主机或本地网络和其它主机或其它网络的指定端口的连接。允许本地主机或本地网络和其它主机或其它网络的指定端口的连接。2.4数据包过滤技术这种技术是在网络中适当的位置对数据包实施有选择的通过,选择依据,即为系统内设置的过滤规则(通常称为访问限制表AccessControlList),只有满足过滤规则的数据包才被转发至相应的网络接口,其余数据包则被从数据流中删除。包过滤在本地端接收数据包时,一般不保留上下文,只依据目前数据包的内容做确定。依据不同的防火墙的类型,包过滤可能在进入、输出时或这两个时刻都进行。可以拟定一个要接受的设备和服务的清单,一个不接受的设备和服务的清单,组成访问限制表。在主机或网络级简洁用包过滤接受或决绝访问,例如,可以允许主机A和主机B之间的任何IP访问,或者拒绝除A外的任何设备对B的访问。包过滤的设置:⑴必需知道什么是应当和不应当被允许的,即必需制定一个平安策略。⑵必需正式规定允许的包类型、包字段的逻辑表达。⑶必需用防火墙支持的语法重写表达式。下面是我就一个简洁的按地址数据包过滤方式,它依据源地址进行过滤。比如说,认为网络是一个紧急的网络,那么就可以用源地址过滤禁止内部主机和该网络进行通信。在网络中数据是以数据包的形式传输的。这样,当数据包经过防火墙时,防火墙可以检查数据包中的那些信息,然后依据规则确定是否允许该包通过,就源地址过滤而言,防火墙只要检查目标地址和源地址就可以了。表1.1表示的是依据上面的政策所制定的规则。表1.1表示的是依据上面的政策所制定的规则。表1.1过滤规则示例规则方向源地址目标地址动作A出内部网络拒绝B入内部网络拒绝

这种方式没有利用全部信息,对于当今网络攻击的发展以无法满足防火墙的需求,下面是一种更为先进的过滤方式——按服务过滤。假设平安策略是禁止外部主机访问内部的E-mail服务器(SMTP,端口25),允许内部主机访问外部主机,实现这种的过滤的访问限制规则类似表1.2。规则按从前到后的依次匹配,字段中“*”代表随意值,没有被过滤器规则明确允许的包将被拒绝。就是说,每一条规则集都跟随一条含蓄的规则,就像表1.2中的规则C。这和一般原则是一样的:没有明确允许就被禁止。任何一种协议都是建立在双方的基础上的,信息流也是双向的,所以在考虑允许内部用户访问Internet时,必需允许数据包不但可以出站而且可以入站。同理,若禁止一种服务,也必需从出站和入站两方面制定规则,规则总是成对出现的。表1.2规则表规则方向动作源地址源端口目的地址目的端口注释A进拒绝m*E-mail25不信任B出允许****允许联接C双向拒绝****缺省状态下面,通过一个包过滤实例来讲解分析。第一,假设处于一个C类网,认为站点上有不健康的BBS,所以希望阻挡网络中的用户访问该点的BBS;再假设这个站点的BBS服务是通过Telnet方式供应的,那么须要阻挡到那个站点的的出站Telnet服务,对于Internet的其他站点,允许内部网用户通过Telnet方式访问,但不允许其他站点以Telnet方式访问网络。其次,为了收发电子邮件,允许SMTP出站入站服务,邮件服务器是IP地址为。第三,对于WWW服务,允许内部网用户访问Internet上任何网络和站点,但只允许一个公司的网络访问内部WWW服务器,内部WWW服务器的IP地址为,因为你们是合作伙伴关系,那个公司的网络为。依据上面的平安策略可以得到表1.3。表1.3过滤规则示例规则方向源地址目标地址协议源端口目标端口ACK设置动作A出TCP>102323随意拒绝B入TCP23>1023是随意C出随意TCP>102323随意允许D入随意TCP23>1023是允许E出随意TCP>102325随意允许F入随意TCP25>1023是允许G入随意TCP>102325随意允许H出随意TCP25>1023随意允许I出随意TCP>102380随意允许J入随意TCP80>1023是允许K入TCP>102380随意允许L出TCP80>1023随意允许M双向随意随意随意随意随意规则A、B用来阻挡你的内部主机以Telnet服务形式联接到站,规则C、D允许你的内部主机以Telnet方式访问Internet上的任何主机。这似乎和我们的政策发生了冲突,但事实上并部冲突。在前面提到过规则的次序是特殊重要的,而且防火墙实施规则的特点是当防火墙找到匹配的规则后就不再向下应用其他的规则,所以当内部网主机访问站点,并试图通过Telnet建立联接时,这个联接请求会被规则A堵塞,因为规则A正好和之相匹配。至于规则B,事实上并非毫无用处,规则B用来限制站点Telnet服务的返回包。事实上,内部主机试图建立Telnet联接时就会被堵塞,一般不会存在返回包,但超群的用户也可能想出方法使联接成功,那时B规则也会有用,总之,有些冗余对平安是有好处的。当用户以Telnet方式访问除之外的其他站点时,规则A、B不匹配,所以应用C、D规则,内部主机被允许建立联接,返回包也被允许入站。规则E、F用于允许出站的SMTP服务,规则G、H用于允许入站的SMTP服务,SMTP服务的端口是25。I和J规则用于允许出站的WWW服务,K、L规则用于允许网络的主机访问你的网络WWW服务器。规则M是默认项,它实现的准则是“没有明确允许就表示禁止”。2.5数据包过滤类型.IP包过滤IP分段字段用来确定数据包在传输过程中是否被重新分段,分段带来的问题是只有第一个段有高层协议的报头(如TCP头),而其他的段中没有。数据包过滤器一般是让非首段包通过,而仅对第一个分段进行过滤,因为目标主机假如得不到第一个分段,也就不能组装一个完整的数据包,因此这样做是可以接受的。强大的防火墙应当考虑非第一个分段有可能泄露有用的信息,比如出站的NFS数据包几乎确定要分段,内部网中的敏感数据经过NFS传输可能会泄露,因此防火墙要依据第一个分段的操作策略来确定是否转发非第一个分段。IP分段也经常用来进行拒绝服务攻击。攻击者向目标主机发送第一个分段包,防火墙对这种包不作处理干脆让其通过,目标主机得不到第一个分段来重组数据包时,会放弃该包,同时发一个ICMP“数据组装超时”的包给源主机。假如目标主机大量收到这种非第一个分段包,它须要占用大量的CPU时间来处理。当达到确定极限之后,目标主机就不能处理正常的服务了,而造成拒绝服务攻击。此外返回的ICMP也会泄露有用的消息,因此对这种ICMP,防火墙应当过滤掉。.TCP包过滤TCP是面对联接的牢靠传输协议,TCP的牢靠主要是通过下面三条来保证的:目标主机将按发送的依次接受应用数据;目标主机将接受全部的应用数据;目标主机将不重复接受任何数据。TCP协议通过对错误的数据重传来保证数据牢靠到达,并且事先要建立起联接才能传输。假如要阻挡TCP的联接,仅阻挡第一个联接请求包就够了。因为没有第一个数据包,接受端不会吧之后的数据组装程数据包,且不会建立起联接。TCP的启动联接请求包中的ACK位为0,而其他的数据包ACK位为1,所以可以通过对ACK位的推断来确定是否是启动联接请求。.UDP数据包过滤和TCP数据包结构相比,UDP数据包要比TCP数据包简洁得多,这是因为UDP是一种无联接得协议,而TCP是一种有联接得协议。UDP不向TCP那样牢靠,它得传输就像邮局独创信片一样,发出去后,得不到答复,不知道明信片是否真的到达了目的地。UDP数据包到通过MTU(最大传输单元)小的网络须要分段,然后各段分别传输,任何一个片段丢失后,数据包就损坏了,而UDP没有重传机制,这样就不能保证数据传输的完整性。即使数据包不分段,数据包也可能由于错误路由或网络拥挤而丢失。UDP的返回包的特点时目标端口是请求包的源端口,目标地址是请求包的源地址,源端口是请求包的目的端口,源地址是请求包的目标地址。因此,过程2的数据包被堵塞,而过程1的数据包被允许进入。.源端口过滤在前面的例子中,过滤规则用到了源端口,假如防火墙在过滤数据包时不考虑源端口,很简洁给入侵者可乘之机。假设路由器不支持检查源端口,要实现发送电子邮件的功能,规则如表2.1所示。表2.1过滤规则示例规则方向源地址目标地址协议源端口目标端口动作A入随意TCP/25拒绝B出随意TCP/>1023随意C出随意TCP/25允许D如随意TCP/>1023允许规则A、B允许入站的SMTP联接。规则C、D允许出站的SMTP联接。.ACK位在数据包过滤中的作用ACK位在数据包过滤中的作用是很关键的。假设防火墙不考虑ACK位,那么对于允许内部网络主机利用Telnet服务访问Internet的策略可以以下方式实现。假如有一个用户在他的主机上,用端口号23联接到内部网主机的一个大于1023的端口上,则这种联接将会被允许,可见,系统存在着平安缺口。一般只检查返回包的ACK位,因为联接请求包的ACK位可能不会被置位,而返回包ACK位确定会被置位。当加上ACK位检测后,得到如表2.2所示的规则。表2.2过滤规则示例规则方向源地址目标地址协议源端口目标端口ACK设置动作A出随意TCP>102323随意允许B入随意TCP23>1023是允许当黑客试图通过端口23建立入站联接时,因为第一个请求包的ACK不被置位,所以该包回被禁止进入你的内部网络,第一个联接请求包被拒绝后,联接就很难建立起来了。假如入侵者把第一个数据包的ACK位置位,则该数据包可以通过防火墙,但目标主机会把这个数据包当作以前联接中的一个数据包,而不是建立一个新的联接。因为这个数据包不属于目标主机所知的任何联接(序列号不能匹配),所以它被抛弃掉。第三章具体实现此虚拟网络防火墙主要分为四个模块:封包监视,限制规则,日志查询,平安策略。模块之间具体关系如图3.1所表示。图3.1虚拟防火墙设计时接受JAVA(前台)+数据库SQL(后台),利用JAVA进行界面及各种操作选择的设计,在此基础上建立的JDBC,为独立于数据库管理系统DBMS的应用供应了能和多个不同数据库连接的通用接口。下面就封包监视这一模块的设计进行分析。3.1数据库表的建立数据库表的创建主要是为了便利各种攻击流规则的记录的增加和删除,以及日志的记录和查询都可以很便利的通过数据库来进行操作。具体各个表的创建如下所示:表RuleBook用来记录各种匹配规则,表结构如表3.1所示。表3.1RuleBook匹配规则表RuleName用来记录规则名称,主键,char类型Protocol协议类型,char类型Source1IP用来记录源端IP地址,int类型Source1IP用来记录源端IP地址,int类型Source1IP用来记录源端IP地址,int类型Source1IP用来记录源端IP地址,int类型SourcePort源端口号,int类型Direct单向双向选择,char类型Aim1IP用来记录目的IP地址,int类型Aim2IP用来记录目的IP地址,int类型Aim3IP用来记录目的IP地址,int类型Aim4IP用来记录目的IP地址,int类型AimPort目的端口号,int类型Remark备注说明,char类型表Safety用来记录各种受约束网络信息,表结构如表3.2所示。表3.2Safety受约束网络信息表SafetyName用来记录约束网络名称,主键,char类型Source1aIPSource2aIP用来记录起先IP地址,int类型Source3aIPSource4aIP用来记录起先IP地址,int类型Source1bIPSource2bIP用来记录结束IP地址,int类型Source3bIPSource4bIP用来记录结束IP地址,int类型Remarklog备注说明,char类型表WatchTable用来记录日志信息,表结构如表3.3所示。表3.3WatchTabel日志记录表WatchName用来记录日志编号,主键,char类型Pro协议类型,char类型S1IPS2PS3IPS4IP用来记录源端IP地址,int类型SPort源端口号,int类型Direction单向双向选择,char类型A1IPA2IPA3IPA4IP用来记录目的IP地址,int类型APort目的端口号,int类型Remark1log备注说明,char类型3.2封包监视的设计在此模块中用户可以将源端IP地址、源端端口、目的IP地址、目的端口,以及协议类型和数据包进出为双向或者单向进行选择,在点击确定按钮之后,先将获得信息插入日志表中,其中备注项为空,系统将会将获得信息到RuleBook规则表中进行匹配,假如能匹配到相符合的规则,则将在日志记录中的备注项中加入相关的异样流说明。进行匹配的Java代码如下:Try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//装载SQLServer驱动程序Connectioncon=DriverManager.getConnection("jdbc:odbc:wk");//进行装载和连接sqlstring1="add_WatchTable'"+WatchName+"','"+Pro+"','"+S1IP+"','"+S2IP+"','"+S3IP+"','"+S4IP+"','"+SPort+"','"+Direction+"','"+A1IP+"','"+A2IP+"','"+A3IP+"','"+A4IP+"','"+APort+"'";//这是对存储过程add_WatchTablede调用,其后面为相应的参数,当用户将源端IP地址、源端端口、目的IP地址、目的端口,以及协议类型和数据包进出类型输入之后,便传递到相应的参数之中去,并且调用存储过程;其中参数获得是通过语句:WatchName=nametxt.getText().toString();获得CallableStatementstmt=con.prepareCall(sqlstring1);System.out.println(sqlstring1);//显示相关信息ResultSetresult1=stmt.executeQuery();//提交SQL语句,创建一个result1对象stmt.close();//关闭Statement对象con.close();//关闭链接}在数据库中的相关操作接受了存储过程”add_WatchTable”,其代码如下:createprocadd_WatchTable@WatchNamechar(20),@Prochar(4),@S1IPint,@S2IPint,@S3IPint,@S4IPint,@SPortint,@Directionchar(4),@A1IPint,@A2IPint,@A3IPint,@A4IPint,@APortintasbegindeclare@Remark1logchar(40)insertintoWatchTablevalues(@WatchName,@Pro,@S1IP,@S1IP,@S3IP,@S4IP,@SPort,@Direction,@A1IP,@A2IP,@A3IP,@A4IP,@APort,@Remark1log)select@Remark1log=R.RemarkfromRuleBookRwhereR.SourcePort=@SPortandR.AimPort=@APortandR.Protocol=@ProandR.Direct=@DirectionupdateWatchTablesetRemark1log=@Remark1logwhereWatchName=@WatchNameend该段代码主要实现了数据在WatchTable表中的插入以及和RuleBook表中数据进行匹配的操作,假如匹配成功,则修改WatchTable表中的备(Remark1log)。当用户输入了必要的相关数据信息之后,数据分别被传递到相对应的参数之中,通过存储过程首先将获得信息插入到WatchTable日志记录表中,然后再进行和RuleBook规则表进行匹配,从上面的存储过程语句中可以看出用户输入的源端口号,目的端口号,协议类型等相关特征和规则表中的相关内容进行匹配,假如匹配不符合,则不修改日志记录表中的备注项,即备注项内容为空,而为空则默认为正常包;假如匹配符合要求,则将规则表中匹配相符合行中备注说明中的值提取出来赋到日志列表中的备注项中,即说明白该数据包为何种类型的攻击。上面所表示内容的具体流程操作如图3.2所示:图3.2数据包过滤流程图首先运行数据库,并建立一个名称为”wk”的数据源,再运行Java程序便可以了。下面是运行的结果:封包监视在封包监视页面中总共分为两个部分:IP包过滤演示:在此处用户输入IP包头名,源IP地址,源端口号,目的IP地址,目的端口号,方向和协议类型,点击确定之后便可以进行匹配并写入日志了。显示IP监视列表:点击此按钮之后便可显示响应的监视列表。其具体操作页面如图3.3所示。图3.2封包监视页面当用户输入了必要的相关数据信息之后,数据分别被传递到相对应的参数之中,通过存储过程首先将获得信息插入到WatchTable日志记录表中,然后再进行和RuleBook规则表进行匹配,从上面的存储过程语句中可以看出用户输入的源端口号,目的端口号,协议类型等相关特征和规则表中的相关内容进行匹配,假如匹配不符合,则不修改日志记录表中的备注项,即备注项内容为空,而为空则默认为正常包;假如匹配符合要求,则将规则表中匹配相符合行中备注说明中的值提取出来赋到日志列表中的备注项中,即说明白该数据包为何种类型的攻击。第四章防火墙系统的设计和实现4.1总体框架模型设计本文设计的防火墙系统总体框架如图4.1所示。总体上,该防火墙系统分为两大部分:包过滤驱动程序工作在内核态,负责拦截和过滤数据包;应用程序工作在用户态,负责建立用户的配置界面,除了和驱动程序进行正确的通信外,还须要供应网络监控、信息显示、协议分析、流量统计、过滤规则设置、数据包存盘等操作。应用程序将包过滤规则传递给驱动程序,驱动程序应用这个规则对包进行处理。下面分别介绍包过滤驱动程序和应用程序的设计。图4.1防火墙系统总体框架4.2包过滤驱动程序设计该包过滤驱动程序PacketFilterDriver.exe位于核心态,主要用于在数据链路层和网络层之间拦截全部接受或发送的数据包,依据过滤规则判别是否允许包通过。同时处理上层应用程序发送的IRP,可以将数据包干脆传送到应用程序、设置网卡的工作模式等。包过滤驱动程序以DDKforWindowsXP中的NDIS中间驱动程序例程Passthru为骨架,抽取其中的有用部分来进行编程实现。由于Passthru是一个标准的NDIS中间过滤驱动程序的框架,数据包通过它的时候什么都不做,也没有和上层应用程序的接口。因此,必需在此基础上添加在接收和发送函数中拦截数据包并过滤、和上层应用程序通信以及设置网卡工作模式等功能。新的包过滤驱动程序须要实现下面几个功能:(1)驱动程序初始化;(2)网卡绑定和解除绑定;(3)截获和过滤发送数据包;(4)截获和过滤接收数据包;(5)和上层应用程序通信。4.3上层应用程序的设计防火墙的上层应用城市需FirewallApp.EXE负责供应用户界面,为用户供应如下的主要功能(1)和底层驱动程序的通信;(2)选择下次包过滤驱动程序监控的网卡;(3)捕获和过滤数据包;(4)网络流量统计,监控网络数据流淌状况;(5)过滤规则设置,支持对常见协议和地址的过滤;(6)协议分析,用树状试图有层次的显示以太数据帧的解码信息;(7)包内容显示,以十六进制的形式显示整个数据包的数据转储;(8)对捕获到的数据包的存储和加载。FirewallApp.EXE能对网络实施监控,为网络管理员队网络中的数据包进行实时的检测、分析供应一个合适的工具,通过它可以监控网络的状态、数据流淌状况已经网络上传输的信息,并可以利用这些信息解除网络故障。为了便于用户分析或同级感爱好的数据包,可以依据过滤故障(基于协议和地址)对捕获的数据包进行过滤。4.4.防火墙的优化在应用程序建立一个热数据包缓冲池(LILO的队列),并设置三个线程:一个读线程(ReadRequestProc)不停地想驱动程序发送异步读请求,使得驱动程序的读队列始终不为空,当驱动程序捕获到数据包时,总有读队列始终不为空,当驱动程序捕获到数据包时,总有读队列在那里等待“满足需求”;另一个包处理线程(ReadProcessProc)通过完成端口负责检查这些读请求的完成状况,每检测到一个读请求成功完成时,就对数据实施过滤规则,并确定是否通知用户界面线程处理。最终一个线程进行数据处理操作,像依据接收的数据包发送新数据包这样的工作都由它来进行。上面三个线程中,为尽可能不丢失包或少丢包,将前两个线程的优先级设置为最高。这三个线程之间接受事务机制协调,保证读请求队列保持在确定长度。通过Win32的重叠I/O机制,应用程序可以提请一项I/O操作,重叠的操作请求在后台完成,而同一时间提请操作的线程去做其它的事情。等重叠操作完成后线程收到有关的通知。这种机制对那些耗时的操作而言特殊有用。重叠I/O可以提高些性能。一个完成端口其实就是一个通知队列,由操作系统把已经完成的重叠I/O请求的通知放入其中。当某项I/O操作一旦完成,某个可以对该操作结果进行处理的工作者线程就会收到一

温馨提示

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

评论

0/150

提交评论