Netscreen VS. checkpoint 杂谈(3) (注:关于SPF,SPI, Application Proxy等具体概念,不是这里讨论的内容,大家可参考相关资料) 我们来看看netscreen是如何利用ASIC芯片和SPF处理tcp数据包的: 当数据包到达netscreen的网络端口时,要先进行基本的有效性检查,验证数据包合法后,screenos检查这个数据包是否是已存在的某个连接的session的一部分(比如属于一个已经建立成功的telnet)。 如果该数据包声明属于已存在的某个连接的session的一部分,那么进一步检查tcp的sequeUCe号等参数来确认是有效的数据包,是就通过,否丢弃。 如果该数据包不属于任何已经建立的session,那么搜索管理员事先设置的访问控制列内容,如果访问控制列内没有符合该数据包的内容,数据包被丢弃,如果存在符合该数据包特性的访问控制规则,那么一条新的session建立。请注意这些工作是在它的ASIC芯片上进行的。 为什么要强调这一点呢?我们来考虑如下问题:决定防火墙性能的主要取决于什么? 为了回答这个问题,我们先温习一下防火墙的基本概念:防火墙是在两个网络间实现访问控制的一个或一组软件或硬件系统。防火墙的最主要功能就是屏蔽和允许指定的数据通讯,而该功能的实现又主要是依靠一套访问控制策略,由访问控制策略来决定通讯的合法性。 从上面的防火墙的概念我们可以看出,防火墙的主要工作就是进行访问控制,那么同样条件下,访问控制的处理速度越快,那么防火墙的性能自然就愈好。 同时,另外一方面,一般来说,某个数据包被拒绝,往往是与访问控制列的acl逐条比较,如果前面的acl不符合,那么在访问控制列的最后部分才会被拒绝。如果系统性能较差,这会是个非常耗费资源和性能的工作。 Netscreen在实现SPF时,通过在ASIC硬件而非cpu上进行访问控制的策略的比较,显著的提升了速度。在netscreen的白页上,介绍它的防火墙可以以线速处理4万条以上的访问控制规则,这个结果是令人非常满意的。这也是netscreen在实现SPF中最为闪光的一部分。 Checkpoint的工作方式主要基于SPI,SPI是工作在SPF之上的,它在提供SPF的功能基础上,增加了对数据包内容(高层)的分析功能。这对管理员对网络的安全控制能力无疑增进了一大步,同时,也是非常实用的一个功能,对一个有经验的管理员来说,利用SPI可以大大地减小网络的安全管理工作。 一个很简单的例子:一家企业分布在各地机构的局域网需要对外开放snmp管理功能,常见的防火墙一般也就是放开tcp/udp 161和162端口,无法再做更多的控制了,但是利用SPI,管理员就可以控制仅仅对外开放snmp的get功能,不允许set动作,这就极大的减少了snmp端口开放的危害性。又比如,利用SPI,管理员可以强制通过80端口的数据包必须是真实的http数据,而不是流或者即时通讯工具。 我们知道代理型防火墙同样能够提供高层访问控制,但是代理型防火墙工作在高层,他们在处理client和server的连接时,作为“二传手“来分析解释和控制数据包,每个client到server的连接被截获,演变成client到代理,代理到server,server到代理,再从代理到client的通讯形式。这就增大了延迟,同时对每种类型的通讯都需要高层的分析解释能力的单独的软件来做,局限较大。 而checkpoint的数据包处理引擎INSPECT工作在网络层和数据链路层之间,他们并不打断client和server端的连接。由于工作在最低端,进出端口的所有的数据包都会被核查,只有符合INSPECT引擎审核通过的数据包才能向高层发送。 INSPCET引擎使用可定制的INSCPET语言来理解和分析需要关心的数据包内容,并实现对数据包的动态控制。由于INSCPET语言的对象是整个原始的数据包,因此就在SPF的基础上增加了高层的控制,如:不仅向SFP那样可以对底层的ip地址限制,还可以控制到高层内容,如限制邮件的content-type。同时,管理员可以从checkpoint站点上不断取得新的INSCPET代码,从而增加对应用的扩充。 2003年5月13日,checkpoint又宣称推出近年来功能上重大的升级,即所谓的Application Integlligence,该升级主要的卖点就在于宣称能够检测和防止应用层的网络攻击。