防火墙的概念及实现原理
chw · 2007-08-30 17:12 · 69262 次点击
一.防火墙的概念
近年来,随着普通计算机用户群的日益增长,“防火墙”一词已经不再是服务器领域的专署,大部分家庭用户都知道为自己爱机安装各种“防火墙”软件了。但是,并不是所有用户都对“防火墙”有所了解的,一部分用户甚至认为,“防火墙”是一种软件的名称……
到底什么才是防火墙?它工作在什么位置,起着什么作用?查阅历史书籍可知,古代构筑和使用木制结构房屋的时候为防止火灾的发生和蔓延,人们将坚固的石块堆砌在房屋周围作为屏障,这种防护构筑物就被称为“防火墙”(FireWall)。时光飞梭,随着计算机和网络的发展,各种攻击入侵手段也相继出现了,为了保护计算机的安全,人们开发出一种能阻止计算机之间直接通信的技术,并沿用了古代类似这个功能的名字——“防火墙”技术来源于此。用专业术语来说,防火墙是一种位于两个或多个网络间,实施网络之间访问控制的组件集合。对于普通用户来说,所谓“防火墙”,指的就是一种被放置在自己的计算机与外界网络之间的防御系统,从网络发往计算机的所有数据都要经过它的判断处理后,才会决定能不能把这些数据交给计算机,一旦发现有害数据,防火墙就会拦截下来,实现了对计算机的保护功能。
防火墙技术从诞生开始,就在一刻不停的发展着,各种不同结构不同功能的防火墙,构筑成网络上的一道道防御大堤。
二.防火墙的分类
世界上没有一种事物是唯一的,防火墙也一样,为了更有效率的对付网络上各种不同攻击手段,防火墙也派分出几种防御架构。根据物理特性,防火墙分为两大类,硬件防火墙和软件防火墙。软件防火墙是一种安装在负责内外网络转换的网关服务器或者独立的个人计算机上的特殊程序,它是以逻辑形式存在的,防火墙程序跟随系统启动,通过运行在Ring0级别的特殊驱动模块把防御机制插入系统关于网络的处理部分和网络接口设备驱动之间,形成一种逻辑上的防御体系。
在没有软件防火墙之前,系统和网络接口设备之间的通道是直接的,网络接口设备通过网络驱动程序接口(NetworkDriverInterfaceSpecification,NDIS)把网络上传来的各种报文都忠实的交给系统处理,例如一台计算机接收到请求列出机器上所有共享资源的数据报文,NDIS直接把这个报文提交给系统,系统在处理后就会返回相应数据,在某些情况下就会造成信息泄漏。而使用软件防火墙后,尽管NDIS接收到仍然的是原封不动的数据报文,但是在提交到系统的通道上多了一层防御机制,所有数据报文都要经过这层机制根据一定的规则判断处理,只有它认为安全的数据才能到达系统,其他数据则被丢弃。因为有规则提到“列出共享资源的行为是危险的”,因此在防火墙的判断下,这个报文会被丢弃,这样一来,系统接收不到报文,则认为什么事情也没发生过,也就不会把信息泄漏出去了。
软件防火墙工作于系统接口与NDIS之间,用于检查过滤由NDIS发送过来的数据,在无需改动硬件的前提下便能实现一定强度的安全保障,但是由于软件防火墙自身属于运行于系统上的程序,不可避免的需要占用一部分CPU资源维持工作,而且由于数据判断处理需要一定的时间,在一些数据流量大的网络里,软件防火墙会使整个系统工作效率和数据吞吐速度下降,甚至有些软件防火墙会存在漏洞,导致有害数据可以绕过它的防御体系,给数据安全带来损失,因此,许多企业并不会考虑用软件防火墙方案作为公司网络的防御措施,而是使用看得见摸得着的硬件防火墙。
硬件防火墙是一种以物理形式存在的专用设备,通常架设于两个网络的驳接处,直接从网络设备上检查过滤有害的数据报文,位于防火墙设备后端的网络或者服务器接收到的是经过防火墙处理的相对安全的数据,不必另外分出CPU资源去进行基于软件架构的NDIS数据检测,可以大大提高工作效率。
硬件防火墙一般是通过网线连接于外部网络接口与内部服务器或企业网络之间的设备,这里又另外派分出两种结构,一种是普通硬件级别防火墙,它拥有标准计算机的硬件平台和一些功能经过简化处理的UNIX系列操作系统和防火墙软件,这种防火墙措施相当于专门拿出一台计算机安装了软件防火墙,除了不需要处理其他事务以外,它毕竟还是一般的操作系统,因此有可能会存在漏洞和不稳定因素,安全性并不能做到最好;另一种是所谓的“芯片”级硬件防火墙,它采用专门设计的硬件平台,在上面搭建的软件也是专门开发的,并非流行的操作系统,因而可以达到较好的安全性能保障。但无论是哪种硬件防火墙,管理员都可以通过计算机连接上去设置工作参数。由于硬件防火墙的主要作用是把传入的数据报文进行过滤处理后转发到位于防火墙后面的网络中,因此它自身的硬件规格也是分档次的,尽管硬件防火墙已经足以实现比较高的信息处理效率,但是在一些对数据吞吐量要求很高的网络里,档次低的防火墙仍然会形成瓶颈,所以对于一些大企业而言,芯片级的硬件防火墙才是他们的首选。
有人也许会这么想,既然PC架构的防火墙也不过如此,那么购买这种防火墙还不如自己找技术人员专门腾出一台计算机来做防火墙方案了。虽然这样做也是可以的,但是工作效率并不能和真正的PC架构防火墙相比,因为PC架构防火墙采用的是专门修改简化过的系统和相应防火墙程序,比一般计算机系统和软件防火墙更高度紧密集合,而且由于它的工作性质决定了它要具备非常高的稳定性、实用性和非常高的系统吞吐性能,这些要求并不是安装了多网卡的计算机就能简单替代的,因此PC架构防火墙虽然是与计算机差不多的配置,价格却相差很大。
现实中我们往往会发现,并非所有企业都架设了芯片级硬件防火墙,而是用PC架构防火墙甚至前面提到的计算机替代方案支撑着,为什么?这大概就是硬件防火墙最显著的缺点了:它太贵了!购进一台PC架构防火墙的成本至少都要几千元,高档次的芯片级防火墙方案更是在十万元以上,这些价格并非是小企业所能承受的,而且对于一般家庭用户而言,自己的数据和系统安全也无需专门用到一个硬件设备去保护,何况为一台防火墙投入的资金足以让用户购买更高档的电脑了,因而广大用户只要安装一种好用的软件防火墙就够了。
为防火墙分类的方法很多,除了从形式上把它分为软件防火墙和硬件防火墙以外,还可以从技术上分为“包过滤型”、“应用代理型”和“状态监视”三类;从结构上又分为单一主机防火墙、路由集成式防火墙和分布式防火墙三种;按工作位置分为边界防火墙、个人防火墙和混合防火墙;按防火墙性能分为百兆级防火墙和千兆级防火墙两类……虽然看似种类繁多,但这只是因为业界分类方法不同罢了,例如一台硬件防火墙就可能由于结构、数据吞吐量和工作位置而规划为“百兆级状态监视型边界防火墙”,因此这里主要介绍的是技术方面的分类,即“包过滤型”、“应用代理型”和“状态监视型”防火墙技术。
那么,那些所谓的“边界防火墙”、“单一主机防火墙”又是什么概念呢?所谓“边界”,就是指两个网络之间的接口处,工作于此的防火墙就被称为“边界防火墙”;与之相对的有“个人防火墙”,它们通常是基于软件的防火墙,只处理一台计算机的数据而不是整个网络的数据,现在一般家庭用户使用的软件防火墙就是这个分类了。而“单一主机防火墙”呢,就是我们最常见的一台台硬件防火墙了;一些厂商为了节约成本,直接把防火墙功能嵌进路由设备里,就形成了路由集成式防火墙……