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


