防火墻知識入門(2)
防火墻知識入門
三. 防火墻技術(shù)傳統(tǒng)意義上的防火墻技術(shù)分為三大類,“包過濾”(Packet Filtering)、“應(yīng)用代理”(Application Proxy)和“狀態(tài)監(jiān)視”(Stateful Inspection),無論一個防火墻的實(shí)現(xiàn)過程多么復(fù)雜,歸根結(jié)底都是在這三種技術(shù)的基礎(chǔ)上進(jìn)行功能擴(kuò)展的。
1.包過濾技術(shù)
包過濾是最早使用的一種防火墻技術(shù),它的第一代模型是“靜態(tài)包過濾”(Static Packet Filtering),使用包過濾技術(shù)的防火墻通常工作在OSI模型中的網(wǎng)絡(luò)層(Network Layer)上,后來發(fā)展更新的“動態(tài)包過濾”(Dynamic Packet Filtering)增加了傳輸層(Transport Layer),簡而言之,包過濾技術(shù)工作的地方就是各種基于TCP/IP協(xié)議的數(shù)據(jù)報文進(jìn)出的通道,它把這兩層作為數(shù)據(jù)監(jiān)控的對象,對每個數(shù)據(jù)包的頭部、協(xié)議、地址、端口、類型等信息進(jìn)行分析,并與預(yù)先設(shè)定好的防火墻過濾規(guī)則(Filtering Rule)進(jìn)行核對,一旦發(fā)現(xiàn)某個包的某個或多個部分與過濾規(guī)則匹配并且條件為“阻止”的時候,這個包就會被丟棄。適當(dāng)?shù)脑O(shè)置過濾規(guī)則可以讓防火墻工作得更安全有效,但是這種技術(shù)只能根據(jù)預(yù)設(shè)的過濾規(guī)則進(jìn)行判斷,一旦出現(xiàn)一個沒有在設(shè)計(jì)人員意料之中的有害數(shù)據(jù)包請求,整個防火墻的保護(hù)就相當(dāng)于擺設(shè)了。也許你會想,讓用戶自行添加不行嗎?但是別忘了,我們要為是普通計(jì)算機(jī)用戶考慮,并不是所有人都了解網(wǎng)絡(luò)協(xié)議的,如果防火墻工具出現(xiàn)了過濾遺漏問題,他們只能等著被入侵了。一些公司采用定期從網(wǎng)絡(luò)升級過濾規(guī)則的方法,這個創(chuàng)意固然可以方便一部分家庭用戶,但是對相對比較專業(yè)的用戶而言,卻不見得就是好事,因?yàn)樗麄兛赡軙懈鶕?jù)自己的機(jī)器環(huán)境設(shè)定和改動的規(guī)則,如果這個規(guī)則剛好和升級到的規(guī)則發(fā)生沖突,用戶就該郁悶了,而且如果兩條規(guī)則沖突了,防火墻該聽誰的,會不會當(dāng)場“死給你看”(崩潰)?也許就因?yàn)榭紤]到這些因素,至今我沒見過有多少個產(chǎn)品會提供過濾規(guī)則更新功能的,這并不能和殺毒軟件的病毒特征庫升級原理相提并論。為了解決這種魚與熊掌的問題,人們對包過濾技術(shù)進(jìn)行了改進(jìn),這種改進(jìn)后的技術(shù)稱為“動態(tài)包過濾”(市場上存在一種“基于狀態(tài)的包過濾防火墻”技術(shù),即Stateful-based Packet Filtering,他們其實(shí)是同一類型),與它的前輩相比,動態(tài)包過濾功能在保持著原有靜態(tài)包過濾技術(shù)和過濾規(guī)則的基礎(chǔ)上,會對已經(jīng)成功與計(jì)算機(jī)連接的報文傳輸進(jìn)行跟蹤,并且判斷該連接發(fā)送的數(shù)據(jù)包是否會對系統(tǒng)構(gòu)成威脅,一旦觸發(fā)其判斷機(jī)制,防火墻就會自動產(chǎn)生新的臨時過濾規(guī)則或者把已經(jīng)存在的過濾規(guī)則進(jìn)行修改,從而阻止該有害數(shù)據(jù)的繼續(xù)傳輸,但是由于動態(tài)包過濾需要消耗額外的資源和時間來提取數(shù)據(jù)包內(nèi)容進(jìn)行判斷處理,所以與靜態(tài)包過濾相比,它會降低運(yùn)行效率,但是靜態(tài)包過濾已經(jīng)幾乎退出市場了,我們能選擇的,大部分也只有動態(tài)包過濾防火墻了。
基于包過濾技術(shù)的防火墻,其缺點(diǎn)是很顯著的:它得以進(jìn)行正常工作的一切依據(jù)都在于過濾規(guī)則的實(shí)施,但是偏又不能滿足建立精細(xì)規(guī)則的要求(規(guī)則數(shù)量和防火墻性能成反比),而且它只能工作于網(wǎng)絡(luò)層和傳輸層,并不能判斷高級協(xié)議里的數(shù)據(jù)是否有害,但是由于它廉價,容易實(shí)現(xiàn),所以它依然服役在各種領(lǐng)域,在技術(shù)人員頻繁的設(shè)置下為我們工作著。
2.應(yīng)用代理技術(shù)
由于包過濾技術(shù)無法提供完善的數(shù)據(jù)保護(hù)措施,而且一些特殊的報文攻擊僅僅使用過濾的方法并不能消除危害(如SYN攻擊、ICMP洪水等),因此人們需要一種更全面的防火墻保護(hù)技術(shù),在這樣的需求背景下,采用“應(yīng)用代理”(Application Proxy)技術(shù)的防火墻誕生了。我們的讀者還記得“代理”的概念嗎?代理服務(wù)器作為一個為用戶保密或者突破訪問限制的數(shù)據(jù)轉(zhuǎn)發(fā)通道,在網(wǎng)絡(luò)上應(yīng)用廣泛。我們都知道,一個完整的代理設(shè)備包含一個服務(wù)端和客戶端,服務(wù)端接收來自用戶的請求,調(diào)用自身的客戶端模擬一個基于用戶請求的連接到目標(biāo)服務(wù)器,再把目標(biāo)服務(wù)器返回的數(shù)據(jù)轉(zhuǎn)發(fā)給用戶,完成一次代理工作過程。那么,如果在一臺代理設(shè)備的服務(wù)端和客戶端之間連接一個過濾措施呢?這樣的思想便造就了“應(yīng)用代理”防火墻,這種防火墻實(shí)際上就是一臺小型的帶有數(shù)據(jù)檢測過濾功能的透明代理服務(wù)器(Transparent Proxy),但是它并不是單純的在一個代理設(shè)備中嵌入包過濾技術(shù),而是一種被稱為“應(yīng)用協(xié)議分析”(Application Protocol Analysis)的新技術(shù)。
“應(yīng)用協(xié)議分析”技術(shù)工作在OSI模型的最高層——應(yīng)用層上,在這一層里能接觸到的所有數(shù)據(jù)都是最終形式,也就是說,防火墻“看到”的數(shù)據(jù)和我們看到的是一樣的,而不是一個個帶著地址端口協(xié)議等原始內(nèi)容的數(shù)據(jù)包,因而它可以實(shí)現(xiàn)更高級的數(shù)據(jù)檢測過程。整個代理防火墻把自身映射為一條透明線路,在用戶方面和外界線路看來,它們之間的連接并沒有任何阻礙,但是這個連接的數(shù)據(jù)收發(fā)實(shí)際上是經(jīng)過了代理防火墻轉(zhuǎn)向的,當(dāng)外界數(shù)據(jù)進(jìn)入代理防火墻的客戶端時,“應(yīng)用協(xié)議分析”模塊便根據(jù)應(yīng)用層協(xié)議處理這個數(shù)據(jù),通過預(yù)置的處理規(guī)則(沒錯,又是規(guī)則,防火墻離不開規(guī)則)查詢這個數(shù)據(jù)是否帶有危害,由于這一層面對的已經(jīng)不再是組合有限的報文協(xié)議,甚至可以識別類似于“GET /sql.asp?id=1 and 1”的數(shù)據(jù)內(nèi)容,所以防火墻不僅能根據(jù)數(shù)據(jù)層提供的信息判斷數(shù)據(jù),更能像管理員分析服務(wù)器日志那樣“看”內(nèi)容辨危害。而且由于工作在應(yīng)用層,防火墻還可以實(shí)現(xiàn)雙向限制,在過濾外部網(wǎng)絡(luò)有害數(shù)據(jù)的同時也監(jiān)控著內(nèi)部網(wǎng)絡(luò)的信息,管理員可以配置防火墻實(shí)現(xiàn)一個身份驗(yàn)證和連接時限的功能,進(jìn)一步防止內(nèi)部網(wǎng)絡(luò)信息泄漏的隱患。最后,由于代理防火墻采取是代理機(jī)制進(jìn)行工作,內(nèi)外部網(wǎng)絡(luò)之間的通信都需先經(jīng)過代理服務(wù)器審核,通過后再由代理服務(wù)器連接,根本沒有給分隔在內(nèi)外部網(wǎng)絡(luò)兩邊的計(jì)算機(jī)直接會話的機(jī)會,可以避免入侵者使用“數(shù)據(jù)驅(qū)動”攻擊方式(一種能通過包過濾技術(shù)防火墻規(guī)則的數(shù)據(jù)報文,但是當(dāng)它進(jìn)入計(jì)算機(jī)處理后,卻變成能夠修改系統(tǒng)設(shè)置和用戶數(shù)據(jù)的惡意代碼)滲透內(nèi)部網(wǎng)絡(luò),可以說,“應(yīng)用代理”是比包過濾技術(shù)更完善的防火墻技術(shù)。
但是,似乎任何東西都不可能逃避“墨菲定律”的規(guī)則,代理型防火墻的結(jié)構(gòu)特征偏偏正是它的最大缺點(diǎn),由于它是基于代理技術(shù)的,通過防火墻的每個連接都必須建立在為之創(chuàng)建的代理程序進(jìn)程上,而代理進(jìn)程自身是要消耗一定時間的,更何況代理進(jìn)程里還有一套復(fù)雜的協(xié)議分析機(jī)制在同時工作,于是數(shù)據(jù)在通過代理防火墻時就不可避免的發(fā)生數(shù)據(jù)遲滯現(xiàn)象,換個形象的說法,每個數(shù)據(jù)連接在經(jīng)過代理防火墻時都會先被請進(jìn)保安室喝杯茶搜搜身再繼續(xù)趕路,而保安的工作速度并不能很快。代理防火墻是以犧牲速度為代價換取了比包過濾防火墻更高的安全性能,在網(wǎng)絡(luò)吞吐量不是很大的情況下,也許用戶不會察覺到什么,然而到了數(shù)據(jù)交換頻繁的時刻,代理防火墻就成了整個網(wǎng)絡(luò)的瓶頸,而且一旦防火墻的硬件配置支撐不住高強(qiáng)度的數(shù)據(jù)流量而發(fā)生罷工,整個網(wǎng)絡(luò)可能就會因此癱瘓了。所以,代理防火墻的普及范圍還遠(yuǎn)遠(yuǎn)不及包過濾型防火墻,而在軟件防火墻方面更是幾乎沒見過類似產(chǎn)品了——單機(jī)并不具備代理技術(shù)所需的條件,所以就目前整個龐大的軟件防火墻市場來說,代理防火墻很難有立足之地。
3.狀態(tài)監(jiān)視技術(shù)
這是繼“包過濾”技術(shù)和“應(yīng)用代理”技術(shù)后發(fā)展的防火墻技術(shù),它是CheckPoint技術(shù)公司在基于“包過濾”原理的“動態(tài)包過濾”技術(shù)發(fā)展而來的,與之類似的有其他廠商聯(lián)合發(fā)展的“深度包檢測”(Deep Packet Inspection)技術(shù)。這種防火墻技術(shù)通過一種被稱為“狀態(tài)監(jiān)視”的模塊,在不影響網(wǎng)絡(luò)安全正常工作的前提下采用抽取相關(guān)數(shù)據(jù)的方法對網(wǎng)絡(luò)通信的各個層次實(shí)行監(jiān)測,并根據(jù)各種過濾規(guī)則作出安全決策。
“狀態(tài)監(jiān)視”(Stateful Inspection)技術(shù)在保留了對每個數(shù)據(jù)包的頭部、協(xié)議、地址、端口、類型等信息進(jìn)行分析的基礎(chǔ)上,進(jìn)一步發(fā)展了“會話過濾”(Session Filtering)功能,在每個連接建立時,防火墻會為這個連接構(gòu)造一個會話狀態(tài),里面包含了這個連接數(shù)據(jù)包的所有信息,以后這個連接都基于這個狀態(tài)信息進(jìn)行,這種檢測的高明之處是能對每個數(shù)據(jù)包的內(nèi)容進(jìn)行監(jiān)視,一旦建立了一個會話狀態(tài),則此后的數(shù)據(jù)傳輸都要以此會話狀態(tài)作為依據(jù),例如一個連接的數(shù)據(jù)包源端口是8000,那么在以后的數(shù)據(jù)傳輸過程里防火墻都會審核這個包的源端口還是不是8000,否則這個數(shù)據(jù)包就被攔截,而且會話狀態(tài)的保留是有時間限制的,在超時的范圍內(nèi)如果沒有再進(jìn)行數(shù)據(jù)傳輸,這個會話狀態(tài)就會被丟棄。狀態(tài)監(jiān)視可以對包內(nèi)容進(jìn)行分析,從而擺脫了傳統(tǒng)防火墻僅局限于幾個包頭部信息的檢測弱點(diǎn),而且這種防火墻不必開放過多端口,進(jìn)一步杜絕了可能因?yàn)殚_放端口過多而帶來的安全隱患。
由于狀態(tài)監(jiān)視技術(shù)相當(dāng)于結(jié)合了包過濾技術(shù)和應(yīng)用代理技術(shù),因此是最先進(jìn)的,但是由于實(shí)現(xiàn)技術(shù)復(fù)雜,在實(shí)際應(yīng)用中還不能做到真正的完全有效的數(shù)據(jù)安全檢測,而且在一般的計(jì)算機(jī)硬件系統(tǒng)上很難設(shè)計(jì)出基于此技術(shù)的完善防御措施(市面上大部分軟件防火墻使用的其實(shí)只是包過濾技術(shù)加上一點(diǎn)其他新特性而已)。
四. 技術(shù)展望
防火墻作為維護(hù)網(wǎng)絡(luò)安全的關(guān)鍵設(shè)備,在目前采用的網(wǎng)絡(luò)安全的防范體系中,占據(jù)著舉足輕重的位置。伴隨計(jì)算機(jī)技術(shù)的發(fā)展和網(wǎng)絡(luò)應(yīng)用的普及,越來越多的企業(yè)與個體都遭遇到不同程度的安全難題,因此市場對防火墻的設(shè)備需求和技術(shù)要求都在不斷提升,而且越來越嚴(yán)峻的網(wǎng)絡(luò)安全問題也要求防火墻技術(shù)有更快的提高,否則將會在面對新一輪入侵手法時束手無策。
多功能、高安全性的防火墻可以讓用戶網(wǎng)絡(luò)更加無憂,但前提是要確保網(wǎng)絡(luò)的運(yùn)行效率,因此在防火墻發(fā)展過程中,必須始終將高性能放在主要位置,目前各大廠商正在朝這個方向努力,而且豐富的產(chǎn)品功能也是用戶選擇防火墻的依據(jù)之一,一款完善的防火墻產(chǎn)品,應(yīng)該包含有訪問控制、網(wǎng)絡(luò)地址轉(zhuǎn)換、代理、認(rèn)證、日志審計(jì)等基礎(chǔ)功能,并擁有自己特色的安全相關(guān)技術(shù),如規(guī)則簡化方案等,明天的防火墻技術(shù)將會如何發(fā)展,讓我們拭目以待。
防火墻:功夫到七層
在短短的幾年里,防火墻的功能重心從網(wǎng)絡(luò)層發(fā)展到了應(yīng)用層。本文結(jié)合Microsoft ISA Server的發(fā)展,闡述了這種變遷的技術(shù)背景,以及未來的防火墻技術(shù)走向。
應(yīng)用層攻擊挑戰(zhàn)傳統(tǒng)防火墻
最近兩年來,攻擊者的興趣明顯從端口掃描和制造拒絕服務(wù)攻擊(DoS Attack)轉(zhuǎn)向了針對Web、E-mail甚至數(shù)據(jù)庫等主流應(yīng)用的攻擊。傳統(tǒng)的防火墻僅僅檢查IP數(shù)據(jù)包的包頭,而忽略了內(nèi)容——如果用信件來做比喻,也就是只檢查了信封而沒有檢查信紙。因此對這類應(yīng)用層的攻擊無能為力??梢哉f,僅僅靠第三層和第四層的IP地址和協(xié)議端口過濾的防火墻產(chǎn)品早已走到了盡頭。
戰(zhàn)火燒向七層
為了對抗應(yīng)用層(OSI網(wǎng)絡(luò)模型的第七層)的攻擊,防火墻必須具備應(yīng)用層的過濾能力,Microsoft ISA Server 2004等防火墻產(chǎn)品已經(jīng)具備了這種能力。
如果把計(jì)算機(jī)網(wǎng)絡(luò)比做一座建筑,傳統(tǒng)的包過濾防火墻就是在企業(yè)內(nèi)部網(wǎng)絡(luò)和Internet之間的一系列并列的門。每道門都有安檢人員對到達(dá)的包裹(IP數(shù)據(jù)包)進(jìn)行逐一檢查,若沒有發(fā)現(xiàn)數(shù)據(jù)包含有異常代碼便開門放行。攻擊者常用的伎倆就是通過端口掃描來檢查哪些門是敞開不設(shè)防的,然后加以利用。晚些時候出現(xiàn)的具有狀態(tài)檢測δ艿姆闌鵯嬌梢約觳檳男┦?蒞?搶醋訧nternet對內(nèi)部網(wǎng)絡(luò)訪問請求的應(yīng)答。也就是說,安檢人員能夠鑒別那些不請自來的包裹。
但應(yīng)用層攻擊就要復(fù)雜得多,因?yàn)楣魯?shù)據(jù)包在絕大多數(shù)情況下是合法的數(shù)據(jù)包,不同的只是內(nèi)容具有攻擊性,而且因?yàn)镮P數(shù)據(jù)包是分段傳輸?shù)?,其?nèi)容的判別需要將所有相關(guān)的包重組后才能準(zhǔn)確進(jìn)行。一旦這種攻擊數(shù)據(jù)包通過了防火墻,它們通常會開始有條不紊地利用目標(biāo)系統(tǒng)的漏洞制造緩沖區(qū)溢出,獲得系統(tǒng)的控制權(quán),然后以此為平臺開始尋找周圍其他系統(tǒng)的漏洞或者其他的蠕蟲留下的后門,進(jìn)而展開攻擊。
防火墻的對策
對此,Microsoft ISA Server 2004采取的應(yīng)對措施是,針對每一類主流的應(yīng)用, HTTP、SMTP、FTP和SQL Server數(shù)據(jù)庫訪問(基于RPC)都設(shè)置專門的過濾器,如果未來出現(xiàn)新的應(yīng)用層威脅,還可以增加相應(yīng)的過濾器。用戶可以針對每一種過濾器進(jìn)行應(yīng)用相關(guān)的過濾設(shè)置,例如,可以通過限制任何HTTP訪問請求的緩沖區(qū)不得超過3000個字節(jié)來防止一些蠕蟲的攻擊。在這種新的機(jī)制下,來自Internet的數(shù)據(jù)包被發(fā)送到各自的過濾器,過濾器會將數(shù)據(jù)包重組后進(jìn)行內(nèi)容掃描和判別。拿一封郵件來說,SMTP過濾器會等待相關(guān)的包到齊后,在轉(zhuǎn)發(fā)之前重組郵件對其內(nèi)容進(jìn)行掃描,與已知類型的攻擊進(jìn)行比對,在確認(rèn)這是正常流量后才允許通過。
經(jīng)過正確配置的現(xiàn)代防火墻可以阻擋絕大多數(shù)已知的病毒郵件和攻擊代碼。雖然阻擋未知的病毒和攻擊要困難得多,但是經(jīng)過合理的策略設(shè)置通常是有效的。正確設(shè)置策略的基礎(chǔ)是企業(yè)用戶對于自身業(yè)務(wù)需求的正確理解,例如,多數(shù)企業(yè)的用戶通常是沒有必要通過郵件來傳遞可執(zhí)行文件和Visual Basic腳本代碼的。用戶可以通過阻斷含有這類可執(zhí)行附件的郵件來對付一些未知的病毒。一旦真的需要發(fā)送這類文件,也可以設(shè)置更有針對性的策略,比如只允許IT部門的用戶發(fā)送含有可執(zhí)行文件附件郵件,或者允許用戶接收除含有名為“Kournikova.jpg.vbs”的腳本附件之外的所有郵件。
安全與性能的矛盾
用戶早已習(xí)慣于把安全性和性能看成是對立的,就像在機(jī)場的安檢入口,檢查的步驟越多,等待安檢的隊(duì)伍也就越長。對于防火墻來說,性能和安全的確是一對永遠(yuǎn)的矛盾,但是應(yīng)用層過濾的功能對防火墻性能的影響并沒有多數(shù)用戶想象得那么大,Microsoft ISA Server 2004標(biāo)稱每秒鐘可處理超過1000個并發(fā)用戶,同時保持每會話(session)27Mbps的吞吐量。事實(shí)上,有些廠商通過硬件(ASIC)實(shí)現(xiàn)應(yīng)用層的過濾引擎,能夠達(dá)到更加接近線速(可理解為以太網(wǎng)交換機(jī)的處理極限)的處理能力。
新的挑戰(zhàn)
具有應(yīng)用層過濾功能的防火墻可以更有效地阻擋當(dāng)前多數(shù)病毒和攻擊程序,但新的安全威脅的不斷出現(xiàn)又對防火墻提出了新的挑戰(zhàn)。攻擊的來源正在變得更加復(fù)雜,而攻擊的手段也愈加高明,最近垃圾郵件與攻擊代碼的結(jié)合就是一個典型的例證。這一方面需要防火墻設(shè)備對于應(yīng)用層的內(nèi)容有更好的認(rèn)知和智能判別的能力,另一方面也需要防火墻更多地與其他的安全設(shè)備和應(yīng)用有效配合,從而實(shí)現(xiàn)更加有力的防護(hù)。
這就是防火墻了。