防火墻對FTP的影響及故障排除分析
防火墻借由監(jiān)測所有的封包并找出不符規(guī)則的內(nèi)容,可以防范電腦蠕蟲或是木馬程序的快速蔓延。這篇文章主要介紹了淺談防火墻對FTP的影響及故障排除分析,需要的朋友可以參考下
具體介紹
FTP是常見的基于TCP的網(wǎng)絡(luò)服務(wù),它使用了兩個TCP連接來建立邏輯通信信道,即控制連接和數(shù)據(jù)連接。當(dāng)客戶端與服務(wù)器建立一個FTP會話時,使用TCP創(chuàng)建一個持久的控制連接以傳遞命令和應(yīng)答。當(dāng)發(fā)送文件和其它數(shù)據(jù)傳輸時,它們在獨(dú)立的TCP數(shù)據(jù)連接上進(jìn)行傳遞,這個連接根據(jù)需要創(chuàng)建和拆除。
更為復(fù)雜的是,F(xiàn)TP標(biāo)準(zhǔn)指定了創(chuàng)建數(shù)據(jù)連接的兩種不同方法,即正常(主動)數(shù)據(jù)連接和被動數(shù)據(jù)連接。FTP的控制連接總是由客戶端首先發(fā)起的,主動數(shù)據(jù)連接是由服務(wù)器端發(fā)起的,被動數(shù)據(jù)連接是由客戶端發(fā)起的。
成功建立控制連接后,在進(jìn)行主動連接時,客戶端發(fā)送PORT命令,其中內(nèi)嵌了地址和端口信息,以告知服務(wù)器進(jìn)行連接,然后服務(wù)器打開默認(rèn)端口20建立到客戶端已告知地址和端口的數(shù)據(jù)連接。在進(jìn)行被動連接時,客戶機(jī)使用PASV命令告訴服務(wù)器等待客戶機(jī)建立數(shù)據(jù)連接,服務(wù)器響應(yīng),告訴客戶機(jī)為了數(shù)據(jù)傳輸它應(yīng)該使用服務(wù)器上的什么端口(隨機(jī)打開)。這種工作機(jī)制帶來了一個嚴(yán)重的問題:在FTP的命令(PORT或PASV)或?qū)λ鼈兊幕卮鹬袀鬟fIP地址及端口號與網(wǎng)絡(luò)分層機(jī)制嚴(yán)重沖突,在FTP客戶端與服務(wù)器的通信信道之間的網(wǎng)關(guān)設(shè)備(防火墻或路由器)上啟用了NAT功能的情況下將出現(xiàn)連接性問題。
防火墻對于像FTP這樣的多端口連接的TCP應(yīng)用,其影響是深遠(yuǎn)的,在復(fù)雜的網(wǎng)絡(luò)環(huán)境中,更是由于設(shè)備、軟件的多樣性可能導(dǎo)致不可預(yù)知的問題。作為一名網(wǎng)絡(luò)管理員,深入了解防火墻和FTP的工作原理及其在NAT環(huán)境下防火墻對FTP的影響,對于選擇FTP服務(wù)軟件及安裝、部署、管理及維護(hù)FTP服務(wù)和實際工作中排除FTP應(yīng)用故障是大有裨益的。本文就以一個在實際環(huán)境中比較常見的FTP部署和應(yīng)用拓?fù)錇槔?,來詳?xì)解讀防火墻(啟用了NAT功能)對FTP的影響。如有不當(dāng)之處,敬請指正。
一、網(wǎng)絡(luò)拓?fù)鋱D
windows_ftp_config_1
二、主動模式的連接分析
如本例中網(wǎng)絡(luò)拓?fù)渌荆琁P為192.168.1.1客戶端計算機(jī)打開一個可用的TCP端口1025,經(jīng)過其前端的防火墻進(jìn)行NAT轉(zhuǎn)換成地址1.1.1.1和端口1025后建立到目標(biāo)地址為2.2.2.2的21端口的連接,然后服務(wù)器前端的防火墻將此連接信息傳遞到服務(wù)器172.16.6.1的21端口,成功建立FTP控制連接。
服務(wù)器則經(jīng)由這個已經(jīng)建立的邏輯連接通道返回數(shù)據(jù)包,與客戶端進(jìn)行交互。接著,客戶端發(fā)出PORT指令,在指令中嵌入了地址信息(IP:192.168.1.1,Port:1026),告知服務(wù)器用于數(shù)據(jù)連接,并打開端口1026,等待服務(wù)器連接。當(dāng)承載PORT指令的數(shù)據(jù)包到達(dá)客戶機(jī)前端的防火墻時,由于NAT的緣故,在成功創(chuàng)建NAT表項,改寫數(shù)據(jù)包的IP和TCP端口信息后:
如果此時防火墻不能識別并檢查此連接是FTP應(yīng)用,便不能對PORT指令中嵌入的地址和端口信息進(jìn)行改寫,則將此數(shù)據(jù)包通過先前已建立的控制連接通道傳遞到服務(wù)器后,服務(wù)器則打開20端口,將建立到192.168.1.1的1026端口的數(shù)據(jù)連接。
顯然,此連接數(shù)據(jù)包要么被其前端的防火墻丟棄,要么在流入因特網(wǎng)后立刻被丟棄,永遠(yuǎn)無法到達(dá)客戶端。在這種情況下,客戶端一直處在控制連接階段發(fā)送含有PORT指令的數(shù)據(jù)包,以便建立數(shù)據(jù)連接;而服務(wù)器則在打開了20端口后,一直嘗試建立到客戶端的數(shù)據(jù)連接,但始終收不到應(yīng)答。
直接的結(jié)果就是:客戶端成功連接了FTP服務(wù)器,卻無法進(jìn)行數(shù)據(jù)傳輸。這里可能還包含一個隱藏的安全威脅:如果恰巧192.168.1.1對于服務(wù)器主機(jī)來說是直接可達(dá)的,則此時服務(wù)器便將數(shù)據(jù)包發(fā)送到這臺計算機(jī),在這兩臺主機(jī)之間產(chǎn)生莫名的數(shù)據(jù)流。其他可能更隱蔽、更不好的情況,筆者不再做假設(shè)論述了。
如果此時防火墻能支持對FTP應(yīng)用進(jìn)行審查和跟蹤,即能識別PORT指令中的內(nèi)容,就將其中嵌入的地址信息改寫成(IP:1.1.1.1,PORT:1026)并動態(tài)打開1026端口,并建立新的NAT轉(zhuǎn)換表項,等待連接,則當(dāng)服務(wù)器收到PORT指令后,打開20端口,建立到1.1.1.1上1026端口的連接,成功交互后,便能進(jìn)行數(shù)據(jù)傳輸了。
三、被動模式的連接分析
控制連接建立后,客戶端發(fā)出的PASV指令到達(dá)服務(wù)器,服務(wù)器則隨機(jī)打開一個可用的TCP端口,并將地址和端口信息(IP:172.16.6.1,Port:50000)返回給客戶端,告知客戶端利用這些信息進(jìn)行數(shù)據(jù)連接。當(dāng)包含服務(wù)器地址信息的這個數(shù)據(jù)包到達(dá)其前端的防火墻時:
如果防火墻不能識別并檢查此數(shù)據(jù)包的應(yīng)用層數(shù)據(jù),無法判定它是FTP的PASV指令的返回包,并對其中嵌入的地址信息進(jìn)行重寫,則當(dāng)此數(shù)據(jù)包返回到客戶端時,客戶端將隨機(jī)打開端口3000,以目的地址172.16.6.1、端口50000來進(jìn)行數(shù)據(jù)連接,同理,此連接數(shù)據(jù)包永遠(yuǎn)不能到達(dá)服務(wù)器端。
這種情況下,客戶端將一直嘗試建立數(shù)據(jù)連接,卻總是不能收到應(yīng)答。這里可能包含的隱藏安全威脅,如前所述。
如果防火墻能對FTP應(yīng)用進(jìn)行審查和跟蹤,并將返回包中嵌入的服務(wù)器地址信息進(jìn)行重寫,即轉(zhuǎn)換成(IP:2.2.2.2,Port:50000),然后建立新的NAT表項,動態(tài)打開50000端口,等待連接。則此返回包到達(dá)客戶端時,客戶端將隨機(jī)打開端口3000,以目的地址2.2.2.2、端口50000來新建連接,便能成功建立數(shù)據(jù)連接。
根據(jù)以上分析,為成功進(jìn)行FTP數(shù)據(jù)傳輸,主動模式下要求客戶機(jī)前端的防火墻在啟用NAT后能對FTP應(yīng)用進(jìn)行審查和跟蹤,識別并改寫PORT指令中的客戶端地址信息;被動模式下則要求服務(wù)器前端的防火墻能改寫服務(wù)器響應(yīng)PASV指令后返回數(shù)據(jù)包中的服務(wù)器地址信息。
當(dāng)然,為保險起見,為保證FTP應(yīng)用的正常使用,建議兩端的防火墻都需要支持對FTP進(jìn)行識別和內(nèi)容審查。
四、網(wǎng)絡(luò)防火墻與FTP
大多數(shù)網(wǎng)管設(shè)置防火墻的默認(rèn)訪問控制策略是:允許從內(nèi)部到外部的一切流量,禁止從外部到內(nèi)部的一切流量。
就FTP應(yīng)用來說,為了簡化防火墻策略的配置又兼顧安全策略要求,客戶機(jī)選擇被動模式進(jìn)行數(shù)據(jù)連接較好,不需要對其前端的防火墻設(shè)置特別的訪問控制策略,但要求服務(wù)器前端的防火墻能動態(tài)打開數(shù)據(jù)連接所需的隨機(jī)端口;服務(wù)器端則選擇主動連接較好,為允許客戶端的訪問,其前端防火墻的訪問控制策略僅需要顯式對外開放21端口即可,但需要客戶機(jī)前端的防火墻能動態(tài)打開數(shù)據(jù)連接所需的端口。
從方便使用的角度考慮,既然提供FTP服務(wù),就要配置好服務(wù)器前端的防火墻,使其訪問控制策略能支持兩種模式下的FTP服務(wù)正常工作。
如果客戶機(jī)前端的NAT設(shè)備為路由器,不是防火墻,并不能審查和跟蹤FTP應(yīng)用,從前面的分析可以推斷出,主動模式下肯定存在連接性問題,需要以被動方式建立數(shù)據(jù)連接才能成功使用FTP服務(wù)。
如果FTP控制端口非默認(rèn),而是定制的TCP端口(比如2121),在這種情況下,服務(wù)器前端的防火墻通過配置命令顯式指示FTP的控制端口,便能進(jìn)行審查和跟蹤。但客戶機(jī)前端的防火墻即使其能識別默認(rèn)端口下的FTP應(yīng)用,此時也會把控制端口非21的FTP服務(wù)當(dāng)作一般的TCP應(yīng)用對待,這種情形下,便不能改寫主動模式下的客戶端地址端口信息,導(dǎo)致服務(wù)器在建立數(shù)據(jù)連接時失敗,但客戶端使用被動連接模式能正常工作。
綜上所述,客戶端使用被動方式連接FTP服務(wù)器是最恰當(dāng)?shù)模茏畲笙薅鹊亟档瓦B接性問題。同時降低了對客戶機(jī)前端防火墻備的要求,不需要像主動方式那樣動態(tài)開放允許輸入的隨機(jī)端口,把可能的安全威脅推給了服務(wù)器端。這或許是微軟的IE瀏覽器(資源管理器)默認(rèn)設(shè)置使用被動方式的原因。如圖表2所示。另外需要注意的,在Windows命令行下,F(xiàn)TP默認(rèn)是使用主動方式進(jìn)行數(shù)據(jù)連接的。
windows_ftp_config_2
五、主機(jī)防火墻與FTP
如果將FTP服務(wù)器架設(shè)在Windows Server 2008上,由于它內(nèi)置Windows防火墻,而且默認(rèn)已經(jīng)啟用,所以客戶端建立到這臺FTP服務(wù)器的控制連接便會被封鎖,此時需要在防火墻上開放對TCP 21端口的傳入連接。
被動模式下,由于服務(wù)器通過控制信道將用來監(jiān)聽客戶端請求的端口號是隨機(jī)產(chǎn)生的,此時需要在防火墻上開放的傳入連接的端口也是隨機(jī)的。由于Windows防火墻不能像網(wǎng)絡(luò)防火墻那樣根據(jù)需要動態(tài)打開和關(guān)閉FTP服務(wù)要求的隨機(jī)端口,所以需要靜態(tài)開放全部可能的隨機(jī)端口。
Windows Server 2008默認(rèn)的動態(tài)端口范圍是49152-65535,而Windows防火墻的例外開放規(guī)則只能針對單一端口來開放,要開放49152-65535這個范圍內(nèi)的一萬多個端口,非常不切實際,更是會給運(yùn)行FTP服務(wù)器的主機(jī)帶來嚴(yán)重的安全威脅。
所幸的是,基于IIS7.0建立的FTP服務(wù)器允許將端口號固定在自行指定的一個范圍中,如50000-50005,此時便只需要開放這一小段范圍的端口即可,大大提升了安全性和配置Windows防火墻的效率。如果服務(wù)器上部署的是第三方防火墻,則需要慎重考慮如何設(shè)置使之能安全保障FTP服務(wù)的正常運(yùn)行。
補(bǔ)充閱讀:防火墻主要使用技巧
一、所有的防火墻文件規(guī)則必須更改。
盡管這種方法聽起來很容易,但是由于防火墻沒有內(nèi)置的變動管理流程,因此文件更改對于許多企業(yè)來說都不是最佳的實踐方法。如果防火墻管理員因為突發(fā)情況或者一些其他形式的業(yè)務(wù)中斷做出更改,那么他撞到槍口上的可能性就會比較大。但是如果這種更改抵消了之前的協(xié)議更改,會導(dǎo)致宕機(jī)嗎?這是一個相當(dāng)高發(fā)的狀況。
防火墻管理產(chǎn)品的中央控制臺能全面可視所有的防火墻規(guī)則基礎(chǔ),因此團(tuán)隊的所有成員都必須達(dá)成共識,觀察誰進(jìn)行了何種更改。這樣就能及時發(fā)現(xiàn)并修理故障,讓整個協(xié)議管理更加簡單和高效。
二、以最小的權(quán)限安裝所有的訪問規(guī)則。
另一個常見的安全問題是權(quán)限過度的規(guī)則設(shè)置。防火墻規(guī)則是由三個域構(gòu)成的:即源(IP地址),目的地(網(wǎng)絡(luò)/子網(wǎng)絡(luò))和服務(wù)(應(yīng)用軟件或者其他目的地)。為了確保每個用戶都有足夠的端口來訪問他們所需的系統(tǒng),常用方法是在一個或者更多域內(nèi)指定打來那個的目標(biāo)對象。當(dāng)你出于業(yè)務(wù)持續(xù)性的需要允許大范圍的IP地址來訪問大型企業(yè)的網(wǎng)絡(luò),這些規(guī)則就會變得權(quán)限過度釋放,因此就會增加不安全因素。服務(wù)域的規(guī)則是開放65535個TCP端口的ANY。防火墻管理員真的就意味著為黑客開放了65535個攻擊矢量?
三、根據(jù)法規(guī)協(xié)議和更改需求來校驗每項防火墻的更改。
在防火墻操作中,日常工作都是以尋找問題,修正問題和安裝新系統(tǒng)為中心的。在安裝最新防火墻規(guī)則來解決問題,應(yīng)用新產(chǎn)品和業(yè)務(wù)部門的過程中,我們經(jīng)常會遺忘防火墻也是企業(yè)安全協(xié)議的物理執(zhí)行者。每項規(guī)則都應(yīng)該重新審核來確保它能符合安全協(xié)議和任何法規(guī)協(xié)議的內(nèi)容和精神,而不僅是一篇法律條文。
四、當(dāng)服務(wù)過期后從防火墻規(guī)則中刪除無用的規(guī)則。
規(guī)則膨脹是防火墻經(jīng)常會出現(xiàn)的安全問題,因為多數(shù)運(yùn)作團(tuán)隊都沒有刪除規(guī)則的流程。業(yè)務(wù)部門擅長讓你知道他們了解這些新規(guī)則,卻從來不會讓防火墻團(tuán)隊知道他們不再使用某些服務(wù)了。了解退役的服務(wù)器和網(wǎng)絡(luò)以及應(yīng)用軟件更新周期對于達(dá)成規(guī)則共識是個好的開始。運(yùn)行無用規(guī)則的報表是另外一步。黑客喜歡從來不刪除規(guī)則的防火墻團(tuán)隊。
防火墻對FTP的影響及故障排除分析相關(guān)文章: