| 為何要用linux架設防火牆? |
| 作者:未知 文章来源:www.router.net.cn 点击数: 更新时间:2006-8-24 10:07:31 |
|
|
|
|
|
|
這是蠻多人的疑問,市面上的IP分享器,多的如過江之鯽,為何我們要選擇使用linux,而且是單磁片版的linux?其實沒有一定的答案,以我個人的想法,其實是滿單純的。首先是因為有多的電腦閒置在旁邊,因為台灣的電腦真是太便宜了,升級的速度又快,我想每位電腦使用者手邊都多多少少會2部以上的電腦吧?食之無味,棄之可惜。又把一些重要的裝備都拆到新的電腦上頭,所以就電腦就意味者只剩下主機板加上軟碟機而已,可是不用他又覺得可惜,於是軟碟版的linux正好可以解決沒有硬碟的問題,還有就是瞭解一下,什麼是linux啊?
第二點使用單磁片版linux的原因,是因為很多網友都會反映,市售的IP分享器容易有當機或是效能不彰的問題,當然是一分錢一分或啊,基本上也不能太怪罪於IP分享器,因為IP分享器本身也算是一個非常小的電腦,只是它的CPU等級較低,RAM也比較小,因為成本的關係嘛!總不能賣的很貴。所以在網路流量很大時,IP分享器的小腦袋瓜就無法處理了。這個時候,擁有比較大容量記憶體的,而且CPU等級較高階的電腦,就成了我的選擇。其實市售較高階的IP分享器,也就是將這兩個條件昇級,再加上韌體加強,就成為高貴又貴的硬體伺服器了。
第三點我用單磁片版linux的原因,是因為設定安裝容易,當然,IP分享器更簡單了,但是我的重點不是在比較外在的硬體安裝,而是強調功能條件比較之下,單磁片版linux就顯得功能強,安裝又方便。又不會像一般大型的LINUX套件,如Fedora或是RedHat那樣,需要相當功力的USER才能安裝的。單磁片版linux只需要依照開機後的選項,依照自己的網路條件,一樣一樣的設定好,就可以算是一台功能相當強勁的伺服器了,特別強調是伺服器喔,以一個不完全懂linux的user來說,可以完成的簡單伺服器喔。
第四點我用單磁片版linux的原因,就是它維修容易,為何如此說呢?因為它不需要使用到硬碟,因此沒有硬碟壽命的問題,只要磁碟片不壞,它就會持續服務下去,就算因硬體故障而當機(比如電源不穩定),也只需要重新reset就可以了,因為所有的網路相關參數都放在軟碟機中,只需重新開機讀取就可以了。據我個人經驗,我的伺服器已經使用4年多了,除了電源斷電外,重來沒有當機的紀錄,只要安裝UPS,大概就沒機會當機了。安裝完畢後,可以將所有的相關週邊拔除,如鍵盤螢幕等等,我們可透過網路直接監管,最近它也加進了音效提示的功能,讓無螢幕的情形下,使用者可知道它開機是否已成功。
當然它也是有缺點的,就是體積大,因為是一部電腦。還有就是耗電問題,畢竟是一部電腦,不像IP分享器一般體積小,也較省電。有人說它的介面設定麻煩,其實我不這麼認為,因為它的設定方式,我覺得跟設定IP分享器好像差不多,而且我相信,遲早它的設定介面也會像現在的硬體防火牆那麼方便。
零零總總說了那麼多,只是個人的一點看法啦!我是一個窮人,沒法跟上外面硬體的腳步,所以這種可利用舊電腦,軟體又是免錢的,功能又強大,設定又簡單,成了我的不二首選。而且我個人的看法是,現在的CF轉IDE的介面卡愈來愈便宜,只要我將這個freesco轉到CF卡中,不就也是硬體防火牆了嗎?FREESCO也支援植入硬碟的功能,很多server也都能外掛,因為它有數量不少的package可用,有興趣的網友不妨上網查一下,很多喔!最近的版本0.34版,也有支援寬頻管理咧,等我使用過後在報告心得吧,單磁片版的喔。有些小型的社區,其實不妨用它看看,利用廢電腦就可以了。
說明:
寫在前面:
由於本人對linux並沒有很深的研究,純粹是因為要使用這套FREESCO的緣故,所以在這種動力下,上FREESCO的官方網站討論區將一些見到的資料,做了粗淺的整理。如果有說錯的,或是觀念上有不正確的,還請各位先進不吝指正,讓大家能正確的分享我的一點使用心得。畢竟做學問這種東西,對就是對,錯就是錯,不需要去顧慮不切實際的面子問題。同時我的文章內容也是假設您已經看過我之前所發表的文章,應該已經知道FREESCO的相關設定,如果是新使用者,請看看之前的FREESCO文章吧!如果您是硬體設備商,沒有冒犯之意,本文純粹是以一個窮人使用者立場去寫的,目的是要幫助同樣情況的網友,沒時間DIY者或是金錢允許者,請選購方便快速服務又好的硬體防火牆吧,我也強力推薦這麼做。
防火牆指令概述:
我們都知道,linux本身就是一套強調網路功能強悍的OS系統,除了它本身所建立的檔案結構外,最被大家所津津樂道的,就是它在網路服務上強大功能,除了外掛的伺服系統外,本身也透過一些指令來讓使用者,可以建立屬於個人所需要的網路環境。我們常聽說某網站被入侵或被駭,一定又是防火牆有問題等等的說法,這個防火牆的構成,在linux是可由內建的指令,透過類似批次檔的方式被執行著,在linux應該說成是script檔,中文應該稱為描述檔吧?將我們所預設的防火牆規則,一行一行的寫成像程式的指令序列,交由linux系統去執行它,形成所謂的防火牆。
一般常為我們所接觸的linux防火牆指令,是iptables以及ipchains,但是FREESCO本身所使用的核心,也就是我們稱為kernel的東西,它的版本是2.0.x,與我們目前所常接觸到的linux套件,如Fedora或是Redhat的核心2.4.x或2.6.x的版本不同,因此所使用的防火牆指令也不一樣,2.0.x的kernel所用的防火牆指令是ipfwadm指令,因此我們就必須針對這個指令加以瞭解使用方法才行。
ipfwadm指令說明:
如果有操作過linux系統的網友,應該對linux的指令都會留下深刻的印象,就是它的每個指令都有許多的參數,每種參數都有其不同的意義及功能。而參數後面,可能又細分很多的選項,如此構成一條多功能的指令,有就是說一行指令,可能可以完成非常多的事情。同樣的防火牆指令也是由指令加上不同的功能參數及選項,有許多不同功能的指令列,形成最後的防火牆程式,現在將它的指令格式說明如下:
指令格式:
Usage:ipfwadm -A [direction] command [options] (accounting) Usage:ipfwadm -F command [options] (accounting) Usage:ipfwadm -I command [options] (accounting) Usage:ipfwadm -O command [options] (accounting) Usage:ipfwadm -M [-s | -l] [options] (masquerading entries) Usage:ipfwadm -h (print this help information)
指令參數說明:
-A 指定記錄 (accounting) 之處理方式 -I 指定準備進入主機內的封包 (incoming packets) 之處理方式 -O 指定準備送往主機外的封包 (outgoing packets) 之處理方式 -F 指定封包轉送 (forwarding) 之處理方式 -M 用來進行 IP masquareding 的管理
由於對這些指令,我瞭解的並不多,而且在FREESCO中我主要是針對封包進入或出去的規則,其他的應用,小弟實在是學問不好,想要深入瞭解的網友,只好另尋相關文章介紹了。 所以我只打算介紹 -I 與 -O 參數,它們兩者都具有相同的語法。
這些參數指令(command)常用的有:
-a 在表單後面加進一個或多個處理方式 -i 在表單前面加入一個或多個處理方式 -d 從表單裡面刪除一個或多個處理方式 -l 顯示表單上面的處理方式 -f 刪除表單上面所有的處理方式 -p 指定哪些封包一定被 acceppted (a)、 denied (d) 或 rejected (r) -c 檢查某個封包準備進入時, 其應用哪些處理方式 -h 輔助說明
常用的參數指令選項(options):
-P 指定某個表單上, 處理方式所作用到的通訊協定。這裡的通訊協定, 可以是TCP、 UDP、 ICMP 或 all ( 表示所有的通訊協定 ) 。 -S 指定封包的來源位址。 其格式為: ADDRESS[/MASK] [PORT] 舉例來說, 像這樣123.32.34.0/255.255.255.250 25 便代表從 123.32.34.0 到 123.32.34.5 的 IP 範圍。 -D 指定封包的目的位址, 其格式與 -S 相同 。 -W 指定網路介面。
當然還有許多其他的指令及選項,由於小弟我本身並沒有太多的研究,因此無法提供太多的說明解釋,請網友們見諒!
舉例說明:
我想,舉例大概是最快的方法了,可以讓大家很快的瞭解ipfwadm指令的功用。這裡的例子eth0是對外的網路介面,其他如eth1,eth2等等,都是對內部的網路介面。
範例一:
ipfwadm -O -i accept -P tcp -W eth0 -S 0/0 -D 0/0 110
這個例子的作用是設定防火牆對外允許使用POP封包,每個參數說明如下: -O:表示這個ipfwadm指令是設定對外封包的條件。 -i:insert插入的意思,就是說現在的這個指令被插入目前整個防火牆的序列中的最前面,也就是說,目前的指令它是最先被執行的意思。如果下一個指令也有使用這個i 選項,則以最後使用i 選項的那一個ipfwadm指令被最先執行。所以,當我們事後做防火牆修正時,可以利用這個i 選項,將防火牆指令能在最前面被執行。
accept:允許的意思,就是允許這行ipfwadm指令的設定,這就表示防火牆對於只要是符合目前這一行ipfwadm當中設定條件的封包,是允許通過防火牆的的。
-P:protocol通信協定的意思,這個指令選項後面又可接tcp,udp,icmp及all參數,以本例來說是接tcp參數,有就是說允許tcp封包出去。
-W:指定介面名稱,它的後面接網路介面名稱,這個介面名稱必須是您的linux當中已經為系統所定義好的,以本例來說,eth0是我的對外網路介面。
-S:source來源之意,它的後面接IP位址,以本例來說,0/0是縮寫,應該要寫成0.0.0.0/0,/ 符號後的數字是網路遮罩,在此不做說明,請自行查閱相關的linux文章說明。也就是說這個網路介面接受0.0.0.0/0的來源IP(所有IP)封包,從eth0這個網路介面送出的意思。
-D:distination目的之意,它的後面也是接IP位址,以本例來說,0/0是縮寫,應該要寫成0.0.0.0/0,/ 符號後的數字是網路遮罩,在此不做說明,請自行查閱相關的linux文章說明。它是承接-S的參數,兩者形成來源與目的地IP條件。以本例來說,就是防火牆接受由來源為0/0的IP位址,傳送封包出去,到目的地IP位址為0/0的地方。換句話說就是防火牆內所有的位址,都可以發送port 110的tcp封包到外面的網路中。這個例子的最後面的110這個數字,就是指port 110的意思,而port 110是POP3協定所常用的通信port,就是一般我們使用outlook等離線收發信程式所使用的通信port。
整條指令的解釋就是:從防火牆的規則最前面插入(-i)一條防火牆規則,允許(accept),送出(-O),通訊協定(-P)為tcp的封包,由eth0(-W)這個網路介面所發出,且來源目的(-S)為0/0的IP位址通過,到目的地為0/0的IP的位址,並且目的地的通信port為110的封包通過防火牆。
由上面的例子,我們就可以規範防火牆進出封包的條件,過濾不必要或是不允許的封包,只通過我們所准許通過的,這樣,就可防止網路內因中毒封包竄流,造成網路癱瘓,因為許多像蠕蟲型的病毒,就都是利用對外發送大量的隨機通信port封包,造成網路癱瘓,尤其是像硬體IP分享器這類的設備,非常容易因為處理不了大量的封包而癱瘓當機。
範例二:
ipfwadm -I -i accept -P tcp -W eth0 -S 0/0 -D 0/0 110 這個例子正好是與範例一相反,它是允許相同條件的封包,進入(-I)防火牆內。
在這裡要特別說明一件事,一般來說,我們都會對防火牆出去的封包,設定比較寬鬆的限制,而對封包進入防火牆的條件,設定的條件較為嚴謹。但是基於網路公德心,防止因為自己的防火牆內有人電腦中毒,而導致大量對外發送,會阻礙頻寬的封包,或是會散播病毒的程式。通常也要對防火牆送出的封包加以限制,這個限制方式通常就是利用關閉port的方式來達成。
所以,我們在設定防火牆條件時,輸入與輸出的條件都會像範例一與範例二一般,會成對的設定,如下所示:
ipfwadm -O -i accept -P tcp -W eth0 -S 0/0 -D 0/0 110 ipfwadm -I -i accept -P tcp -W eth0 -S 0/0 -D 0/0 110 也就是從防火牆進跟出的條件,是同時被設定的。一般我們在某個內部區域網路內,有時會發生有些遊戲或是程式無法使用,通常就是因為這個程式或是遊戲的通信port被封鎖所致,而封鎖這port的方式,就是範例中所設定的。這樣,大家是否對這個防火牆指令有一個進一步的瞭解了?
注意事項:
從前面的例子,我都是以單行的指令來解說的,實際上在使用時,這些指令都是由數個指令組合使用,也就是會將這些條列的指令寫成一個script檔,然後由linux系統去讀取,然後依檔案內容去執行相關的設定條件,只要是有發生網路相關的程序,系統都會使用這個防火牆規則檔,去過濾網路封包。
指令當中有一個-i參數,通常它是被利用在臨時增加防火牆規則時使用的,當我們緊急處理一些特殊狀況時,可以利用linux的文字介面,將它拿來先放在一系列防火牆指令的最前面,當我們處理完畢後,可以將這個臨時加入的規則,再寫入script中,因為沒有將它永久寫入防火牆的script中時,當linux系統重新開機後,這個臨時的規則就會消失的,因此最好是將它加入防火牆script中吧。
通常我們在設定防火牆規則時,由於是系統本身是一條一條循序執行規則的。因此,我們在設定規則時,最好的方法就是只通過符合條件的封包,其餘的一律拒絕,這樣才不會有漏失發生。同時要注意,最嚴格的條件要先設定在最前面,較寬鬆的條件要設定在後面,這樣做的原因是,防火牆的規則是逐一往下檢查的,也就是說,只要封包符合這個條件,系統就會立即做出接受或是拒絕,而不會再往下檢查下面的設定條件。因此,如果前面設定的太寬鬆已經讓封包進入,後面就算設定再嚴謹也是沒用的。所以一開始時,最好先設定過濾封包的條件,比如說先讓哪些port的封包可以通過防火牆,逐一檢查完畢後,都沒有符合的條件時,這個封包就會被拒絕忽略掉。
防火牆的設定方式一般有兩種邏輯思考方式,我們可擇一使用。一種邏輯是接受符合設定條件的封包進入,其餘的一率拒絕。另一種邏輯方式是,拒絕不符合設定條件的封包,其餘的一律接受。我所喜歡採用的是第一種方式,比較符合我自己的思維邏輯模式。
FREESCO的防火牆設定規則:前面說了這麼多的有關ipfwadm指令,主要的目的是要讓大家瞭解防火牆的運作方式,並對ipfwadm指令使用方法有個初步瞭解,現在要將它實際的套用在FREESCO中使用。
|
| 文章录入:zyydaolang 责任编辑:zyydaolang |
|
上一篇文章: coyote单个,整段ip流量限制 下一篇文章: FREESCO的架構 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |