防火墻
目錄
1.什么是防火墻
防火墻指的是一個(gè)由軟件和硬件設(shè)備組合而成、在內(nèi)部網(wǎng)和外部網(wǎng)之間、專用網(wǎng)與公共網(wǎng)之間的界面上構(gòu)造的保護(hù)屏障.是一種獲取安全性方法的形象說法,它是一種計(jì)算機(jī)硬件和軟件的結(jié)合,使Internet與Intranet之間建立起一個(gè)安全網(wǎng)關(guān)(Security Gateway),從而保護(hù)內(nèi)部網(wǎng)免受非法用戶的侵入,防火墻主要由服務(wù)訪問規(guī)則、驗(yàn)證工具、包過濾和應(yīng)用網(wǎng)關(guān)4個(gè)部分組成,
防火墻就是一個(gè)位于計(jì)算機(jī)和它所連接的網(wǎng)絡(luò)之間的軟件或硬件(其中硬件防火墻用的較少,例如國防部以及大型機(jī)房等地才用,因?yàn)樗鼉r(jià)格昂貴)。該計(jì)算機(jī)流入流出的所有網(wǎng)絡(luò)通信均要經(jīng)過此防火墻。
防火墻的英文名為“FireWall”,它是目前一種最重要的網(wǎng)絡(luò)防護(hù)設(shè)備。從專業(yè)角度講,防火墻是位于兩個(gè)(或多個(gè))網(wǎng)絡(luò)間,實(shí)施網(wǎng)絡(luò)之間訪問控制的一組組件集合。
防火墻在網(wǎng)絡(luò)中經(jīng)常是以下圖所示的兩種圖標(biāo)出現(xiàn)的。左邊那個(gè)圖標(biāo)非常形象,真正像一堵墻一樣。而右邊那個(gè)圖標(biāo)則是從防火墻的過濾機(jī)制來形象化的,在圖標(biāo)中有一個(gè)二極管圖標(biāo)。而二極管我們知道,它具有單向?qū)щ娦裕@樣也就形象地說明了防火墻具有單向?qū)ㄐ?。這看起來與現(xiàn)在防火墻過濾機(jī)制有些矛盾,不過它卻完全體現(xiàn)了防火墻初期的設(shè)計(jì)思想,同時(shí)也在相當(dāng)大程度上體現(xiàn)了當(dāng)前防火墻的過濾機(jī)制。因?yàn)榉阑鹱畛醯脑O(shè)計(jì)思想是對內(nèi)部網(wǎng)絡(luò)總是信任的,而對外部網(wǎng)絡(luò)卻總是不信任的,所以最初的防火墻是只對外部進(jìn)來的通信進(jìn)行過濾,而對內(nèi)部網(wǎng)絡(luò)用戶發(fā)出的通信不作限制。當(dāng)然目前的防火墻在過濾機(jī)制上有所改變,不僅對外部網(wǎng)絡(luò)發(fā)出的通信連接要進(jìn)行過濾,對內(nèi)部網(wǎng)絡(luò)用戶發(fā)出的部分連接請求和數(shù)據(jù)包同樣需要過濾,但防火墻仍只對符合安全策略的通信通過,也可以說具有“單向?qū)ā毙浴?
防火墻的本義是指古代構(gòu)筑和使用木制結(jié)構(gòu)房屋的時(shí)候,為防止火災(zāi)的發(fā)生和蔓延,人們將堅(jiān)固的石塊堆砌在房屋周圍作為屏障,這種防護(hù)構(gòu)筑物就被稱之為“防火墻”。其實(shí)與防火墻一起起作用的就是“門”。如果沒有門,各房間的人如何溝通呢,這些房間的人又如何進(jìn)去呢?當(dāng)火災(zāi)發(fā)生時(shí),這些人又如何逃離現(xiàn)場呢?這個(gè)門就相當(dāng)于我們這里所講的防火墻的“安全策略”,所以在此我們所說的防火墻實(shí)際并不是一堵實(shí)心墻,而是帶有一些小孔的墻。這些小孔就是用來留給那些允許進(jìn)行的通信,在這些小孔中安裝了過濾機(jī)制,也就是上面所介紹的“單向?qū)ㄐ浴薄?
2.防火墻的概念
當(dāng)然,既然打算由淺入深的來了解,就要先看看防火墻的概念了。防火墻是汽車中一個(gè)部件的名稱。在汽車中,利用防火墻把乘客和引擎隔開,以便汽車引擎一旦著火,防火墻不但能保護(hù)乘客安全,而同時(shí)還能讓司機(jī)繼續(xù)控制引擎。再電腦術(shù)語中,當(dāng)然就不是這個(gè)意思了,我們可以類比來理解,在網(wǎng)絡(luò)中,所謂“防火墻”,是指一種將內(nèi)部網(wǎng)和公眾訪問網(wǎng)(如Internet)分開的方法,它實(shí)際上是一種隔離技術(shù)。防火墻是在兩個(gè)網(wǎng)絡(luò)通訊時(shí)執(zhí)行的一種訪問控制尺度,它能允許你 “同意”的人和數(shù)據(jù)進(jìn)入你的網(wǎng)絡(luò),同時(shí)將你“不同意”的人和數(shù)據(jù)拒之門外,最大限度地阻止網(wǎng)絡(luò)中的黑客來訪問你的網(wǎng)絡(luò)。換句話說,如果不通過防火墻,公司內(nèi)部的人就無法訪問Internet,Internet上的人也無法和公司內(nèi)部的人進(jìn)行通信。
3.防火墻的作用
防火墻具有很好的保護(hù)作用。入侵者必須首先穿越防火墻的安全防線,才能接觸目標(biāo)計(jì)算機(jī)。你可以將防火墻配置成許多不同保護(hù)級別。高級別的保護(hù)可能會禁止一些服務(wù),如視頻流等,但至少這是你自己的保護(hù)選擇。
4.防火墻的功能
防火墻對流經(jīng)它的網(wǎng)絡(luò)通信進(jìn)行掃描,這樣能夠過濾掉一些攻擊,以免其在目標(biāo)計(jì)算機(jī)上被執(zhí)行。防火墻還可以關(guān)閉不使用的端口。而且它還能禁止特定端口的流出通信,封鎖特洛伊木馬。最后,它可以禁止來自特殊站點(diǎn)的訪問,從而防止來自不明入侵者的所有通信。
防火墻是網(wǎng)絡(luò)安全的屏障:
一個(gè)防火墻(作為阻塞點(diǎn)、控制點(diǎn))能極大地提高一個(gè)內(nèi)部網(wǎng)絡(luò)的安全性,并通過過濾不安全的服務(wù)而降低風(fēng)險(xiǎn)。由于只有經(jīng)過精心選擇的應(yīng)用協(xié)議才能通過防火墻,所以網(wǎng)絡(luò)環(huán)境變得更安全。如防火墻可以禁止諸如眾所周知的不安全的NFS協(xié)議進(jìn)出受保護(hù)網(wǎng)絡(luò),這樣外部的攻擊者就不可能利用這些脆弱的協(xié)議來攻擊內(nèi)部網(wǎng)絡(luò)。防火墻同時(shí)可以保護(hù)網(wǎng)絡(luò)免受基于路由的攻擊,如IP選項(xiàng)中的源路由攻擊和ICMP重定向中的重定向路徑。防火墻應(yīng)該可以拒絕所有以上類型攻擊的報(bào)文并通知防火墻管理員。
防火墻可以強(qiáng)化網(wǎng)絡(luò)安全策略:
通過以防火墻為中心的安全方案配置,能將所有安全軟件(如口令、加密、身份認(rèn)證、審計(jì)等)配置在防火墻上。與將網(wǎng)絡(luò)安全問題分散到各個(gè)主機(jī)上相比,防火墻的集中安全管理更經(jīng)濟(jì)。例如在網(wǎng)絡(luò)訪問時(shí),一次一密口令系統(tǒng)和其它的身份認(rèn)證系統(tǒng)完全可以不必分散在各個(gè)主機(jī)上,而集中在防火墻一身上。
對網(wǎng)絡(luò)存取和訪問進(jìn)行監(jiān)控審計(jì):
如果所有的訪問都經(jīng)過防火墻,那么,防火墻就能記錄下這些訪問并作出日志記錄,同時(shí)也能提供網(wǎng)絡(luò)使用情況的統(tǒng)計(jì)數(shù)據(jù)。當(dāng)發(fā)生可疑動(dòng)作時(shí),防火墻能進(jìn)行適當(dāng)?shù)膱?bào)警,并提供網(wǎng)絡(luò)是否受到監(jiān)測和攻擊的詳細(xì)信息。另外,收集一個(gè)網(wǎng)絡(luò)的使用和誤用情況也是非常重要的。首先的理由是可以清楚防火墻是否能夠抵擋攻擊者的探測和攻擊,并且清楚防火墻的控制是否充足。而網(wǎng)絡(luò)使用統(tǒng)計(jì)對網(wǎng)絡(luò)需求分析和威脅分析等而言也是非常重要的。
防止內(nèi)部信息的外泄:
通過利用防火墻對內(nèi)部網(wǎng)絡(luò)的劃分,可實(shí)現(xiàn)內(nèi)部網(wǎng)重點(diǎn)網(wǎng)段的隔離,從而限制了局部重點(diǎn)或敏感網(wǎng)絡(luò)安全問題對全局網(wǎng)絡(luò)造成的影響。再者,隱私是內(nèi)部網(wǎng)絡(luò)非常關(guān)心的問題,一個(gè)內(nèi)部網(wǎng)絡(luò)中不引人注意的細(xì)節(jié)可能包含了有關(guān)安全的線索而引起外部攻擊者的興趣,甚至因此而暴漏了內(nèi)部網(wǎng)絡(luò)的某些安全漏洞。使用防火墻就可以隱蔽那些透漏內(nèi)部細(xì)節(jié)如Finger,DNS等服務(wù)。Finger顯示了主機(jī)的所有用戶的注冊名、真名,最后登錄時(shí)間和使用shell類型等。但是Finger顯示的信息非常容易被攻擊者所獲悉。攻擊者可以知道一個(gè)系統(tǒng)使用的頻繁程度,這個(gè)系統(tǒng)是否有用戶正在連線上網(wǎng),這個(gè)系統(tǒng)是否在被攻擊時(shí)引起注意等等。防火墻可以同樣阻塞有關(guān)內(nèi)部網(wǎng)絡(luò)中的DNS信息,這樣一臺主機(jī)的域名和IP地址就不會被外界所了解。
除了安全作用,防火墻還支持具有Internet服務(wù)特性的企業(yè)內(nèi)部網(wǎng)絡(luò)技術(shù)體系VPN(虛擬專用網(wǎng))。
5.防火墻的類型
防火墻有不同類型。一個(gè)防火墻可以是硬件自身的一部分,你可以將因特網(wǎng)連接和計(jì)算機(jī)都插入其中。防火墻也可以在一個(gè)獨(dú)立的機(jī)器上運(yùn)行,該機(jī)器作為它背后網(wǎng)絡(luò)中所有計(jì)算機(jī)的代理和防火墻。最后,直接連在因特網(wǎng)的機(jī)器可以使用個(gè)人防火墻。
6.防火墻的特征
我們通常所說的網(wǎng)絡(luò)防火墻是借鑒了古代真正用于防火的防火墻的喻義,它指的是隔離在本地網(wǎng)絡(luò)與外界網(wǎng)絡(luò)之間的一道防御系統(tǒng)。防火可以使企業(yè)內(nèi)部局域網(wǎng)(LAN)網(wǎng)絡(luò)與Internet之間或者與其他外部網(wǎng)絡(luò)互相隔離、限制網(wǎng)絡(luò)互訪用來保護(hù)內(nèi)部網(wǎng)絡(luò)。典型的防火墻具有以下三個(gè)方面的基本特性:
?。ㄒ唬﹥?nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)之間的所有網(wǎng)絡(luò)數(shù)據(jù)流都必須經(jīng)過防火墻
這是防火墻所處網(wǎng)絡(luò)位置特性,同時(shí)也是一個(gè)前提。因?yàn)橹挥挟?dāng)防火墻是內(nèi)、外部網(wǎng)絡(luò)之間通信的唯一通道,才可以全面、有效地保護(hù)企業(yè)網(wǎng)部網(wǎng)絡(luò)不受侵害。
根據(jù)美國國家安全局制定的《信息保障技術(shù)框架》,防火墻適用于用戶網(wǎng)絡(luò)系統(tǒng)的邊界,屬于用戶網(wǎng)絡(luò)邊界的安全保護(hù)設(shè)備。所謂網(wǎng)絡(luò)邊界即是采用不同安全策略的兩個(gè)網(wǎng)絡(luò)連接處,比如用戶網(wǎng)絡(luò)和互聯(lián)網(wǎng)之間連接、和其它業(yè)務(wù)往來單位的網(wǎng)絡(luò)連接、用戶內(nèi)部網(wǎng)絡(luò)不同部門之間的連接等。防火墻的目的就是在網(wǎng)絡(luò)連接之間建立一個(gè)安全控制點(diǎn),通過允許、拒絕或重新定向經(jīng)過防火墻的數(shù)據(jù)流,實(shí)現(xiàn)對進(jìn)、出內(nèi)部網(wǎng)絡(luò)的服務(wù)和訪問的審計(jì)和控制。
典型的防火墻體系網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示。從圖中可以看出,防火墻的一端連接企事業(yè)單位內(nèi)部的局域網(wǎng),而另一端則連接著互聯(lián)網(wǎng)。所有的內(nèi)、外部網(wǎng)絡(luò)之間的通信都要經(jīng)過防火墻。
?。ǘ┲挥蟹习踩呗缘臄?shù)據(jù)流才能通過防火墻
防火墻最基本的功能是確保網(wǎng)絡(luò)流量的合法性,并在此前提下將網(wǎng)絡(luò)的流量快速的從一條鏈路轉(zhuǎn)發(fā)到另外的鏈路上去。從最早的防火墻模型開始談起,原始的防火墻是一臺“雙穴主機(jī)”,即具備兩個(gè)網(wǎng)絡(luò)接口,同時(shí)擁有兩個(gè)網(wǎng)絡(luò)層地址。防火墻將網(wǎng)絡(luò)上的流量通過相應(yīng)的網(wǎng)絡(luò)接口接收上來,按照OSI協(xié)議棧的七層結(jié)構(gòu)順序上傳,在適當(dāng)?shù)膮f(xié)議層進(jìn)行訪問規(guī)則和安全審查,然后將符合通過條件的報(bào)文從相應(yīng)的網(wǎng)絡(luò)接口送出,而對于那些不符合通過條件的報(bào)文則予以阻斷。因此,從這個(gè)角度上來說,防火墻是一個(gè)類似于橋接或路由器的、多端口的(網(wǎng)絡(luò)接口>=2)轉(zhuǎn)發(fā)設(shè)備,它跨接于多個(gè)分離的物理網(wǎng)段之間,并在報(bào)文轉(zhuǎn)發(fā)過程之中完成對報(bào)文的審查工作。如下圖:
(三)防火墻自身應(yīng)具有非常強(qiáng)的抗攻擊免疫力
這是防火墻之所以能擔(dān)當(dāng)企業(yè)內(nèi)部網(wǎng)絡(luò)安全防護(hù)重任的先決條件。防火墻處于網(wǎng)絡(luò)邊緣,它就像一個(gè)邊界衛(wèi)士一樣,每時(shí)每刻都要面對黑客的入侵,這樣就要求防火墻自身要具有非常強(qiáng)的抗擊入侵本領(lǐng)。它之所以具有這么強(qiáng)的本領(lǐng)防火墻操作系統(tǒng)本身是關(guān)鍵,只有自身具有完整信任關(guān)系的操作系統(tǒng)才可以談?wù)撓到y(tǒng)的安全性。其次就是防火墻自身具有非常低的服務(wù)功能,除了專門的防火墻嵌入系統(tǒng)外,再沒有其它應(yīng)用程序在防火墻上運(yùn)行。當(dāng)然這些安全性也只能說是相對的。
目前國內(nèi)的防火墻幾乎被國外的品牌占據(jù)了一半的市場,國外品牌的優(yōu)勢主要是在技術(shù)和知名度上比國內(nèi)產(chǎn)品高。而國內(nèi)防火墻廠商對國內(nèi)用戶了解更加透徹,價(jià)格上也更具有優(yōu)勢。防火墻產(chǎn)品中,國外主流廠商為思科(Cisco)、CheckPoint、NetScreen等,國內(nèi)主流廠商為東軟、天融信、網(wǎng)御神州、聯(lián)想、方正等,它們都提供不同級別的防火墻產(chǎn)品。
7.防火墻的硬件體系結(jié)構(gòu)
防火墻的硬件體系結(jié)構(gòu)曾經(jīng)歷過通用CPU架構(gòu)、ASIC架構(gòu)和網(wǎng)絡(luò)處理器架構(gòu),他們各自的特點(diǎn)分別如下:
- 通用CPU架構(gòu)
通用CPU架構(gòu)最常見的是基于Intel X86架構(gòu)的防火墻,在百兆防火墻中Intel X86架構(gòu)的硬件以其高靈活性和擴(kuò)展性一直受到防火墻廠商的青睞;由于采用了PCI總線接口,Intel X86架構(gòu)的硬件雖然理論上能達(dá)到2Gbps的吞吐量甚至更高,但是在實(shí)際應(yīng)用中,尤其是在小包情況下,遠(yuǎn)遠(yuǎn)達(dá)不到標(biāo)稱性能,通用CPU的處理能力也很有限。
國內(nèi)安全設(shè)備主要采用的就是基于X86的通用CPU架構(gòu)。
- ASIC架構(gòu)
ASIC(Application Specific Integrated Circuit,專用集成電路)技術(shù)是國外高端網(wǎng)絡(luò)設(shè)備幾年前廣泛采用的技術(shù)。由于采用了硬件轉(zhuǎn)發(fā)模式、多總線技術(shù)、數(shù)據(jù)層面與控制層面分離等技術(shù), ASIC架構(gòu)防火墻解決了帶寬容量和性能不足的問題,穩(wěn)定性也得到了很好的保證。
ASIC技術(shù)的性能優(yōu)勢主要體現(xiàn)在網(wǎng)絡(luò)層轉(zhuǎn)發(fā)上,而對于需要強(qiáng)大計(jì)算能力的應(yīng)用層數(shù)據(jù)的處理則不占優(yōu)勢,而且面對頻繁變異的應(yīng)用安全問題,其靈活性和擴(kuò)展性也難以滿足要求。
由于該技術(shù)有較高的技術(shù)和資金門檻,主要是國內(nèi)外知名廠商在采用,國外主要代表廠商是Netscreen,國內(nèi)主要代表廠商為天融信、網(wǎng)御神州。
- 網(wǎng)絡(luò)處理器架構(gòu)
由于網(wǎng)絡(luò)處理器所使用的微碼編寫有一定技術(shù)難度,難以實(shí)現(xiàn)產(chǎn)品的最優(yōu)性能,因此網(wǎng)絡(luò)處理器架構(gòu)的防火墻產(chǎn)品難以占有大量的市場份額。
8.防火墻的三種配置
防火墻配置有三種:Dual-homed方式、Screened- host方式和Screened-subnet方式。
Dual-homed方式最簡單。 Dual-homedGateway放置在兩個(gè)網(wǎng)絡(luò)之間,這個(gè)Dual-omedGateway又稱為bastionhost。這種結(jié)構(gòu)成本低,但是它有單點(diǎn)失敗的問題。這種結(jié)構(gòu)沒有增加網(wǎng)絡(luò)安全的自我防衛(wèi)能力,而它往往是受“黑客”攻擊的首選目標(biāo),它自己一旦被攻破,整個(gè)網(wǎng)絡(luò)也就暴露了。
Screened-host方式中的Screeningrouter為保護(hù) Bastionhost的安全建立了一道屏障。它將所有進(jìn)入的信息先送往Bastionhost,并且只接受來自Bastionhost的數(shù)據(jù)作為出去的數(shù)據(jù)。這種結(jié)構(gòu)依賴Screeningrouter和Bastionhost,只要有一個(gè)失敗,整個(gè)網(wǎng)絡(luò)就暴露了。
Screened-subnet包含兩個(gè)Screeningrouter和兩個(gè) Bastionhost。在公共網(wǎng)絡(luò)和私有網(wǎng)絡(luò)之間構(gòu)成了一個(gè)隔離網(wǎng),稱之為”?;饏^(qū)”(DMZ,即 DemilitarizedZone),Bastionhost放置在”?;饏^(qū)”內(nèi)。這種結(jié)構(gòu)安全性好,只有當(dāng)兩個(gè)安全單元被破壞后,網(wǎng)絡(luò)才被暴露,但是成本也很昂貴。
9.防火墻的發(fā)展史
- 第一代防火墻
第一代防火墻技術(shù)幾乎與路由器同時(shí)出現(xiàn),采用了包過濾(Packet filter)技術(shù)。下圖表示了防火墻技術(shù)的簡單發(fā)展歷史。
- 第二、三代防火墻
1989年,貝爾實(shí)驗(yàn)室的Dave Presotto和Howard Trickey推出了第二代防火墻,即電路層防火墻,同時(shí)提出了第三代防火墻——應(yīng)用層防火墻(代理防火墻)的初步結(jié)構(gòu)。
- 第四代防火墻
1992年,USC信息科學(xué)院的BobBraden開發(fā)出了基于動(dòng)態(tài)包過濾(Dynamic packet filter)技術(shù)的第四代防火墻,后來演變?yōu)槟壳八f的狀態(tài)監(jiān)視(Stateful inspection)技術(shù)。1994年,以色列的CheckPoint公司開發(fā)出了第一個(gè)采用這種技術(shù)的商業(yè)化的產(chǎn)品。
- 第五代防火墻
1998年,NAI公司推出了一種自適應(yīng)代理(Adaptive proxy)技術(shù),并在其產(chǎn)品Gauntlet Firewall for NT中得以實(shí)現(xiàn),給代理類型的防火墻賦予了全新的意義,可以稱之為第五代防火墻。
- 一體化安全網(wǎng)關(guān)UTM
隨著萬兆UTM的出現(xiàn),UTM代替防火墻的趨勢不可避免。在國際上,飛塔公司高性能的UTM占據(jù)了一定的市場份額,國內(nèi),啟明星辰的高性能UTM則一直領(lǐng)跑國內(nèi)市場。
10.防火墻工作原理簡介
- 防火墻就是一種過濾塞(目前你這么理解不算錯(cuò)),你可以讓你喜歡的東西通過這個(gè)塞子,別的玩意都統(tǒng)統(tǒng)過濾掉。在網(wǎng)絡(luò)的世界里,要由防火墻過濾的就是承載通信數(shù)據(jù)的通信包。
天下的防火墻至少都會說兩個(gè)詞:Yes或者No。直接說就是接受或者拒絕。最簡單的防火墻是以太網(wǎng)橋。但幾乎沒有人會認(rèn)為這種原始防火墻能管多大用。大多數(shù)防火墻采用的技術(shù)和標(biāo)準(zhǔn)可謂五花八門。這些防火墻的形式多種多樣:有的取代系統(tǒng)上已經(jīng)裝備的 TCP/IP協(xié)議棧;有的在已有的協(xié)議棧上建立自己的軟件模塊;有的干脆就是獨(dú)立的
一套操作系統(tǒng)。還有一些應(yīng)用型的防火墻只對特定類型的網(wǎng)絡(luò)連接提供保護(hù)(比如SMTP或者HTTP協(xié)議等)。還有一些基于硬件的防火墻產(chǎn)品其實(shí)應(yīng)該歸入安全路由器一類。以上的產(chǎn)品都可以叫做防火墻,因?yàn)樗麄兊墓ぷ鞣绞蕉际且粯拥模悍治龀鋈敕阑饓Φ臄?shù)據(jù)包,決定放行還是把他們?nèi)拥揭贿叀?
所有的防火墻都具有IP地址過濾功能。這項(xiàng)任務(wù)要檢查IP包頭,根據(jù)其IP源地址和目標(biāo)地址作出放行/丟棄決定。看看下面這張圖,兩個(gè)網(wǎng)段之間隔了一個(gè)防火墻,防火墻的一端有臺UNIX計(jì)算機(jī),另一邊的網(wǎng)段則擺了臺PC客戶機(jī)。
當(dāng)PC客戶機(jī)向UNIX計(jì)算機(jī)發(fā)起telnet請求時(shí),PC的telnet客戶程序就產(chǎn)生一個(gè)TCP包并
把它傳給本地的協(xié)議棧準(zhǔn)備發(fā)送。接下來,協(xié)議棧將這個(gè)TCP包“塞”到一個(gè)IP包里,然后通過PC機(jī)的TCP/IP棧所定義的路徑將它發(fā)送給UNIX計(jì)算機(jī)。在這個(gè)例子里,這個(gè)IP包必須經(jīng)過橫在PC和UNIX計(jì)算機(jī)中的防火墻才能到達(dá)UNIX計(jì)算機(jī)。
現(xiàn)在我們“命令”(用專業(yè)術(shù)語來說就是配制)防火墻把所有發(fā)給UNIX計(jì)算機(jī)的數(shù)據(jù)包都給拒了,完成這項(xiàng)工作以后,“心腸”比較好的防火墻還會通知客戶程序一聲呢!既然發(fā)向目標(biāo)的IP數(shù)據(jù)沒法轉(zhuǎn)發(fā),那么只有和UNIX計(jì)算機(jī)同在一個(gè)網(wǎng)段的用戶才能訪問UNIX計(jì)算機(jī)了。
還有一種情況,你可以命令防火墻專給那臺可憐的PC機(jī)找茬,別人的數(shù)據(jù)包都讓過就它不行。這正是防火墻最基本的功能:根據(jù)IP地址做轉(zhuǎn)發(fā)判斷。但要上了大場面這種小伎倆就玩不轉(zhuǎn)了,由于黑客們可以采用IP地址欺騙技術(shù),偽裝成合法地址的計(jì)算機(jī)就可以穿越信任這個(gè)地址的防火墻了。不過根
據(jù)地址的轉(zhuǎn)發(fā)決策機(jī)制還是最基本和必需的。另外要注意的一點(diǎn)是,不要用DNS主機(jī)名建立過濾表,對DNS的偽造比IP地址欺騙要容易多了。
- 服務(wù)器TCP/UDP 端口過濾
僅僅依靠地址進(jìn)行數(shù)據(jù)過濾在實(shí)際運(yùn)用中是不可行的,還有個(gè)原因就是目標(biāo)主機(jī)上往往運(yùn)行著多種通信服務(wù),比方說,我們不想讓用戶采用 telnet的方式連到系統(tǒng),但這絕不等于我們非得同時(shí)禁止他們使用SMTP/POP郵件服務(wù)器吧?所以說,在地址之外我們還要對服務(wù)器的TCP/ UDP端口進(jìn)行過濾。
比如,默認(rèn)的telnet服務(wù)連接端口號是23。假如我們不許PC客戶機(jī)建立對UNIX計(jì)算機(jī)(在這時(shí)我們當(dāng)它是服務(wù)器)的telnet連接,那么我們只需命令防火墻檢查發(fā)送目標(biāo)是UNIX服務(wù)器的數(shù)據(jù)包,把其中具有23目標(biāo)端口號的包過濾就行了。這樣,我們把IP地址和目標(biāo)服務(wù)器TCP/UDP端口結(jié)合起來不就可以作為過濾標(biāo)準(zhǔn)來實(shí)現(xiàn)相當(dāng)可靠的防火墻了嗎?不,沒這么簡單。
- 客戶機(jī)也有TCP/UDP端口
TCP/IP是一種端對端協(xié)議,每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)都具有唯一的地址。網(wǎng)絡(luò)節(jié)點(diǎn)的應(yīng)用層也是這樣,處于應(yīng)用層的每個(gè)應(yīng)用程序和服務(wù)都具有自己的對應(yīng)“地址”,也就是端口號。地址和端口都具備了才能建立客戶機(jī)和服務(wù)器的各種應(yīng)用之間的有效通信聯(lián)系。比如,telnet服務(wù)器在端口23偵聽入站連接。同時(shí)telnet客戶機(jī)也有一個(gè)端口號,否則客戶機(jī)的IP棧怎么知道某個(gè)數(shù)據(jù)包是屬于哪個(gè)應(yīng)用程序的呢?
由于歷史的原因,幾乎所有的TCP/IP客戶程序都使用大于1023的隨機(jī)分配端口號。只有 UNIX計(jì)算機(jī)上的root用戶才可以訪問1024以下的端口,而這些端口還保留為服務(wù)器上的服務(wù)所用。所以,除非我們讓所有具有大于1023端口號的數(shù)據(jù)包進(jìn)入網(wǎng)絡(luò),否則各種網(wǎng)絡(luò)連接都沒法正常工作。
這對防火墻而言可就麻煩了,如果阻塞入站的全部端口,那么所有的客戶機(jī)都沒法使用網(wǎng)絡(luò)資源。因?yàn)榉?wù)器發(fā)出響應(yīng)外部連接請求的入站(就是進(jìn)入防火墻的意思)數(shù)據(jù)包都沒法經(jīng)過防火墻的入站過濾。反過來,打開所有高于1023的端口就可行了嗎?也不盡然。由于很多服務(wù)使用的端口都大于1023,比如X client、基于RPC的NFS服務(wù)以及為數(shù)眾多的非UNIX IP產(chǎn)品等(NetWare/IP)就是這樣的。那么讓達(dá)到1023端口標(biāo)準(zhǔn)的數(shù)據(jù)包都進(jìn)入網(wǎng)絡(luò)的話網(wǎng)絡(luò)還能說是安全的嗎?連這些客戶程序都不敢說自己是足夠安全的。
- 雙向過濾
OK,咱們換個(gè)思路。我們給防火墻這樣下命令:已知服務(wù)的數(shù)據(jù)包可以進(jìn)來,其他的全部擋在防火墻之外。比如,如果你知道用戶要訪問Web服務(wù)器,那就只讓具有源端口號80的數(shù)據(jù)包進(jìn)入網(wǎng)絡(luò):
不過新問題又出現(xiàn)了。首先,你怎么知道你要訪問的服務(wù)器具有哪些正在運(yùn)行的端口號呢?象HTTP這樣的服務(wù)器本來就是可以任意配置的,所采用的端口也可以隨意配置。如果你這樣設(shè)置防火墻,你就沒法訪問哪些沒采用標(biāo)準(zhǔn)端口號的的網(wǎng)絡(luò)站點(diǎn)了!反過來,你也沒法保證進(jìn)入網(wǎng)絡(luò)的數(shù)據(jù)包中具有端口號80的就一定來自Web服務(wù)器。有些黑客就是利用這一點(diǎn)制作自己的入侵工具,并讓其運(yùn)行在本機(jī)的80端口!
- 檢查ACK位
源地址我們不相信,源端口也信不得了,這個(gè)不得不與黑客共舞的瘋狂世界上還有什么值得我們信任呢?還好,事情還沒到走投無路的地步。對策還是有的,不過這個(gè)辦法只能用于TCP協(xié)議。
TCP是一種可靠的通信協(xié)議,“可靠”這個(gè)詞意味著協(xié)議具有包括糾錯(cuò)機(jī)制在內(nèi)的一些特殊性質(zhì)。為了實(shí)現(xiàn)其可靠性,每個(gè)TCP連接都要先經(jīng)過一個(gè)“握手”過程來交換連接參數(shù)。還有,每個(gè)發(fā)送出去的包在后續(xù)的其他包被發(fā)送出去之前必須獲得一個(gè)確認(rèn)響應(yīng)。但并不是對每個(gè)TCP包都非要采用專門的ACK包來響應(yīng),實(shí)際上僅僅在TCP包頭上設(shè)置一個(gè)專門的位就可以完成這個(gè)功能了。所以,只要產(chǎn)生了響應(yīng)包就要設(shè)置ACK位。連接會話的第一個(gè)包不用于確認(rèn),所以它就沒有設(shè)置ACK位,后續(xù)會話交換的TCP包就要設(shè)置ACK位了。
舉個(gè)例子,PC向遠(yuǎn)端的Web服務(wù)器發(fā)起一個(gè)連接,它生成一個(gè)沒有設(shè)置ACK位的連接請求包。當(dāng)服務(wù)器響應(yīng)該請求時(shí),服務(wù)器就發(fā)回一個(gè)設(shè)置了ACK位的數(shù)據(jù)包,同時(shí)在包里標(biāo)記從客戶機(jī)所收到的字節(jié)數(shù)。然后客戶機(jī)就用自己的響應(yīng)包再響應(yīng)該數(shù)據(jù)包,這個(gè)數(shù)據(jù)包也設(shè)置了ACK位并標(biāo)記了從服務(wù)器收到的字節(jié)數(shù)。通過監(jiān)視ACK位,我們就可以將進(jìn)入網(wǎng)絡(luò)的數(shù)據(jù)限制在響應(yīng)包的范圍之內(nèi)。于是,遠(yuǎn)程系統(tǒng)根本無法發(fā)起TCP連接但卻能響應(yīng)收到的數(shù)據(jù)包了。
這套機(jī)制還不能算是無懈可擊,簡單地舉個(gè)例子,假設(shè)我們有臺內(nèi)部Web服務(wù)器,那么端口80就不得不被打開以便外部請求可以進(jìn)入網(wǎng)絡(luò)。還有,對UDP包而言就沒法監(jiān)視ACK位了,因?yàn)閁DP包壓根就沒有ACK位。還有一些TCP應(yīng)用程序,比如 FTP,連接就必須由這些服務(wù)器程序自己發(fā)起。
- FTP帶來的困難
一般的Internet服務(wù)對所有的通信都只使用一對端口號,F(xiàn)TP程序在連接期間則使用兩對端口號。第一對端口號用于FTP的“命令通道”提供登錄和執(zhí)行命令的通信鏈路,而另一對端口號則用于FTP的“數(shù)據(jù)通道”提供客戶機(jī)和服務(wù)器之間的文件傳送。
在通常的FTP會話過程中,客戶機(jī)首先向服務(wù)器的端口21(命令通道)發(fā)送一個(gè)TCP連接請求,然后執(zhí)行LOGIN、DIR等各種命令。一旦用戶請求服務(wù)器發(fā)送數(shù)據(jù),F(xiàn)TP服務(wù)器就用其20端口 (數(shù)據(jù)通道)向客戶的數(shù)據(jù)端口發(fā)起連接。問題來了,如果服務(wù)器向客戶機(jī)發(fā)起傳送數(shù)據(jù)的連接,那么它就會發(fā)送沒有設(shè)置ACK位的數(shù)據(jù)包,防火墻則按照剛才的規(guī)則拒絕該數(shù)據(jù)包同時(shí)也就意味著數(shù)據(jù)傳送沒戲了。通常只有高級的、也就是夠聰明的防火墻才能看出客戶機(jī)剛才告訴服務(wù)器的端口,然后才許可對該端口的入站連接。
- UDP端口過濾
好了,現(xiàn)在我們回過頭來看看怎么解決UDP問題。剛才說了,UDP包沒有ACK位所以不能進(jìn)行 ACK位過濾。UDP 是發(fā)出去不管的“不可靠”通信,這種類型的服務(wù)通常用于廣播、路由、多媒體等廣播形式的通信任務(wù)。NFS、DNS、WINS、NetBIOS-over- TCP/IP和 NetWare/IP都使用UDP。
看來最簡單的可行辦法就是不允許建立入站UDP連接。防火墻設(shè)置為只許轉(zhuǎn)發(fā)來自內(nèi)部接口的 UDP包,來自外部接口的UDP包則不轉(zhuǎn)發(fā)。現(xiàn)在的問題是,比方說,DNS名稱解析請求就使用UDP,如果你提供DNS服務(wù),至少得允許一些內(nèi)部請求穿越防火墻。還有IRC這樣的客戶程序也使用UDP,如果要讓你的用戶使用它,就同樣要讓他們的UDP包進(jìn)入網(wǎng)絡(luò)。我們能做的就是對那些從本地到可信任站點(diǎn)之間的連接進(jìn)行限制。但是,什么叫可信任!如果黑客采取地址欺騙的方法不又回到老路上去了嗎?
有些新型路由器可以通過“記憶”出站UDP包來解決這個(gè)問題:如果入站UDP包匹配最近出站 UDP包的目標(biāo)地址和端口號就讓它進(jìn)來。如果在內(nèi)存中找不到匹配的UDP包就只好拒絕它了!但是,我們?nèi)绾未_信產(chǎn)生數(shù)據(jù)包的外部主機(jī)就是內(nèi)部客戶機(jī)希望通信的服務(wù)器呢?如果黑客詐稱DNS服務(wù)器的地址,那么他在理論上當(dāng)然可以從附著DNS的UDP端口發(fā)起攻擊。只要你允許DNS查詢和反饋包進(jìn)入網(wǎng)絡(luò)這個(gè)問題就必然存在。辦法是采用代理服務(wù)器。
所謂代理服務(wù)器,顧名思義就是代表你的網(wǎng)絡(luò)和外界打交道的服務(wù)器。代理服務(wù)器不允許存在任何網(wǎng)絡(luò)內(nèi)外的直接連接。它本身就提供公共和專用的DNS、郵件服務(wù)器等多種功能。代理服務(wù)器重寫數(shù)據(jù)包而不是簡單地將其轉(zhuǎn)發(fā)了事。給人的感覺就是網(wǎng)絡(luò)內(nèi)部的主機(jī)都站在了網(wǎng)絡(luò)的邊緣,但實(shí)際上他們都躲在代理的后面,露面的不過是代理這個(gè)假面具。
11.防火墻在證券業(yè)的理解
在證券行業(yè),防火墻是指通過行政規(guī)定和劃分、內(nèi)部監(jiān)控、IT系統(tǒng)等手段防止各部門之間出現(xiàn)有損客戶利益的利益沖突事件。
例如在投資銀行內(nèi)部,負(fù)責(zé)公司上市融資的投資銀行部門與經(jīng)紀(jì)和研究部門,以及經(jīng)紀(jì)和研究部門與資產(chǎn)管理部門之間就設(shè)有防火墻,不同部門之間的核心客戶和工作信息不能相互透露。
例如在投資銀行負(fù)責(zé)某公司上市或并購工作時(shí)若有經(jīng)紀(jì)部門的研究員參與,該研究員就可獲得內(nèi)幕信息,并極有可能透露給個(gè)別重要客戶從中漁利,這樣其他投資者利益就有可能遭受損失。雖然各家投資銀行都設(shè)有嚴(yán)格的防火墻規(guī)定,但合謀的事件和誘惑仍有發(fā)生,如果沒有外部法律法規(guī)的嚴(yán)格監(jiān)督,僅靠公司內(nèi)控很難避免利益沖突。