信息安全这个题目实在是太大了,要想在很短的篇幅里把它表述清楚确实很难。不过所谓聊胜于无,努力尝试总比什么都不做强。本文就先从一个最基础的安全措施—-防火墙入手,来谈一谈很多人在选购和部署防火墙时存在的误区。
误区之一:选购防火墙时以小包吞吐量为重要依据
吞吐量的定义是:在不丢包的前提下,防火墙的最大转发速率。
我们可以这样理解这个定义:如果防火墙工作在某一个转发速率时可以保证不丢包,而一旦超过这个速率,就会丢包,那么这个速率就是该防火墙的吞吐量。
同一台防火墙,在处理不同长度的数据包时,吞吐量可能是不同的。因此,在标明防火墙吞吐量时,必须要同时指明转发的是多大长度的数据包。
一般来说,防火墙转发数据包的长度越大,吞吐量就越高,反之越低。最小的包长度为64字节,这样的包称为小包。防火墙在处理大包时的表现可谓难分伯仲,但在处理小包时就千差万别了。因此,要想比较不同防火墙的吞吐量,用大包比不出来,需要用小包比,所以用户在选购防火墙时,往往格外关心防火墙的小包吞吐量。
但问题是,一款小包吞吐量高的防火墙对用户来说究竟有多大意义呢?
我们先来看一看64字节小包的结构。
从图中可以看出,64字节的小包里,留给TCP的负载最多只有6个字节,这么小的负载一般来说是三次握手和四次结束包。在通常的网络环境中,网络流量的绝大部分是连接过程中传输的数据包,握手包和结束包只在建立和释放连接时才会出现,在流量中占较少比例。对于UDP,由于是不可靠的传输协议,基于它的应用并不多,负载为18字节的小包更是不常见。因此,一台小包吞吐量指标很高的防火墙部署在这样的环境中,实际意义并不大。
当网络中发生SYN Flooding、UDP Flood等DDOS攻击时,握手包的数量会在瞬间急剧增加,严重时可以造成网络瘫痪。此时,防火墙的任务恰恰是拒绝转发那些64字节的攻击包,保护它身后的网络、主机免遭DDOS攻击,但如果防火墙抗DDOS功能较弱,未能有效阻断攻击小包,而同时它又是一台小包吞吐量很高的防火墙,那力挽狂澜的英雄可就要蜕变成助纣为虐的帮凶喽!
其实,小包吞吐量原本是用来评价路由器、交换机等网络设备转发能力的一个指标,防火墙作为安全设备,固然要具有良好的性能,但我们应该更多着眼其安全保障能力。您说是不是呢?
结论:小包吞吐量是实验室里的指标,并不能代表真实的网络环境,更不能反映出用户的实际需求。在绝大多数用户的网络里,绝大多数的应用都是通过大包传输的,因此这些用户在选购防火墙时,不必过分关注小包吞吐量,而只需关心大包吞吐量就可以了。
误区之二:选购防火墙时以最大并发连接数为重要依据
最大并发连接数的定义是:防火墙在同一时刻可以处理的最大会话数。这个会话数,主要是指TCP会话和UDP会话,但由于UDP是一种不面向连接的协议,所以一般来说最大并发连接数都是指TCP连接。
目前市面上的防火墙,所标称的最大并发连接数动辄数万、几十万甚至上百万,不明就里者看后往往惊呼:“这防火墙!好厉害呀!”
然而,用户真的需要那么大的并发连接吗?
假设用户的单位有400台电脑在同时上网,每台电脑同时运行着50个基于TCP协议的应用程序,那么防火墙有20000个并发连接数就够了。但一般来说,很少有人会在电脑上同时运行几十个应用程序,所以,我们假设每台电脑同时运行着10个基于TCP协议的应用程序,那么,20000个并发连接就意味着可以支持2000台电脑同时上网。拥有2000台电脑的单位,已经规模很大了(比如我们Novell,呵呵),笔者很难想象出有必要使用最大并发连接数为200万的防火墙的单位是什么样的阵势。
读者或许会问,每台电脑同时运行着10个基于TCP协议的应用程序是不是少了点呢?HTTP协议不就是基于TCP的吗?很多人可是经常一口气打开几十个浏览器窗口啊!
是的,很多人确实习惯一下子打开很多浏览器窗口—-比如在浏览新闻网站的时候—-但是,这其实并不会影响到对防火墙最大并发连接数的要求。因为虽然你每打开一个浏览器窗口,就会产生一个TCP连接,但随着你所要浏览的内容从网站传回到本地,这条TCP连接就会自行结束,而无须手工干预。换言之,虽然你的电脑上同时开启了20个窗口,但这并不等于你的电脑保持着20条TCP连接。如果把防火墙比作一个酒店,最大并发连接数比作它的客房数量,那么像HTTP这样的短促会话就像一个个只就餐,不住宿的过客一样,来也匆匆,去也匆匆,而像MSN这样的长期会话就好比是需要入住的客人,他们才是占据酒店客房资源的主要力量。
结论:用户在选购防火墙时,要根据自己的实际情况,估算最大并发连接数的数目,不要盲目追高,以免造成无谓的投资浪费。
误区之三:把防火墙当成路由器用
防火墙的工作可以用三步来概述:接收数据、过滤数据、发送数据。其中第一步和第三步统称为转发数据。防火墙在转发数据时,可以以路由器的方式(路由模式),也可以以交换机的方式(交换模式),还可以用路由器加交换机的方式(混合模式)。
许多用户喜欢让防火墙在过滤数据的同时还扮演路由器的角色,为此,他们在选购时会向销售商提出一连串的问题:“你的防火墙支持源地址路由吗?支持策略路由吗?支持动态路由吗?支持多播路由吗?”销售商们的回答也不含糊:“支持,支持,都支持!”听那口气,大有一副“欲与Router试比高”的气势。
然而,防火墙充当路由器到底有什么好处呢?其实好处无非是给用户省下了一笔购买路由器的钱。但是,任何利益都是要靠付出代价才能获得。这代价就是:第一,防火墙毕竟不能和专业的路由器相提并论,充其量也就是个业余水平的路由器;第二,也是最关键的,就是防火墙一旦发生故障,会给用户带来很大的麻烦。为什么这么说呢?如图所示:
从图中可以看出,路由模式下,由于A的Gateway指向防火墙,所以当A要和B通信时,他会在以太网帧头里填上防火墙的MAC地址,目的是请求防火墙帮他确定B的位置;防火墙收到后,找到了B,就会修改帧头,把目标MAC地址换成B的,把源MAC地址换成自己的,然后转交给B。一旦防火墙发生故障,A就失去了Gateway,和B的通信就无法实现,当然就更不要说过滤了。
交换模式则不存在这个问题。A和B之间不需要Gateway中转,防火墙在他们中间仅仅起到过滤数据的作用,如果防火墙出现故障,A、B之间的通信照常进行,只不过不再接受过滤了。
由此可见,工作在交换模式的防火墙出现故障后仅仅导致安全功能的失效,工作在路由模式的防火墙出现故障后,不仅导致安全功能的失效,还会导致网络中断。二者相比,孰优孰劣,不是一目了然了吗?
结论:安全产品,顾名思义就是为了保障安全。用户在部署安全产品时,必须充分考虑该产品由于某种原因失效时,对网络、业务会产生多大的影响。在设计部署方案时,一定要牢牢把握“安全产品失效应该仅仅导致安全功能的丧失”这一根本原则。
误区之四:热衷于使用防火墙的NAT/PAT功能
NAT/PAT技术推出的初衷,是为了解决IPv4地址资源短缺的问题。因此,NAT/PAT本来是路由器的功能。然而曾几何时,该功能被披上了安全的外衣,逐渐移植到了防火墙上,现在已经成为防火墙的标准功能了。
NAT/PAT的安全性,据说就是可以隐藏内部真实的网络结构,让黑客没有可乘之机。我们承认这种说法有一定道理,但我们也认为,NAT/PAT的根本目的是为了解决网络连通性,安全性只是它在执行过程中自然产生的,因此,仅仅因为该技术具有一定的安全性,就把它移植到防火墙上并作为主要功能执行是不合适的,甚至有可能是有害的。试想,在防火墙上做NAT/PAT,虽然利用了其安全性的优势,但防火墙同时也担负了实现网络连通的责任。
一旦防火墙出现故障,不但安全性消失,而且会导致用户网络中断。这不是又一次违背了“安全产品失效应该仅仅导致安全功能的丧失”的原则吗?
有人会提出,你主张在路由器上做NAT/PAT,那如果路由器发生故障,不是一样会导致网络中断吗?
呵呵,那就对了!路由器都坏了,网络当然要断了,这跟它做不做NAT/PAT又有什么关系呢!
结论:很多厂商在NAT/PAT上狠下功夫,把简单的SNAT/SPAT/DNAT/DPAT发展成了Policy NAT/PAT,并以此作为产品的一大卖点。建议用户保持清醒的头脑,权衡利弊,作出正确的选择。
误区之五:用防火墙来防病毒
防火墙究竟能不能防病毒?如果不能,那为什么那么多防火墙都提供防病毒功能呢?
如果能,那为什么还有那么多防病毒网关产品呢?我到底该用哪个好呢?
从理论上说,防火墙当然可以防病毒(当然这里说的是通过网络传播的病毒)。道理很简单,防火墙是位于网络通路上的一道关卡,对于一切经过它的数据包,它都可以过滤出它关心的东西。
但过滤是过滤,对不同的内容,过滤的方法可是大相径庭。
防火墙最基本的过滤功能是过滤五要素:源地址、目标地址、协议类型、源端口、目标端口。防火墙在过滤这五样东西时,可以说是手到擒来。为什么?因为这五样东西是包含在同一个数据包里,防火墙每收到一个数据包,就把这五样东西检查一遍,合格就放行,不合格就丢弃。(有人可能会说,防火墙每秒钟收到成千上万个数据包,它一个一个检查得过来吗?是不是数据包越多它的检查效率就越低呢?这问题问得好,不过不属于今天的讨论范围,以后有机会我会专门写一篇来介绍。)那过滤病毒呢?很抱歉,过滤病毒时,防火墙的表现就非常不如人意了,因为病毒是隐藏在应用层里,应用层的数据在网络上传输时,往往都被切割成一个一个数据包传输。这样一来,防火墙就惨了,它不能像过滤五要素那样,收到一个过滤一个,然后立即决定是转发还是抛弃;而是必须把从头到尾收到的所有包重新拼装起来,还原出整个应用层的内容,才能过滤出病毒。
因此,从理论上说,防火墙把数据包拼装起来后,可以根据特征码过滤出病毒;但从实践上说,拼装、还原的动作,会消耗防火墙的大量资源,也会让用户感觉防火墙的防病毒功能效率很低。
那么,如果选用专门的防病毒网关产品,情况会不会好些呢?据说有一些防病毒网关效率还是比较高的,因为它们采用了一种称为LPI的技术,大致原理是:每收到一个数据包,都把其应用层内容复制一份,保留下来,然后把数据包转发出去;但是,一旦收到该会话的最后一个数据包,就先扣留下来,把其应用层内容与先前的拷贝拼装、还原,过滤其中是否有病毒,如果没有,就转发;如果有,就将该包丢弃,这样,虽然用户已经收到了先前那些包,但由于最后一个包未收到,无法还原,因此即使病毒包含在已收到的包中,也不会对用户构成危害。
或许读者会问,那防火墙有没有采用LPI技术的呢?这个问题恐怕就要去问防火墙厂商啦!
结论:建议采用专门的防病毒网关产品来过滤病毒,当然前提是经过认真测试。
误区之六:允许DMZ区访问内部网
DMZ区是为了保护内部网而设置的。当用户有需要对外开放的服务器时,就应该设立DMZ区,把这些服务器放进去,然后在防火墙上开放规则,允许外网访问服务器。
但在实践中,有相当多的用户却打开了允许服务器访问内网的规则。这是万万使不得的。
因为服务器在对外提供服务时,很容易遭到攻击。假如服务器上存在一个漏洞被黑客控制,并获取超级用户权限,那黑客就可以远程登录到这台服务器上,并以该服务器管理员的身份,进一步在服务器周围查找攻击目标。如果防火墙打开了DMZ到内部网的通道,那黑客就可以堂而皇之地闯进内部网,内部网危乎殆哉!
有些用户打开DMZ到内部网的通道,是因为DMZ的WEB服务器是动态网页,在后台有一台Database Server作支撑,而该服务器放在了内网。当外网用户访问WEB Server时,WEB Server将向数据库请求资源,再将结果显示给用户。这种情况下,往往在防火墙上添加允许WEB Server访问Database Server的规则。这样做从业务角度讲是正常的,但从安全角度讲确实存在危险。建议改变Database Server的工作模式,在WEB Server与Database Server之间建立长连接,然后就可以关闭DMZ区到内部网的访问通道了。
结论:DMZ区的意义就是把对外提供服务的资源从内部网里剥离出去,使内部网变得更安全。因此,请勿打开DMZ到内部网的通道,以防黑客的“跳板攻击”。
一口气写完了这六大误区,其实防火墙可圈可点的地方还有很多,但我的时间却不是很多:)等下次吧!也希望能听到不同的意见,把“真理愈辩愈明”这句名言发扬光大……