軟體防火牆與硬體防火牆詳解

pythontab發表於2013-02-05

在建築行業,“防火牆”是指一種專門設計用來阻止火在建築的不同部分蔓延的牆,後來這個術語傳播到了類似汽車製造業等其他行業,並在20世紀80年代末進入計算機領域。在防火牆的一側是熱鬧且混亂的網際網路,在另一側是你強大但易受攻擊的Web伺服器。

實際上防火牆更像是一扇有時不得不讓某些東西正常通過的防火門,它們監視著所有進出網際網路的電子交通,並根據一系列嚴格的規則來判斷那些是可以通過,那些是不可以通過的。

這篇文章詳細地解釋了它們的工作原理,有效防火牆的不同型別,以及它們所擅長和不太擅長的工作,並且詳細說明了如何通過配置防火牆來保護一般的Web伺服器。

協議和埠

一臺電腦就像是一個大的住宅區.每個在Internet上的電腦都擁有一個數字地址——即我們平時所說的IP地址.在每個地址我們有兩個非常大的公寓樓,每個公寓樓包含65,535個獨立的公寓。這些公寓中大部分是空的,但其中少數部分特別是號碼較低的住著經常溝通的居民,所有的溝通都通過郵件。

一臺電腦就像兩棟公寓樓. 你可以通過10點標示這些公寓建築.

這兩棟公寓大樓就稱為TCP和UDP. TCP大樓中的住戶僅接受認證的郵件,他們保證可以回覆你,一旦你開始與TCP大樓中的某人開始交換信件,你可以一直看到他們到結束. UDP大樓有點寒酸,這棟大樓的居民只能回答,如果他們被打擾,通常會這樣做,但這個也不能保證。

大樓內每一戶居民都有各自不同的工作。例如,住在TCP街區房號為80的居民負責處理網站查詢。你可以向他們發出一個像“發給我www.smashingmagazine.com的網站主頁”這樣的請求,他們就會及時回覆你併發給你相應的資料。

住在UDP街區房號為53的居民負責DNS服務。他們負責把域名翻譯為IP地址。在這個街區有時信件會丟失,但這也沒關係。UDP街區負責處理的資訊並不是那麼關鍵。丟了之後需要資訊的人總會再重新請求一次。

在該郵局系統中,所有地址都分三部分:計算機的IP地址,街區,和公寓的房間號。例如:80.72.139.101,TCP,80。實際上,街區指的是協議(protocol),而公寓的房間號指的是埠(port)號。TCP是Transmission Control Protocol(傳輸控制協議)的縮寫,而UDP是User Datagram Protocol(使用者資料包協議)的縮寫。TCP和UDP兩者最大的不同在於,TCP要在兩臺計算機間建立和維護一個對話(也就是連線),而UDP不需要。因而TCP比較可靠但速度上會慢一點。

傳送者的地址

在前面的例子中,居住在80.72.139.101, TCP, 80處的提供web服務的那戶居民一般都是在家讀書,就等著大家的來信。他們從不主動發起對話或連線,總是處於接收端。

但是,信件的傳送者也要有個地址。無論你是通過Web瀏覽器還是通過智慧手機瀏覽網頁時,你都會有個由系統分配給你的、住在某房間的助手幫你完成瀏覽過程。這個助手的房間往往是在大樓中靠上面的高層。Web瀏覽器同Web伺服器間進行對話的典型情況大致如下:

來自99.99.99.99,TCP,63454:“親愛的80.72.139.101,TCP,80,據我所知,你負責處理對網站www.smashingmagazine.com的查詢請求。可否請你將/books/page傳送給我?  敬啟,一個Web瀏覽器。”

來自80.72.139.101,TCP,80:“當然沒問題。這就給你:<!DOCTYPE html> <html>…”

來自99.99.99.99,TCP,63454:“謝謝。就此擱筆。再見!“

號碼低於1024的房間要比號碼更大的房間穩定。這些房間有CCTV(譯者注:這個CCTV所指應是閉路電視或遠端監控攝像頭而非那個著名的CCTV),專為提供類似網站或FTP服務等特定任務而預留。而高層的房間特別不穩定,人們總在搬家,一會搬進來一會搬出去;這些房間負責處理類似於請求Web頁面和發起FTP連線等等這樣的任務。

傳送者的地址

