|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
作者:Yiming Gonghttp://security.zz.ha.cn 声明:任何形式的摘抄必须保留上述作者和http地址 这是Netscreen VS. checkpoint 杂谈的第一部分1. 开始前的声明首先,本人在资源方面即没有netscreen,也没有checkpoint,更没有smartbits之类的测试设备,以下的内容均是本人翻遍netscreen和checkpoint网站,同时结合网络上搜集的资料中分析得出的结果,因此不可避免会有不当之处,这些地方欢迎各位资深人士指出,以便本人进一步修正和完善本文档。其次,本文不是讲如何安装配置这些产品的,这些东西是“熟练工人“做的事情。最后,本文对产品的各种评价均为个人看法,任何意见,非常欢迎讨论。2. 为什么会有这么一篇文章:相对于其他安全产品,防火墙在网络的应用中要普遍的多,同时在安全市场上也是相对要成熟的技术。但是留心的人很容易注意到,目前防火墙的宣传很乱,各家厂商都在鼓吹自己的产品,诋毁对手的产品,他们每家都可以列出来一串串的单子,宣称在某某功能超出对手。这种例子比比皆是;与此同时,很多媒体和评测机构(国外国内均是如此)也抛出了一些不负责任的所谓公平的评测报告。更给大家带来困惑。本文力图按照个人理解的一些东西来描述这两种系统。3. 架构首先我们来看防火墙的架构,这包括两个方面,软件和硬件两部分。也就是防火墙运行在什么软件系统上以及防火墙安装的硬件平台。架构是防火墙的骨骼,他决定了防火墙整体的工作水平和潜能。一般而言,我们可以把常见的防火墙分为基与硬件和基于软件的两类。基于硬件的防火墙硬件方面一般是采用专门设计的实现防火墙必要功能的ASIC,NP架构等量身定制的硬件,供防火墙跑的操作系统也是专门设计的。而基于软件的防火墙硬件方面一般采用通用架构的pc硬件,操作系统也因此采用的多是基于unix系列或者nt系列的通用操作系统。这里面checkpoint可以归类为基于软件的防火墙,而netscreen则是基于硬件的。两种架构的描述:性能:netscreen没有采用传统的工业架构布局,而是使用的是独立研发体系结构,包括netscreen专用的screenos操作系统和为实现防火墙功能而特别设计的ASIC芯片(这包括从低端的netscreen5,10的采用的megascreen芯片到高端的netscreen 500,5000等使用的Gigascreen芯片),它们与RISC处理器等设备紧密集成,为客户提供专用的防火墙的各项功能。由于netscreen防火墙设计上就是为了完成必要的防火墙工作,同时对数据包的访问控制,加密,地址转换等工作是通过上述专门的硬件来实现的,这就从结构上非常好的避免了传统的基于工业架构的软件防火墙不是专门为了防火墙设计,极大的依赖cpu,同时总线带宽受限制等重大的弊病,从这一点来看,理论上对防火墙的要求越高,netscreen体现的价值就越大。在netscreen的站点上,关于防火墙的白页宣称它的高端netscreen 5400,在操作系统screenos版本为3.0防火墙时防火墙的通透性可以达到12Gbps之高(vpn可达6Gbps)-这是本人所了解的性能最高的防火墙。checkpoint防火墙本身是一套软件,而基于软件的checkpoint防火墙本质上从操作系统到硬件架构都是使用的通用的系统,因此尽管软件本身可能已经尽可能的得到了优化,但受架构的局限,性能在理论上先天不足。Checkpoint为了解决这个问题,相继推出了软硬件的加速方案,这些方案主要功能是一致的:一方面包括将数据包的访问控制,加解密,地址翻译等非常消耗系统资源的工作从cpu转移到专门的插卡来处理,减小cpu负荷,另外一方面通过优化软件对数据的处理层次,将本来在高层的处理工作向下放,向硬件层次靠拢。通过上述两个方面,从而实现减少承载它的系统的压力,改进提升系统性能的目的。我们可以看到的SecureXL,checkpoint Performance Pack,VPN-1 Accelerator Card以及和Corrent公司,Nortel等公司合作推出的各种加速卡,都是这一思想的产物。从checkpoint的站点上得到的资源来看,这些解决方案的效果还是比较理想的。在checkpoint的高端产品上(如和Bivio合作推出的1000s平台上的防火墙性能可达4.0 Gbps,在64byte小包上也可达到3.2 Gbps的通透性)。此外根据checkpoint公布的资料来看,在这个月checkpoint自己的测试中,使用了5月13宣称的新技术Application Integlligence后,性能在原来的基础上进一步提升了31%。稳定性兼容性:由于netscreen采用的专门的软硬件,因此系统的稳定性上理论上应该领先,同时由于防火墙操作系统是专用的screenos,不存在防火墙和硬件的兼容性问题。而checkpoint使用的优化和定制后的操作系统和硬件,但是由于防火墙需要运行在通用的操作系统和硬件之上,而这些操作系统和硬件不是特定为防火墙各项功能设计的,因此可能会存在稳定性和兼容方面的隐患。功能和灵活性:netscreen采用的专门设计的操作系统和硬件架构,决定了灵活性上要相对差一些,而且可能提供的功能相对较少。比如早期为很多人诟病的高版本的screenos操作系统无法使用在早期的硬件平台上,从保护投资的角度上是很难为客户所接受的。又如netscreen的策略数目是有限的,如果用完了访问控制策略,如果要新增新的策略,那么必须去掉已经配置好的某些策略。此外对硬件的依赖决定了很难扩充新的功能模块,防火墙从购买之日起能提供的功能就基本上不会有太多的改变了,客户买了某种型号的防火墙后可能无法期待后期的重大升级。而Checkpoint由于架构不依赖硬件,因此理论上功能是可以无限扩充的,它能给客户更多的控制和定制功能。防火墙所在系统安全更新netscreen这种基于硬件的防火墙由于采用专用的screenos操作系统,安全问题暴露很少,需要打安全patch的必要性小。checkpoint跑在windows和unix上,由于这些操作系统本身的安全问题,管理员需要不断的更新操作系统本身的patch(尤其是windows平台上的,yiming简直受不了window隔三差五的patch了~~),这对防火墙的管理者而言是个比较痛苦的活儿。维护成本netscreen这种基于硬件的防火墙运行起来很容易,基本上加电开机就可以跑起来了,而且防火墙维护者不需要了解防火墙以外的任何技术。Checkpoint正常运行需要先安装操作系统,安装各种驱动(比如网卡),配置操作系统等,这是个比较讨厌的活儿。不过checkpoint为了解决这个问题,也推出了软硬件集成在一起的产品,国内常见的就是和NOKIA合作推出的产品,比如NOKIA IP740,就是绑定在一起的基于freebsd的checkpoint套件,直接开电防火墙就能跑起来。此外值得注意的是,如果checkpoint防火墙运行在unix平台上,需要防火墙的维护者对unix系统熟悉,不要小看这一点,在很多的公司,这对管理员是个很大的挑战。4. 数据包的处理方式除了防火墙的体系架构,最重要的部分就是防火墙对数据包的处理方式了,虽然checkpoint和netscreen都说自己都是基于stateful inspection的防火墙,但两者还是有区别的。个人认为,准确的讲:checkpoint更多的是SPI(stateful packet inspection),而netscreen则更多的是SPF(stateful packet filter)netscreen使用的是核心是SPF,所谓SPF,一言以蔽之,即:在传统的包过滤的基础上增加了对数据包的状态判断。一个数据包如果不是意图建立连接的数据包同时又不属于任何已经建立的连接的话,这个数据包直接就被丢弃或者拒绝-根本无需去和访问控制列作比较。这样就大大增加了安全性,同时提高了性能。目前基本上主流的防火墙都采用了这一非常成熟的技术,与此同时,为了更加有效的发挥防火墙的作用,netscreen公司和其他大多数公司一样,在对数据包的处理方式上,除了SPF,还增加了Application Proxy方式,利用这一方式,netscreen对高层的一些应用可以进一步加以控制,比如利用syn gateway抵抗Denial of service攻击即为一例。(注:关于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,该升级主要的卖点就在于宣称能够检测和防止应用层的网络攻击。我们知道,随着网络技术的不断发展,网络攻击行为已经逐步向高层转移,利用操作系统和网络设备本身安全问题入侵和攻击的浪潮已经逐步降低,人们越来越将攻击的目标转向高层的应用,相信这以后会是网络安全攻防的趋势。关于这方面的内容,各位可以参考OWASPWebApplicationSecurityTopTen这篇文档(http://www.owasp.org/ 需要使用代理)本人对这一技术非常感兴趣,仔细的研究了一下checkpoint公布的相关文档,关于Application Integlligence的功能,主要有以下四点:1:确认网络通讯符合相关的协议标准,比如:不允许http头出现二进制数据内容。2:确认网络通讯没有滥用相关的协议标准,比如:不允许P2P通讯利用80口穿过防火墙。3:限制应用程序携带恶意数据,比如:控制跨站脚本4:控制对应用程序的操作,比如上面我们举的snmp例子。仔细的分析上面的内容,个人理解对checkpoint而言,其实Application Integlligence也不能算是非常新的技术,可能只是在SPI基础上的升级和进一步扩充。此外关于checkpoint需要注意一点的是,checkpoint数据包处理引擎INSPECT对高层的数据包核查并不象想象的那样支持非常多的应用,而是将主要精力放在了常用的http,ftp,mail等一些比较普遍的应用上,也即,不是所有的高层的所有数据包都会被INSPECT审核,使用者不要迷信checkpoint宣称的INSPECT技术,我们可以看下面的例子:这里是checkpoint在sql slammer蠕虫蔓延时的一个扩展的INSPECT CODE,deffunc sql_worm_slammer() {(dport = 1434,packetlen >= (20 +8 +1 +96 +4),[UDPDATA:1] = 0x04,[UDPDATA+97:4,b] = 0xDCC9B042,LOG(long, LOG_NOALERT, 0) or 1,drop)or accept;};本人没有找到关于checkpoint INSPECT CODE的说明文档,但是观察上面的内容,我们可以猜出来一些东西。至少从这个CODE内容看,这是个基于签名的代码,我们可以看到比较关键部门可能包括两点:dport = 1434,端口1434,packetlen >= (20 +8 +1 +96 +4),数据包长度?20是ip头,8是udp长度,1,96,4是什么? 本人没使劲猜(我猜得到开始,猜不到结局…… ;))从上面的内容来看,其实checkpoint防火墙本身在处理sql slammer蠕虫时,并不象想象的那样真正的懂得sql的应用的,它可能只是执行了简单的匹配而已(本来想多看几个INSPECT CODE的,可惜要口令,幸亏原来下了一个sql slammer的)。part I 结束 |
|