在建築行業,“防火牆”是指一種專門設計用來阻止火在建築的不同部分蔓延的牆,後來這個術語傳播到了類似汽車制造業等其他行業,并在20世紀80年代末進入計算機領域。在防火牆的一側是熱鬧且混亂的網際網路,在另一側是你強大但易受攻擊的Web伺服器。
實際上防火牆更像是一扇有時不得不讓某些東西正常通過的防火門,它們監視着所有進出網際網路的電子交通,并根據一系列嚴格的規則來判斷那些是可以通過,那些是不可以通過的。
這篇文章詳細地解釋了它們的工作原理,有效防火牆的不同類型,以及它們所擅長和不太擅長的工作,并且詳細說明了如何通過配置防火牆來保護一般的Web伺服器。
<a href="http://my.oschina.net/u/243337" target="_blank"> </a>
一台電腦就像是一個大的住宅區.每個在Internet上的電腦都擁有一個數字位址——即我們平時所說的IP位址.在每個位址我們有兩個非常大的較高價的電梯大廈樓,每個較高價的電梯大廈樓包含65,535個獨立的較高價的電梯大廈。這些較高價的電梯大廈中大部分是空的,但其中少數部分特别是号碼較低的住着經常溝通的居民,所有的溝通都通過郵件。

一台電腦就像兩棟較高價的電梯大廈樓. 你可以通過10點标示這些較高價的電梯大廈建築.
這兩棟較高價的電梯大廈大樓就稱為TCP和UDP. TCP大樓中的住戶僅接受認證的郵件,他們保證可以回複你,一旦你開始與TCP大樓中的某人開始交換信件,你可以一直看到他們到結束. UDP大樓有點寒酸,這棟大樓的居民隻能回答,如果他們被打擾,通常會這樣做,但這個也不能保證。
<a href="http://my.oschina.net/pes21gamer" target="_blank"> </a>
大樓内每一戶居民都有各自不同的工作。例如,住在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比較可靠但速度上會慢一點。
<a href="http://my.oschina.net/u/947113" target="_blank"> </a>
發送者的位址
在前面的例子中,居住在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連接配接等等這樣的任務。
危險
來自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連接配接逾時 —— 原因可能是因為目的位址那裡沒人在家或者整個途中有防火牆
硬體防火牆
硬體防火牆類似于郵局中受過專業教育訓練的安全專家。她也有同看門人類似的一個清單,詳盡地列出了允許誰向誰發送郵件。她可能僅在你的IP位址處為你提供保護,也肯能同時為許多IP位址甚至整個社群提供保護。她對進進出出的所有郵件中每一個字都要進逐一排查。隻要發現有她不喜歡的内容就會果斷抛棄郵件。此時你就會如上圖所見,僅僅看到一個“連接配接逾時”的消息。
這種是防火牆安全級别最高的情況。信件甚至還沒有到達大門口,被誤送給22号居民的機會根本毫無可能會發生。
當然,你可以在各個不同層次都實施這種保護措施,還可以采用多個硬體防火牆。在本地郵局設立一個硬體防火牆,在本市比較大的分揀辦公室也安裝一個,也可以安裝一個防火牆對進入整個縣、州或國家的所有郵件進行過濾。
請注意,實際上,硬體防火牆隻是一台專門作為防火牆的計算機而已,它同Web伺服器之間進行了實體隔離。防火牆本身依然是運作在計算機上的一個軟體。
無狀态和有狀态的防火牆
經過一段時間以後,他們的工資得以上調,進而成為了有狀态的防火牆。經過教育訓練,他們會對即将發出去的郵件進行差別對待,識别出哪些是回信哪些是全新的郵件。是以,他們的規則清單比以前要精煉得多。對于已經建立通信通道的回信,他們會按照要求給予放行;而那些新發起的發送出去的郵件就會被抛棄。是以,當你發郵件給80号房間時,給你的回信會自動允許通過檢查。但如果是在冬日某個寂寞的夜晚,80号房間突然自行決定開始向外發起發郵件的活動,那麼這些郵件将是無法通過檢查的。
下一小結将介紹過濾檢查中所需的規則清單的形式是怎樣的。
防火牆規則
無論是軟體防火牆還是硬體防火牆,都會有類似的可視化管理工具。市面上的防火牆林林總總,每個防火牆都有自己做事情的方式,但一般他們都會有一些共通的概念,而他們之間的差別主要展現在複雜程度方面。有的防火牆能讓你對其進行完全徹底的控制,但要達到這個效果就需要你有大量的知識并花費相當的時間和精力;還有一些防火牆使用起來很簡單,但在靈活度方面就要遜色不少。
本小結将介紹相關術語,并給出防火牆配置界面的兩個例子。
防火牆用語
下面給出的就是看門人桌子上那張紙上内容大緻的樣子:
發送自任何發送人,任何房間的、發送給TCP大樓的80号房間的郵件 —— 投遞;從80号房間發出的給這些郵件的回信 —— 投遞
發送自位址99.99.99.99,任何房間号的、發送給TCP大樓的,22号房間的郵件 —— 投遞;從22号房間發出的給這些郵件的回信 —— 投遞
任何其它發自或發向TCP大樓的郵件 —— 丢棄
任何其它發自或發向UDP大樓的郵件 —— 丢棄
在看門人收到每封新郵件時,他都将發送者和接收者的位址同上面的每條規則按照上面所列順序進行比較。若同某規則相比對,則按照規則中的指令行事,要麼投遞要麼丢棄手裡的信郵件。
總的效果是,世界上所有人都可以同80号房間的Web伺服器進行通信,但隻有住在99.99.99.99的人是可信任的,隻有他可以同22号房間的SSH伺服器進行通信。所有企圖進行其它通信的郵件都會被丢棄。将上述規則轉化一下,就可以為一個叫做IPTables的、真實的軟體防火牆所用:
規則
協定
方向
類型
遠端IP
遠端端口
伺服器端口
動作
1a
TCP
進
任何
80
運作
1b
出
已建立連接配接
2a
99.99.99.99
22
2b
3
拒絕
4
UDP
然而,所有防火牆都會隐藏新的或者已建好的連接配接這些瑣碎的細節,它們都假定所有對已建立的連接配接的回複是允許通過檢查的,是以僅僅處理所有的新連接配接。基于此,上表可以簡潔很多:
1
允許
2
如果要把這些規則應用于硬體防火牆,那麼就還需要伺服器的IP位址。這是因為硬體防火牆往往是為多個伺服器工作的。在這種情況下,上面的表格就需要源和目的兩項内容,并且不需要方向了。就象這樣:
源IP
源端口
目的IP
目的端口
80.72.139.101
想要允許發出的請求,将源和目的中的内容互相交換,将伺服器的IP位址80.72.139.101填寫在源IP位址欄。還要注意的一點是,遠端和伺服器的協定總是一緻的。
防火牆舉例
有些防火牆會給出如上文所列的表格和表單讓你進行配置,你所需要做的就是填空而已。下面給出的例子,是由Plesk 9.5.4所提供的軟體防火牆工具。Plesk是一個常用的伺服器管理應用程式。要看到下面給出的界面,可點選左側的“子產品(Modules)”,然後按順序再點選“防火牆(Firewall)”,“編輯防火牆配置(Edit Firewall Configuration)”和“添加自定義規則(Add Custom Rule)”。
向Plesk 9.5.4中的防火牆添加一條新規則
該界面中具有上文所列的表格中的大部分内容:方向、表示允許或拒絕的動作、伺服器端口、協定和遠端/源IP位址。前面的那個小表格中用同一條規則(規則3和規則4)同時拒絕了兩個方向的通信。在多數情況下,這需要通過分别選擇是進還是出,建立兩條規則來實作。
這個界面還提供了方向的另外一個選項 ——轉發(forwoarding)。使用端口轉發,可以将郵件從一個端口轉發到另外一個端口。這常用于家庭中的寬帶路由器,通過端口映射,可以讓多台計算機共享一個單個的IP位址。
例如,你的筆記本的本地IP位址也許是192.168.1.10。當你請求網頁(用類似192.168.1.10,TCP,60000這樣的位址送出請求)時,你的郵件先是發送到你家的寬帶路由器,由它将你的郵件放入一個全新的信封中,新信封上寫上了新的發送者位址(比如78.78.78.78.78,TCP,12013),然後将你的請求轉發到它的目的位址(比如80.72.139.101,TCP,80)。當連衣裙得到回信後,它想起12013号房間隻不過是個轉發位址,是以,它将郵件放入一個新信封中後将其轉發給你(位址是192.168.1.10,TCP,60000)。典型的Web伺服器是不需要做端口轉發的,是以防火牆将屏蔽掉所有的轉發動作。
Plesk防火牆隻是在UNIX防火牆IPTables的基礎上添加了個友好的界面。上圖是用指令iptables -L所顯示的目前規則。
防火牆的另一個例子
下面的截屏來自一個共享的硬體防火牆配置工具,該工具由主機提供商UK Fast提供的。要獲得此服務,你需要付額外的費用。作為交換,你可以登入到UK Fast的網站,添加、修改和删除規則:
允許進和出的通信的硬體防火牆配置界面
該界面非常簡單。該防火牆已知你的伺服器的IP位址,它假定所有沒有列在其中的其它所有通信都會被拒絕。你所能做的隻有添加允許通信的端口。
界面中所列端口涉及向内連接配接的伺服器端口以及向外連接配接的遠端端口。就象上文所述一樣,這些規則僅僅處理新連接配接,已經建立好的連接配接将自動通過檢查。在左側的、方向為進(incoming)的第一個規則規定,世界上所有人都可以通路伺服器上的端口80(為Web而瘋狂的居民)。
右側第一個方向為出(outgoing)的規則規定,本伺服器可以向任何其它Web伺服器送出請求。你可能會奇怪你的Web伺服器怎麼會需要這麼做。當然它不是在有空的時候自行浏覽網際網路。對于類似象PayPal即時支付通知這樣的東西,這麼做是必須的,因為你的伺服器需要向PayPal伺服器送出請求以确認PayPal的确接收到了支付操作。同樣,其它向外的規則是為了你的伺服器能夠發送email,收取email賬戶的郵件,進行FTP操作。
在上面的界面中并沒有展現遠端IP位址。在下一小結中将講解,這需要通過點選“管理配置(Admin Config)”單獨進行配置。
子網
UK Fast硬體防火牆有一個單獨的界面供你輸入遠端IP位址。他們預設了一些有限端口(比如SSH的端口22和Plesk的端口8443),隻有下面給出的IP位址才能夠同這些端口進行通信。其它端口(如Web服務的端口80)允許同任何人進行通信。這麼做會損失一些靈活性,但能是配置工作簡化不少。
輸入源IP位址清單,隻有這些位址才能向有限端口建立連接配接。
上面的界面還引入了子網這個概念。直到現在,所有規則處理的都是象99.99.99.99這樣單個的IP位址,但你還可以輸入一個IP位址範圍。
IP位址由大小介于0和255之間的四個數字組成(現在又有一種由六個數字組成的新位址了,但相對還不怎麼常用)。要是能夠輸入象99.99.0-255.0-255這樣的位址範圍就好了,但很不幸,你不能這麼做。有個替代方法,你可以通過輸入一個起始位址,99.99.0。0和一個子網路遮罩255.255.0.0達到相同目的。同樣,位址範圍77.77.77.0-255可以通過輸入77.77.77.0和子網路遮罩255.255.255.0來實作。
所有欄目
在這裡對本小結中讨論過的不同欄目進行一下總結:
規則編号:别忘了規則是按順序進行檢查和使用的
協定:或者是TCP,或者是UDP
方向:進,出,轉發
遠端IP位址:比如77.77.77.0
遠端子網路遮罩:比如255.255.255.0
遠端端口或端口範圍
伺服器的IP位址
伺服器的子網路遮罩
動作:允許或禁止
有時界面裡會有源和目的兩項内容而不是方向,遠端和伺服器。這種情形下,它們與接收郵件的情況完全相同,但是是為發出的郵件預留的。換言之,在接收時遠端等于是源而在發送時遠端等于是目的。
下一節将對端口進行展開讨論。看門人的那張紙太有限了。一個真正的Web伺服器看上去更象是上面所舉的硬體防火牆的例子。
為Web伺服器配置防火牆
端口
這些端口是你可能會碰到的、衆所周知的官方端口。有些防火牆甚至都不顯示這些端口号,隻是給出使用這些端口的服務。
用于
描述
20
FTP(主動模式)
按照FTP連接配接發起人的請求,FTP會以主動或被動這兩種模式運作。兩種模式下,FTP指令都發向端口21。在主動模式下,FTP伺服器從端口20發起一個用于發送資料的新連接配接。在被動模式下,FTP伺服器會接收到一個額外的連接配接請求,被請求的端口是非特權端口(大于等于1024)。是以,要想FTP能正常允許,你或者要允許發自端口20的向外的連接配接,或者要允許向内的來自端口21到大于等于1024的端口的連接配接。
21
FTP
FTP是指檔案傳輸協定。建議通過IP位址進行限制,隻讓可信任的人連接配接到你的FTP伺服器;或者完全關閉FTP服務,僅允許安全的FTP,這種FTP是端口22上的SSH服務的一個組成部分。
SSH
安全外殼(Secure Shell)用于讓人們登入到你的伺服器上并在其上執行指令。在伺服器管理方面這很有用,應該通過IP位址進行限制。
23
Telnet
Telnet是非安全版本的SSH。通常應該完全拒絕這種服務。
25
SMTP
SMTP指的是簡單郵件傳輸協定。它處理兩項任務。作為郵件送出代理(Mail Submission Agent),它負責為伺服器上已建立的所有郵件賬戶接收郵件;作為郵件傳輸代理(Mail Transfer Agent),它還能夠将郵件轉發給别的伺服器。現在的郵件送出 任務往往是由端口587來處理的。郵件傳輸任務往往配置為需要密碼,并且郵件中繼(将郵件轉發給不在本伺服器上郵件賬戶)要完全關閉。關閉是為了阻止垃圾郵件的傳播。該端口需要雙向允許。
UDP和TCP
53
DNS
DNS是域名系統(Domain Name System)的縮寫。它負責把類似www.smashingmagazine.com這樣的域名翻譯為IP位址。DNS資料在伺服器間傳輸時使用TCP協定,而DNS查詢用的是UDP協定。除非你的伺服器是DNS伺服器,否則隻需要允許向外的UDP請求即可。隻有這樣你的伺服器才能夠查詢域名。例如,如果你的網站要做PayPal即時通知,那麼你的Web伺服器可能就要向www.paypal.com發送POST請求,但這首先就需要将域名翻譯為IP位址,是以Web伺服器需要需要從UDP的端口53發起一個請求。作為替代方案,你也可以将翻譯結果放入/etc/hostsfile,這樣一來就不需要發起DNS請求了。
HTTP
這裡是你的Web伺服器。要讓人們浏覽你的網站,就要允許該端口。
110
POP3
POP指的是郵局協定(Post Office Protocol)。如果你的伺服器上建立了email賬戶,該端口允許人們檢查自己的新郵件。
143
IMAP
IMAP是消息通路協定(Internet Message Access Protocol)。這是POP3的一種更加複雜的替代方案,它不僅能儲存發給你的郵件,而且還能讓你建立檔案夾。由建立郵件賬戶的人決定到底是用POP3還是IMAP
443
HTTPS
這是安全Web伺服器的預設端口。安全伺服器需要SSL證書
465
SMTPS
該端口原先是用于安全版的SMTP,現已交由端口25上通常的SMTP進行處理了。
587
該端口用于向伺服器送出email消息的官方端口
3306
MySQL
對來自網際網路的、直接發向你的MySQL資料庫的連接配接進行拒絕或限制,最多隻允許可信任的IP位址進行連接配接。
8443
Plesk
Plesk是一種伺服器管理工具。它以微Web伺服器的方式運作,通過浏覽器即可進行通路。如果你有硬體防火牆或者有一個完全永久的靜态IP位址,你就可以通過IP位址對這種通路進行限制。如果你使用的是Plesk自己的軟體防火牆,一旦你的IP位址發生改變、或者你的辦公室着火燒毀了、或者你需要從别的地方通路Plesk的服務,那麼通過IP位址進行限制就有點冒險了。
10000
Webmin
Webmin是另一個伺服器管理工具。Plesk的警告同樣适用于它。
1024-65535
向外的請求
本文提到的第一種情形就是某人使用Web浏覽器。在這種情形下,用戶端端口号比較大的一個端口會用來同伺服器的端口80建立一個連接配接。如果你的Web伺服器查詢Web頁面(就像PayPal的例子中所示),它也會用自己的端口号比較大的端口發起連接配接。在很多UNIX計算機上,可供使用的範圍設定在/proc/sys/net/ipv4/ip_local_port_range中。這個範圍常常是1024-4099或者32768-61000。
ICMP
n/a
Ping
Ping用于檢查網絡上的某個計算機是否可達。它采用了一種不同的、無端口的協定,叫做網間控制封包協定(Internet Control Message Protocol)。有的防火牆也能讓你對其進行控制。
完整的配置
對于具有Plesk管理界面的、基本的Web和email伺服器,你可以将防火牆配置為:
允許發自任何位址的、向TCP端口25(SMTP)、80(Web伺服器)、110(POP email賬戶)、143(IMAPemail賬戶)、443(安全的Web伺服器)、587(SMTP)發起的所有進入方向的連接配接請求
限制發向TCP端口22(SSH)、8443(Plesk除非你使用Plesk配置防火牆)的所有進入方向的連接配接請求
允許從伺服器任意端口發起的、發向TCP端口25(SMTP)、80(Web)、443(安全的Web)、587(SMTP)和UDP端口53(DNS查詢)的連接配接請求
拒絕所有其它連接配接請求
如果你允許其它的服務,你就需要打開額外的端口。這些服務可能包括自動備份、安全掃描、或者是遠端資料庫通路。
每台電腦都有一個Telnet 用戶端,它允許你通過23号端口通路Telnet 伺服器,運作指令。但 Telnet 用戶端也可以連結其它端口,是以你可以利用它很放便的檢查防火牆。
要使用它,你需要打開一個終端或指令提示符。 在 Mac 的 OS X 系統中,選擇「應用程式」→「附件」并運作「終端」。 在 PC 的 Windows 系統中,選擇 「開始 」→「所有程式」→「附件 」并選擇「指令行提示符」。 如果你在使用 Ubuntu Linux,或是其它 Linux 發行版,你可以在「應用程式」→「附件」中找到。
當終端開啟,試試下面的指令:
<code>1</code>
<code>telnet www.smashingmagazine.com 21</code>
首先,Telnet 将 www.smashingmagazine.com 翻譯成一個IP位址,然後,它會嘗試連接配接到其21端口。若連接配接被拒絕,則意味着對應的 FTP 伺服器沒有運作或在應用程式級上被屏蔽。下面是幾個例子:
使用telnet探測 www.smashingmagazine.com.
21端口(FTP)和25端口(SMTP)拒絕連結。23端口(Telnet)則沒有任何傳回,這意味着它被防火牆屏蔽了。80端口(網絡服務)成功連結。 之後,我可以發送一條 HTTP 指令:
<code>GET / HTTP/1.1</code>
<code>Host: www.smashingmagazine.com</code>
再下面是個空行。本來應該給我 Smashing Magazine 的首頁。但我按下 Ctrl + ] 關閉了連結,并退出了 Telnet。
Mac OS X防火牆配置截圖(UNIX下IpFirewall的圖像界面版)
防火牆在阻止不想要的資料源方面非常不錯。如果你使用防火牆,建議至少要對 FTP 和 SSH 作出限制,使他們僅接受可信任的 IP 位址。從某種意義上來說,這種“要麼允許要麼拒絕”的限制方式是非常籠統的,因為他們并不關心資料的具體内容。
防火牆無法阻止的事情
是以,防火牆無法阻止垃圾郵件,病毒或攻擊。
如果你打開了 SMTP 的 25 端口,Email就可以送到此端口。可能在一個小時内有 10,000 封 Email 在讨論xxx(the finer points of Viagra),在防火牆看來這些 Email 都是合法的,但是某些 Email 中可能包含了可執行檔案,一旦打開了這些檔案你的計算機就會被控制,但是防火牆卻無法察覺這種檔案的存在。
同樣的,所有标準的 Web 伺服器都是将 80 端口或 443 端口打開的,防火牆無區分一個正在通路你的首頁的請求是正常的還是惡意的。可能有某個軟體正在掃瞄你的 Wordpress 安裝資訊以便尋找漏洞,然後放置一個包含了 mini-shell 的特洛伊木馬 PHP 檔案,然後這個檔案通知躲在某個地方的黑客以便将你的伺服器用作拒絕服務攻擊伺服器。
最後,如果有聰明的黑客找到了某個方法可以通過你的 IMAP 的 143 端口發起一個特殊的請求進而獲得伺服器的控制權的話,防火牆連指頭都不會動一下(the firewall won’t lift a finger)。
是以,即使你已經有了防火牆,你仍然需要關注那些垃圾郵件或包含在 Email 中的病毒,你仍然需要用最新的安全更新檔來保持你的伺服器軟體和網站處于更新狀态。
鎖定自己
軟體防火牆有一個額外的陷阱。這是完全有可能把自己鎖你自己的伺服器。上面的例子顯示一個軟體防火牆内的Plesk,通常在端口8443上運作。如果您錯誤地阻塞8443端口和儲存配置,然後你就可以再次登入,并撤消它。這也可能發生,如果你限制的Plesk的IP位址,然後改變你的IP位址。
然後,您可以通過SSH登入并手動找出如何扭轉編輯iptables的規則。如果你還封鎖了SSH,你唯一的辦法是将調用的托管公司。他們可能有實體鍵盤和螢幕連接配接到您的伺服器登入,并删除該規則。
本文全面介紹了有關防火牆的基礎知識,希望能幫你對防火牆的運作原理建立起一個清晰的概念。兩座大型較高價的電梯大廈樓這個類比并非完美,但卻能幫助你對網絡端口世界有個初步的認識。
總而言之,如果有防火牆可用,那就應該用上它。使用軟體防火牆,你就能夠通過指定IP位址來限制對SSH和FTP的通路并屏蔽掉所有對你并沒有用到的其它任何服務的通路;使用硬體防火牆,你就能夠非常可靠的限制住對Plesk或者你所選用的其它的伺服器管理工具的通路。
本文中的所有譯文僅用于學習和交流目的,轉載請務必注明文章譯者、出處、和本文連結