三种防火墙实现技术的比较

来源 :电子世界 | 被引量 : 0次 | 上传用户:q80602655
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】目前防火墙实现技术中关于数据包的处理方法,基本上都是采用BPF的包过滤算法,数据包的传送采用复制的方式,增加了不必要的负荷。本文对FreeBSD操作系统下的netgraph机制进行了分析和描述,并针对内容过滤防火墙,并和另外两种常用的实现技术Squid,BPF进行了分析和比较。得出了基于netgraph机制的内容过滤防火墙更优越的结论。
  【关键词】netgraph;BPF;防火墙;Squid
  1.引言
  随着因特网的广泛使用,网络安全成为一个很重要的问题。BPF具有灵活以及使用方便的优点,也具有较快的运行速度,但是如果我们需要对内容进行过滤的时候,传统的BPF和应用代理(例如squid)实现起来在速度和性能方面的却并不是很好,而且也缺乏灵活性。为了增强多协议的支持以及提高处理的速度,提高系统的灵活性,我们基于netgraph机制进行了新的研究工作,并对三种实现技术的性能进行了比较。
  2.netgraph机制
  2.1 概述
  netgraph机制是一个遵循Unix规范的一个内核子系统,它由许多模块所组成,每个模块完成一定的功能。直观的来说,它是由nodes,edges组成。数据流沿着edge从一个node流向另外一个node。当node收到数据包的时候,执行一定的数据包处理操作,然后转发数据包到另外一个node。在这个数据包处理操作中,可以是简单的添加和删除数据包头,也可以添加更具体的处理操作(例如数据包的内容合成,校验等)。netgraph子系统设计思想采用了System V的流技术,因此具有更快的速度、灵活性和更高的处理效率。
  netgraph对每一个node和hook结构采用引用计数。每一个到node或者hook的引用当作一次计数。通过这种方式对内存进行合理的管理和分配,避免内存的浪费。因为netgraph运行在内核中,所以需要考虑优先级的问题,netgraph采取splnet来进行优先级的分配和释放。特别是在和用户进程进行交互的时候,更需要特别考虑优先级的问题。避免造成系统的死锁或者阻塞。
  2.2 netgraph在TCP/IP协议栈中位置
  图1 netgraph在TCP/IP协议栈中位置
  简单的说,在网卡驱动程序接收到来自网络传输的数据包以后,首先进行校验和合法性检查,如果是合法的数据包,则把数据包封装到一个mbuf类型的数据结构里。然后传递给ethernet网卡数据处理模块函数ether_input的输入队列,ether_input从输入队列里读入数据进行处理以后,然后传递给netgraph内核子模块的处理函数ng_input的输入队列,如果系统启动netgraph子系统,则数据包交给ng_input的输入队列,如果系统没有启动netgraph子系统,则首先把数据copy一份给BPF进行处理,然后把数据转发给上层协议处理单元进行处理。所以我们的netgraph子系统在上层协议处理单元处理数据以前就截获了数据包,所以处理速度更快。
  3.BPF与Squid分析
  3.1 BPF技术介绍
  BPF是berkeley packet filter的缩写,BPF是一个核心态的组件,也是一个过滤器.BPF是一种比较理想的抓包方案。在核心态执行,所以效率比较高,但是,只有少数OS支持(主要是一些BSD操作系统.要使用这项功能前你必须修改kernel,以达成监听网络的目的。像tcpdump和NFR这些程式都使用BPF。然而BSD的监听程式也都透过BPF来达成,如果有人拿到你系统的root权限的话,在系统上设定BPF功能反而帮助他们更容易的监听你的网路。如果没有必要的话,不要设定kernel中BPF的功能。FreeBSD出厂的设定值是将这个功能关闭起来的。
  如果内核有多个BPF应用程序,对每个数据包都要运行这几个程序。问题在于很难从数据包过滤器程序推断出应用程序实际上对哪一种数据包感兴趣,所以一般的解决方法就是始终运行过滤器。假设一个应用程序注册的BPF程序是获取发往某个广播地址的低速数据流。绝大多数以太网卡有一个64位入口的哈希表的硬件实现的广播地址过滤器,用来忽略大多数不想要的广播数据包,所以有可能以极低的开销完成这一操作。但是由于有了BPF,内核必须把接口设置为混杂模式,接收所有数据包,并对它们运行过滤器。不管怎样,这样确实可以工作,但考虑到对所要求的数据包进行的处理,就已经变得过于麻烦了。
  3.2 Squid技术分析
  Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。目前,Squid可以代理HTTP,FTP,GOPHER,SSL和WAIS协议,暂不能代理POP,NNTP等协议。
  4.三种防火墙实现技术的比较
  因为网关是一种拦截式的操作,BPF是一个旁路系统,当数据包传送到了内核以后,内核从网卡截获的数据包首先传递到ether_input队列中,ether_input处理函数从ether_input输入队列中读取数据包,然后转发到BPF的输入队列中,接着判断系统是否启动netgraph内核处理功能,如果启动了这个功能,则把数据包转发给netgraph进行处理,如果没有启动netgraph,则把数据包转发给上层的协议处理输入队列(例如,IP,IPX输入队列等).从上边的处理过程,我们可以看出,BPF是一个旁路式的系统,把数据包COPY了一份交给它进行了处理,正常的数据包继续向下边传输进行处理,而netgraph是一个拦截式的处理,数据包交给了它以后,就不再向下边传输,而直接对数据包进行了处理。   BPF对数据包的处理是利用一定的匹配策略和算法,对包头符合一定规则的数据进行匹配,从而决定是丢弃数据包还是继续处理。而我们的网关产品需要对内容进行匹配和处理的操作,所以就是通过BPF进行处理,也需要对数据包进行合成的处理操作。所以现有的BPF匹配策略和算法对网关产品并没有更多的可复用价值。
  图2 数据包的处理流程
  与squid进行比较,squid的处理过程是在应用层进行处理,而且squid是代理型的防火墙,它的优点是在应用层有丰富的库函数,有许多的库函数可以供调用,而且开发起来速度非常快,对数据的处理也非常的灵活,能够对用户数据进行更多的处理操作,除了对url进行过滤以外还可以对内容进行过滤,甚至可以利用语义识别的技术对特殊的关键字进行拦截的操作。缺点是:squid是利用realsocket的技术来进行数据包数据的处理的,这样没有办法得到用户的ethernet网头的信息,如果需要对物理地址进行处理的时候,则没有办法得到ethernet网头的信息,而且如果想让squid作为网关产品,用户必须在自己的个人计算机上边设置代理服务器的地址和端口号,这样就导致了管理和操作起来非常的不方便。而且处理能力也因为受代理服务器的限制而速度变慢。另外squid不能监听所有的端口,它只能监听固定的端口,这样也缺乏灵活性。在性能方面,squid也是旁路系统,同样也有数据的copy操作,并不能节省系统的处理时间,反而增加了系统的负荷。Squid是一个显式代理系统,所有指向你的数据交给你处理,如果在squid没有对这个端口进行接收,则数据直接丢弃。Squid实际上是一个重新定向的操作,用户浏览的信息实际上是从squid服务器上边取得的,而squid又从用户需要访问的服务器上边把需要的数据给取回来。数据包的处理流程如图1所示。
  5.结论
  Netgraph处理也比普通的socket性能优越,netgraph是我挑包,只挑选适合我的数据包,不适合我的数据包直接丢弃,而socket则不同,它是包挑我,比如数据包是IP数据包,则直接把这个数据包转发到了ip socket,socket必须无条件的接收。Netgraph中,socket是一个接口,需要什么数据包由内核来做,内核告诉netgraph,你去拿什么样的包,而普通的socket则是告诉内核,我需要什么样的包,有这样的包才交给我,满足自己条件的数据包,自己才能看到。同时普通的socket对数据包的处理比netgraph多了2个步骤,一个是进行ip_input的处理,另外一个是多了tcp_input的处理。另外,在处理级别上边,netgraph的处理级别比ip_input处理级别要高,netgraph的中断处理级别也要比普通的socket的中断处理级别也要高,通过以上的比较,我们可以看到netgraph处理的速度和效率明显高于squid,而且处理的灵活性也要比squid高很多。
  作者简介:周安顺(1975—),男,现供职于中国联通洛阳市分公司,主要研究方向:计算机网络,网络安全,项目管理等。
其他文献
提出了电感耦合等离子体原子发射光谱法(ICP-AES)测定固体生物质燃料中砷含量的方法。取样品0.100O-0.2000g,加入硝酸5mL和过氧化氢2mL,微波消解并加适量水稀释至一定体积,用此溶液
采用超高液相色谱-串联质谱法同时测定发泡聚苯乙烯材料中阻燃剂α,β,γ六溴环十二烷(HBCD)。样品用乙腈进行萃取,选用Waters ACQUITY UPLCGBEH C18色谱柱分离,以乙腈-5mmol&#18
极谱法重金属水质在线监测仪,以其测量时间短、反应灵敏、测量精度高、数据稳定等特性在污染源的在线监测中被广泛应用。但极谱法重金属水质在线监测仪也存在一定的缺陷,特别是
我国首台“板式制冰蓄冷空调”日前在北京完成了一个制冷季的正式运行,各项指标均符合技术要求,权威科研机构评定该产品及相关技术成熟,比传统蓄冷空调节能40%以上,领先世界同业水
《建筑物能源效益条例草案》已于2010年年度获得香港立法会通过,并立法成为《建筑物能源效益条例》。该条例下的附属规例,即《建筑物能源效益(费用)规例》和《建筑物能源效益(注册
本文先对高校的EDA技术教学现状进行了分析,针对EDA教学实践相关软件的彼此独立,之间的相互关联性不强的问题提出了解决方案一以Altium Designer作为EDA实践教学的平台,并列具了
以前区间自动闭塞站间联系的通道及方向电路的传输通道主要是通过信号电缆进行传输,区间距离较长时,电缆也较长,电缆接续就多,故障点多,现场维修非常麻烦。WBS站间信息传输系统采
文章结合电网继电保护的实际情况,阐述了供电企业在人员配置、基础资料管理等方面存在的问题。结合电网整定计算及继电保护管理实际工作经验,就如何加强电网继电保护整定计算管
鉴于模拟滤波器在实际工作中使用的必要性,工作之余,利用Matlab设计了模拟滤波器。先以单个滤波器的设计为基础,以滤波器的级联为方法,中间间接设计了相移滤波器,最终实现无失真的
目前,我国制造行业在起生产领域所应用到的控制手段包括三种,即继电器控制、计算机控制和PLC控制。而本文所讲的PDM管理系统主要针对以上三种工艺控制手段,由于PDM管理系统拥有