以前对防火墙接触甚少,所了解的也是从系统底层实现角度看的一些分析细节,最近由于工作需要,对防火墙的发展、分类、现状和趋向等方面做了概略的了解,也有一些体会,做个简单的总结。
第一部分,防火墙的基本概念
首先说明一些文中大量用到的概念:
外网(非受信网络):防火墙外的网络,一般为Internet;
内网(受信网络):防火墙内的网络;
受信主机和非受信主机分别对照内网和外网的主机。
非军事化区(DMZ):为了配置管理方便,内网中需要向外提供服务的服务器往往放在一个单独的网段,这个网段便是非军事化区。防火墙一般配备三块网卡,在配置时一般分别分别连接内部网,Internet和DMZ。
近来随着网络安全问题日益严重,网络安全产品也被人们重视起来。防火墙作为最早出现的网络安全产品和使用量最大的安全产品,也受到用户和研发机构的青睐。
以往在没有防火墙时,局域网内部上的每个节点都暴露给Internet上的其它主机,此时局域网的安全性要由每个节点的坚固程度来决定,并且安全性等同于其中最弱的节点。而防火墙是放置在局域网与外部网络之间的一个隔离设备,它可以识别并屏蔽非法请求,有效防止跨越权限的数据访问。防火墙将局域网的安全性统一到它本身,网络安全性是在防火墙系统上得到加固,而不是分布在内部网络的所有节点上,这就简化了局域网安全管理。
防火墙的经典功能,仅仅是以下:
1.作为一个中心“遏制点”,将局域网的安全管理集中起来;
2.屏蔽非法请求,防止跨权限访问(并产生安全报警);
一.防火墙的分类
随后随着技术的发展,防火墙的技术也在不断发展,到今天,防火墙的分类和功能也在不断细化,但总的来说,可以分为以下两大类:
包过滤防火墙、应用级防火墙。
至于和入侵检测系统、分布式探测器融合起来的防火墙(系统),不在本报告讨论范围,其简介见第三部分。
1.包过滤防火墙
又叫网络级防火墙,因为它是工作在网络层。
它一般是通过检查单个包的地址、协议、端口等信息来决定是否允许此数据包通过。路由器便是一个“传统”的网络级防火墙。
防火墙可以提供内部信息以说明所通过的连接状态和一些数据流的内容,把判断的信息同规则表进行比较,在规则表中定义了各种规则来表明是否同意或拒绝包的通过。包过滤防火墙检查每一条规则直至发现包中的信息与某规则相符。如果没有一条规则能符合,防火墙就会使用默认规则,一般情况下,默认规则就是要求防火墙丢弃该包。其次,通过定义基于TCP或UDP数据包的端口号,防火墙能够判断是否允许建立特定的连接,如Telnet、FTP连接。
专门的防火墙系统一般在此之上加了功能的扩展,如状态检测等。状态检测又称动态包过滤,是在传统包过滤上的功能扩展,最早由checkpoint提出。传统的包过滤在遇到利用动态端口的协议时会发生困难,如ftp,防火墙事先无法知道哪些端口需要打开,而如果采用原始的静态包过滤,又希望用到此服务的话,就需要实现将所有可能用到的端口打开,而这往往是个非常大的范围,会给安全带来不必要的隐患。而状态检测通过检查应用程序信息(如ftp的PORT和PASS命令),来判断此端口是否允许需要临时打开,而当传输结束时,端口又马上恢复为关闭状态。
网络级防火墙简洁、速度快、费用低,并且对用户透明,但是对网络的保护很有限,因为它只检查地址和端口,对网络更高协议层的信息无理解能力。
2.应用级防火墙
应用级防火墙主要工作在应用层。应用级防火墙往往又称为应用级网关,它此时也起到一个网关的作用。
应用级防火墙检查进出的数据包,通过自身(网关)复制传递数据,防止在受信主机与非受信主机间直接建立联系。应用级防火墙能够理解应用层上的协议,能够做复杂一些的访问控制,并做精细的注册和审核。其基本工作过程是:当客户机需要使用服务器上的数据时,首先将数据请求发给代理服务器,代理服务器再根据这一请求向服务器索取数据,然后再由代理服务器将数据传输给客户机。由于外部系统与内部服务器之间没有直接的数据通道,外部的恶意侵害也就很难伤害到内网。
常用应用级防火墙已有了相应的代理服务软件,如HTTP、SMTP、FTP、Telnet、r系列等等,但是对于新开发的应用,尚没有相应的代理服务,它们将通过网络级防火墙和一般的代理服务(如sock代理)。
应用级网关有较好的访问控制,是目前最安全的防火墙技术,但实现麻烦,而且有的应用级网关缺乏“透明度”。在实际使用中,用户在受信任网络上通过防火墙访问Internet时,经常会出现延迟和多次登录才能访问外网的问题。
显然可知,应用级防火墙每一种协议需要相应的代理软件,使用时工作量大,效率明显不如网络级防火墙。
在现在的防火墙分类中,还有“电路级网关”、“规则过滤防火墙”、“监测型防火墙”等等,但自己认为这些只是以上两大种防火墙中某一种技术上具体实现时的一种说法或者是两种防火墙的融合,故不再单独讨论。如所谓电路级网关是用来监控受信主机与非受信主机间的TCP握手信息来决定该会话(Session)是否合法,是从OSI模型的角度来称呼(会话层),而在TCP/IP模型中,它仍是属于网络层的。又如规则过滤防火墙即前边讨论的加入状态检测功能的包过滤防火墙。
从趋势上看,未来的防火墙将位于网络级防火墙和应用级防火墙之间,也就是说,网络级防火墙将变得更加能够识别通过的信息,而应用级防火墙在目前的功能上则向“透明”、“低级”方面发展。最终防火墙将成为一个快速注册稽查系统,可保护数据以加密方式通过,使所有组织可以放心地在节点间传送数据。
二.防火墙的附加功能
由于防火墙所处的优越位置(内网与外网的分界点),它在实际应用中也往往加入一些其他功能如NAT、VPN、路由管理等功能。
NAT(Network Address Translation)即网络地址转换。即将内网的IP地址或者外网的IP地址转换,一般分为源地址转换Source NAT(SNAT)和目的地址转换Destination NAT (DNAT)。常见的包伪装(Masquerading)就是一个SNAT特例,主要用来将有限的IP地址动态或静态地与内部的IP地址对应起来,用来缓解地址空间短缺的问题。端口转发(Port forwarding)、负载分担、以及透明代理,都属于DNAT,主要用于外网主机访问内网主机。
虚拟专用网(VPN)是指在公共网络中建立专用网络,数据通过安全的“加密通道”在公共网络中传播。VPN的基本原理是通过对IP包的封装及加密,认证等手段,从而达到保证安全的目的。它往往是在防火墙上附加一个加密模块实现。
路由安全管理典型实现可见checkpoint公司的Fire Wall-1防火墙,它主要指为路由器提供集中管理和访问列表控制。
以上是防火墙的一些附加功能,有些(如NAT)已经成为大多数防火墙的“标准”配置,但我们必须认识到,这些并非防火墙本身必须实现的功能,这对我们分析一个防火墙的市场定位,在有限成本下实现一个防火墙是很重要的。
【小结】
以上是对防火墙的一些基本概念做的讨论,自己并不认为这一部分是可有可无的,只有了解防火墙的工作原理、分类,我们才知道自己要去作些什么。
第二部分,防火墙实现
一.防火墙功能分析
当前防火墙(应该)主要实现如下功能:
1.包过滤
包过滤是防火墙所要实现的最基本功能,现在的防火墙已经由最初的地址、端口判定控制,发展到判断通信报文协议头的各部分,以及通信协议的应用层命令、内容、用户认证、用户规则甚至状态检测等等。
特别要提到的是状态监测技术,一般是加载一个检测模块,在不影响网络正常工作的前提下,模块在网络层截取数据包,然后在所有的通信层上抽取有关的状态信息,据此判断该通信是否符合安全策略。由于它是在网络层截获数据包的,因此它可以支持多种协议和应用程序,并可以很容易地实现应用的扩充。
目前国内防火墙大多号称已实现了状态检测技术,然而据朋友介绍,这些所谓的“状态检测”防火墙并不是真正的状态检测,因没有接触过此类防火墙,没有太多了解,不能做过多评论。
2.审计和报警机制
在防火墙结合网络配置和安全策略对相关数据分析完成以后,就要作出接受、拒绝、丢弃或加密等决定(target)。如果某个访问违反安全规定,审计和报警机制开始起作用,并作记录,报告等等。
审计是一种重要的安全措施,用以监控通信行为和完善安全策略,检查安全漏洞和错误配置,并对入侵者起到一定的威慑作用。报警机制是在通信违反相关策略以后,以多种方式如声音、邮件、电话、手机短信息及时报告给管理人员。
防火墙的审计和报警机制在防火墙体系中是很重要的,只有有了审计和报警,管理人员才可能知道网络是否受到了攻击。另外,防火墙的该功能也有很大的发展空间,如日志的过滤、抽取、简化等等。日志还可以进行统计、分析、(按照特征)存储(在数据库中),稍加扩展便又是一个网络分析与查询模块。
日志由于数据量比较大,主要通过两种方式解决,一种是将日志挂接在内网的一台专门存放日志的日志服务器上;一种是将日志直接存放在防火墙本身的存储器上。日志单独存放这种方式配置较为麻烦,然而可以存放的日志量可以很大;日志存放在防火墙本身时,无需做额外配置,然而由于防火墙容量一般很有限,所存放的日志量往往较小。目前这两种方案国内(包括国外)都有使用。
3.远程管理
管理界面一般完成对防火墙的配置、管理和监控。
管理界面设计直接关系到防火墙的易用性和安全性。目前防火墙主要有两种远程管理界面:web界面和GUI界面。对于硬件防火墙,一般还有串口配置模块和/或控制台控制界面。
管理主机和防火墙之间的通信一般经过加密。国内比较普遍采用自定义协议、一次性口令进行管理主机与防火墙之间通信(适用GUI界面)。
GUI界面可以设计的比较美观和方便,并且可以自定义协议,也为多数厂商使用。一般使用语言VB、VC,有部分厂家使用Java开发,并把此作为一个卖点(所谓跨平台)。Web界面也有厂商使用,然而由于防火墙因此要增加一个CGI解释部分,减少了防火墙的可靠性(GUI界面只需要一个简单的后台进程就可以),故应用不是太广泛。
部分厂家增加了校验功能,即系统会自动识别用户配置上的错误,防止因配置错误而造成的不安全隐患。
目前国内大部分防火墙厂商均是在管理界面上做文章,反观之管理界面固然很重要,然而它毕竟不是一个防火墙的全部,一个系统功能设计完善的防火墙其管理部分必然容易设计。
4.NAT
网络地址转换似乎已经成了防火墙的“标配”,绝大多数防火墙都加入了该功能。
目前防火墙一般采用双向NAT:SNAT和DNAT。SNAT用于对内部网络地址进行转换,对外部网络隐藏起内部网络的结构,使得对内部的攻击更加困难;并可以节省IP资源,有利于降低成本。DNAT主要实现用于外网主机对内网和DMZ区主机的访问。
5.代理
目前代理主要有如下几种实现方式:
a.透明代理(Transparent proxy)
透明代理实质上属于DNAT的一种,它主要指内网主机需要访问外网主机时,不需要做任何设置,完全意识不到防火墙的存在,而完成内外网的通信。但其基本原理是防火墙截取内网主机与外网通信,由防火墙本身完成与外网主机通信,然后把结果传回给内网主机,在这个过程中,无论内网主机还是外网主机都意识不到它们其实是在和防火墙通信。而从外网只能看到防火墙,这就隐藏了内网网络,提高了安全性。
b.传统代理
传统代理工作原理与透明代理相似,所不同的是它需要在客户端设置代理服务器。
如前所述,代理能实现较高的安全性,不足之处是响应变慢。
5.MAC与IP地址的绑定
这其实是一个可有可无的功能。
MAC与IP地址绑定起来,主要用于防止受控(不可访问外网)的内部用户通过更换IP地址访问外网。
因为它实现起来太简单了,内部只需要两个命令就可以实现,所以绝大多数防火墙都提供了该功能。
6.流量控制(带宽管理)和统计分析、流量计费
流量控制可以分为基于IP地址的控制和基于用户的控制。基于IP地址的控制是对通过防火墙各个网络接口的流量进行控制,基于用户的控制是通过用户登录来控制每个用户的流量,从而防止某些应用或用户占用过多的资源。并且通过流量控制可以保证重要用户和重要接口的连接。
流量统计是建立在流量控制基础之上的。一般防火墙通过对基于IP、服务、时间、协议等等进行统计,并可以与管理界面实现挂接,实时或者以统计报表的形式输出结果。流量计费从而也是非常容易实现的。
7.VPN
VPN在前边已经介绍过。在以往的网络安全产品中VPN是作为一个单独一个产品出现的,现在更多的厂家把两者捆绑到一起,这似乎体现了一种产品整合的趋势。
8.URL级信息过滤
这往往是代理模块的一部分,很多厂家把这个功能单独提取出来,作为一个卖点,但是我们要知道,它实现起来其实是和代理结合在一起的。
URL过滤用来控制内部网络对某些站点的访问,如禁止访问某些站点、禁止访问站点下的某些目录、只允许访问某些站点或者其下目录等等。
9.其他特殊功能
这些功能纯粹是为了迎合特殊客户的需要或者为赢得卖点而加上的。
如有时用户要求,如限制同时上网人数;限制使用时间;限制特定使用者才能发送E-mail;限制FTP只能下载文件不能上传文件;阻塞Java、ActiveX控件等,这些依需求不同而定。
有些防火墙更加入了扫毒功能,一般是与防病毒软件搭配。
综上所述,防火墙市场由于竞争激烈,各个厂家都在层出不穷的挖掘新功能,发明出新名词,但总的不出以上讨论范围,因为操作系统(多为Linux)本身也就能完成这么多功能。挖掘出一个象checkpoint的状态监测那样的有一定意义的功能,似乎远远超出了目前国内厂商的实力。
二.防火墙设计中的一些重点问题
1.方案:硬件?还是软件?
从上面讨论可以看出,现在防火墙的功能越来越多越花哨,如此多的功能必然要求系统有一个高效的处理能力。
防火墙从实现上可以分为软件防火墙和硬件防火墙。软件防火墙以checkpoint公司的Firewall-I为代表,其实现是通过dev_add_pack的办法加载过滤函数(Linux,其他操作系统没有作分析,估计类似),通过在操作系统底层做工作来实现防火墙的各种功能和优化。国内也有一些所谓的软件防火墙,但据了解大多是所谓“个人”防火墙,而且功能及其有限,故不在此讨论范围。
在国内目前已通过公安部检验的防火墙中,硬件防火墙占绝大多数。硬件防火墙一种是从硬件到软件都单独设计,典型如Netscreen防火墙不但软件部分单独设计,硬件部分也采用专门的ASIC集成电路。
另外一种就是基于PC架构的使用经过定制的通用操作系统的所谓硬件防火墙。目前国内绝大多数防火墙都属于这种类型。
虽然都号称硬件防火墙,国内厂家和国外厂家还是存在着巨大区别。硬件防火墙需要在硬件和软件两方面同时下功夫,国外厂家的通常做法是软件运算硬件化,其所设计或选用的运行平台本身的性能可能并不高,但它将主要的运算程序(查表运算是防火墙的主要工作)做成芯片,以减少主机CPU的运算压力。国内厂家的防火墙硬件平台基本上采用通用PC系统或工业PC架构(直接原因是可以节省硬件开发成本),在提高硬件性能方面所能做的工作仅仅是提升系统CPU的处理能力,增大内存容量而已。现在国内防火墙的一个典型结构就是:工业主板+x86+128(256)M内存+DOC/DOM+硬盘(或不要硬盘而另增加一个日志服务器)+百兆网卡 这样一个工业PC结构。
在软件性能方面,国内外厂家的差别就更大了,国外(一些著名)厂家均是采用专用的操作系统,自行设计防火墙。而国内所有厂家操作系统系统都是基于通用的Linux,无一例外。各厂家的区别仅仅在于对Linux系统本身和防火墙部分(2.2内核为ipchains,2.4以后内核为netfilter)所作的改动量有多大。
事实上,Linux只是一个通用操作系统,它并没有针对防火墙功能做什么优化,而且其处理大数据量通信方面的能力一直并不突出,甚至比较低下(这也是Linux一直只是低端服务器的宠儿的重要原因,我自己认为,在这一点上它还不如BSD系列,据说国外有用BSD做防火墙的,国内尚未见到)。现在绝大部分厂家,甚至包括号称国内最大的天融信,在软件方面所作的工作无非也就是系统有针对性的裁减、防火墙部分代码的少量改动(绝大部分还是没有什么改动)和少量的系统补丁。而且我们在分析各厂家产品时可以注意这一点,如果哪个厂家对系统本身做了什么大的改动,它肯定会把这个视为一个重要的卖点,大吹特吹,遗憾的是似乎还没有什么厂家有能力去做宣传(天融信似乎有一个类似于checkpoint的功能:开放式的安全应用接口 TOPSEC,但它究竟做了多少工作,还需要去仔细了解)。
目前国内厂家也已经认识到这个问题,有些在做一些底层的工作,但有明显成效的,似乎还没有。
在此我们仅针对以Linux(或其他通用操作系统)为基础的、以PC架构为硬件载体的防火墙做讨论,以下如不特别提出,均同。
2.内核和防火墙设计
现在有一种商业卖点,即所谓“建立在安全操作系统之上的第四代防火墙”(关于防火墙分代的问题,目前有很多讨论,比较一致的是把包过滤防火墙称为第一代防火墙,把应用型防火墙(一般结合了包过滤功能,因此也成为混合型防火墙)称为第二代防火墙,有些厂家把增加了检测通信信息、状态检测和应用监测的防火墙称为第三代防火墙,更有甚者在此基础上提出了采用安全操作系统的防火墙,并把这个称为第四代防火墙)。所谓安全操作系统,其实大多用的还是Linux,所不同的是需要做一些内核加固和简单改造的工作,主要有以下:
取消危险的系统调用,或者截获系统调用,稍加改动(如加载一些llkm);
限制命令执行权限;
取消IP转发功能;
检查每个分组的接口;
采用随机连接序号;
驻留分组过滤模块;
取消动态路由功能;
采用多个安全内核(这个只见有人提出,但未见到实例,对此不是很清楚)。
以上诸多工作,其实基本上都没有对内核源码做太大改动,因此从个人角度来看算不上可以太夸大的地方。
对于防火墙部分,国内大部分已经升级到2.4内核所支持的netfilter。netfilter已经是一个功能比较完善的防火墙框架,它已经支持基于状态的监测(通过connection track模块实现)。而且netfilter是一个设计很合理的框架,可以在适当的位置上登记一些需要的处理函数,正式代码中已经登记了许多处理函数,如在NF_IP_FORWARD点上登记了装发的包过滤功能(包过滤等功能便是由这些正式登记的函数实现的)。我们也可以登记自己的处理函数,在功能上作扩展(如加入简单的IDS功能等等)。这一点是国内厂家可以做文章的地方,至于netfilter源码的修改,对国内厂家来说似乎不太现实。
至于采用其它防火墙模型的,目前还没有看到(可能是netfilter已经设计的很成功,不需要我们再去做太多工作)。
3.自我保护能力(安全性)
由于防火墙的特殊功能和特殊位置,它自然是众多攻击者的目标,因此它的自我包括能力在设计过程中应该放在首要的位置。
A.管理上的安全性
防火墙需要一个管理界面,而管理过程如何设计的更安全,是一个很重要的问题。目前有两种方案。
a.设置专门的服务端口
为了减少管理上的风险和降低设计上的难度,有一些防火墙(如东方龙马)在防火墙上专门添加了一个服务端口,这个端口只是用来和管理主机连接。除了专用的服务口外,防火墙不接受来自任何其它端口的直接访问。
这样做的显著特点就是降低了设计上的难度,由于管理通信是单独的通道,无论是内网主机、外网主机还是DMZ内主机都无法窃听到该通信,安全性显然很高,而且设计时也无需考虑通信过程加密的问题。
然而这样做,我们需要单独设置一台管理主机,显然太过浪费,而且这样管理起来的灵活性也不好。
b.通信过程加密
这样无需一个专门的端口,内网任意一台主机都可以在适当的情况下成为管理主机,管理主机和防火墙之间采用加密的方式通信。
目前国内有采用的是使用自定义协议、一次性口令认证。对加密这个领域了解不多,不做详细讨论。
B.对来自外部(和内部)攻击的反应能力
目前常见的来自外部的攻击方式主要有:
a.DOS(DDOS)攻击
(分布式)拒绝服务攻击是目前一种很普遍的攻击方式,在预防上也是非常困难的。
目前防火墙对于这种攻击似乎没有太多的解决办法,主要是提高防火墙本身的健壮性(如增加缓冲区大小)。在Linux内核中有一个防止Syn flooding攻击的选项:CONFIG_SYN_COOKIES,它是通过为每一个Syn建立一个缓冲(cookie)来分辨可信请求和不可信请求。另外对于ICMP攻击,可以通过关闭ICMP 回应来实现。
b.IP假冒(IP spoofing)
IP假冒是指一个非法的主机假冒内部的主机地址,骗取服务器的“信任”,从而达到对网络的攻击目的。
第一,防火墙设计上应该知道网络内外的IP地址分配,从而丢弃所有来自网络外部但却有内部地址的数据包。实际实现起来非常简单,只要在内核中打开rp_filter功能即可。
第二,防火墙将内网的实际地址隐蔽起来,外网很难知道内部的IP地址,攻击难度加大。
IP假冒主要来自外部,对内网无需考虑此问题(其实同时内网的IP假冒情况也可以得到遏制)。
c. 特洛伊木马
防火墙本身预防木马比较简单,只要不让系统不能执行下载的程序即可。
一个需要说明的地方是必须指出的是,防火墙能抗特洛伊木马的攻击并不意味着内网主机也能防止木马攻击。事实上,内网主机可能会透过防火墙下载执行携带木马的程序而感染。内网主机的在预防木马方面的安全性仍然需要主机自己解决(防火墙只能在内网主机感染木马以后起一定的防范作用)。
d.口令字攻击
口令字攻击既可能来自外部,也可能来自内部,主要是来自内部。(在管理主机与防火墙通过单独接口通信的情况下,口令字攻击是不存在的)
来自外部的攻击即用穷举的办法猜测防火墙管理的口令字,这个很容易解决,只要不把管理部分提供给外部接口即可。
内部的口令字攻击主要是穷举和嗅探,其中以嗅探危害最大。嗅探指监测网络截获管理主机给防火墙的口令字,如果口令字已加密,则解密得到口令字。目前一般采用一次性口令和禁止直接登录防火墙的措施来防止对口令字的攻击。
e.邮件诈骗
邮件诈骗是目前越来越突出的攻击方式。防火墙本身防止邮件诈骗非常简单,不接收任何邮件就可以了。然而象木马攻击一样,内网主机仍可收发邮件,邮件诈骗的危险仍然存在,其解决办法一个是内网主机本身采取措施防止邮件诈骗,另一个是在防火墙上做过滤。
f.对抗防火墙(anti-firewall)
目前一个网络安全中一个研究的热点就是对抗网络安全产品如防火墙。一种是分析防火墙功能和探测防火墙内部网络结构,典型的如Firewalk。另外有一些其他的网络安全性分析工具本身具有双刃性,这类工具用于攻击网络,也可能会很有效的探测到防火墙和内部网络的安全缺陷,典型的如SATAN和ISS公司的Internet Security Scanner。目前对于这种探测(攻击)手段,尚无有效的预防措施,因为防火墙本身是一个被动的东西,它只能靠隐藏内部网络结构和提高自身的安全性来对抗这些攻击。
C.透明代理的采用
应用代理防火墙一般是通过设置不同用户的访问权限来实现,这样就需要有用户认证体系。以前的防火墙在访问方式上主要是要求用户登录进系统(如果采用sock代理的方式则需要修改客户应用)。透明代理的采用,可以降低系统登录固有的安全风险和出错概率,从而提高了防火墙的安全性。
4.透明性
防火墙的透明性指防火墙对于用户是透明的,在防火墙接入网络时,网络和用户无需做任何设置和改动,也根本意识不到防火墙的存在。
防火墙作为一个实际存在的物理设备,要想放入已存在地网络中又不对网络有任何影响,就必须以网桥的方式置入网络。传统方式下,防火墙安装时,更象是一台路由器或者网关,原有网络拓扑结构往往需要改变,网络设备(包括主机和路由器)的设置(IP和网关、DNS、路由表等等)也需要改变。但如果防火墙采用了透明模式,即采用类似网桥的方式运行,用户将不必重新设定和修改路由,也不需要知道防火墙的位置,防火墙就可以直接安装和放置到网络中使用。
透明模式最大的好处在于现有网络无需做任何改动,这就方便了很多客户,再者,从透明模式转换到非透明模式又很容易,适用性显然较广。当然,此时的防火墙仅仅起到一个防火墙的作用,其他网关位置的功能如NAT、VPN功能不再适用,当然,其他功能如透明代理还可以继续使用。
目前透明模式的实现上可采用ARP代理和路由技术实现。此时防火墙相当于一个ARP代理的功能。内网(可以仍含有路由器或子网,依次类推)、防火墙、路由器的位置大致如下:
内网―――――防火墙―――――路由器
(需要说明的是,这种方式是绝大多数校园网级网络的实现方式)
内网主机要想实现透明访问,必须能够透明的传送内网和路由器之间的ARP包,而此时由于事实上内网和路由器之间无法连通,防火墙就必须配置成一个ARP代理(ARP Proxy)在内网主机和路由器之间传递ARP包。防火墙所要做的就是当路由器发送ARP广播包询问内网内的某一主机的硬件地址时,防火墙用和路由器相连接口的MAC地址回送ARP包;内网内某一主机发送ARP广播包询问路由器的硬件地址时,防火墙用和内网相连接口的MAC地址回送ARP包,因此路由器和内网主机都认为将数据包发给了对方,而实际上是发给了防火墙转发。
显然,此时防火墙还必须实现路由转发,使内外网之间的数据包能够透明的转发。另外,防火墙要起到防火墙的作用,显然还需要把数据包上传给本身应用层处理(此时实现应用层代理、过滤等功能),此时需要端口转发来实现(?这个地方不是十分清楚,也没找到相关资料)。
透明模式和非透明模式在网络拓扑结构上的最大区别就是:透明模式的两块网卡(与路由器相连的和与内网相连的)在一个网段(也和子网在同一个网段);而非透明模式的两块网卡分别属于两个网段(内网可能是内部不可路由地址,外网则是合法地址)。
这个过程如下:
1. 用ARP代理实现路由器和子网的透明连接(网络层)
2. 用路由转发在IP层实现数据包传递(IP层)
3. 用端口重定向实现IP包上传到应用层(IP层)
前边我们讨论过透明代理,和这里所说的防火墙的透明模式是两个概念。透明代理主要是为实现内网主机可以透明的访问外网,而无需考虑自己是不可路由地址还是可路由地址。内网主机在使用内部网络地址的情况下仍然可以使用透明代理,此时防火墙既起到网关的作用又起到代理服务器的作用(显然此时不是透明模式)。
需要澄清的一点是,内外网地址的转换(即NAT,透明代理也是一种特殊的地址转换)和透明模式之间并没有必然的联系。透明模式下的防火墙能实现透明代理,非透明模式下的防火墙(此时它必然又是一个网关)也能实现透明代理。它们的共同点在于可以简化内网客户的设置而已。
目前国内大多防火墙都实现了透明代理,但实现了透明模式的并不多。这些防火墙可以很明显的从其广告中看出来:如果哪个防火墙实现了透明模式,它的广告中肯定会和透明代理区分开而大书特书的。
5.可靠性
防火墙系统处于网络的关键部位,其可靠性显然非常重要。一个故障频频、可靠性很差的产品显然不可能让人放心,而且防火墙居于内外网交界的关键位置,一旦防火墙出现问题,整个内网的主机都将根本无法访问外网,这甚至比路由器故障(路由器的拓扑结构一般都是冗余设计)更让人无法承受。
防火墙的可靠性也表现在两个方面:硬件和软件。
国外成熟厂商的防火墙产品硬件方面的可靠性一般较高,采用专门硬件架构且不必多说,采用PC架构的其硬件也多是专门设计,系统各个部分从网络接口到存储设备(一般为电子硬盘)集成在一起(一块板子),这样自然提高了产品的可靠性。
国内则明显参差不齐,大相径庭,大多直接使用PC架构,且多为工业PC,采用现成的网卡,DOC/DOM作为存储设备。工业PC虽然可靠性比普通PC要高不少,但是毕竟其仍然是拼凑式的,设备各部分分立,从可靠性的角度看显然不如集成的(著名的水桶原理)。
国内已经有部分厂家意识到了这个问题,开始自行设计硬件。但大多数厂家还是从成本的角度考虑使用通用PC架构。
另外一方面,软件可靠性的提高也是防火墙优劣的主要差别所在。而国内整个软件行业的可靠性体系还没有成熟,软件可靠性测试大多处于极其初级的水平(可靠性测试和bug测试完全是两个概念)。一方面是可靠性体系建立不起来,一方面是为了迎合用户的需求和跟随网络应用的不断发展,多数防火墙厂商一直处于不断的扩充和修改中,其可靠性更不能让人恭维。
总的来说,如同国内大多数行业(除了少数如航天、航空)一样,网络安全产品特别是防火墙的可靠性似乎还没有引起人们的重视。
6.市场定位
市场上防火墙的售价极为悬殊,从数万元到数十万元,甚至到百万元不等。由于用户数量不同,用户安全要求不同,功能要求不同,因此防火墙的价格也不尽相同。厂商因而也有所区分,多数厂家还推出模块化产品,以符合各种不同用户的要求。
总的说来,防火墙是以用户数量作为大的分界线。如checkpoint的一个报价:
CheckPoint Firewall-1 4.1 25user 19000.00
CheckPoint Firewall-1 4.1 50user 31000.00
CheckPoint Firewall-1 4.1 100user 51000.00
CheckPoint Firewall-1 4.1 250user 64000.00
CheckPoint Firewall-1 4.1 无限用户 131000.00
从用户量上防火墙可以分为:
a.10-25用户:
这个区间主要用户为单一用户、家庭、小型办公室等小型网络环境。防火墙一般为10M(针对硬件防火墙而言),两网络接口,涵盖防火墙基本功能:包过滤、透明模式、网络地址转换、状态检测、管理、实时报警、日志。一般另有可选功能:VPN、带宽管理等等。
这个区间的防火墙报价一般在万元以上2万元以下(没有VPN和带宽管理的价格更低)。
据调查,这个区间的防火墙反而种类不多,也许是国内厂商不屑于这个市场的缘故?
b.25-100用户
这个区间用户主要为小型企业网。防火墙开始升级到100M,三或更多网络接口。VPN、带宽管理往往成为标准模块。
这个区间的防火墙报价从3万到15万不等,根据功能价格有较大区别。相对来说,这个区间上硬件防火墙价格明显高于软件防火墙。
目前国内防火墙绝大部分集中在这个区间中。
c.100-数百用户
这个区间主要为中型企业网,重要网站、ISP、ASP、数据中心等使用。这个区间的防火墙较多考虑高容量、高速度、低延迟、高可靠性以及防火墙本身的健壮性。并且开始支持双机热备份。
这个区间的防火墙报价一般在20万以上。这样的中高端防火墙国内较少,有也是25-100用户的升级版,其可用性令人怀疑。
d.数百用户以上
这个区间是高端防火墙,主要用于校园网、大型IDC等等。我们接触较少,不多做讨论。
当然其价格也很高端,从数十万到数百万不等。
总的来说,防火墙的价格和用户数量、功能模块密切相关,在用户数量相同的情况下,功能越多,价格就越贵。如Netscreen的百兆防火墙:
NetScreen-100f(AC Power) -带防火墙+流量控制等功能,交流电源,没有VPN功能 报价在¥260,000
而在此基础上增加了128位VPN功能的报价则高出5万元:¥317,500
7.研发费用
如同其他网络安全产品一样,防火墙的研发费用也是很高的。
防火墙由于技术含量较高,人员技术储备要求较高,防火墙核心部分的研发必须要对操作系统有相当的熟悉,所需为UNIX系统下开发人员,而目前国内真正能拿的出手的UNIX程序员数量还是太少(远远少于Windows平台下开发人员),人员成本很高。
总的来说,防火墙的研发是一个大项目,而且其前期定位一定要准确,该做什么、不该做什么,哪些功能得实现,哪些功能不必实现、哪些功能可以在后期实现,一定要清楚,否则费用会远远超出预计。
下边对一个中小型企业级防火墙的研发费用作个简单的估计。
研发时,防火墙可以细分为(当然在具体操作时往往需要再具体划分):
内核模块
防火墙模块(含状态检测模块)
NAT模块
带宽管理模块
通信协议模块
管理模块
图形用户界面模块(或者Web界面模块)
透明代理模块(实质属于NAT模块)
透明模式模块(包括ARP代理子模块、路由转发子模块等)
各应用代理模块(包括URL过滤模块)
VPN模块
流量统计与计费模块
审计模块
其他模块(如MAC、IP地址绑定模块、简单的IDS、自我保护等等)
上边把防火墙划分为12个模块,其中每一个模块都有相当的工作量要做,除了弹性较大的内核模块和防火墙模块(它们的工作量可能异常的大,视设计目标不同),其他模块暂定10人周的话就需要120周(VPN的工作量也相当大),两个主模块各按20人周计算,防火墙实现总共需要150人周。加上前期10-15人周论证、定方案,后期20人周(保守数字)集成、测试,前后总共需要约210人周。按每人周1200元开发费用(折合工资5000月,但由于有运行费用、保险等费用摊分,个人工资应远低于这个数字),开发费用约需25万。
显然,这个数字只是一个局外人估计的下限,实际的研发应该超出这个数字很多。
8.可升级能力(适用性)和灵活性
对用户来说,防火墙作为大成本投入的商品,势必要考虑到可升级性的问题,如果防火墙不能升级,那它的可用性和可选择余地势必要大打折扣。
目前国内防火墙一般都是软件可升级的,这是因为大多数防火墙采用电子硬盘(少数采用磁盘),实现升级功能只要很小的工作量要做。但究竟升级些什么内容?升级周期多长一次?这就涉及到一个灵活性的问题。
防火墙的灵活性主要体现在以下几点:
a.易于升级
b.支持大量协议
c.易于管理(如纳入通用设备管理体系(支持SNMP)而不是单列出来)
d.功能可扩展
这里对功能可扩展做一简单讨论。一般情况下,防火墙在设计完成以后,其过滤规则都是定死的,用户可定制的余地很小。特别如URL过滤规则(对支持URL过滤的防火墙而言),当前网络中的漏洞是不断发现的,如最近很猖獗的codered攻击的就是Windows机器IIS服务器的ida漏洞,而我们如果能够及时定义过滤规则,对于“GET /default.ida”的请求及时过滤,那么内网主机(此时一般为DMZ内主机)的安全性就会高很多,内网管理人员也不必时时密切关注网络漏洞(这是个工作量很大,既耗费体力又容易出现遗漏的工作)。这样大部分工作留给防火墙厂家来做(相应需要有一个漏洞监测体系),用户肯定会满意很多。
另外,灵活性一开始也往往不是前期设计所能设计的很完美的,它需要和用户具体实践相配合。另外灵活性也是和具体环境密切结合的,往往需要在不同的用户环境里考虑。
三.防火墙设计的国家标准
在我国,防火墙作为一种信息安全产品,其进入市场并不是随意的,有相关的国家标准,也有相应的认证中心。
在我国1994年2月18日发布的《中华人民共和国计算机信息系统安全保护条例》中规定:
国家对计算机信息系统安全专用产品的销售实行许可证制度。具体办法由公安部会同有关部门制定。(第十二章第16条规定)
随后公安部1997年颁布了《计算机信息系统安全专用产品检测和销售许可证管理办法》规定:
第三条 中华人民共和国境内的安全专用产品进入市场销售, 实行销售许可证制度。安全专用产品的生产者在其产品进入市场销售之前, 必须申领《计算机信息系统安全专用产品销售许可证》(以下简称销售许可证)。
第四条 安全专用产品的生产者申领销售许可证, 必须对其产品进行安全功能检测和认定。
第五条 公安部计算机管理监察部门负责销售许可证的审批颁发工作和安全专用产品安全功能检测机构(以下简称检测机构)的审批工作。
第十七条 已取得销售许可证的安全专用产品, 生产者应当在固定位置标明“销售许可”标记。
任何单位和个人不得销售无“销售许可”标记的安全专用产品。
国家于1999年通过了关于放火墙的相关国家标准:
GB/T 17900-1999 网络代理服务器的安全技术要求
GB/T 18018-1999 路由器安全技术要求
GB/T 18019-1999 信息技术包过滤防火墙安全技术要求
GB/T 18020-1999 信息技术应用级防火墙安全技术要求
公安部专门成立了一个机构:公安部计算机信息系统安全产品质量监督检验中心(位于上海)来完成相关安全产品的检验工作。并且从2000年9月起执行上面的三个新的国家标准。
这个检测是强制的,必须通过这个检测,才能够进入市场。
另外又有中国国家信息安全测评认证中心的测评,据称这个机构的认证:“中华人民共和国国家信息安全认证”是国家对信息安全技术、产品或系统安全质量的最高认可。目前看到的一些国内大的防火墙厂商的防火墙产品都通过了这个认证。但它不是强制认证(如著名的checkpoint就没有这个认证)。
如果想进入国防行业,还要通过中国人民解放军信息安全测评认证中心的“军用信息安全产品认证证书”,拿到解放军总参谋部的“国防通信网设备器材进网许可证”。
另外还有国家保密局的推荐等等,这些纯粹就是部门瞎搞了。
其他还有国外的认证如美国国际计算机安全协会(ICSA)认证和欧洲ITSEC E3认证等。
【小结】
以上讨论了防火墙设计中的一些关键问题以及相关标准。总的来说,防火墙的前期准备一定要充足,定位要准确,否则开发过程中会出现种种意外的问题。
第三部分,分析与想法
在前面讨论了防火墙实现上的一些问题,从当前市场可以看出,防火墙行业的竞争已经非常激烈,且大多(对国内厂商来说)集中在中小型企业网用户这个有限的用户群。而且不断有厂家涌入这个市场。
从97年公安部监测中心建立起来以后,我们可以从每年通过认证的产品数量可以看出:
其中标称防火墙的(不包括所谓
产品总数 安全产品其实起到防火墙功能的)
98年 15 4
99年 103 28
2000年 219 48
2001年 129种(至8月) 33
从数字可以看出,从98年到2001年,网络安全产品每年在不断迅速增加,防火墙也在不断增加,且防火墙占网络安全产品总数均略超过1/4。国内市场上的防火墙种类目前已经超过100种(这些不包括没有通过检测私自出售的产品)。对于竞争如此激烈的市场,我们应该如何找准切入点呢?
从对以上这一百多种防火墙的大部分(有一部分资料无法获得)分析以后,发现一个很奇怪的现象,没有多少防火墙针对办公室级市场。如netscreen干脆就没有把针对这个市场的netscreen 5送检。
由以上市场分析的启发和自己对嵌入式系统的了解,觉得从办公室级市场切入或许是个很不错的想法。
1.市场定位
小型办公用户。目标就是要取代目前广泛使用的proxy(如Wingate、Linux IP伪装等等)。
这个市场的用户包括:
家庭。对拥有两台以上计算机的家庭而言,他们更多需要的或许是共享上网(56k、ISDN等),如果我们这个小设备能够实现共享上网(实质就是NAT),那么应该会有市场。
办公室。办公室一般有数台到十数台计算机不等。要求之一:共享上网(以太网、ISDN、DDN、);简单的防火墙。
其他需要单独隔离的小区域。要求:简单的防火墙。
【小结】
以上只是自己的想法而已,究竟是否可行,还要做充分的论证后再作决定。
第四部分,防火墙发展展望
如下是一些防火墙的技术展望。
1.多级过滤技术
所谓多级过滤技术,是指防火墙一般采用多级过滤措施,并辅以鉴别手段。在分组过滤(网络层)一级,过滤掉所有的源路由分组和假冒的IP源地址;在传输层一级,遵循过滤规则,过滤掉所有禁止出或/和入的协议和有害数据包如nuke包、圣诞树包等;在应用网关(应用层)一级,能利用FTP、SMTP等各种网关,控制和监测Internet提供的所用通用服务。
多级过滤技术其实就是现在防火墙已经广泛使用的技术:包过滤、应用网关。之所以把他提出来是因为这个提法比较科学,在分层上非常清楚,而且从这个概念出发,又有很多内容可以扩展。
2.网络安全产品的系统化
现在有一种提法,叫做建立“以防火墙为核心的网络安全体系”,主要是随着目前网络安全产品的不断推出和防火墙在实际使用中表现出越来越大的局限性而提出的。
一般情况下,内外网交界的位置由于非常关键,为了降低网络传输延迟,只有不得不置于这个位置的设备如防火墙才会放置在这里(一般必需的还有病毒检测设备等等),其他设备如IDS只能置于旁路位置。而在实际使用中,IDS的任务往往不仅在于检测,很多时候在IDS发现入侵行为以后,也需要IDS本身对入侵及时遏止(在这点上我理解为其实IDS是一个策略不断变化的动态的“智能”防火墙,而防火墙本身是一个策略安全级最低的静态设备,这里所说的IDS是指NIDS,而非基于主机的)。显然,要让处于旁路侦听的IDS完成这个任务又太难为,同时主链路又不能串接太多类似设备。
在这种情况下,如果防火墙能和IDS、病毒检测等相关安全产品联合起来,充分发挥各自的长处,协同配合,共同建立一个有效的安全防范体系,那么系统网络的安全性就能得以明显提升。
目前主要有两种解决办法。一种是直接把IDS、病毒检测部分直接“做”到防火墙中,使防火墙具有(简单的)IDS和病毒检测设备的功能。另一种是各个产品分立,但是通过某种通讯方式形成一个整体,即相关检测系统专职某一类安全事件的检测,一旦发现安全事件,则立即通知防火墙,由防火墙完成过滤和报告。第一种方法似乎前途不明确,因为IDS本身也是一个非常复杂的系统,且不说能不能“做”到防火墙里边去,即使成为防火墙的一部分,这样一个防火墙的效率也很难说。第二种方法在实现起来困难一些,而且很明显的是:IDS、病毒检测设备必须置于防火墙之外,如果置于防火墙之内,就起不到相应效果了。这样一来,IDS等设备本身的安全性又不得不成为研究的一个重点。
3.管理的通用化
这一点其实主要是针对国内防火墙而言的。
国外的防火墙这一点已经非常成熟,一般防火墙都不是作为一个特殊网络产品来管理,而是纳入通用网络设备管理体系。
国内则相差很远,往往是防火墙就是防火墙,管理起来需要单独管理,乃至单独培训。不过国内也已经有所改观,正在向网络化、通用化发展,据称亿阳信通出品一种防火墙和VPN的结合产物就支持远程通用管理。
4.专用化和小型化
这是自己的一点想法,一个原因是基于上边讨论的微小型防火墙(姑且这么称呼),一个原因是来自个别地方提出的一个新概念:网络二极管(即单向防火墙),这个由于相关资料很少,无法作出更详细的讨论。
【小结】
以上是对防火墙技术的一些展望,总的来说,系统化是网络安全产品的一个发展趋势。从防火墙技术本身来讲,暂时不会有什么大的突破(象状态检测那样的)。
第五部分,其他
在这里将近两个月时间,自己认为收获最大的并不是Linux系统的小型化或者是内核做了多少研究,思想的开阔或许是最重要的。
如果既想投入很少的人力物力,又想得到功能很完备的产品,基本上是不可能的。
做一个产品,前期工作一定要充分。除非产品无需投入市场。
以上是自己对防火墙做了了解以后的一些总结,从一个从来没有从事过真正的商用防火墙研发的人的角度来看问题,其中肯定有不足甚至错误的地方(在完成这篇报告的时候我还是有很多问题没弄清楚,有一些问题还是处于想当然的程度),所以这篇报告只是一个参考,更多的时候可以视为个人之见,如果想真正涉足防火墙这个领域,我们还是要有专业人士来做指导。
本来想跟踪防火墙时间更久一点,了解的更多一点,或许报告会写的更好,但是现在时间所限,只能写到这个地步。有很多观点尚不成熟,理解还不够,但是没办法。
(有时间的话,关于包过滤、状态检测、应用代理这些核心部分我会专门写一个报告出来。看机会了)
参考文献:
1.GB/T 17900-1999 网络代理服务器的安全技术要求
2.GB/T 18019-1999 信息技术包过滤防火墙安全技术要求
3.GB/T 18020-1999 信息技术应用级防火墙安全技术要求
4.Stateful Inspection Technology,Check Point Software Technologies Ltd.
5.Linux 2.4 NAT HOWTO,Rusty Russell,mailing list netfilter@lists.samba.org
6.Linux netfilter Hacking HOWTO,Rusty Russell, mailing list netfilter@lists.samba.org
7.linux防火墙实现技术比较,yawl,aka讲座讲义
8.Checkpoint 白皮书,Check Point Software Technologies Ltd.
9.Netscreen防火墙技术资料,NetScreen Technologies, Inc.
10.东方龙马防火墙技术白皮书,东方龙马公司
11.Linux源码和相关帮助:man页、help、Docs
部分防火墙资源:
1.http://netfilter.filewatcher.org/ Linux防火墙netfilter主页
2.http://leaf.sourceforge.net/ Linux Embedded Appliance Firewall主页(似乎要国外代理才能出去)
3.http://www.zelow.no/floppyfw/index.html 一张软盘上的Linux防火墙主页
4.http://www.phrack.org/ 世界上最著名的网络安全站点之一,论文堪称高质量,基本上每一篇论文都影响发表后若干年的网络安全研究方向
5.http://packetstormsecurity.org/ 大量网络安全资源
6.www.docshow.net我参与维护的站点,收集关于网络和安全的技术资料,特别是IDS相关
7.http://www.ccw.com.cn/search/subject/done.asp?wordid=1976&word2=防火墙 国内关于防火墙的新闻、文档的集合
相关链接:
RedHat7.1下安装Oracle8.1.7.0.1全过程 http://club.sob8.com/columns.php?action=columns
第一部分,防火墙的基本概念
首先说明一些文中大量用到的概念:
外网(非受信网络):防火墙外的网络,一般为Internet;
内网(受信网络):防火墙内的网络;
受信主机和非受信主机分别对照内网和外网的主机。
非军事化区(DMZ):为了配置管理方便,内网中需要向外提供服务的服务器往往放在一个单独的网段,这个网段便是非军事化区。防火墙一般配备三块网卡,在配置时一般分别分别连接内部网,Internet和DMZ。
近来随着网络安全问题日益严重,网络安全产品也被人们重视起来。防火墙作为最早出现的网络安全产品和使用量最大的安全产品,也受到用户和研发机构的青睐。
以往在没有防火墙时,局域网内部上的每个节点都暴露给Internet上的其它主机,此时局域网的安全性要由每个节点的坚固程度来决定,并且安全性等同于其中最弱的节点。而防火墙是放置在局域网与外部网络之间的一个隔离设备,它可以识别并屏蔽非法请求,有效防止跨越权限的数据访问。防火墙将局域网的安全性统一到它本身,网络安全性是在防火墙系统上得到加固,而不是分布在内部网络的所有节点上,这就简化了局域网安全管理。
防火墙的经典功能,仅仅是以下:
1.作为一个中心“遏制点”,将局域网的安全管理集中起来;
2.屏蔽非法请求,防止跨权限访问(并产生安全报警);
一.防火墙的分类
随后随着技术的发展,防火墙的技术也在不断发展,到今天,防火墙的分类和功能也在不断细化,但总的来说,可以分为以下两大类:
包过滤防火墙、应用级防火墙。
至于和入侵检测系统、分布式探测器融合起来的防火墙(系统),不在本报告讨论范围,其简介见第三部分。
1.包过滤防火墙
又叫网络级防火墙,因为它是工作在网络层。
它一般是通过检查单个包的地址、协议、端口等信息来决定是否允许此数据包通过。路由器便是一个“传统”的网络级防火墙。
防火墙可以提供内部信息以说明所通过的连接状态和一些数据流的内容,把判断的信息同规则表进行比较,在规则表中定义了各种规则来表明是否同意或拒绝包的通过。包过滤防火墙检查每一条规则直至发现包中的信息与某规则相符。如果没有一条规则能符合,防火墙就会使用默认规则,一般情况下,默认规则就是要求防火墙丢弃该包。其次,通过定义基于TCP或UDP数据包的端口号,防火墙能够判断是否允许建立特定的连接,如Telnet、FTP连接。
专门的防火墙系统一般在此之上加了功能的扩展,如状态检测等。状态检测又称动态包过滤,是在传统包过滤上的功能扩展,最早由checkpoint提出。传统的包过滤在遇到利用动态端口的协议时会发生困难,如ftp,防火墙事先无法知道哪些端口需要打开,而如果采用原始的静态包过滤,又希望用到此服务的话,就需要实现将所有可能用到的端口打开,而这往往是个非常大的范围,会给安全带来不必要的隐患。而状态检测通过检查应用程序信息(如ftp的PORT和PASS命令),来判断此端口是否允许需要临时打开,而当传输结束时,端口又马上恢复为关闭状态。
网络级防火墙简洁、速度快、费用低,并且对用户透明,但是对网络的保护很有限,因为它只检查地址和端口,对网络更高协议层的信息无理解能力。
2.应用级防火墙
应用级防火墙主要工作在应用层。应用级防火墙往往又称为应用级网关,它此时也起到一个网关的作用。
应用级防火墙检查进出的数据包,通过自身(网关)复制传递数据,防止在受信主机与非受信主机间直接建立联系。应用级防火墙能够理解应用层上的协议,能够做复杂一些的访问控制,并做精细的注册和审核。其基本工作过程是:当客户机需要使用服务器上的数据时,首先将数据请求发给代理服务器,代理服务器再根据这一请求向服务器索取数据,然后再由代理服务器将数据传输给客户机。由于外部系统与内部服务器之间没有直接的数据通道,外部的恶意侵害也就很难伤害到内网。
常用应用级防火墙已有了相应的代理服务软件,如HTTP、SMTP、FTP、Telnet、r系列等等,但是对于新开发的应用,尚没有相应的代理服务,它们将通过网络级防火墙和一般的代理服务(如sock代理)。
应用级网关有较好的访问控制,是目前最安全的防火墙技术,但实现麻烦,而且有的应用级网关缺乏“透明度”。在实际使用中,用户在受信任网络上通过防火墙访问Internet时,经常会出现延迟和多次登录才能访问外网的问题。
显然可知,应用级防火墙每一种协议需要相应的代理软件,使用时工作量大,效率明显不如网络级防火墙。
在现在的防火墙分类中,还有“电路级网关”、“规则过滤防火墙”、“监测型防火墙”等等,但自己认为这些只是以上两大种防火墙中某一种技术上具体实现时的一种说法或者是两种防火墙的融合,故不再单独讨论。如所谓电路级网关是用来监控受信主机与非受信主机间的TCP握手信息来决定该会话(Session)是否合法,是从OSI模型的角度来称呼(会话层),而在TCP/IP模型中,它仍是属于网络层的。又如规则过滤防火墙即前边讨论的加入状态检测功能的包过滤防火墙。
从趋势上看,未来的防火墙将位于网络级防火墙和应用级防火墙之间,也就是说,网络级防火墙将变得更加能够识别通过的信息,而应用级防火墙在目前的功能上则向“透明”、“低级”方面发展。最终防火墙将成为一个快速注册稽查系统,可保护数据以加密方式通过,使所有组织可以放心地在节点间传送数据。
二.防火墙的附加功能
由于防火墙所处的优越位置(内网与外网的分界点),它在实际应用中也往往加入一些其他功能如NAT、VPN、路由管理等功能。
NAT(Network Address Translation)即网络地址转换。即将内网的IP地址或者外网的IP地址转换,一般分为源地址转换Source NAT(SNAT)和目的地址转换Destination NAT (DNAT)。常见的包伪装(Masquerading)就是一个SNAT特例,主要用来将有限的IP地址动态或静态地与内部的IP地址对应起来,用来缓解地址空间短缺的问题。端口转发(Port forwarding)、负载分担、以及透明代理,都属于DNAT,主要用于外网主机访问内网主机。
虚拟专用网(VPN)是指在公共网络中建立专用网络,数据通过安全的“加密通道”在公共网络中传播。VPN的基本原理是通过对IP包的封装及加密,认证等手段,从而达到保证安全的目的。它往往是在防火墙上附加一个加密模块实现。
路由安全管理典型实现可见checkpoint公司的Fire Wall-1防火墙,它主要指为路由器提供集中管理和访问列表控制。
以上是防火墙的一些附加功能,有些(如NAT)已经成为大多数防火墙的“标准”配置,但我们必须认识到,这些并非防火墙本身必须实现的功能,这对我们分析一个防火墙的市场定位,在有限成本下实现一个防火墙是很重要的。
【小结】
以上是对防火墙的一些基本概念做的讨论,自己并不认为这一部分是可有可无的,只有了解防火墙的工作原理、分类,我们才知道自己要去作些什么。
第二部分,防火墙实现
一.防火墙功能分析
当前防火墙(应该)主要实现如下功能:
1.包过滤
包过滤是防火墙所要实现的最基本功能,现在的防火墙已经由最初的地址、端口判定控制,发展到判断通信报文协议头的各部分,以及通信协议的应用层命令、内容、用户认证、用户规则甚至状态检测等等。
特别要提到的是状态监测技术,一般是加载一个检测模块,在不影响网络正常工作的前提下,模块在网络层截取数据包,然后在所有的通信层上抽取有关的状态信息,据此判断该通信是否符合安全策略。由于它是在网络层截获数据包的,因此它可以支持多种协议和应用程序,并可以很容易地实现应用的扩充。
目前国内防火墙大多号称已实现了状态检测技术,然而据朋友介绍,这些所谓的“状态检测”防火墙并不是真正的状态检测,因没有接触过此类防火墙,没有太多了解,不能做过多评论。
2.审计和报警机制
在防火墙结合网络配置和安全策略对相关数据分析完成以后,就要作出接受、拒绝、丢弃或加密等决定(target)。如果某个访问违反安全规定,审计和报警机制开始起作用,并作记录,报告等等。
审计是一种重要的安全措施,用以监控通信行为和完善安全策略,检查安全漏洞和错误配置,并对入侵者起到一定的威慑作用。报警机制是在通信违反相关策略以后,以多种方式如声音、邮件、电话、手机短信息及时报告给管理人员。
防火墙的审计和报警机制在防火墙体系中是很重要的,只有有了审计和报警,管理人员才可能知道网络是否受到了攻击。另外,防火墙的该功能也有很大的发展空间,如日志的过滤、抽取、简化等等。日志还可以进行统计、分析、(按照特征)存储(在数据库中),稍加扩展便又是一个网络分析与查询模块。
日志由于数据量比较大,主要通过两种方式解决,一种是将日志挂接在内网的一台专门存放日志的日志服务器上;一种是将日志直接存放在防火墙本身的存储器上。日志单独存放这种方式配置较为麻烦,然而可以存放的日志量可以很大;日志存放在防火墙本身时,无需做额外配置,然而由于防火墙容量一般很有限,所存放的日志量往往较小。目前这两种方案国内(包括国外)都有使用。
3.远程管理
管理界面一般完成对防火墙的配置、管理和监控。
管理界面设计直接关系到防火墙的易用性和安全性。目前防火墙主要有两种远程管理界面:web界面和GUI界面。对于硬件防火墙,一般还有串口配置模块和/或控制台控制界面。
管理主机和防火墙之间的通信一般经过加密。国内比较普遍采用自定义协议、一次性口令进行管理主机与防火墙之间通信(适用GUI界面)。
GUI界面可以设计的比较美观和方便,并且可以自定义协议,也为多数厂商使用。一般使用语言VB、VC,有部分厂家使用Java开发,并把此作为一个卖点(所谓跨平台)。Web界面也有厂商使用,然而由于防火墙因此要增加一个CGI解释部分,减少了防火墙的可靠性(GUI界面只需要一个简单的后台进程就可以),故应用不是太广泛。
部分厂家增加了校验功能,即系统会自动识别用户配置上的错误,防止因配置错误而造成的不安全隐患。
目前国内大部分防火墙厂商均是在管理界面上做文章,反观之管理界面固然很重要,然而它毕竟不是一个防火墙的全部,一个系统功能设计完善的防火墙其管理部分必然容易设计。
4.NAT
网络地址转换似乎已经成了防火墙的“标配”,绝大多数防火墙都加入了该功能。
目前防火墙一般采用双向NAT:SNAT和DNAT。SNAT用于对内部网络地址进行转换,对外部网络隐藏起内部网络的结构,使得对内部的攻击更加困难;并可以节省IP资源,有利于降低成本。DNAT主要实现用于外网主机对内网和DMZ区主机的访问。
5.代理
目前代理主要有如下几种实现方式:
a.透明代理(Transparent proxy)
透明代理实质上属于DNAT的一种,它主要指内网主机需要访问外网主机时,不需要做任何设置,完全意识不到防火墙的存在,而完成内外网的通信。但其基本原理是防火墙截取内网主机与外网通信,由防火墙本身完成与外网主机通信,然后把结果传回给内网主机,在这个过程中,无论内网主机还是外网主机都意识不到它们其实是在和防火墙通信。而从外网只能看到防火墙,这就隐藏了内网网络,提高了安全性。
b.传统代理
传统代理工作原理与透明代理相似,所不同的是它需要在客户端设置代理服务器。
如前所述,代理能实现较高的安全性,不足之处是响应变慢。
5.MAC与IP地址的绑定
这其实是一个可有可无的功能。
MAC与IP地址绑定起来,主要用于防止受控(不可访问外网)的内部用户通过更换IP地址访问外网。
因为它实现起来太简单了,内部只需要两个命令就可以实现,所以绝大多数防火墙都提供了该功能。
6.流量控制(带宽管理)和统计分析、流量计费
流量控制可以分为基于IP地址的控制和基于用户的控制。基于IP地址的控制是对通过防火墙各个网络接口的流量进行控制,基于用户的控制是通过用户登录来控制每个用户的流量,从而防止某些应用或用户占用过多的资源。并且通过流量控制可以保证重要用户和重要接口的连接。
流量统计是建立在流量控制基础之上的。一般防火墙通过对基于IP、服务、时间、协议等等进行统计,并可以与管理界面实现挂接,实时或者以统计报表的形式输出结果。流量计费从而也是非常容易实现的。
7.VPN
VPN在前边已经介绍过。在以往的网络安全产品中VPN是作为一个单独一个产品出现的,现在更多的厂家把两者捆绑到一起,这似乎体现了一种产品整合的趋势。
8.URL级信息过滤
这往往是代理模块的一部分,很多厂家把这个功能单独提取出来,作为一个卖点,但是我们要知道,它实现起来其实是和代理结合在一起的。
URL过滤用来控制内部网络对某些站点的访问,如禁止访问某些站点、禁止访问站点下的某些目录、只允许访问某些站点或者其下目录等等。
9.其他特殊功能
这些功能纯粹是为了迎合特殊客户的需要或者为赢得卖点而加上的。
如有时用户要求,如限制同时上网人数;限制使用时间;限制特定使用者才能发送E-mail;限制FTP只能下载文件不能上传文件;阻塞Java、ActiveX控件等,这些依需求不同而定。
有些防火墙更加入了扫毒功能,一般是与防病毒软件搭配。
综上所述,防火墙市场由于竞争激烈,各个厂家都在层出不穷的挖掘新功能,发明出新名词,但总的不出以上讨论范围,因为操作系统(多为Linux)本身也就能完成这么多功能。挖掘出一个象checkpoint的状态监测那样的有一定意义的功能,似乎远远超出了目前国内厂商的实力。
二.防火墙设计中的一些重点问题
1.方案:硬件?还是软件?
从上面讨论可以看出,现在防火墙的功能越来越多越花哨,如此多的功能必然要求系统有一个高效的处理能力。
防火墙从实现上可以分为软件防火墙和硬件防火墙。软件防火墙以checkpoint公司的Firewall-I为代表,其实现是通过dev_add_pack的办法加载过滤函数(Linux,其他操作系统没有作分析,估计类似),通过在操作系统底层做工作来实现防火墙的各种功能和优化。国内也有一些所谓的软件防火墙,但据了解大多是所谓“个人”防火墙,而且功能及其有限,故不在此讨论范围。
在国内目前已通过公安部检验的防火墙中,硬件防火墙占绝大多数。硬件防火墙一种是从硬件到软件都单独设计,典型如Netscreen防火墙不但软件部分单独设计,硬件部分也采用专门的ASIC集成电路。
另外一种就是基于PC架构的使用经过定制的通用操作系统的所谓硬件防火墙。目前国内绝大多数防火墙都属于这种类型。
虽然都号称硬件防火墙,国内厂家和国外厂家还是存在着巨大区别。硬件防火墙需要在硬件和软件两方面同时下功夫,国外厂家的通常做法是软件运算硬件化,其所设计或选用的运行平台本身的性能可能并不高,但它将主要的运算程序(查表运算是防火墙的主要工作)做成芯片,以减少主机CPU的运算压力。国内厂家的防火墙硬件平台基本上采用通用PC系统或工业PC架构(直接原因是可以节省硬件开发成本),在提高硬件性能方面所能做的工作仅仅是提升系统CPU的处理能力,增大内存容量而已。现在国内防火墙的一个典型结构就是:工业主板+x86+128(256)M内存+DOC/DOM+硬盘(或不要硬盘而另增加一个日志服务器)+百兆网卡 这样一个工业PC结构。
在软件性能方面,国内外厂家的差别就更大了,国外(一些著名)厂家均是采用专用的操作系统,自行设计防火墙。而国内所有厂家操作系统系统都是基于通用的Linux,无一例外。各厂家的区别仅仅在于对Linux系统本身和防火墙部分(2.2内核为ipchains,2.4以后内核为netfilter)所作的改动量有多大。
事实上,Linux只是一个通用操作系统,它并没有针对防火墙功能做什么优化,而且其处理大数据量通信方面的能力一直并不突出,甚至比较低下(这也是Linux一直只是低端服务器的宠儿的重要原因,我自己认为,在这一点上它还不如BSD系列,据说国外有用BSD做防火墙的,国内尚未见到)。现在绝大部分厂家,甚至包括号称国内最大的天融信,在软件方面所作的工作无非也就是系统有针对性的裁减、防火墙部分代码的少量改动(绝大部分还是没有什么改动)和少量的系统补丁。而且我们在分析各厂家产品时可以注意这一点,如果哪个厂家对系统本身做了什么大的改动,它肯定会把这个视为一个重要的卖点,大吹特吹,遗憾的是似乎还没有什么厂家有能力去做宣传(天融信似乎有一个类似于checkpoint的功能:开放式的安全应用接口 TOPSEC,但它究竟做了多少工作,还需要去仔细了解)。
目前国内厂家也已经认识到这个问题,有些在做一些底层的工作,但有明显成效的,似乎还没有。
在此我们仅针对以Linux(或其他通用操作系统)为基础的、以PC架构为硬件载体的防火墙做讨论,以下如不特别提出,均同。
2.内核和防火墙设计
现在有一种商业卖点,即所谓“建立在安全操作系统之上的第四代防火墙”(关于防火墙分代的问题,目前有很多讨论,比较一致的是把包过滤防火墙称为第一代防火墙,把应用型防火墙(一般结合了包过滤功能,因此也成为混合型防火墙)称为第二代防火墙,有些厂家把增加了检测通信信息、状态检测和应用监测的防火墙称为第三代防火墙,更有甚者在此基础上提出了采用安全操作系统的防火墙,并把这个称为第四代防火墙)。所谓安全操作系统,其实大多用的还是Linux,所不同的是需要做一些内核加固和简单改造的工作,主要有以下:
取消危险的系统调用,或者截获系统调用,稍加改动(如加载一些llkm);
限制命令执行权限;
取消IP转发功能;
检查每个分组的接口;
采用随机连接序号;
驻留分组过滤模块;
取消动态路由功能;
采用多个安全内核(这个只见有人提出,但未见到实例,对此不是很清楚)。
以上诸多工作,其实基本上都没有对内核源码做太大改动,因此从个人角度来看算不上可以太夸大的地方。
对于防火墙部分,国内大部分已经升级到2.4内核所支持的netfilter。netfilter已经是一个功能比较完善的防火墙框架,它已经支持基于状态的监测(通过connection track模块实现)。而且netfilter是一个设计很合理的框架,可以在适当的位置上登记一些需要的处理函数,正式代码中已经登记了许多处理函数,如在NF_IP_FORWARD点上登记了装发的包过滤功能(包过滤等功能便是由这些正式登记的函数实现的)。我们也可以登记自己的处理函数,在功能上作扩展(如加入简单的IDS功能等等)。这一点是国内厂家可以做文章的地方,至于netfilter源码的修改,对国内厂家来说似乎不太现实。
至于采用其它防火墙模型的,目前还没有看到(可能是netfilter已经设计的很成功,不需要我们再去做太多工作)。
3.自我保护能力(安全性)
由于防火墙的特殊功能和特殊位置,它自然是众多攻击者的目标,因此它的自我包括能力在设计过程中应该放在首要的位置。
A.管理上的安全性
防火墙需要一个管理界面,而管理过程如何设计的更安全,是一个很重要的问题。目前有两种方案。
a.设置专门的服务端口
为了减少管理上的风险和降低设计上的难度,有一些防火墙(如东方龙马)在防火墙上专门添加了一个服务端口,这个端口只是用来和管理主机连接。除了专用的服务口外,防火墙不接受来自任何其它端口的直接访问。
这样做的显著特点就是降低了设计上的难度,由于管理通信是单独的通道,无论是内网主机、外网主机还是DMZ内主机都无法窃听到该通信,安全性显然很高,而且设计时也无需考虑通信过程加密的问题。
然而这样做,我们需要单独设置一台管理主机,显然太过浪费,而且这样管理起来的灵活性也不好。
b.通信过程加密
这样无需一个专门的端口,内网任意一台主机都可以在适当的情况下成为管理主机,管理主机和防火墙之间采用加密的方式通信。
目前国内有采用的是使用自定义协议、一次性口令认证。对加密这个领域了解不多,不做详细讨论。
B.对来自外部(和内部)攻击的反应能力
目前常见的来自外部的攻击方式主要有:
a.DOS(DDOS)攻击
(分布式)拒绝服务攻击是目前一种很普遍的攻击方式,在预防上也是非常困难的。
目前防火墙对于这种攻击似乎没有太多的解决办法,主要是提高防火墙本身的健壮性(如增加缓冲区大小)。在Linux内核中有一个防止Syn flooding攻击的选项:CONFIG_SYN_COOKIES,它是通过为每一个Syn建立一个缓冲(cookie)来分辨可信请求和不可信请求。另外对于ICMP攻击,可以通过关闭ICMP 回应来实现。
b.IP假冒(IP spoofing)
IP假冒是指一个非法的主机假冒内部的主机地址,骗取服务器的“信任”,从而达到对网络的攻击目的。
第一,防火墙设计上应该知道网络内外的IP地址分配,从而丢弃所有来自网络外部但却有内部地址的数据包。实际实现起来非常简单,只要在内核中打开rp_filter功能即可。
第二,防火墙将内网的实际地址隐蔽起来,外网很难知道内部的IP地址,攻击难度加大。
IP假冒主要来自外部,对内网无需考虑此问题(其实同时内网的IP假冒情况也可以得到遏制)。
c. 特洛伊木马
防火墙本身预防木马比较简单,只要不让系统不能执行下载的程序即可。
一个需要说明的地方是必须指出的是,防火墙能抗特洛伊木马的攻击并不意味着内网主机也能防止木马攻击。事实上,内网主机可能会透过防火墙下载执行携带木马的程序而感染。内网主机的在预防木马方面的安全性仍然需要主机自己解决(防火墙只能在内网主机感染木马以后起一定的防范作用)。
d.口令字攻击
口令字攻击既可能来自外部,也可能来自内部,主要是来自内部。(在管理主机与防火墙通过单独接口通信的情况下,口令字攻击是不存在的)
来自外部的攻击即用穷举的办法猜测防火墙管理的口令字,这个很容易解决,只要不把管理部分提供给外部接口即可。
内部的口令字攻击主要是穷举和嗅探,其中以嗅探危害最大。嗅探指监测网络截获管理主机给防火墙的口令字,如果口令字已加密,则解密得到口令字。目前一般采用一次性口令和禁止直接登录防火墙的措施来防止对口令字的攻击。
e.邮件诈骗
邮件诈骗是目前越来越突出的攻击方式。防火墙本身防止邮件诈骗非常简单,不接收任何邮件就可以了。然而象木马攻击一样,内网主机仍可收发邮件,邮件诈骗的危险仍然存在,其解决办法一个是内网主机本身采取措施防止邮件诈骗,另一个是在防火墙上做过滤。
f.对抗防火墙(anti-firewall)
目前一个网络安全中一个研究的热点就是对抗网络安全产品如防火墙。一种是分析防火墙功能和探测防火墙内部网络结构,典型的如Firewalk。另外有一些其他的网络安全性分析工具本身具有双刃性,这类工具用于攻击网络,也可能会很有效的探测到防火墙和内部网络的安全缺陷,典型的如SATAN和ISS公司的Internet Security Scanner。目前对于这种探测(攻击)手段,尚无有效的预防措施,因为防火墙本身是一个被动的东西,它只能靠隐藏内部网络结构和提高自身的安全性来对抗这些攻击。
C.透明代理的采用
应用代理防火墙一般是通过设置不同用户的访问权限来实现,这样就需要有用户认证体系。以前的防火墙在访问方式上主要是要求用户登录进系统(如果采用sock代理的方式则需要修改客户应用)。透明代理的采用,可以降低系统登录固有的安全风险和出错概率,从而提高了防火墙的安全性。
4.透明性
防火墙的透明性指防火墙对于用户是透明的,在防火墙接入网络时,网络和用户无需做任何设置和改动,也根本意识不到防火墙的存在。
防火墙作为一个实际存在的物理设备,要想放入已存在地网络中又不对网络有任何影响,就必须以网桥的方式置入网络。传统方式下,防火墙安装时,更象是一台路由器或者网关,原有网络拓扑结构往往需要改变,网络设备(包括主机和路由器)的设置(IP和网关、DNS、路由表等等)也需要改变。但如果防火墙采用了透明模式,即采用类似网桥的方式运行,用户将不必重新设定和修改路由,也不需要知道防火墙的位置,防火墙就可以直接安装和放置到网络中使用。
透明模式最大的好处在于现有网络无需做任何改动,这就方便了很多客户,再者,从透明模式转换到非透明模式又很容易,适用性显然较广。当然,此时的防火墙仅仅起到一个防火墙的作用,其他网关位置的功能如NAT、VPN功能不再适用,当然,其他功能如透明代理还可以继续使用。
目前透明模式的实现上可采用ARP代理和路由技术实现。此时防火墙相当于一个ARP代理的功能。内网(可以仍含有路由器或子网,依次类推)、防火墙、路由器的位置大致如下:
内网―――――防火墙―――――路由器
(需要说明的是,这种方式是绝大多数校园网级网络的实现方式)
内网主机要想实现透明访问,必须能够透明的传送内网和路由器之间的ARP包,而此时由于事实上内网和路由器之间无法连通,防火墙就必须配置成一个ARP代理(ARP Proxy)在内网主机和路由器之间传递ARP包。防火墙所要做的就是当路由器发送ARP广播包询问内网内的某一主机的硬件地址时,防火墙用和路由器相连接口的MAC地址回送ARP包;内网内某一主机发送ARP广播包询问路由器的硬件地址时,防火墙用和内网相连接口的MAC地址回送ARP包,因此路由器和内网主机都认为将数据包发给了对方,而实际上是发给了防火墙转发。
显然,此时防火墙还必须实现路由转发,使内外网之间的数据包能够透明的转发。另外,防火墙要起到防火墙的作用,显然还需要把数据包上传给本身应用层处理(此时实现应用层代理、过滤等功能),此时需要端口转发来实现(?这个地方不是十分清楚,也没找到相关资料)。
透明模式和非透明模式在网络拓扑结构上的最大区别就是:透明模式的两块网卡(与路由器相连的和与内网相连的)在一个网段(也和子网在同一个网段);而非透明模式的两块网卡分别属于两个网段(内网可能是内部不可路由地址,外网则是合法地址)。
这个过程如下:
1. 用ARP代理实现路由器和子网的透明连接(网络层)
2. 用路由转发在IP层实现数据包传递(IP层)
3. 用端口重定向实现IP包上传到应用层(IP层)
前边我们讨论过透明代理,和这里所说的防火墙的透明模式是两个概念。透明代理主要是为实现内网主机可以透明的访问外网,而无需考虑自己是不可路由地址还是可路由地址。内网主机在使用内部网络地址的情况下仍然可以使用透明代理,此时防火墙既起到网关的作用又起到代理服务器的作用(显然此时不是透明模式)。
需要澄清的一点是,内外网地址的转换(即NAT,透明代理也是一种特殊的地址转换)和透明模式之间并没有必然的联系。透明模式下的防火墙能实现透明代理,非透明模式下的防火墙(此时它必然又是一个网关)也能实现透明代理。它们的共同点在于可以简化内网客户的设置而已。
目前国内大多防火墙都实现了透明代理,但实现了透明模式的并不多。这些防火墙可以很明显的从其广告中看出来:如果哪个防火墙实现了透明模式,它的广告中肯定会和透明代理区分开而大书特书的。
5.可靠性
防火墙系统处于网络的关键部位,其可靠性显然非常重要。一个故障频频、可靠性很差的产品显然不可能让人放心,而且防火墙居于内外网交界的关键位置,一旦防火墙出现问题,整个内网的主机都将根本无法访问外网,这甚至比路由器故障(路由器的拓扑结构一般都是冗余设计)更让人无法承受。
防火墙的可靠性也表现在两个方面:硬件和软件。
国外成熟厂商的防火墙产品硬件方面的可靠性一般较高,采用专门硬件架构且不必多说,采用PC架构的其硬件也多是专门设计,系统各个部分从网络接口到存储设备(一般为电子硬盘)集成在一起(一块板子),这样自然提高了产品的可靠性。
国内则明显参差不齐,大相径庭,大多直接使用PC架构,且多为工业PC,采用现成的网卡,DOC/DOM作为存储设备。工业PC虽然可靠性比普通PC要高不少,但是毕竟其仍然是拼凑式的,设备各部分分立,从可靠性的角度看显然不如集成的(著名的水桶原理)。
国内已经有部分厂家意识到了这个问题,开始自行设计硬件。但大多数厂家还是从成本的角度考虑使用通用PC架构。
另外一方面,软件可靠性的提高也是防火墙优劣的主要差别所在。而国内整个软件行业的可靠性体系还没有成熟,软件可靠性测试大多处于极其初级的水平(可靠性测试和bug测试完全是两个概念)。一方面是可靠性体系建立不起来,一方面是为了迎合用户的需求和跟随网络应用的不断发展,多数防火墙厂商一直处于不断的扩充和修改中,其可靠性更不能让人恭维。
总的来说,如同国内大多数行业(除了少数如航天、航空)一样,网络安全产品特别是防火墙的可靠性似乎还没有引起人们的重视。
6.市场定位
市场上防火墙的售价极为悬殊,从数万元到数十万元,甚至到百万元不等。由于用户数量不同,用户安全要求不同,功能要求不同,因此防火墙的价格也不尽相同。厂商因而也有所区分,多数厂家还推出模块化产品,以符合各种不同用户的要求。
总的说来,防火墙是以用户数量作为大的分界线。如checkpoint的一个报价:
CheckPoint Firewall-1 4.1 25user 19000.00
CheckPoint Firewall-1 4.1 50user 31000.00
CheckPoint Firewall-1 4.1 100user 51000.00
CheckPoint Firewall-1 4.1 250user 64000.00
CheckPoint Firewall-1 4.1 无限用户 131000.00
从用户量上防火墙可以分为:
a.10-25用户:
这个区间主要用户为单一用户、家庭、小型办公室等小型网络环境。防火墙一般为10M(针对硬件防火墙而言),两网络接口,涵盖防火墙基本功能:包过滤、透明模式、网络地址转换、状态检测、管理、实时报警、日志。一般另有可选功能:VPN、带宽管理等等。
这个区间的防火墙报价一般在万元以上2万元以下(没有VPN和带宽管理的价格更低)。
据调查,这个区间的防火墙反而种类不多,也许是国内厂商不屑于这个市场的缘故?
b.25-100用户
这个区间用户主要为小型企业网。防火墙开始升级到100M,三或更多网络接口。VPN、带宽管理往往成为标准模块。
这个区间的防火墙报价从3万到15万不等,根据功能价格有较大区别。相对来说,这个区间上硬件防火墙价格明显高于软件防火墙。
目前国内防火墙绝大部分集中在这个区间中。
c.100-数百用户
这个区间主要为中型企业网,重要网站、ISP、ASP、数据中心等使用。这个区间的防火墙较多考虑高容量、高速度、低延迟、高可靠性以及防火墙本身的健壮性。并且开始支持双机热备份。
这个区间的防火墙报价一般在20万以上。这样的中高端防火墙国内较少,有也是25-100用户的升级版,其可用性令人怀疑。
d.数百用户以上
这个区间是高端防火墙,主要用于校园网、大型IDC等等。我们接触较少,不多做讨论。
当然其价格也很高端,从数十万到数百万不等。
总的来说,防火墙的价格和用户数量、功能模块密切相关,在用户数量相同的情况下,功能越多,价格就越贵。如Netscreen的百兆防火墙:
NetScreen-100f(AC Power) -带防火墙+流量控制等功能,交流电源,没有VPN功能 报价在¥260,000
而在此基础上增加了128位VPN功能的报价则高出5万元:¥317,500
7.研发费用
如同其他网络安全产品一样,防火墙的研发费用也是很高的。
防火墙由于技术含量较高,人员技术储备要求较高,防火墙核心部分的研发必须要对操作系统有相当的熟悉,所需为UNIX系统下开发人员,而目前国内真正能拿的出手的UNIX程序员数量还是太少(远远少于Windows平台下开发人员),人员成本很高。
总的来说,防火墙的研发是一个大项目,而且其前期定位一定要准确,该做什么、不该做什么,哪些功能得实现,哪些功能不必实现、哪些功能可以在后期实现,一定要清楚,否则费用会远远超出预计。
下边对一个中小型企业级防火墙的研发费用作个简单的估计。
研发时,防火墙可以细分为(当然在具体操作时往往需要再具体划分):
内核模块
防火墙模块(含状态检测模块)
NAT模块
带宽管理模块
通信协议模块
管理模块
图形用户界面模块(或者Web界面模块)
透明代理模块(实质属于NAT模块)
透明模式模块(包括ARP代理子模块、路由转发子模块等)
各应用代理模块(包括URL过滤模块)
VPN模块
流量统计与计费模块
审计模块
其他模块(如MAC、IP地址绑定模块、简单的IDS、自我保护等等)
上边把防火墙划分为12个模块,其中每一个模块都有相当的工作量要做,除了弹性较大的内核模块和防火墙模块(它们的工作量可能异常的大,视设计目标不同),其他模块暂定10人周的话就需要120周(VPN的工作量也相当大),两个主模块各按20人周计算,防火墙实现总共需要150人周。加上前期10-15人周论证、定方案,后期20人周(保守数字)集成、测试,前后总共需要约210人周。按每人周1200元开发费用(折合工资5000月,但由于有运行费用、保险等费用摊分,个人工资应远低于这个数字),开发费用约需25万。
显然,这个数字只是一个局外人估计的下限,实际的研发应该超出这个数字很多。
8.可升级能力(适用性)和灵活性
对用户来说,防火墙作为大成本投入的商品,势必要考虑到可升级性的问题,如果防火墙不能升级,那它的可用性和可选择余地势必要大打折扣。
目前国内防火墙一般都是软件可升级的,这是因为大多数防火墙采用电子硬盘(少数采用磁盘),实现升级功能只要很小的工作量要做。但究竟升级些什么内容?升级周期多长一次?这就涉及到一个灵活性的问题。
防火墙的灵活性主要体现在以下几点:
a.易于升级
b.支持大量协议
c.易于管理(如纳入通用设备管理体系(支持SNMP)而不是单列出来)
d.功能可扩展
这里对功能可扩展做一简单讨论。一般情况下,防火墙在设计完成以后,其过滤规则都是定死的,用户可定制的余地很小。特别如URL过滤规则(对支持URL过滤的防火墙而言),当前网络中的漏洞是不断发现的,如最近很猖獗的codered攻击的就是Windows机器IIS服务器的ida漏洞,而我们如果能够及时定义过滤规则,对于“GET /default.ida”的请求及时过滤,那么内网主机(此时一般为DMZ内主机)的安全性就会高很多,内网管理人员也不必时时密切关注网络漏洞(这是个工作量很大,既耗费体力又容易出现遗漏的工作)。这样大部分工作留给防火墙厂家来做(相应需要有一个漏洞监测体系),用户肯定会满意很多。
另外,灵活性一开始也往往不是前期设计所能设计的很完美的,它需要和用户具体实践相配合。另外灵活性也是和具体环境密切结合的,往往需要在不同的用户环境里考虑。
三.防火墙设计的国家标准
在我国,防火墙作为一种信息安全产品,其进入市场并不是随意的,有相关的国家标准,也有相应的认证中心。
在我国1994年2月18日发布的《中华人民共和国计算机信息系统安全保护条例》中规定:
国家对计算机信息系统安全专用产品的销售实行许可证制度。具体办法由公安部会同有关部门制定。(第十二章第16条规定)
随后公安部1997年颁布了《计算机信息系统安全专用产品检测和销售许可证管理办法》规定:
第三条 中华人民共和国境内的安全专用产品进入市场销售, 实行销售许可证制度。安全专用产品的生产者在其产品进入市场销售之前, 必须申领《计算机信息系统安全专用产品销售许可证》(以下简称销售许可证)。
第四条 安全专用产品的生产者申领销售许可证, 必须对其产品进行安全功能检测和认定。
第五条 公安部计算机管理监察部门负责销售许可证的审批颁发工作和安全专用产品安全功能检测机构(以下简称检测机构)的审批工作。
第十七条 已取得销售许可证的安全专用产品, 生产者应当在固定位置标明“销售许可”标记。
任何单位和个人不得销售无“销售许可”标记的安全专用产品。
国家于1999年通过了关于放火墙的相关国家标准:
GB/T 17900-1999 网络代理服务器的安全技术要求
GB/T 18018-1999 路由器安全技术要求
GB/T 18019-1999 信息技术包过滤防火墙安全技术要求
GB/T 18020-1999 信息技术应用级防火墙安全技术要求
公安部专门成立了一个机构:公安部计算机信息系统安全产品质量监督检验中心(位于上海)来完成相关安全产品的检验工作。并且从2000年9月起执行上面的三个新的国家标准。
这个检测是强制的,必须通过这个检测,才能够进入市场。
另外又有中国国家信息安全测评认证中心的测评,据称这个机构的认证:“中华人民共和国国家信息安全认证”是国家对信息安全技术、产品或系统安全质量的最高认可。目前看到的一些国内大的防火墙厂商的防火墙产品都通过了这个认证。但它不是强制认证(如著名的checkpoint就没有这个认证)。
如果想进入国防行业,还要通过中国人民解放军信息安全测评认证中心的“军用信息安全产品认证证书”,拿到解放军总参谋部的“国防通信网设备器材进网许可证”。
另外还有国家保密局的推荐等等,这些纯粹就是部门瞎搞了。
其他还有国外的认证如美国国际计算机安全协会(ICSA)认证和欧洲ITSEC E3认证等。
【小结】
以上讨论了防火墙设计中的一些关键问题以及相关标准。总的来说,防火墙的前期准备一定要充足,定位要准确,否则开发过程中会出现种种意外的问题。
第三部分,分析与想法
在前面讨论了防火墙实现上的一些问题,从当前市场可以看出,防火墙行业的竞争已经非常激烈,且大多(对国内厂商来说)集中在中小型企业网用户这个有限的用户群。而且不断有厂家涌入这个市场。
从97年公安部监测中心建立起来以后,我们可以从每年通过认证的产品数量可以看出:
其中标称防火墙的(不包括所谓
产品总数 安全产品其实起到防火墙功能的)
98年 15 4
99年 103 28
2000年 219 48
2001年 129种(至8月) 33
从数字可以看出,从98年到2001年,网络安全产品每年在不断迅速增加,防火墙也在不断增加,且防火墙占网络安全产品总数均略超过1/4。国内市场上的防火墙种类目前已经超过100种(这些不包括没有通过检测私自出售的产品)。对于竞争如此激烈的市场,我们应该如何找准切入点呢?
从对以上这一百多种防火墙的大部分(有一部分资料无法获得)分析以后,发现一个很奇怪的现象,没有多少防火墙针对办公室级市场。如netscreen干脆就没有把针对这个市场的netscreen 5送检。
由以上市场分析的启发和自己对嵌入式系统的了解,觉得从办公室级市场切入或许是个很不错的想法。
1.市场定位
小型办公用户。目标就是要取代目前广泛使用的proxy(如Wingate、Linux IP伪装等等)。
这个市场的用户包括:
家庭。对拥有两台以上计算机的家庭而言,他们更多需要的或许是共享上网(56k、ISDN等),如果我们这个小设备能够实现共享上网(实质就是NAT),那么应该会有市场。
办公室。办公室一般有数台到十数台计算机不等。要求之一:共享上网(以太网、ISDN、DDN、);简单的防火墙。
其他需要单独隔离的小区域。要求:简单的防火墙。
【小结】
以上只是自己的想法而已,究竟是否可行,还要做充分的论证后再作决定。
第四部分,防火墙发展展望
如下是一些防火墙的技术展望。
1.多级过滤技术
所谓多级过滤技术,是指防火墙一般采用多级过滤措施,并辅以鉴别手段。在分组过滤(网络层)一级,过滤掉所有的源路由分组和假冒的IP源地址;在传输层一级,遵循过滤规则,过滤掉所有禁止出或/和入的协议和有害数据包如nuke包、圣诞树包等;在应用网关(应用层)一级,能利用FTP、SMTP等各种网关,控制和监测Internet提供的所用通用服务。
多级过滤技术其实就是现在防火墙已经广泛使用的技术:包过滤、应用网关。之所以把他提出来是因为这个提法比较科学,在分层上非常清楚,而且从这个概念出发,又有很多内容可以扩展。
2.网络安全产品的系统化
现在有一种提法,叫做建立“以防火墙为核心的网络安全体系”,主要是随着目前网络安全产品的不断推出和防火墙在实际使用中表现出越来越大的局限性而提出的。
一般情况下,内外网交界的位置由于非常关键,为了降低网络传输延迟,只有不得不置于这个位置的设备如防火墙才会放置在这里(一般必需的还有病毒检测设备等等),其他设备如IDS只能置于旁路位置。而在实际使用中,IDS的任务往往不仅在于检测,很多时候在IDS发现入侵行为以后,也需要IDS本身对入侵及时遏止(在这点上我理解为其实IDS是一个策略不断变化的动态的“智能”防火墙,而防火墙本身是一个策略安全级最低的静态设备,这里所说的IDS是指NIDS,而非基于主机的)。显然,要让处于旁路侦听的IDS完成这个任务又太难为,同时主链路又不能串接太多类似设备。
在这种情况下,如果防火墙能和IDS、病毒检测等相关安全产品联合起来,充分发挥各自的长处,协同配合,共同建立一个有效的安全防范体系,那么系统网络的安全性就能得以明显提升。
目前主要有两种解决办法。一种是直接把IDS、病毒检测部分直接“做”到防火墙中,使防火墙具有(简单的)IDS和病毒检测设备的功能。另一种是各个产品分立,但是通过某种通讯方式形成一个整体,即相关检测系统专职某一类安全事件的检测,一旦发现安全事件,则立即通知防火墙,由防火墙完成过滤和报告。第一种方法似乎前途不明确,因为IDS本身也是一个非常复杂的系统,且不说能不能“做”到防火墙里边去,即使成为防火墙的一部分,这样一个防火墙的效率也很难说。第二种方法在实现起来困难一些,而且很明显的是:IDS、病毒检测设备必须置于防火墙之外,如果置于防火墙之内,就起不到相应效果了。这样一来,IDS等设备本身的安全性又不得不成为研究的一个重点。
3.管理的通用化
这一点其实主要是针对国内防火墙而言的。
国外的防火墙这一点已经非常成熟,一般防火墙都不是作为一个特殊网络产品来管理,而是纳入通用网络设备管理体系。
国内则相差很远,往往是防火墙就是防火墙,管理起来需要单独管理,乃至单独培训。不过国内也已经有所改观,正在向网络化、通用化发展,据称亿阳信通出品一种防火墙和VPN的结合产物就支持远程通用管理。
4.专用化和小型化
这是自己的一点想法,一个原因是基于上边讨论的微小型防火墙(姑且这么称呼),一个原因是来自个别地方提出的一个新概念:网络二极管(即单向防火墙),这个由于相关资料很少,无法作出更详细的讨论。
【小结】
以上是对防火墙技术的一些展望,总的来说,系统化是网络安全产品的一个发展趋势。从防火墙技术本身来讲,暂时不会有什么大的突破(象状态检测那样的)。
第五部分,其他
在这里将近两个月时间,自己认为收获最大的并不是Linux系统的小型化或者是内核做了多少研究,思想的开阔或许是最重要的。
如果既想投入很少的人力物力,又想得到功能很完备的产品,基本上是不可能的。
做一个产品,前期工作一定要充分。除非产品无需投入市场。
以上是自己对防火墙做了了解以后的一些总结,从一个从来没有从事过真正的商用防火墙研发的人的角度来看问题,其中肯定有不足甚至错误的地方(在完成这篇报告的时候我还是有很多问题没弄清楚,有一些问题还是处于想当然的程度),所以这篇报告只是一个参考,更多的时候可以视为个人之见,如果想真正涉足防火墙这个领域,我们还是要有专业人士来做指导。
本来想跟踪防火墙时间更久一点,了解的更多一点,或许报告会写的更好,但是现在时间所限,只能写到这个地步。有很多观点尚不成熟,理解还不够,但是没办法。
(有时间的话,关于包过滤、状态检测、应用代理这些核心部分我会专门写一个报告出来。看机会了)
参考文献:
1.GB/T 17900-1999 网络代理服务器的安全技术要求
2.GB/T 18019-1999 信息技术包过滤防火墙安全技术要求
3.GB/T 18020-1999 信息技术应用级防火墙安全技术要求
4.Stateful Inspection Technology,Check Point Software Technologies Ltd.
5.Linux 2.4 NAT HOWTO,Rusty Russell,mailing list netfilter@lists.samba.org
6.Linux netfilter Hacking HOWTO,Rusty Russell, mailing list netfilter@lists.samba.org
7.linux防火墙实现技术比较,yawl,aka讲座讲义
8.Checkpoint 白皮书,Check Point Software Technologies Ltd.
9.Netscreen防火墙技术资料,NetScreen Technologies, Inc.
10.东方龙马防火墙技术白皮书,东方龙马公司
11.Linux源码和相关帮助:man页、help、Docs
部分防火墙资源:
1.http://netfilter.filewatcher.org/ Linux防火墙netfilter主页
2.http://leaf.sourceforge.net/ Linux Embedded Appliance Firewall主页(似乎要国外代理才能出去)
3.http://www.zelow.no/floppyfw/index.html 一张软盘上的Linux防火墙主页
4.http://www.phrack.org/ 世界上最著名的网络安全站点之一,论文堪称高质量,基本上每一篇论文都影响发表后若干年的网络安全研究方向
5.http://packetstormsecurity.org/ 大量网络安全资源
6.www.docshow.net我参与维护的站点,收集关于网络和安全的技术资料,特别是IDS相关
7.http://www.ccw.com.cn/search/subject/done.asp?wordid=1976&word2=防火墙 国内关于防火墙的新闻、文档的集合
相关链接:
RedHat7.1下安装Oracle8.1.7.0.1全过程 http://club.sob8.com/columns.php?action=columns
回复Comments
{commenttime}{commentauthor}
{CommentUrl}
{commentcontent}