`

[转]防火墙、防病毒网关、IDS以及该类安全产品开发(文章汇总)

 
阅读更多
/* 文章比较经典,怕以后遗失了,特别记录下来。文章应该是2004年的,来源已经无法查清,感谢作者。*/

防火墙的会话性能标称是什么意思- -

防火墙的会话标称是一个仅与防火墙建制内存多少有关的指标,因此,也成为一些厂商胡弄用户的窍门,注意一个特点:国产防火墙的会话标称总是远远超过进口的防火墙。某种程度上,也说明国产软件业在技术上的虚弱,缺乏严谨的精神。
防火墙能支持多少数量的会话标称,本来是标示防火墙性能的一个重要指标。但近来有些厂家利用部分消费者,特别是政府部门的购买者不了解参数含义的机会,对该指标进行任意拨高,已经令会话指标对许多防火墙产品的选购,在很大程度上失去了参考意义。那么,防火墙的会话,到底是一种怎么样的性能呢?

如果是普通的包过滤防火墙,无所谓会话。这种防火墙通常见第一代的国产防火墙,很多就是用 ipchains改造过来的。对于这种防火墙,重要的性能指标是防火墙的吞吐量,或称滤通量;以及包过滤的时延。会话,只对提供状态检测的防火墙才有意义。

但现在的防火墙都要求提供网络连接检测。众所周知,TCP是有状态的连接,状态检测的防火墙能根据该 IP包所属的连接是新的还是旧的,决定该IP包是否符合防火墙的政策约定。因此,防火墙必须在内存中保留这一记录,这就是会话的由来,每一个连接,就是一个会话。由于目前的防火墙一般工作中转接网关,存在着大转小这样的情况,如内部网是百兆,而上网的ADSL拨号是500K这种。因此,由于网络变窄,部分连接请求不能马上实施,只能在内部队列中一个个地招待,这样,对于没有连接状态的部分请求,在保持在防火墙内存排队时,目前也算是一个会话。大部分防火墙都是由linux或类似的操作系统发展来的,包括screen OS和checkpoint,因此,他们的原理有共通性。这里就以netfilter作一个例子进行说明。只要在netfilter中编译进 mod_conntrack模块,防火墙就具备了进行状态检测,或称状态跟踪的功能。

防火墙支持多少会话,仅取决于防火墙的内存多少,系统会自动采用所有内存,直接内存用光,系统崩溃为止。因此,许多防火墙根据自已的内存的多少,设定一个参数ip_conntrack_max的大小。有这个限制,一旦系统记录的会话达到这个数值,系统就不再建立新的会话。所以,一个防火墙如果单纯希望增大这个参数,仅需要增加内存(10万会话约消耗45M内存),然后不顾一切地把 ip_conntrack_max设定大大的,别说一百万,就是算一千万也是可以达到的。

那么一般防火墙需要多少会话呢?用两种应用举个例子。象http,每一个href都将是一个连接,包括每一个的图片,因此,浏览一个网页,常常是同时出现二十个连接以上。这种连接迅速而来,又迅速完成(网页下载都有一个速度要求)。而ftp和telnet 就是另一个例子,就算下载上百兆的文件,也只是一个连接;而使用多线程下载工具,象netant,每一个线程都是一个连接。因此,假设是一个500人的网络需要上网,其中同时浏览的有100人(平均20秒刷新一次),另外200人打QQ,50人使用十个线程下载文件,还有50 人进行如telnet,数据库访问这样的会话;如果没有出口瓶颈,那么,实际的会话数估计是在千以上附近。但如果有出口限制,那么就可能升级到万以上。但无论是多大的网,达到几万以上的也是极为罕见的,真的出现了这种情况,很可能是感染了如冲击波这类的病毒。

防火墙最通常铁使用是内部的子网分隔,这部分也会产生一部分会话请求。对于百兆/千兆这种一般的网络环境来说,大致有十万以上的会话能力的防火墙,也基本上足够了。保持太多的会话对防火墙没有必要,相反,当系统资源过多地用在会话保持的话,会相应损害每秒生成会话的能力,这是一个同样重要的性能指标。设定过高的会话数量,却降低了每秒生成会话的能力,其结果,只能是保留一些永远用不到的会话虚数而已。每秒生成会话能力,也称会话速率,主要与CPU处理能力/寄存器的数量,以及操作系统内核是否利用这一处理能力有关。相对而言,这是使用X86的系统比较弱的部分,包括nokia,而使用RISC的系统,速动会话的能力就比较高,相应地,保持最大会话的能力也比较弱。

对于X86/Linux/BSD的防火墙来说,会话最大保持在10万到30万是比较合理的。如果使用非常强大的主板,而且linux针对这种主板进行了一些底层优化(主要是优化对寄存器-内存之间访问的过程),可以在不损害会话速率等性能的情况下把会话达到50万到60万。这是目前本人所知的最大极限。

会话的性能需要内存,如果考虑防火墙和操作系统本身展开需要128M内存左右的话,那么40万会话就要消耗约180M,意味着是300M内存以上才有可能。由此,也可以知道一些产品的标称是否有弄虚作假的成分。

为什么单机防病毒不能确保局域网不受侵扰- -

对于防病毒来说,单机防病毒软件更象是急救医生,而不是预防针,至于病毒已经造成多少损害,实在只能是各安天命
当前企业局域网的防病毒措施主要是单机防病毒软件和网络防病毒软件。相对而言,一般用户或多或少都会使用单机防病毒,而使用网络防病毒的比例就并不高。其中一个重要原因是用户并没有认识到防病毒软件是一个和管理密切相关的产品,换句话说,没有多少用户,尤其是企业的领导人,愿意承认自已公司的IT管理水平是不够的,需要使用更强大的保护措施确保企业网络的正常运转。

大家都知道,要保证一台电脑不受病毒侵害,需要安装一种防病毒软件,至于牌子反而不是重要的,更重要的是要保证定期升级病毒码,并为运行的操作系统和程序打上最新的补丁,要想对抗蠕虫病毒,单机而言还需要安装单机防火墙。的确,对于一个具备良好电脑防护知识的使用者来说,象公司的电脑部技术员和网管等,使用单机防病毒软件,并定时升级病毒码,打上新的补丁,可以有效地保护自已的电脑不受病毒的侵扰。但同时也必须认识到,现实生活中,并不是所有企业员工都具备电脑的保护意识的,即使有些员工有一定的安全意识,一旦遇到特殊的情况,象防病毒软件不能升级等等,除非是电脑部的服务性员工,否则就会不了了之;更多的员工只是电脑的使用者而不是维护者,有问题就把电脑往电脑部一送了事,就这样,尽管一个公司内似乎每台电脑都有防病毒软件,事实是,大部分的是电脑是处于完全不设防状态。 一般员工并不理解,维护一台电脑的软硬件,特别是维护软件系统正常运行是一项艰巨、枯燥、极耗时间和精力的工作。别的不说,光是完整安装好一台WINDOWS就需要至少小半天的时间。如果这个员工完全不动电脑里面的设置还好办,偏偏大部分员工却是喜欢在自已的电脑上搞点"个性化"之类,这就令网管人员的维护工作更显复杂化。实际上,一个网管人员能够维护25台主机软硬件就很已经是超负荷了,而在现实企业网络环境中,平均一个网管人员要照顾的主机数目通常上百台。这就进一步造成了使用单机防病毒软件的局域网,只要达到二三十台主机以上,对病毒侵扰就基本上处于不设防状态。

因此,对于局域网的防病毒,使用网络防病毒是非常重要的,它可以大大减轻网管人员的工作负担。 这不是偷懒,而是由于这样一个事实:绝大多数人都不是电脑专家。

使用网络防病毒软件是必要的,但仍不足够,因为近来威胁最大的病毒,是连网络防病毒软件也对付不了的蠕虫病毒,需要使用防火墙才能抵御。

为什么防病毒软件不能抵御蠕虫病毒- -

蠕虫病毒本质上并非病毒,而是一种基于被攻陷主机陷害其它主机的黑客程序,因此,基于传统文件IO流扫描的防病毒软件对之无能为力
近一年内,在电脑病毒造成的危害中,蠕虫病毒越来越成为最具危害性的病毒种类,象尼姆达,到冲击波等,相比之下,普通的文件型病毒相对显得如此古老,"温和"。与最新病毒特点看,目前用户,特别是企业局域网的防病毒措施显得相当落后且不足。

无论是单机防病毒,还是网络防病毒,其核心都是电脑主机的文件防病毒。简单地说,它工作在文件的开启和存储过程中,通常是在fopen()文件操作函数中形成一个文件流时,使用预设地病毒特征数值与流中的值进行匹配,从而确认该文件是否含有已知的病毒特征。由这个工作过程可以知道,存在一个确定的文件,是这类防病毒软件工作的前提。所以目前象冲击波这类的蠕虫病毒,由于它不是基于文件工作而是基于溢出漏洞工作的,直到主机受到感染仍没有执行任何fopen()操作,因此,无论是国产的如瑞星,还是进口的如诺顿,对于这类病毒都是鞭长莫及,只有在病毒要保存到硬盘上,如诺顿这样的防病毒软件的实时保护才会有所动作,因为,这时他调用了fopen()这样的文件流操作了。

有朋友可能会问,那么为什么装了防病毒软件,过一段时间后,病毒的确消失了呢?原因就在于这类病毒感染后是保留在内存中,只要一关机,就会消失。如果它存在硬盘上,防病毒软件就会有反应;即使由于病毒码更新问题没有察觉,当电脑再次开启时,总会经过文件读操作,只要这个操作在在防病毒软件初始化之后,防病毒软件就可以阻止病毒再次读入内存。显然,这是因为开机、关机造成的强制性病毒清空、重载造成。部分感染冲击波的电脑在关机开机几天后就自动好转,就是这个道理。

但即使是这样,仍然存在明显的漏洞,只要病毒设计上开机时初始化时抢在防病毒软件启动前重载,就可以主动地避开防病毒软件,甚至故意令防病毒软件失效。在这场较量中,传统的基于文件的防病毒软件处于非常被动的地位。

传统的基于文件的防病毒软件无法应付蠕虫病毒,原因就在于这类病毒的机理并不是基于文件读写的和执行的,它的本质是一种程序化的黑客程序,针对已知的某种系统漏洞编写,一般通过网络对外服务的端口进行感染;象尼姆达主要针对wiindows,冲击波通过微软的RPC服务溢出漏洞等。整个感染过程与文件读写执行完全没有关系,因此,传统的防病毒软件自然是无能为力了。

要有效抵御蠕虫病毒,唯一的办法就是使用防火墙,在单机而言,可以使用单机型的防火墙,在网络看,可以使用硬件防火墙。防火墙的作用就是控制主机向外开放的端口服务,从而切断蠕虫病毒病毒传播的主要途径。一般而言,如果主机数量不多,只有几台,象托管服务器,使用单机防火墙更经济,反之,如果接受保护的主机比较多,象局域网,使用硬件防火墙会经济得多和方便得多,其中一个不算太重要但却很实际的原因是易于管理。道理和必须使用网络防病毒而不能依靠单机防病毒软件一模一样。而且,按笔者的经验,防病毒软件和单机防火墙在一台电脑上工作时,出现异常错误的机会很大,会大大增加管理员的工作负担。

防火墙集成IDS对性能影响- -

防火墙中集成IDS,理论上可以大幅度加强网络的防入侵能力,但一般在netfielter扩展过滤涵数的实现方式对性能的影响也是不可小视的

许多客户和技术人员认为,防火墙中集成IDS即IDP,就是把IDS和防火墙"串联"起来,(这个比喻很形象),因此必然影响网络处理性能,并大大消耗防火墙的系统资源,导致防火墙的"本职工作"反而不象专门的单一防火墙那样专业。这种看法有一定的道理,因为许多入侵防御加强型的防火墙就是通过这个办法宣称自已也是IDP的。

接触过防火墙营销商的顾客很多都听过这些营销商常常声称自已的防火墙带有IDS,其实,那更多的是防火墙内核函数中防有限攻击的功能,而不是真正的基于模式匹配的IDS。下面就用netfilter和iptables作为例子说明一下,要知道绝大部分防火墙是基于netfilter防火墙内核的,大致也就只有Netscreen,Pix,CheckPoint这几家的中高档产品才例外.

iptables并不是防火墙,而是用户与防火墙内核(netfilter)交互的接口工具,(简易型的防火墙常常是把 iptables通过php和web图型界面化开发出来,这也是许多国产防火墙的通用开发模式),在iptables中就有一项 --string的参数,可以把诸如病毒码、一些特征码放进去,形成简易的IDS。这种形式用在病毒扩展上比较多,而用在IDS就不太合适,主要是网络入侵不象文件型病毒,是不带字符串型的特征码的。

在netfilter直接添加IDS功能,一般是在NF_HOOK宏中注册自已的函数,抵御已知的几十种攻击形式。参看netfilter 的高级应用举例。这就是通常人们理解的"串联"的由来,这样处理,由于每个包都必须经过这样的检测才能使用ip_forward_finish函数完成转发,所以防火墙的性能是随着这类函数增多而迅速下降的,所谓IDP低性能的传说,就是这样来的。netfilter另有一个边缘的工程,叫hogwash。该工程结合了Snort IDS规则模式匹配引擎,以便于iptable能够响应带有攻击信号的数据包。其实就是把snort的匹配规则自动换换成上述的函数,然后更新。但这个工程一直没有进展,关键就在于,"串联"的函数不能多,而且这样等同于动态修改内核,极大地消弱了防火墙内核工作的稳定性。所以,通过这种方式提供IDS是行不通的,尽管仍有一些方式可以相对缓解这个矛盾,象CheckPoint的 smart defense,但毕竟可发展空间很有限。

要有效地让防火墙同时具备IDS的功能,方法只有一个,就是让IDS作为一个独立的实体线程工作在FW 的同一个系统中。这样做,尽管表面上仍分薄了防火墙的CPU/内存系统资源,实际上,目前防火墙产品的系统瓶颈并不是CPU/内存,而是PCI的总线交换速率;相反,除非是同时使用高强度的VPN加密,否则,CPU/内存等一般资源是大大绰余的,对于X86的ASIC(冗余指令集)系统来说,更是如此。

这时侯,IDS其实是与防火墙"并联"工作。另一方面,防火墙的转发要求实时性远远超过IDS,大致在微秒数量级(us),相反,IDS的实时性要求充其量只在毫秒级(ms),更多是在秒分甚至是小时这样的数量级;而防火墙基于更高的实时性要求而拥有更高的系统优先级;因此,防火墙基本上可以不受IDS的影响而性能受到损害(在千分之一以下)。对于系统来说不是IDS是否会影响防火墙的性能的问题,而是防火墙需要准备多少的缓冲内存从事IDS的问题,以减少IDS可能因包丢失而造成的漏报问题。

因此,合理集成IDS,是可以不对防火墙造成任何实质性影响的。这正是IDP的技术基础。

防毒墙(防病毒网关)与防火墙的异同- -

拒病毒于国门之外是防病毒墙的初衷,但在第三层工作环境的防火墙中建立相当于第七层过滤 所带来的资源消耗,以及随之而来的不可靠,却让人觉得得不偿失

防毒墙即通常所说的防病毒网关。目前市场上对防毒墙的概念仍未达到共识。一般认为,防毒墙包括以病毒扫描为首要目的的代理服务器;以及需要与防火墙配合使用的专用防毒墙;而以防火墙功能为主,辅有部分防病毒过滤功能的产品,一般不认为是防毒墙。因此,包括象Fortigate和德科安软的图腾防火墙,以至它们的OEM衍生防火墙产品,都不算是正式的防毒墙产品。如此分割的一部分原因,是因为这种以防火墙功能为主的防火墙,不可能因为需要防病毒而改做专门的病毒墙,在经济上不划算;而且,使用防病毒功能后,防火墙的性能会遭受大幅度的削弱,也使这部分功能只适合在较小的网络范围内使用。

防毒墙与防火墙的最大区别在于,前者主要基于协议栈工作,或称工作在OSI的第七层;而后者基于IP栈工作,即OSI的第三层。因此决定了防火墙必须以管理所有的TCP/IP通讯为已任,而防毒墙却是以重点加强某几种常用通讯的安全性为目的。因此,对于用户而言,两种产品并不存在着互相取代的问题,防毒墙是对防火墙的重要补充,而防火墙是更为基本的安全设备。在实际应用中,防毒墙的作用在于对所监控的协议通讯中所带文件中是否含有特定的病毒特征,防毒墙并不能象防火墙一样阻止攻击的发生,也不能防止蠕虫型病毒的侵扰,相反,防毒墙本身或所在的系统有可能成为网络入侵的目标(如 趋势的Interscan安装在windows上的时侯);而这一切的保护,必须由防火墙完成。

防毒墙和防火墙的共同之处是两者都是工作在网关。在小范围的网络中,与互联网联网的需求相对简单,一般就是SMTP和HTTP等少数几种协议,这时,防毒墙只要所基于的操作系统没有明显的漏洞,作用与防火墙基本相同。

无论是那一种防毒墙,由于工作的OSI层次较高,因此,过滤速度比较低;或者高速度的成本较高。但即便是高带宽的防毒墙,对于网络通讯所造成的延时也是比一般防火墙大得多。因此,防毒墙在大型网关节点的布署是一个值得管理员慎重对待的问题。笔者认为,把防毒墙布置在第二防火墙,即部门网关这一层较为合理。

正因为这个原因,如果防火墙与防毒墙集成在一起,就会形成一个相对尴尬的局面:要么防火墙只能用在小型网段,要么就是大材小用,或者干脆就不用。

网关防病毒(防毒墙)的实现方式- -

防火墙集成防病毒功能,即网关防病毒,与平常常见的基于主机的传统防病毒有很大的不同。传统的防病毒软件通常是在类似fopen()这样的文件操作函数中
形成一个文件流时,使用预设地病毒特征数值与流中的值进行匹配,从而确认该文件是否含有已知的病毒特征。而在网关环境中,根本就不存在一个"文件"的概
念,有的只是分属于不知那里来的那个文件的成千上万的IP包,因此,网关防病毒需要完全不同的防病毒引擎。
防火墙集成防病毒功能,即网关防病毒,与平常常见的基于主机的传统防病毒有很大的不同。传统的防病毒软件通常是在类似fopen()这样的文件操作函数中形成一个文件流时,使用预设地病毒特征数值与流中的值进行匹配,从而确认该文件是否含有已知的病毒特征。而在网关环境中,根本就不存在一个"文件"的概念,有的只是分属于不知那里来的那个文件的成千上万的IP包,因此,网关防病毒需要完全不同的防病毒引擎。

网关防病毒同样是基于特征字符串匹配。固然可以直接在防火墙过滤内核中匹配每个IP包的内容是否包含指定的ASII字符串,但这样很不可靠,因为许多文件在以太网传输过程中是分成许多IP包的,如果特征码刚好在分割界限上,这种字符串匹配就无能为力,因此,就要求防火墙使用IP碎片重组技术,即必须由防火墙内核辟出一个新的缓冲区重组IP包,然后再继续转发。另外,全面匹配每个IP包的每一段内容,对防火墙的通量性能危害极大,性能的损害可以达千倍以上。正是由于这个原因,使用这种方式进行防火墙的防病毒对性能的损害的极大的,防火墙变慢不足为奇。也正是由于这个原因,使用这种方法是不可能达到传统的杀毒作用,在防火墙上,只能是查毒,一旦发现,就把该IP或该会话丢弃,显然,这时涉及的文件也不会有用,因此,防火墙的操作就是把文件丢弃,也即一般用户在如fortigate防火墙上看到的病毒文件的"被屏蔽"。除Fortigate外,象熊猫的 PAA防毒墙,也是能通过这种方式实现的,只不过,它把系统默认设定在透明模式上工作而已。

网关防病毒的另一个实现方式就是使用代理服务器。众所周知,防火墙工作在OSI第三层,部分工作会在第四层会话层完成;而代理服务器则工作在OSI第七层,也就是应用程序层上。这时,防火墙实际上起到的是一个二传手中介的作用,发起联接的主机和目标主标根本没有建立起真正的联接。在代理服务器作为二传手是时,代理服务器进程就会在内存中建立起一个文件缓冲区,从而形成一个可检测的流。这时的检测就与普通的传统防病毒方式是一样的,同样是使用fopen的文件操作,只不过,传统防病毒软件是在文件系统中的调用fopen();而网关防病毒则是在socket 中调用这个函数。恰好,在UNIX中,是把网络socket看作是文件中的一种。使用这种网关防病毒方式的包括象诺顿的防火墙(本质上是代理服务器), NAI的防毒墙,还有图腾防火墙的防病毒功能,以及东软防火墙的流过滤技术,都是这样实现的。使用代理服务器可以实现比防火墙内核过滤要复杂得多的过滤操作,(这是OSI第七层应用程序较之OSI第三层操作的先天优势),代价是负出的性能损耗也是极大的,同样的通量,代理服务器需要成百上千倍于普通防火墙的资源消耗。

什么防火墙集成防病毒会很慢- -

由网关防病毒的两种实现方式可以看出,无论采用那一种,实时性和网关通量与一般的防火墙相比都是大为不及的。
由网关防病毒的两种实现方式可以看出,无论采用那一种,实时性和网关通量与一般的防火墙相比都是大为不及的。另一方面,任何一个终端主机产生如文件下载请求时,防毒墙都需要专门辟出一段专门的内存保存用作检测的临时文件。尽管不需要把整个文件都保存在缓存当中,但肯定比单纯进行IP转发要大得多。可以想象,如果同时有多人下载或传递大文件时侯,防毒墙/代理服器的负担到底有多大。要知道,文件传递,这包括到象HTTP,FTP,SMTP,POP3这些协议,是经常执行的。这时侯,防火墙的负担比最大负载的文件服务器恐怕还要大得多,要知道,标准的工业防火墙是连系统硬盘也没有的啊!!这就是为什么防火墙激活防病毒后会很慢的原因。也正是由于这个原因,指望在大网络的网关把病毒完全切断是不现实的,否则,在中国电讯的国际出口设个防病毒墙岂不是更干脆?事实上,网关防病毒,无论是代理服务器还是IP内容检测,都很难对50台主机以上的网络服务。这同样是象诺顿这样的防火墙(代理服务器)不能在企业大型网络工作的原因。

与防病毒相似的是内容过滤,道理也是一样的,而且实现起来还相对会简单一些。

毕竟,防火墙的天然工作仅是地址和端口的转发控制,在小网络它可以多干些其他的事情,而在大网络,还是激活功能单一一点为好。

开发硬件防火墙的主要步骤- -

这里说的虽然是硬件防火墙,但几乎所有的工作都是软件工作。硬件防火墙的核心是软件。

这里说的虽然是硬件防火墙,但几乎所有的工作都是软件工作。硬件防火墙的核心是软件。

在开发前,首先要清楚知道自已要需要的是什么类型的防火墙。同为硬件防火墙,大致可以分为高端以千兆为代表的主火墙,中端的百兆企业防火墙,以及低端家庭-小办公室的防火墙(SOHU-SMB)。这三个级别的防火墙的开发方式有很大的不同。高端千兆防火墙的代表产品包括Netscreen的5000系列防火墙,以及Nodia-CheckPoint的IP720以上的产品,这级防火墙能够适应千兆要求的作业,吞吐量至少在600M以上。作为国内生产商目前要推出真正的千兆防火墙是很困难的,详情请参考:为什么实现千兆防火墙很困难

而作为低端家庭-小办公室产品的防火墙,主要受的是硬件成本的压力。这一级产品包括如 Netscreen的50/25/5X系列,Fortigate的FG200和FG300,以及一些市场上的拨号器、宽带路由器都可以归属这档防火墙。工作特点多是单进单出,主要用在小局域网进出互联网的控制。考虑到一般公司出入互联网的通道充其量也就几兆,即使是LAN用户或CABLE MODEM,公共出口也仍是几兆。因此,自适应十兆/百兆的单进出小防火墙基本上可以满足要求。事实上有些几百人的公司使用win98+sysgate拨号,也是自我感觉良好,可见这一档次的上网防火墙性能要求并不高;价格也是维持在两万元以下。但对于使用X86架构的防火墙来说,要求再低硬件也是有几千元的;连上软件成本,这两万元简直无法维持。因此,这一级防火墙的主要开发方式,是选择合适的嵌入式系统,通常是Linux,连硬件和软件整套买进来,自已添加其中的防火墙应用程序。这种防火墙主要的系统开发工作由各嵌入系统的供应商完成,而系统功能也弱,留给生产商的软件施展空间也不大,所以更象是一项硬件采购项目。连同最低采购限额(一般是一千)和软件开发,大致在一百万左右就可以拿下一个产品。这种防火墙,虽然也是"硬件防火墙",但不是我们本文的重点。

本文介绍的,是中档的企业级百兆防火墙的开发的主要步骤。这一级防火墙,是目前企业采购的主要对象,也是最需要的产品类型。国产防火墙,基本上集中在这个区间,操作系统一般选用开源的Linux或者BSD;相比之下,BSD的应用程序升级速度不算快,所以大部分防火墙选用的是Linux。

要决定开发一个百兆的防火墙,需要选定一款合适的服务器主板,或者工控机,另外就是要选定一个好的网卡,通常是服务器专用网卡。虽然象Linux这样的操作系统可以自动适应不同的主板,(只要它符合象PC2000这样的标准),Linux的最新内核也总能支持较新的主板的性能,(如PIII的超线程);但每个主板和CPU之间还是有少许不同的;作为一个防火墙,除非对极端性能要求不是太严格,否则,需要针对主板和CPU的一些特性,如寄存器,SMP,超线程等等对内核进行针对性的修改和优化,否则,默认的内核就只能使用这些主板/CPU最基本的部分。举个例子说,防火墙有一个重要的性能指标叫最大会话数速率,或称每秒最大生成会话数,如果使用普适形的内核用到P3CPU上,能够达到的最大数值大致也就只有几千;但经过对针对主板设计(这种说明可以从主板和CPU厂商获取)进行优化,可以把性能提高到3-5万左右。同样,单纯升级主板和CPU不见得能提高性能,象把防火墙从P3升级到P4,如果没有支持P4的特殊性能,如超线程,最大会话能力就仍与P3没有区别,不如不升值,还可以减点成本。而专门的优化,则可以把性能达到50万,这也是这类防火墙的使用Intel架构主板目前所能达到的极限。针对选定硬件的优化工作尽管独立于防火墙开发的主体软件工作,一般情况下也不会显出它的必要性,但当防火墙进行极端的使用环境或评测环境时,显出的差距就非常大。针对网卡的开发驱动程序除了优化性能外,另一个目的就是要把防火墙与网关绑定在一起,以免被盗版。这个驱动程序与定造的防火墙内核一起,就令盗版显得困难得多了。

防火墙软件的开发工作主体就是防火墙管理软件的开发。对此,架构师要明白自已到底要开发那一种防火墙,防火墙的管理思路是什么。在几年前这种开发显得简单,就是用一些web调用的程序,(另一种办法是用dephi写windows程序,通过特定端口服务控制防火墙,调用预设程序,原理也是一样的),直接调用Linux的防火墙管理工具如ipchains;其余的工作主要就是预先编好若干类的默认配置(相当于template)。因此开发难度不算大,十来个人一年半载总能完成;大批国产防火墙就是这样开发出来的。这种防火墙,对于熟悉Linux防火墙的高手来说是不必要的,自已用Ipchains就可以达到同样的目的。因此,今天这种防火墙已经摆不上台面了。今天的防火墙主要是从便于管理着手,着眼于管理员可以较易对大量、复杂、多半的政策进行维护,这就需要开发"面向对象管理的防火墙"。这样一来,使用把 ipchains/iptables单纯用PHP或delphi图形化是不足够的,事实上,这时侯单纯使用如iptables已经很难满足要求,开发者常常必须开发自已的象iptables那样的防火墙管理工具。这部分的工作非常庞大。

作为防火墙的载体的操作系统和防火墙的内核也是一个工作重点。防火墙作为网络的第一道防线,不可以使用默认设置的操作系统,除了最必要的服务以外,所有东西都必须删除。因此,企业级防火墙基本上是使用的是嵌入式操作系统的开发方式,通通常是形成一个在内存中运行的安全操作系统,如同一个无盘的工作站。防火墙必须长时间无故障工作,还要应付可能有的突然断电等现象,所以,一般情况下禁止连接系统硬盘,以免造成断电损坏。防火墙的固存一般都不大,16M到32M就绰绰有余了。有些防火墙厂商没有能力做到这一步,就使用大容易的FLASH作为系统盘,其实是非常危险的。原因在于flash的写性能差,可写次数只在千次数量级,而Unix类的文件系统读与频繁,因此极易造成flash上数据的丢失;而且一旦发生断电关机,如果仍然有系统盘安装在目录上,很可能造成文件系统的损坏,最终结果,即使最后可以抢救过来,也会给用户防火墙质量不过关的印象。

防火墙的内核也是一项不可少的工作内容。目前一般的防火墙都是使用netfilter作为防火墙的内核,而且都要求添加一定数量的防攻击性能。参考netfilter的深入应用举例。但有些防火墙产品把这项工作扩大化,希望由内核完成如IDS、防病毒的工作,尽管可以办到,但对防火墙的基本性能会造成严重的损害。

企业级的防火墙需要有多种远程管理工具,方法一般有三种,ssl+http,远程的secure shell,或者使用专用客户端工具。无论是那一种,都是基于同样的在防火墙预定的用户管理程序工作,这些管理程序被调用后,就与防火墙的接口管理程序(象iptables,或自编写的接口程序,象图腾ObjectMgr)互动,完成防火墙的管理工作。这部分的工作也是比较大的。象防火墙可以允许用户用 ssh登录,但却不可能允许直接返回root shell(太危险了),于是就必须开发一个安全的shell作为第一重接口,这样,开发者就相当于自已开发了一个BASH一类的解释程序了。对远程访问的安全控制是防火墙的一处重点,常常要结合管理机限制,IP/MAC限制,密码、证书认证等多重安全手段。否则,否许所有人都试图登录防火墙,防火墙本身就很危险,根本谈不上网络的安全性。

完成以上的工作后,再完成最先谈到的web-ssl管理界面,或者是delphi(或C++)的客户端管理工具。防火墙就基本上成形了,区别只在于用户是不是觉得你的管理工具好用不好用而已。(许多程序员认为防火墙工程不大,其实是他们的脑海中以为防火墙的研发只有这个图形管理界面一项而已)。但即使这样,作为防火墙的研发工程还远远没有完成。开发者常常还必须向防火墙添加VPN(这也是一个巨大的工程),代理服务器(如是要加,就要写多种协议的代理服务器),如PPPOE拨号,是否还要加会话认证;以及HA和负载平衡,以及支持透明模式接入;是否支持外部帐号管理,等等。

前文这些工作终于都完成了,大概可以松一口气交功课了吧?的确是这样,假如您不介意你的防火墙有BUG 的话!否则,这个工程顶多只完成了一半。下面的工作就是编写测试实例进行测试。硬件防火墙由于对软件硬化处理,而且长时间无间断运行,因此,对软件的质量要求非常高。测试者至少要编写以下三种测试实例进行测试:1)程序中是否有内存对象没有清除;程序中残留有对没有clear是经常的事,象windows 的程序就有这个毛病,所以windows 开了一段时间后就要重启以便空出内存;在防火墙中这个要求严格得多,一个半个的对象残留对普通的软件项目没什么大不了的,但对于防火墙是致命的;防火墙的系统资源会在很短的时间内就完全被这个BUG吃光。2)使用防火墙的管理工具生成每指定的政策实例时,是否做到该放行的包放行,不该放行的包不放行;3)防火墙的极限工作条件;也不是如最大会话这样的测试,这些需要专门的测试工具如smartbit;高性能的防火墙还需要外包测试,因为设备太贵。如果防火墙集成了如VPN,IDS,防病毒等功能,还必须进一步编写测试实例,测试在启动这些功能时防火墙的其他性能的下降情况。

防火墙软件系统的测试是一项最耗时最耗力的工作,占了整个开发成本至少一半以上,任何一个测试通不过,都要重新debug,重新测试,直到测试完全通过为止。如果一个模块测试返工三次就通过,那个程序员一定是很优秀的;如果通过六七次,实在很正常;就算十次才通过,也不算是丢脸的。在这种反反复复的工作中,开发者就会发现,象前文说的那样把程序分成几个独立的层面分别开发,分别测试,文档完整,具有无可比拟的优势。否则,这样的开发工程那怕一千人做,做一百年都做不完。

只有完成测试工作,防火墙就算过关了。整个工程100人如果能够在一年里做完,就要谢天谢地了。开发一个企业级防火墙需要上千万人民币,各位朋友现在是不是理解一点了?同样,在几年前几个人做个管理界面调用ipchains,当然也是一个防火墙,的确也不是弄虚作假。只不过,在于各个厂商的选择而已。

为什么实现千兆防火墙很困难- -

千兆防火墙的代表产品包括Netscreen的5000系列防火墙,以及Nodia-CheckPoint的IP720以上的产品。这种防火墙的特点是网
络吞吐性能要求高(即带宽要求高),普通的硬件主板不能承受,市场出货量又少。因此,在世界上能够实现的厂家很少,而且必须是世界级的进行市场推广的公司
才能推出真正的千兆防火墙。其他的,即使是名为千兆,实际上也只是假千兆,说穿了就是把千兆卡用到百兆防火墙的内核上,实际上达不到千兆性能。要了解个中
因由,首先要了解防火墙的工作原理。
千兆防火墙的代表产品包括Netscreen的5000系列防火墙,以及Nodia-CheckPoint的IP720以上的产品。这种防火墙的特点是网络吞吐性能要求高(即带宽要求高),普通的硬件主板不能承受,市场出货量又少。因此,在世界上能够实现的厂家很少,而且必须是世界级的进行市场推广的公司才能推出真正的千兆防火墙。其他的,即使是名为千兆,实际上也只是假千兆,说穿了就是把千兆卡用到百兆防火墙的内核上,实际上达不到千兆性能。要了解个中因由,首先要了解防火墙的工作原理。

大家都知道,防火墙的工作核心其实就是对IP包头与预定政策的匹配控制。防火墙在工作的时侯,首先从内存读出政策链的第一条放进寄存器,然后经系统总线(pci0),再经pci-pci桥,再经pci1到pci网卡读取IP包的头信息,把它与寄存器中的政策进行匹配,然后决定该IP包的处理。一来一去需要两次经过PIC总线。如果IP包比较大,那么这个包头信息与包的大小比较就相对小得多,这时侯系统带宽的瓶颈就是网卡的内存暂存能力,也就是我们所说的百兆网卡和千兆网卡的区别,或者称为线速的限制(wirespeed).但如果IP包很小,那么IP包头所占的比例就相当高,这时,瓶颈就是PCI总线的交换能力了。

任何来往于该PCI的其他传输,都将由于总线争夺而受到限制。在这一数据交换中,数据通过 Hubink,从ICH(I/O Controller Hub))到MCH(Memory Controller Hub)的传输有四次,经过PCI总线的传输有两次。由于HubLink的最大数据吞吐量是266MB,约2.2Gbps;但由于32位PCI总线以 33MHz运行,所以数据传输率被限制到1.06Gbps左右。而且还要连接运行各种系统数据交换。由于PCI总线的带宽限制,PCI网卡永远也不能实现真正的全双工的2Gbps带度,最高理论速度是单向1Gbps,而实际达到的不超过一半,即500M。

换句话说,对于硬件确定的系统,每秒能够处理IP包的数量是一个相对的常数。这个常数与CPU处理能力和寄存器数目,以及系统总线的交换速度形成的整体能力密切相关。对于使用PIII处理器和 X86服务器主板(或工控主板,32位PCI总线)的防火墙,这个数字大致在五十万到一百万之间。(注意不要把它和最大的会话保持这个标称参数混淆,最大会话主要与系统的可分配内存有关系)。因此,基于Intel X86主板的防火墙的极限吞吐量在IP包大小为512比特时,大致是三百兆左右。显然,这个吞吐能力很符合百兆防火墙的环境,也符合低流量的千兆网环境的要求。但对于高流量的千兆网,就无能为力了,必须在硬件上整体改进才可能满足这个阶梯的升级要求。

从前文也可以看出,防火墙的吞吐量是与IP包的大小密切相关的,所以谈论吞吐量如果脱离包的大小是毫无意义的,任何防火墙都可以达到百兆线速,只不过是在包大到什么程度才能达到线速而已。另一方面,Intel X86主板架构的服务器,即我们通常说的英特服务器,ASIC服务器(冗余指令集服务器),或PC服务器尽管不能完全满足千兆环境的防火墙吞吐要求,但一般的千兆环境还是可以应付的。因为以太网中的设备不止防火墙一个,还有交换机、路由器等等,这些产品全部都可以形成瓶颈,因此,一个局域网段的极限流量不是它的线速,而大约是线速的25%以下。即千兆约250兆,百兆约25兆。考虑到目前国内一般千兆网的实际流量都不高(很少超过十兆的),所以这种基础的防火墙还是可以承担一般千兆网的流量要求的。但如果千兆干网达到100兆以上流量,几个千兆口累加的吞吐量就超过了这种防火墙的内部极限,这种防火墙就会大量丢包,成为网络系统的瓶颈了。

因此,要克服这个瓶颈,就只有一个办法,提高系统每秒能够匹配的IP包的能力。其中的关键是扩宽PCI 总线的交换速度,反而CPU速度并不是系统的瓶颈,相对而言,今天的CPU能力大得惊人,处理防火墙过滤如同牛刀杀鸡,所以大量防火墙把多余的处理能力用到VPN的强密解密处理上。而PCI速度实际上从问世到今天,也已经从33M提升到133M,只是与CPU的摩尔速度相比,显得慢得多了,偏偏一个桶能装的水是以最短的桶条来衡量的。到今天,要解决硬件瓶颈,已经形成了几种相对可行的方案。

一种就是使用专门设计的多总线服务器。如Nokia IP740虽然也是X86,但内置三条PCI总线,这样就可以提高防火墙的极限吞吐量,满足一般的千兆环境。第二种是使用专门的处理插卡,换方之,就是把千兆的网卡和专门的过滤处理器做到一起,形成新的千兆网卡,大部分工作无需再经PCI总线到CPU才返回,直接在PCI1就交换完毕了。这是 CheckPoint曾经使用的方法。第三种方法与第二种相似,所不同的不是使用专门的PCI集成网卡,而是使用一个前置在Pci1总线上的单片机,直接处理防火墙的过滤转发要求。这样同样可以克服总线限制。使用这种方法的就是著名的netscreen公司的ASIC处理器。最后一种办法目前仍没有确定可行。就是使用英特的NP处理器。它的缺点是把整个防火墙变成了一个过滤器。可是防火墙虽然主要工作是过滤转发,但并不是过滤转发就是防火墙,其他功能也是很重要的。否则就与路由器没有什么区别了。另一个简单的办法就是使用RISC-SCSI的架构,也即通常所说的高档UNIX主机,由于使用64位总线,也是可以克服32位PCI总线形成的瓶颈;这也几乎是普通防火墙厂商满足千兆要求的唯一办法了,就是把防火墙软件装到UNIX主机上面,成本可想而知。

无论是那一种方式,无不与一定量的市场需求密切相关。设计定制专门的硬件成本很高,动辄以千万美元计算,任何公司都不可能为区区一百几十台的出货量去搞什么专门的硬件。而且,千兆防火墙需求量只是百兆防火墙的几十分之一(只有败家子式的蠢才才会清一色用千兆防火墙),这就决定了即使是年出货量上千台的防火墙生产商也不能承受定制专门的千兆级硬件的成本。要知道,即使是尽得中国官方采购天时的天融信也远达不到这个出货水平。所以,世界上除非是在全世界范围内成功销售自已产品的公司,否则,推出真正的千兆防火墙是非常困难的。除非出现64位的PCI总线,否则百兆和千兆就是一个难以超越的等级;反之,一旦64位总线成为主流,那时千兆就象今天的百兆和十兆一样,很容易就成为一个可以自动适应的网络带宽等级。到那时,瓶颈制约的就是万兆了。不过说老实话,除非是实时看高清晰度电影和电视转播,否则我的想像力根本想不出拿着万兆到底干什么好。

目前英特正在研发新一代的网络系统总线CSA,(传输流架构),这一接口的投入,将为LOM(LAN on Motherborad)打下基础。介时,国产千兆防火墙产品就可以无需特别定制的硬件而扬帆四海了。

为什么子网分隔是至关重要的安全措施- -

有些单位在把局域网最终连上互联网时,考虑到的安全措施就是在网关上加一个防火墙。显然,这是很必要的,但光在内网外网之间进行过滤,实际上是很不够的,对内部组网进行合理的逻辑、物理的分割,要比单纯购买一个网关防火墙更为重要。
有些单位在把局域网最终连上互联网时,考虑到的安全措施就是在网关上加一个防火墙。显然,这是很必要的,但光在内网外网之间进行过滤,实际上是很不够的,对内部组网进行合理的逻辑、物理的分割,要比单纯购买一个网关防火墙更为重要。

很多用户在购买防火墙时常常以局域网内有多少电脑作为购买网关防火墙的重要指标,其实这是一个很大的误会。外网接口与内网接口实在是不一样的。内网通常是局域网的百兆接口,而外网,一般公司的真正可用带宽通常只有几兆,象ADSL用户,其实只是500K左右;就算是宽带LAN的用户,表面看来是100兆接入,其实,在公共出口出也只是几兆的带宽。所以,单纯用作上网防火墙的话,无论是国产还是进口的产品,根本不存在性能会不够的情况。仅仅是因为,仅仅使用一个单进单出的防火墙在网关处把关是远远不够的,使用防火墙对内部网进行分隔才是最根本的解决之道。

实事求事地说,防火墙并不能保障企业的网络安全,仅仅是减少了发生危险的机会,并且在险发生的时侯能够加以控制。这有点象造船,仅仅让船浮起来不够,船的生存力取决于"万一"漏水后能有多大的浮航机会,把船舱分隔成若干个水密舱可以说是造船业上最重大的发明(也是中国人自已的发明,据说得益于古代中国人使用竹子做船的启发)。用户使用防火墙保护企业网络,不就是为了防这个"万一"吗?把企业网络划分成一个个的子网,通过防火墙控制它们间的访问,就好象把船分隔成若干个水密舱,即使某一网段被成功入侵,(这种情况迟早会发生),企业管理员也可以足够的时间作出反应和处理;最起码可以把损害控制在有限的范围。

现在的网络入侵手段是很多的,没有防火墙无疑是自杀,有了防火墙也不能说就已经是保险。设想一下,邮件可以越过防火墙,如果某个用户不小心激活了某个邮件中的木马,防火墙也就失去了效用;或者单位里有些部门自已可以拨号上网,他们自已上网的电脑被冲击波感染了,然后就可以成为在局域网内自由传播的源头,这时防火墙同样失去了作用;或者是部分员的电脑没有打补丁,仅仅是上网浏览就感染了尼姆达病毒,如果没有作网络分隔,同样是会迅速在企业网内扩散。......

因此说,企业对内部进行合理的网络分隔,是比单纯设一个网关防火墙重要得多的安全措施。这还没有包括企业本身特殊的安全要求,如财务、人资、关键技术资料、合同等部门,相信不是所有人都希望完全透明公开的。企业防火墙正是为此可造,而不是仅仅为了上网而用的。

笔者认为,局域网内电脑在50台左右是否需要进行子网分隔的临界点,同时也是能否使用代理服务器的临界点。在50台电脑以下的网络规模,可以使用代理服务器如诺顿或ISA2000;或者是SOHU/SMB类型的防火墙,如Fortigate 300;超过50台电脑,继续使用代理服务器,或者不进行子网分隔是非常不明智的。

用户在规则子网分隔时,也要注意另一个不正确的取向,也就是子网分隔也并不是越细越好的。过分的分割,除了增加管理的复杂程度,和增加用户布署成本以外,没有带外太大的好处。因此,用户可以按自已的网络规模,分割成干个数十到100台主机一个的子网区间。一般的防火墙除外网外还会有三个左右的自由定义接口,如果觉得不够,可以考虑使用小型的防火墙分隔电脑数量不多的子网(如财务这类只有几台电脑却又不得不分割的子网),如果采购的防火墙支持的话,还可以采用增加网络接口的办法。但不要采用把防火墙当成廉价交换机的做法,一味用防火墙代替所有的交换机和路由器。毕竟同等吞吐量的防火墙要比交换机或路由器贵得多,速度也要慢得多。

为什么说国产防火墙不可靠- -

只要接触信息安全行业,总能听到、看到大量如此传播的信息,就是国产防火墙都是不行的,只有进口产品才是合格的。可事情真的是这样吗?我把这些文章都仔细读一下,却发现没有一份是详实有据地说明国产防火墙是不可靠的,充其量只是局部现象,编编成为国产防火墙不可靠的证明,这到底是什么回事?
只要接触信息安全行业,总能听到、看到大量如此传播的信息,就是国产防火墙都是不行的,只有进口产品才是合格的。可事情真的是这样吗?我把这些文章都仔细读一下,却发现没有一份是详实有据地说明国产防火墙是不可靠的,充其量只是局部现象,编编成为国产防火墙不可靠的证明,这到底是什么回事?

象有一份已经碾转转贴了三年多的文章,名为《我眼中的某国产防火墙》,作者显然是一位售后工程师,说出了他看见国产防火墙内部后的感受。这位先生没有点名(恐怕这是中国传媒的最大特点,批评时不敢点名,全是某人,某厂,某公司,某局,......,在国个外,不敢点名的批评是造谣,是犯法的),所以很容易被所有读者理解成这就是指所有的国产防火墙,(这偏偏也是中国人的习惯思维),他指出他所经手的这款防火墙,实际上是一台中档PC,装个RedHat Linux后弄出来的。作为过来人,我可以理解一位初出道的大学生刚刚理解某样开始以为神秘莫测的东西时,突然感到的那种"噢,原来只是这样"的心情;但同时也要指出,这是在三年多以前,那时侯的国产防火墙技术和今天如天壤之别。而且,从描述看,那台防火墙明显是装机出货的产品,即每出一台防火墙就装 Linux装apache......这样一台台出货的产品,而不是总体研发批量生产的防火墙。

另一份类似的文章,那是重庆《电脑报》在今年四月份左右出版的名为《看不懂的硬件防火墙》,同样转得满世界都是。别以为此文说的是硬件防火墙,实际上说的仍然是国产的硬件防火墙。与前一篇的作者亲历亲闻相比,该文作者显得似内行又似外行。说他外行,是因为他证明国产防火墙不可靠的理由,是因为他发现国产防火墙中用的是他熟悉的CPU(英特),(也许还有硬盘网卡什么的),于是他一算:俺DIY一台PC才多少钱?妈的这防火墙瞧着不也象俺家的电脑吗?干吗卖这么贵?他根本没有算软件的钱!!要知道,防火墙主要价值是软件,对于防火墙生产商来说(中间商不算),硬件甚至是可以白送的,只要软件卖得物有所值!但他有些地方又说得象是内行(估计是抄回来的),说:网关产品是最关键的地方,需要超级稳定,国外都是使用芯片级技术实现硬件防火墙的;象国产防火墙使用LInux是不可靠的。这样,这位作者就得出结论,国产防火墙都没有使用他说的芯片级防火墙技术,都是骗人的。

这样一份似是而非的文章登在全国知名的IT大报上,然后在各种媒体包括互联网传来传去,会造成什么影响,可想而知。为什么我说他是似是而非呢?就因为世界上采用"芯片级防火墙技术"的,只有一家,就是Netscreen,说穿了,就是ASIC。但我想说的是,世界上除了Netscreen还有上百家的知名防火墙,包括PIX,CISCO还有上百家防火墙厂商,他们都没有"芯片级"什么玩意,包括象 Netsonic(19万台出货量),watchguard这些知名的防火墙,使用的都是Linux;几乎所有的厂商,或多或少都是基于X86主机架构的。而这位作者所说的话,实际上相当于这样的意思:只有Netscreen才是合格的防火墙,其他的都是骗人的,(所以我猜说原话的是一个 Netscreen的代理商一类,Netscreen自已是不会这样说话的)。

以上两份是最具代表性的两份文章。那么国产防火墙的真实情况到底如何呢?

应该看到,国产防火墙是一个很广泛的概念,可以说大林子里什么鸟都有。因此很难用一句国产防火墙是好的还是坏的、可靠还是不可靠以蔽之的。事实上,目前所谓的国产防火墙,至少超过一半以上是贴牌的进口防火墙。举个例子,如果用户注意一下,有许多"国产"防火墙的产品说明中常常有"ASIC",防病毒这类的话,这就说明这些防火墙很可能就是用Fortigate来贴牌的,因为,ASIC是Netscreen 的专利硬件技术,不可能被国内产品商引用的。这种防火墙充其量只是价格混乱,服务不能保障,而不会比原装原厂的产品不稳定,或者更便宜。

中国目前的软件业仍是一个个人英雄主义时代,很少有超过十人的团队可以有效合作的。这大大限制了国内开发象高级防火墙这样复杂的软件项目。早几年,当用户要求还相对简单时,很多公司使用将Linux(或BSD)的内置防火墙管理工具,一般是 ipchains,用Web+ssl调用或者是远程服务管理的方式,开发出第一代的简易型防火墙。由于利润的确可观(可以想像几千元请几个"高手"奋战几个月的php编程,却可以卖每台十几万元是什么滋味),许多原来只做个人电脑的厂商,也随便买个不知名的产品贴上自已的牌子,然后利用自已的渠道和品牌 "进军"防火墙市场,一跃而为前几名的国产防火墙厂商。上文《我眼中的国产防火墙》相信就是这一代产品。但这个等级的防火墙今天在中国已经没有生存的余地,(太落后了),有些厂家虽然靠这个级次的产品出了名,但现在能够提供的却是个人防火墙,或者就是干脆找个进口防火墙贴个牌(OEM),继续赚剩下的钱。剔除掉这一部分的厂家后,按保守估计,中国目前真正拥有知识产权的企业级防火墙生产商,不会超过十家,甚至不超过五家。

开发一个完整的企业级防火墙产品,从规划、设计到开发、软件硬件的定制、优化,到完成各种测试,投资远远超过《看不懂的硬件防火墙》作者的想象,至少需要1000万元人民币。在目前中国的软件产业水平而言,接近于是最大、最复杂的软件项目。这也是为什么拥有自已开发的国产防火墙如此少的原因。这些防火墙与大量如netsonic等的进口防火墙的方案、架构甚至软件成熟度都是非常接近的。事实上,除非英特处理器不稳定,除非PC服务器不稳定,除非Linux不稳定,否则,这些防火墙不存在不稳定不可靠的地方。这不同于依靠个人高手开发的防火墙。而两种防火墙的不同,很多时侯看看操作界面和命令行接口就可以看出其成熟度的差别。这种防火墙在百兆环境,与进口产品相比,不会有任何问题。

另一方面,由于我国市场出货量的限制,我国的国产防火墙厂商极难定制自已的专用硬件。这就极大的抑制了国产防火墙在千兆级产品的发展潜力。因为在千兆级防火墙,依靠的主要已经不是软件功能,而是硬件系统的潜能,象众所周知的PCI系统总线对吞吐量的限制。因此,国产防火墙目前基本上不可能推出自已的千兆级专用硬件,充其量只能使用通用的服务器,象Nokia的IP系列。这就是目前国产千兆防火墙性能不及使用专用硬件的进口防火墙的原因,但就稳定性和可靠性而已,两者仍是处于同一个等级的。

因此,国产防火墙,特别是百兆防火墙是完全可以信赖的,部分产品的性能价格比明显超过进口品牌。如果用户对使用国产防火墙有过不愉快的经历,也只能说是选错了厂家(可以对号入座看看是上述那一类国产防火墙),而不能称为国产防火墙不可靠。所以,国产防火墙不可靠,更多是一个公关形象的问题。但这恐怕不仅仅是国产防火墙,而是国产的高科技产品,整体公关形象都不容乐观。

IDS入侵检测的种类和特点- -

IDS入侵检测的种类很多,远不象防火墙那样显得规整划一。声称是IDS,其实并不是IDS的产品的产品还不少,有些还是知名的品牌。所以我们这里首先给IDS入侵检测下一个定义,那就是通过可更新的入侵特征匹配,实时地报告所有的入侵事件,并可与相关的安全产品协同终止入侵的产品。可见,IDS的核心是可更新的入侵特征,实时性,所有的事件,和其他产品的互动等四个基本要素。

IDS入侵检测的种类很多,远不象防火墙那样显得规整划一。声称是IDS,其实并不是IDS的产品的产品还不少,有些还是知名的品牌。所以我们这里首先给IDS入侵检测下一个定义,那就是通过可更新的入侵特征匹配,实时地报告所有的入侵事件,并可与相关的安全产品协同终止入侵的产品。可见,IDS的核心是可更新的入侵特征,实时性,所有的事件,和其他产品的互动等四个基本要素。从这个定义出发,可以马上排除掉通常的防火墙内嵌的防攻击功能并不是IDS,因为它们不能监测所有的入侵事件,只能监测管理员指定的那引起事件,典型如Fortigate;也可以排除掉部分日志审计型的工具,因为它不具备实时性,典型如CA的sessonWall,虽然CA的中国代理商声称它是IDS,实际上它更接近于网路岗这样的产品。最后,我们通常说的IDS指的是网络型的IDS,即NIDS,所以,针对保护某台电脑的IDS,也不属于我们通常所说的IDS产品范围。

最普遍的IDS产品形式的是布署在交换机的spane映射端口监听的。在这种方式中,IDS主机的监听网卡处于混杂模式,直接监听着所有映射网段经过交换机的IP广播,并把截听到的信号与内存中的特征码进行匹对,把匹对出的事件通知管理员并记入日志。另一种处理方式是把IDS直接布署在网关上,直接监听来往于网段的IP信号,匹配方式与前一种IDS完全相同。

需要注意的是,网关型的IDS可能会检测不到内部经交换机转发的某些信号,优点是可以更好地监测来自外部的攻击。

以下是各类IDS的特点对照表:


工作方式
特点
(早期)主机型
IDS先进性:*
在主机系统内进行文件系统校验、日志备份、生成特定日志等,发现曾经发生的入侵痕迹 作用范围:主机;
发现入侵:非实时发现对主机的入侵;
防护:限于提醒;
管理:大范围使用很麻烦;
可靠性:较差;
单机网络型IDS
先进性:**
使用安装在主机上的网络监听器,监测特定的网络入侵信息特征,发现正在进行的入侵 作用范围:主机;
发现入侵:实时发现对主机进行中的入侵;不能发现已经成功的入侵;
实时防护:较弱;
管理:大范围使用很麻烦;
可靠性:差;
软件代理网络分布型IDS
先进性:***
使用安装在各子网某一操作系统上的代理软件,作为该子网的代理(网络监听器),把监听的信息与特征库进行匹配,发现入侵向中央控制台报告,部分产品配备有类似PCFW,或TOC这类的工具,可以对安装代理的主机实施一定的保护。 作用范围:网络;
发现入侵:实时发现对所有主机进行中的入侵;不能发现已经成功的入侵;
实时防护:一般没有实时防护措施或很弱;且本身所在的操作系统易被攻击;而令系统失效;
管理:较麻烦;
可靠性:较差;
硬件代理网络分布型IDS
先进性:****
使用布署在各子网的硬件代理软件,其余操作与软件代理分布网络型相当。这种系统基本避免了软件代理最致命的弱点,即IDS代理和代理所在的操作系统易被攻击失效的弱点。 作用范围:网络
发现入侵:实时发现对所有主机进行中的入侵;不能发现已经成功的入侵;
防护:一般没有防护措施或很弱;
管理:较麻烦;
可靠性:较好;
硬件网关网络型IDS
先进性:*****
利用网关(防火墙、路由器)的IP处理后的队列记录代替网络监听,并使用网关(如防火墙)的专用操作系统作为基本平台,从而大大提高了可靠性。使用网关的转发、阻断设施,同样可以大幅度增加防御能力。而对网关原性能的影响基本上可以忽略不计。 作用范围:网络;
发现入侵:实时发现对所有主机进行中的入侵;不能发现已经成功的入侵;
防护:可具有较强的防护手段;
管理:简单;
可靠性:好;
新式主机型IDS
先进性:*****
使用主机隐蔽进程监测主机的操作、会话、服务,发现越权和滥用的入侵行为,保护主机安全。 作用范围:主机;
发现入侵:实时发现对指定主机进行中的入侵;并能发现成功的入侵(如物理手段入侵);
防护:可具有较强的防护手段;
管理:较复杂;
可靠性:较好;

我转的文章来源于这里:http://zwwwxy.blogchina.com/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics