吞吐量的定義是:在不丟包的前提下,防火墻的最大轉(zhuǎn)發(fā)速率。
我們可以這樣理解這個(gè)定義:如果防火墻工作在某一個(gè)轉(zhuǎn)發(fā)速率時(shí)可以保證不丟包,而一旦超過(guò)這個(gè)速率,就會(huì)丟包,那么這個(gè)速率就是該防火墻的吞吐量。
同一臺(tái)防火墻,在處理不同長(zhǎng)度的數(shù)據(jù)包時(shí),吞吐量可能是不同的。因此,在標(biāo)明防火墻吞吐量時(shí),必須要同時(shí)指明轉(zhuǎn)發(fā)的是多大長(zhǎng)度的數(shù)據(jù)包。
一般來(lái)說(shuō),防火墻轉(zhuǎn)發(fā)數(shù)據(jù)包的長(zhǎng)度越大,吞吐量就越高,反之越低。最小的包長(zhǎng)度為64字節(jié),這樣的包稱為小包。防火墻在處理大包時(shí)的表現(xiàn)可謂難分伯仲,但在處理小包時(shí)就千差萬(wàn)別了。因此,要想比較不同防火墻的吞吐量,用大包比不出來(lái),需要用小包比,所以用戶在選購(gòu)防火墻時(shí),往往格外關(guān)心防火墻的小包吞吐量。
但問(wèn)題是,一款小包吞吐量高的防火墻對(duì)用戶來(lái)說(shuō)究竟有多大意義呢?
我們先來(lái)看一看64字節(jié)小包的結(jié)構(gòu)。
從圖中可以看出,64字節(jié)的小包里,留給TCP的負(fù)載最多只有6個(gè)字節(jié),這么小的負(fù)載一般來(lái)說(shuō)是三次握手和四次結(jié)束包。在通常的網(wǎng)絡(luò)環(huán)境中,網(wǎng)絡(luò)流量的絕大部分是連接過(guò)程中傳輸?shù)臄?shù)據(jù)包,握手包和結(jié)束包只在建立和釋放連接時(shí)才會(huì)出現(xiàn),在流量中占較少比例。對(duì)于UDP,由于是不可靠的傳輸協(xié)議,基于它的應(yīng)用并不多,負(fù)載為18字節(jié)的小包更是不常見。因此,一臺(tái)小包吞吐量指標(biāo)很高的防火墻部署在這樣的環(huán)境中,實(shí)際意義并不大。
當(dāng)網(wǎng)絡(luò)中發(fā)生SYN Flooding、UDP Flood等DDOS攻擊時(shí),握手包的數(shù)量會(huì)在瞬間急劇增加,嚴(yán)重時(shí)可以造成網(wǎng)絡(luò)癱瘓。此時(shí),防火墻的任務(wù)恰恰是拒絕轉(zhuǎn)發(fā)那些64字節(jié)的攻擊包,保護(hù)它身后的網(wǎng)絡(luò)、主機(jī)免遭DDOS攻擊,但如果防火墻抗DDOS功能較弱,未能有效阻斷攻擊小包,而同時(shí)它又是一臺(tái)小包吞吐量很高的防火墻,那力挽狂瀾的英雄可就要蛻變成助紂為虐的幫兇嘍!
其實(shí),小包吞吐量原本是用來(lái)評(píng)價(jià)路由器、交換機(jī)等網(wǎng)絡(luò)設(shè)備轉(zhuǎn)發(fā)能力的一個(gè)指標(biāo),防火墻作為安全設(shè)備,固然要具有良好的性能,但我們應(yīng)該更多著眼其安全保障能力。您說(shuō)是不是呢?
結(jié)論:小包吞吐量是實(shí)驗(yàn)室里的指標(biāo),并不能代表真實(shí)的網(wǎng)絡(luò)環(huán)境,更不能反映出用戶的實(shí)際需求。在絕大多數(shù)用戶的網(wǎng)絡(luò)里,絕大多數(shù)的應(yīng)用都是通過(guò)大包傳輸?shù)?,因此這些用戶在選購(gòu)防火墻時(shí),不必過(guò)分關(guān)注小包吞吐量,而只需關(guān)心大包吞吐量就可以了。
誤區(qū)之二:選購(gòu)防火墻時(shí)以最大并發(fā)連接數(shù)為重要依據(jù)
最大并發(fā)連接數(shù)的定義是:防火墻在同一時(shí)刻可以處理的最大會(huì)話數(shù)。這個(gè)會(huì)話數(shù),主要是指TCP會(huì)話和UDP會(huì)話,但由于UDP是一種不面向連接的協(xié)議,所以一般來(lái)說(shuō)最大并發(fā)連接數(shù)都是指TCP連接。
目前市面上的防火墻,所標(biāo)稱的最大并發(fā)連接數(shù)動(dòng)輒數(shù)萬(wàn)、幾十萬(wàn)甚至上百萬(wàn),不明就里者看后往往驚呼:“這防火墻!好厲害呀!”
然而,用戶真的需要那么大的并發(fā)連接嗎?
假設(shè)用戶的單位有400臺(tái)電腦在同時(shí)上網(wǎng),每臺(tái)電腦同時(shí)運(yùn)行著50個(gè)基于TCP協(xié)議的應(yīng)用程序,那么防火墻有20000個(gè)并發(fā)連接數(shù)就夠了。但一般來(lái)說(shuō),很少有人會(huì)在電腦上同時(shí)運(yùn)行幾十個(gè)應(yīng)用程序,所以,我們假設(shè)每臺(tái)電腦同時(shí)運(yùn)行著10個(gè)基于TCP協(xié)議的應(yīng)用程序,那么,20000個(gè)并發(fā)連接就意味著可以支持2000臺(tái)電腦同時(shí)上網(wǎng)。擁有2000臺(tái)電腦的單位,已經(jīng)規(guī)模很大了(比如我們Novell,呵呵),筆者很難想象出有必要使用最大并發(fā)連接數(shù)為200萬(wàn)的防火墻的單位是什么樣的陣勢(shì)。
讀者或許會(huì)問(wèn),每臺(tái)電腦同時(shí)運(yùn)行著10個(gè)基于TCP協(xié)議的應(yīng)用程序是不是少了點(diǎn)呢?HTTP協(xié)議不就是基于TCP的嗎?很多人可是經(jīng)常一口氣打開幾十個(gè)瀏覽器窗口?。?BR>
是的,很多人確實(shí)習(xí)慣一下子打開很多瀏覽器窗口—-比如在瀏覽新聞網(wǎng)站的時(shí)候—-但是,這其實(shí)并不會(huì)影響到對(duì)防火墻最大并發(fā)連接數(shù)的要求。因?yàn)殡m然你每打開一個(gè)瀏覽器窗口,就會(huì)產(chǎn)生一個(gè)TCP連接,但隨著你所要瀏覽的內(nèi)容從網(wǎng)站傳回到本地,這條TCP連接就會(huì)自行結(jié)束,而無(wú)須手工干預(yù)。換言之,雖然你的電腦上同時(shí)開啟了20個(gè)窗口,但這并不等于你的電腦保持著20條TCP連接。如果把防火墻比作一個(gè)酒店,最大并發(fā)連接數(shù)比作它的客房數(shù)量,那么像HTTP這樣的短促會(huì)話就像一個(gè)個(gè)只就餐,不住宿的過(guò)客一樣,來(lái)也匆匆,去也匆匆,而像MSN這樣的長(zhǎng)期會(huì)話就好比是需要入住的客人,他們才是占據(jù)酒店客房資源的主要力量。
結(jié)論:用戶在選購(gòu)防火墻時(shí),要根據(jù)自己的實(shí)際情況,估算最大并發(fā)連接數(shù)的數(shù)目,不要盲目追高,以免造成無(wú)謂的投資浪費(fèi)。
誤區(qū)之三:把防火墻當(dāng)成路由器用
防火墻的工作可以用三步來(lái)概述:接收數(shù)據(jù)、過(guò)濾數(shù)據(jù)、發(fā)送數(shù)據(jù)。其中第一步和第三步統(tǒng)稱為轉(zhuǎn)發(fā)數(shù)據(jù)。防火墻在轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),可以以路由器的方式(路由模式),也可以以交換機(jī)的方式(交換模式),還可以用路由器加交換機(jī)的方式(混合模式)。
許多用戶喜歡讓防火墻在過(guò)濾數(shù)據(jù)的同時(shí)還扮演路由器的角色,為此,他們?cè)谶x購(gòu)時(shí)會(huì)向銷售商提出一連串的問(wèn)題:“你的防火墻支持源地址路由嗎?支持策略路由嗎?支持動(dòng)態(tài)路由嗎?支持多播路由嗎?”銷售商們的回答也不含糊:“支持,支持,都支持!”聽那口氣,大有一副“欲與Router試比高”的氣勢(shì)。
然而,防火墻充當(dāng)路由器到底有什么好處呢?其實(shí)好處無(wú)非是給用戶省下了一筆購(gòu)買路由器的錢。但是,任何利益都是要靠付出代價(jià)才能獲得。這代價(jià)就是:第一,防火墻畢竟不能和專業(yè)的路由器相提并論,充其量也就是個(gè)業(yè)余水平的路由器;第二,也是最關(guān)鍵的,就是防火墻一旦發(fā)生故障,會(huì)給用戶帶來(lái)很大的麻煩。為什么這么說(shuō)呢?如圖所示:
從圖中可以看出,路由模式下,由于A的Gateway指向防火墻,所以當(dāng)A要和B通信時(shí),他會(huì)在以太網(wǎng)幀頭里填上防火墻的MAC地址,目的是請(qǐng)求防火墻幫他確定B的位置;防火墻收到后,找到了B,就會(huì)修改幀頭,把目標(biāo)MAC地址換成B的,把源MAC地址換成自己的,然后轉(zhuǎn)交給B。一旦防火墻發(fā)生故障,A就失去了Gateway,和B的通信就無(wú)法實(shí)現(xiàn),當(dāng)然就更不要說(shuō)過(guò)濾了。
交換模式則不存在這個(gè)問(wèn)題。A和B之間不需要Gateway中轉(zhuǎn),防火墻在他們中間僅僅起到過(guò)濾數(shù)據(jù)的作用,如果防火墻出現(xiàn)故障,A、B之間的通信照常進(jìn)行,只不過(guò)不再接受過(guò)濾了。
由此可見,工作在交換模式的防火墻出現(xiàn)故障后僅僅導(dǎo)致安全功能的失效,工作在路由模式的防火墻出現(xiàn)故障后,不僅導(dǎo)致安全功能的失效,還會(huì)導(dǎo)致網(wǎng)絡(luò)中斷。二者相比,孰優(yōu)孰劣,不是一目了然了嗎?
結(jié)論:安全產(chǎn)品,顧名思義就是為了保障安全。用戶在部署安全產(chǎn)品時(shí),必須充分考慮該產(chǎn)品由于某種原因失效時(shí),對(duì)網(wǎng)絡(luò)、業(yè)務(wù)會(huì)產(chǎn)生多大的影響。在設(shè)計(jì)部署方案時(shí),一定要牢牢把握“安全產(chǎn)品失效應(yīng)該僅僅導(dǎo)致安全功能的喪失”這一根本原則。
誤區(qū)之四:熱衷于使用防火墻的NAT/PAT功能
NAT/PAT技術(shù)推出的初衷,是為了解決IPv4地址資源短缺的問(wèn)題。因此,NAT/PAT本來(lái)是路由器的功能。然而曾幾何時(shí),該功能被披上了安全的外衣,逐漸移植到了防火墻上,現(xiàn)在已經(jīng)成為防火墻的標(biāo)準(zhǔn)功能了。
NAT/PAT的安全性,據(jù)說(shuō)就是可以隱藏內(nèi)部真實(shí)的網(wǎng)絡(luò)結(jié)構(gòu),讓黑客沒有可乘之機(jī)。我們承認(rèn)這種說(shuō)法有一定道理,但我們也認(rèn)為,NAT/PAT的根本目的是為了解決網(wǎng)絡(luò)連通性,安全性只是它在執(zhí)行過(guò)程中自然產(chǎn)生的,因此,僅僅因?yàn)樵摷夹g(shù)具有一定的安全性,就把它移植到防火墻上并作為主要功能執(zhí)行是不合適的,甚至有可能是有害的。試想,在防火墻上做NAT/PAT,雖然利用了其安全性的優(yōu)勢(shì),但防火墻同時(shí)也擔(dān)負(fù)了實(shí)現(xiàn)網(wǎng)絡(luò)連通的責(zé)任。
一旦防火墻出現(xiàn)故障,不但安全性消失,而且會(huì)導(dǎo)致用戶網(wǎng)絡(luò)中斷。這不是又一次違背了“安全產(chǎn)品失效應(yīng)該僅僅導(dǎo)致安全功能的喪失”的原則嗎?
有人會(huì)提出,你主張?jiān)诼酚善魃献鯪AT/PAT,那如果路由器發(fā)生故障,不是一樣會(huì)導(dǎo)致網(wǎng)絡(luò)中斷嗎?
呵呵,那就對(duì)了!路由器都?jí)牧耍W(wǎng)絡(luò)當(dāng)然要斷了,這跟它做不做NAT/PAT又有什么關(guān)系呢!
結(jié)論:很多廠商在NAT/PAT上狠下功夫,把簡(jiǎn)單的SNAT/SPAT/DNAT/DPAT發(fā)展成了Policy NAT/PAT,并以此作為產(chǎn)品的一大賣點(diǎn)。建議用戶保持清醒的頭腦,權(quán)衡利弊,作出正確的選擇。
誤區(qū)之五:用防火墻來(lái)防病毒
防火墻究竟能不能防病毒?如果不能,那為什么那么多防火墻都提供防病毒功能呢?
如果能,那為什么還有那么多防病毒網(wǎng)關(guān)產(chǎn)品呢?我到底該用哪個(gè)好呢?
從理論上說(shuō),防火墻當(dāng)然可以防病毒(當(dāng)然這里說(shuō)的是通過(guò)網(wǎng)絡(luò)傳播的病毒)。道理很簡(jiǎn)單,防火墻是位于網(wǎng)絡(luò)通路上的一道關(guān)卡,對(duì)于一切經(jīng)過(guò)它的數(shù)據(jù)包,它都可以過(guò)濾出它關(guān)心的東西。
但過(guò)濾是過(guò)濾,對(duì)不同的內(nèi)容,過(guò)濾的方法可是大相徑庭。
防火墻最基本的過(guò)濾功能是過(guò)濾五要素:源地址、目標(biāo)地址、協(xié)議類型、源端口、目標(biāo)端口。防火墻在過(guò)濾這五樣?xùn)|西時(shí),可以說(shuō)是手到擒來(lái)。為什么?因?yàn)檫@五樣?xùn)|西是包含在同一個(gè)數(shù)據(jù)包里,防火墻每收到一個(gè)數(shù)據(jù)包,就把這五樣?xùn)|西檢查一遍,合格就放行,不合格就丟棄。(有人可能會(huì)說(shuō),防火墻每秒鐘收到成千上萬(wàn)個(gè)數(shù)據(jù)包,它一個(gè)一個(gè)檢查得過(guò)來(lái)嗎?是不是數(shù)據(jù)包越多它的檢查效率就越低呢?這問(wèn)題問(wèn)得好,不過(guò)不屬于今天的討論范圍,以后有機(jī)會(huì)我會(huì)專門寫一篇來(lái)介紹。)那過(guò)濾病毒呢?很抱歉,過(guò)濾病毒時(shí),防火墻的表現(xiàn)就非常不如人意了,因?yàn)椴《臼请[藏在應(yīng)用層里,應(yīng)用層的數(shù)據(jù)在網(wǎng)絡(luò)上傳輸時(shí),往往都被切割成一個(gè)一個(gè)數(shù)據(jù)包傳輸。這樣一來(lái),防火墻就慘了,它不能像過(guò)濾五要素那樣,收到一個(gè)過(guò)濾一個(gè),然后立即決定是轉(zhuǎn)發(fā)還是拋棄;而是必須把從頭到尾收到的所有包重新拼裝起來(lái),還原出整個(gè)應(yīng)用層的內(nèi)容,才能過(guò)濾出病毒。
因此,從理論上說(shuō),防火墻把數(shù)據(jù)包拼裝起來(lái)后,可以根據(jù)特征碼過(guò)濾出病毒;但從實(shí)踐上說(shuō),拼裝、還原的動(dòng)作,會(huì)消耗防火墻的大量資源,也會(huì)讓用戶感覺防火墻的防病毒功能效率很低。
那么,如果選用專門的防病毒網(wǎng)關(guān)產(chǎn)品,情況會(huì)不會(huì)好些呢?據(jù)說(shuō)有一些防病毒網(wǎng)關(guān)效率還是比較高的,因?yàn)樗鼈儾捎昧艘环N稱為L(zhǎng)PI的技術(shù),大致原理是:每收到一個(gè)數(shù)據(jù)包,都把其應(yīng)用層內(nèi)容復(fù)制一份,保留下來(lái),然后把數(shù)據(jù)包轉(zhuǎn)發(fā)出去;但是,一旦收到該會(huì)話的最后一個(gè)數(shù)據(jù)包,就先扣留下來(lái),把其應(yīng)用層內(nèi)容與先前的拷貝拼裝、還原,過(guò)濾其中是否有病毒,如果沒有,就轉(zhuǎn)發(fā);如果有,就將該包丟棄,這樣,雖然用戶已經(jīng)收到了先前那些包,但由于最后一個(gè)包未收到,無(wú)法還原,因此即使病毒包含在已收到的包中,也不會(huì)對(duì)用戶構(gòu)成危害。
或許讀者會(huì)問(wèn),那防火墻有沒有采用LPI技術(shù)的呢?這個(gè)問(wèn)題恐怕就要去問(wèn)防火墻廠商啦!
結(jié)論:建議采用專門的防病毒網(wǎng)關(guān)產(chǎn)品來(lái)過(guò)濾病毒,當(dāng)然前提是經(jīng)過(guò)認(rèn)真測(cè)試。
誤區(qū)之六:允許DMZ區(qū)訪問(wèn)內(nèi)部網(wǎng)
DMZ區(qū)是為了保護(hù)內(nèi)部網(wǎng)而設(shè)置的。當(dāng)用戶有需要對(duì)外開放的服務(wù)器時(shí),就應(yīng)該設(shè)立DMZ區(qū),把這些服務(wù)器放進(jìn)去,然后在防火墻上開放規(guī)則,允許外網(wǎng)訪問(wèn)服務(wù)器。
但在實(shí)踐中,有相當(dāng)多的用戶卻打開了允許服務(wù)器訪問(wèn)內(nèi)網(wǎng)的規(guī)則。這是萬(wàn)萬(wàn)使不得的。
因?yàn)榉?wù)器在對(duì)外提供服務(wù)時(shí),很容易遭到攻擊。假如服務(wù)器上存在一個(gè)漏洞被黑客控制,并獲取超級(jí)用戶權(quán)限,那黑客就可以遠(yuǎn)程登錄到這臺(tái)服務(wù)器上,并以該服務(wù)器管理員的身份,進(jìn)一步在服務(wù)器周圍查找攻擊目標(biāo)。如果防火墻打開了DMZ到內(nèi)部網(wǎng)的通道,那黑客就可以堂而皇之地闖進(jìn)內(nèi)部網(wǎng),內(nèi)部網(wǎng)危乎殆哉!
有些用戶打開DMZ到內(nèi)部網(wǎng)的通道,是因?yàn)镈MZ的WEB服務(wù)器是動(dòng)態(tài)網(wǎng)頁(yè),在后臺(tái)有一臺(tái)Database Server作支撐,而該服務(wù)器放在了內(nèi)網(wǎng)。當(dāng)外網(wǎng)用戶訪問(wèn)WEB Server時(shí),WEB Server將向數(shù)據(jù)庫(kù)請(qǐng)求資源,再將結(jié)果顯示給用戶。這種情況下,往往在防火墻上添加允許WEB Server訪問(wèn)Database Server的規(guī)則。這樣做從業(yè)務(wù)角度講是正常的,但從安全角度講確實(shí)存在危險(xiǎn)。建議改變Database Server的工作模式,在WEB Server與Database Server之間建立長(zhǎng)連接,然后就可以關(guān)閉DMZ區(qū)到內(nèi)部網(wǎng)的訪問(wèn)通道了。
結(jié)論:DMZ區(qū)的意義就是把對(duì)外提供服務(wù)的資源從內(nèi)部網(wǎng)里剝離出去,使內(nèi)部網(wǎng)變得更安全。因此,請(qǐng)勿打開DMZ到內(nèi)部網(wǎng)的通道,以防黑客的“跳板攻擊”。
一口氣寫完了這六大誤區(qū),其實(shí)防火墻可圈可點(diǎn)的地方還有很多,但我的時(shí)間卻不是很多:)等下次吧!也希望能聽到不同的意見,把“真理愈辯愈明”這句名言發(fā)揚(yáng)光大……