在前面的例子中,居住在80.72.139.101, TCP, 80處的提供web服務的那戶居民一般都是在家讀書,就等著大家的來信。他們從不主動發起對話或連線,總是處於接收端。

但是,信件的傳送者也要有個地址。無論你是通過Web瀏覽器還是通過智慧手機瀏覽網頁時,你都會有個由系統分配給你的、住在某房間的助手幫你完成瀏覽過程。這個助手的房間往往是在大樓中靠上面的高層。Web瀏覽器同Web伺服器間進行對話的典型情況大致如下:

來自99.99.99.99,TCP,63454:“親愛的80.72.139.101,TCP,80,據我所知,你負責處理對網站www.smashingmagazine.com的查詢請求。可否請你將/books/page傳送給我?  敬啟,一個Web瀏覽器。”

來自80.72.139.101,TCP,80:“當然沒問題。這就給你:<!DOCTYPE html> <html>…”

來自99.99.99.99,TCP,63454:“謝謝。就此擱筆。再見!“


號碼低於1024的房間要比號碼更大的房間穩定。這些房間有CCTV(譯者注:這個CCTV所指應是閉路電視或遠端監控攝像頭而非那個著名的CCTV),專為提供類似網站或FTP服務等特定任務而預留。而高層的房間特別不穩定,人們總在搬家,一會搬進來一會搬出去;這些房間負責處理類似於請求Web頁面和發起FTP連線等等這樣的任務。

危險

但是,並非所有人都是規規矩矩的。下面就是住在咖啡館上面的愛耍花招的騙子同住在一個易受攻擊的伺服器上的、愛輕信比爾的SSH居民間對話的例子。SSH是一種連線到遠端計算機並在其上執行命令的方法。SSH居民一直住在TCP街區,房間號通常是22號。

來自88.88.88.88,TCP,58123:“親愛的SSH伺服器,我想同你建立一個連線,並以root的身份登入。”

來自80.72.139.101, TCP, 22:“當然沒有問題,你的口令是?”

來自88.88.88.88:“smith”

來自80.72.139.101:“那不對。再試一試吧。”

來自88.88.88.88:“jones”

來自80.72.139.101:“還不對。再試一試吧。”

來自88.88.88.88:“bloggs”

來自80.72.139.101:“太棒了,Root先生你好!很久不見了,你今天想做什麼?”

來自88.88.88.88:“我想我要看一下/etc/passwd這個檔案,裡面有所有使用者名稱?”

來自80.72.139.101:“你要的資訊在這裡...別的還要什麼?”

來自88.88.88.88:“再給我看看所有內容中包含'信用卡'的檔案”

來自80.72.139.101:“不好意思,這需要花點時間。好了,給你。。。”

來自88.88.88.88:“謝謝!就此擱筆,再見!”

軟體防火牆與硬體防火牆詳解

上面所說的SSH對話第一部分:以root身份登入,口令輸錯兩次,檢視了一個檔案。

保護級別

上面描述的伺服器是易受攻擊的,任何人可以通過TCP協議使用22埠向80.72.139.101伺服器傳送信件,如果他們能夠正確猜到密碼,那麼他們就擁有了伺服器和所有伺服器檔案的完全訪問許可權。這一節我們討論四種基本的保護級別,你可以用來讓你的伺服器避免上面的情況發生,並且可以只允許你所信任的人與你的伺服器進行通訊。

儘管SSH只是執行在伺服器上的眾多服務中的一個,但通過它來起步是非常合適的,因為它能提供對伺服器的大部分控制。如果一個黑客入侵了你的FTP或者SMTP伺服器,他們會進行一些破壞,但是通過SSH的話,遭到的破壞會更大。

好的密碼

SSH確實有它自己的內建保護機制,因為它需要使用者名稱和密碼。保衛一個伺服器最基本的也是首要的是選擇一個複雜的並且很難被猜中的密碼。

無論住在22號公寓的居民什麼時候收到一封郵件,他首先會詢問正確的密碼。儘管他是一個值得信任的人,但如果你回答錯誤,那麼他不會給你提供任何幫助。你可以隨便嘗試多少次,不過每隔三次或許你要重新傳送你最初的請求信件,但是他一般不會介意。

拒絕連線

