老式奔騰機并不只是堵門擱腳的垃圾,它們仍可用來計算!實際上,一個裝有 32MB 內存和 200-400MB 硬盤的的小機器就可以勝任小型辦公網絡防火墻的任務。 Linux 的緊湊版本只含有重要的系統應用程序,而沒有圖形用戶接口和用戶應用程序。安裝了緊湊版本的 Linux 之后,您就可以漂亮地把老機器變成防火墻了。
完成這些只需要一個叫 ipchains 的公開源碼的軟件包,它是由 Paul "Rusty" Russell 提供的。這個軟件具備了許多商業防火墻產品的特征:允許自定義網絡通信量的流向,及哪些訪問者可以獲準進出。
早期的 ipfwadm (IP Firewall Administration) 可以運行在 2.0.X 及更低的版本的 Linux 上。后來 ipchains 取代了 ipfwadm,且能工作在所有 2.1.x 和 2.2.x 版本的 Linux 下。隨著內核升級,它還將升級到 2.3.x 下的 netfilter 或其他更高版本。這么頻繁更新的原因在于,防火墻的數據包過濾是基于內核本身的,因此防火墻軟件就必須亦步亦趨地緊隨內核變動。本文討論了 ipchains 是什么,它能做什么以及如何應用于不同場合。
Ipchains 和防火墻
ipchains 本質上是包過濾器。它檢查到達網絡接口的 IP 包,根據事先定義好的規則進行修改,然后再轉發給其它接口。
每個 IP 包都含有報頭 ( header),里面含有該包的目的地、及如何處理等控制信息(參見下圖)。需要傳送的數據則放在有效段(或稱為包體)中。通常情況下,有效段可以包含更高一級的包。例如,一個 TCP 包就總是包含于 IP 包的有效段中,該 TCP 包擁有自己的報頭和有效段。我們將會看到,ipchains 軟件可以改變 IP 報頭、TCP 報頭、UDP 報頭(未顯示)和 ICMP 報頭內的一些域值.
ipchains 的名稱來自其工作特點。它能夠創建合理過濾步驟,根據用戶定義的規則來處理包。這些步驟被"鏈接"在一起來創建包處理的完整規則體系。這個處理"鏈條"可以與具體的 IP 地址,或者網絡地址相結合。如下所示,系統中可以有很多這樣的"鏈條"來處理每個進入的 IP 包:
運行 ipchains 的機器可以擁有許多網絡接口,每個接口都連接在不同的網絡上。任何可用的防火墻至少應有兩個獨立的接口,一個連到內部網絡,另一個連到外部網絡。數據包從一個接口進入,經由過濾"鏈條" 傳給另一個接口。
最簡單的情況下,ipchains 只執行三種策略:接受、和拒絕。它能接受來自指定 IP 地址或網絡的所有包,否決策略丟棄來自特定地方的所有包。拒絕策略則丟棄來自指定源頭的包,并且通知該源頭其請求的連接被拒絕.
有三類基本的鏈: 輸入鏈、 正向鏈和 輸出鏈 。輸入和輸出鏈分別處理對應于進入和流出接口的包的執行策略。正向鏈直接將通信量傳送給另一機器(在其執行了輸入鏈后)。這里的"另一"機器多數情況下是路由器。ipchains 本身并不希望成為完全的路由引擎,所以它把包轉交給本機上的真正的軟件路由器或者另一節點上的硬件路由器。完整的ipchains引擎處理流程圖如下所示:
防火墻是可以那些能夠操縱輸入數據流和選擇可流出數據流的設備的通稱。在執行過程中,它可能會改變輸入或輸入數據流的狀態,以此隱藏機器的具體信息或防止非法入侵。
ipchains 有兩種運行方式:代理服務器和網絡地址轉換器。前者接收來自受防火墻保護的網絡內部機器的數據流,使用用戶定義的規則對其進行過濾處理,然后發送給外部網絡。總之,內部哪些機器可以訪問外部網絡是由代理服務器控制的,反之亦然。
當您沒有足夠的網絡地址,或者不愿對您的內部網絡使用公共因特網址時,可以采用網絡地址轉換器 (NAT) 或是 IP 屏蔽 (Masqing) 的方法。它能把內部私有的地址轉換成合法的公共地址,即將多個內部地址映射成唯一的外部地址。這樣就不能從外部網絡上直接訪問到內部網絡的某個機器,從而達到保護內部機器的目的。
安裝防火墻
把一臺 linux 機器配置成防火墻不是那么容易的。您應該重新安裝穩定的 Linux 版本(即并非最新最強大的版本,可以試試 2.2.12),而不是轉變已有的 Linux 機器。在安裝過程中,最好只安裝那些最基本的系統組件。除非不得已的情況,一般不要安裝網絡服務器、NFS服務器或者編譯程序等其他組件,甚至不能運行Telnet服務器。如果您必須通過網絡登錄到本機,那就安裝"SSH Secure Shell" (ssh) 遠程登錄系統吧。總之需要記住,防火墻永遠不應該執行除了處理包和網絡安全之外的任務。
您使用的 Linux 中可能附帶著 ipchains 軟件。如果您是偏執狂,可以在確認主要的Linux提供商已經認證其合格后,才使用該版本。
首先要做的事情是確認您的機器上是否已經安裝了防火墻。請查看 /etc/rc.d/init.d 目錄下有沒有類似于 packetfilter、ipchains、pifwadm、firewall 或 proxy 等名字的"開始/關閉"腳本。如果存在這樣的文件,并且有來自 /etc/rc.d/rc2.d 或 /etc/rc.d/rc3.d 的符號連接,那么該機器上很可能已安裝了防火墻,也許它還正運行在沒有任何具體防火墻策略的環境下呢。要驗證這一點,可以敲入如下命令:
如果找不到這個文件,說明防火墻尚未安裝。如果返回值為0,則意味著防火墻已經安裝但沒有運行;返回值為1表示正在運行。
您也可以下載 ipchains 的源碼 來自己編譯。這么的時候,要運行校驗和程序來確認這份源碼是可靠的。(通常采用 命令)。ipchains 網站上列出了校驗和的有效值,您校驗的結果應該和它們完全匹配。當前的 ipchains 版本是 1.3.9。
共3頁: 1 [2] [3] 下一頁 | ||
|