上面談到的SSH會話在一定程度上是不正確的,如果你真的通過SSH請求80.72.139.101(Smashing Magazine的Web伺服器),你會得到如下答覆:

SSH連線被拒絕

這意味著住在80.72.139.101,TCP,22號公寓的居民正在接受郵件,但是立刻被髮送回來了。在他的門上貼了一張紙,這張紙上列出了所有的允許通訊的人員名單。當他收到郵件時,他會對應列表來檢查發件人的地址,如果你不在名單之中,他就會拒絕任何的通訊。但是他會很有禮貌地發個提示說:“不好意思,您的連線被拒絕了!”。

這種型別的保護是由類似UNIX伺服器上的TCP包裝器這樣的軟體來提供的。這種阻止是在應用程式級別使用/etc/hosts.denyand/etc/hosts.allow檔案來實現的。

使用這種型別的阻止保護,特別狡猾的傳送者仍然可以讓住在22號公寓的居民相信他,並開啟信件來閱讀。同樣,依賴個體居民來記錄並執行名單列表。儘管在22號公寓的這個傢伙非常盡職盡責,但是其它公寓的居民並非如此。

軟體防火牆

軟體防火牆就像門房中的看門人,對於所有傳送進來的郵件,他會在將郵件分發給居民前,對這些所有這些郵件進行過濾。看門人辦公桌上放著一張地址列表,他將郵件傳送者的地址和列表中的地址逐一比對。如果列表中沒有你的地址,那麼看門人就會直接將你傳送過來的信件扔進垃圾箱,而且不會給出任何跟蹤資訊或禮貌的道歉,一聲不吭地扔了。看門人同樣也對要傳送出去的郵件進行過濾,過濾的方法是檢視他手裡的列表中允許哪些居民向外部世界傳送郵件。

從技術角度看上去,就象這樣:

SSH連線超時 —— 原因可能是因為目的地址那裡沒人在家或者整個途中有防火牆

這種型別的遮蔽操作發生在作業系統層面。軟體防火牆確保不合格的郵件連目的地址都無法到達。請參見TCP封裝器和軟體防火牆之間的區別瞭解更詳盡的解釋。

硬體防火牆

硬體防火牆類似於郵局中受過專業培訓的安全專家。她也有同看門人類似的一個列表,詳盡地列出了允許誰向誰傳送郵件。她可能僅在你的IP地址處為你提供保護,也肯能同時為許多IP地址甚至整個社群提供保護。她對進進出出的所有郵件中每一個字都要進逐一排查。只要發現有她不喜歡的內容就會果斷拋棄郵件。此時你就會如上圖所見,僅僅看到一個“連線超時”的訊息。

這種是防火牆安全級別最高的情況。信件甚至還沒有到達大門口,被誤送給22號居民的機會根本毫無可能會發生。

當然,你可以在各個不同層次都實施這種保護措施,還可以採用多個硬體防火牆。在本地郵局設立一個硬體防火牆,在本市比較大的分揀辦公室也安裝一個,也可以安裝一個防火牆對進入整個縣、州或國家的所有郵件進行過濾。

請注意,實際上,硬體防火牆只是一臺專門作為防火牆的計算機而已,它同Web伺服器之間進行了物理隔離。防火牆本身依然是執行在計算機上的一個軟體。

無狀態和有狀態的防火牆

看門人和安全專員對進出郵件進行過濾。如果他們是新上崗的,那他們就會有點象無狀態的防火牆,也即,包過濾器(Packet Filter)。無狀態防火牆平等處理所有郵件。當你向80號房間傳送郵件時,80號房間會給你回一封郵件。回信需要通過列表的檢查,傳送給你的郵件只有在80號房間允許向外發出郵件的情況下,才能通過檢查。

經過一段時間以後,他們的工資得以上調,從而成為了有狀態的防火牆。經過培訓,他們會對即將發出去的郵件進行區別對待,識別出哪些是回信哪些是全新的郵件。因此,他們的規則列表比以前要精煉得多。對於已經建立通訊通道的回信,他們會按照要求給予放行;而那些新發起的傳送出去的郵件就會被拋棄。因此,當你發郵件給80號房間時,給你的回信會自動允許通過檢查。但如果是在冬日某個寂寞的夜晚,80號房間突然自行決定開始向外發起發郵件的活動,那麼這些郵件將是無法通過檢查的。


相關文章