教你用Linux 防火墻保護你的ADSL連接
在上一篇筆者介紹了Linux 異構(gòu)網(wǎng)絡(luò)共享ADSL連接方法,對于連接互聯(lián)網(wǎng)上的系統(tǒng),不管是什么情況都要明確一點:網(wǎng)絡(luò)是不安全的。因此,雖然創(chuàng)建一個防火墻并不能保證系統(tǒng)100%安全,但卻是絕對必要的。Linux提供了一個非常優(yōu)秀的防火墻工具—netfilter/iptables。它完全免費、功能強大、使用靈活、可以對流入和流出的信息進(jìn)行細(xì)化控制,且可以在一臺低配置機器上很好地運行。本文將簡單介紹使用netfilter/iptables實現(xiàn)防火墻架設(shè)和Internet連接共享等應(yīng)用。 傳統(tǒng)意義上的防火墻技術(shù)分為三大類,“包過濾”(Packet Filtering)、“應(yīng)用代理”(Application Proxy)和“狀態(tài)檢測”(Stateful Inspection),無論一個防火墻的實現(xiàn)過程多么復(fù)雜,歸根結(jié)底都是在這三種技術(shù)的基礎(chǔ)上進(jìn)行功能擴展的。 Linux內(nèi)核從1.1版本開始,就已經(jīng)具備包過濾功能。在2.0內(nèi)核中,開始采用Ipfwadm來操作內(nèi)核的包過濾規(guī)則。到2.2版本時,Linux內(nèi)核采用了Ipchains來控制內(nèi)核的包過濾規(guī)則。發(fā)展到2.4.x時,Ipchains被一個全新的包過濾管理工具Iptables所替代。新發(fā)布的2.6版內(nèi)核也在安全方面進(jìn)行了改進(jìn)。
因此,無論擁有哪個版本的Linux內(nèi)核,無論選擇哪個版本的Linux來構(gòu)建自己的企業(yè)網(wǎng),都可以利用現(xiàn)有的系統(tǒng)構(gòu)建出一個理想實用的防火墻。2001年Russell完成了其名為netfilter(http://www.netfilter.org)的內(nèi)核框架。這些防火墻軟件套件一般都比其前任有所改進(jìn),表現(xiàn)越來越出眾。netfilter/iptables已經(jīng)包含在了2.4以后的內(nèi)核當(dāng)中,它可以實現(xiàn)防火墻、NAT(網(wǎng)絡(luò)地址翻譯)和數(shù)據(jù)包的分割等功能。netfilter工作在內(nèi)核內(nèi)部,而iptables則是讓用戶定義規(guī)則集的表結(jié)構(gòu)。netfilter/iptables是從ipchains和ipwadfm(IP防火墻管理)演化而來的。
典型的防火墻設(shè)置有兩個網(wǎng)卡:一個流入,一個流出。iptables讀取流入和流出數(shù)據(jù)包的報頭,將它們與規(guī)則集(Ruleset)相比較,將可接受的數(shù)據(jù)包從一個網(wǎng)卡轉(zhuǎn)發(fā)至另一個網(wǎng)卡,對被拒絕的數(shù)據(jù)包,可以丟棄或按照所定義的方式來處理。
通過向防火墻提供有關(guān)對來自某個源地址、到某個目的地或具有特定協(xié)議類型的信息包要做些什么的指令,規(guī)則控制信息包的過濾。通過使用iptables系統(tǒng)提供的特殊命令iptables建立這些規(guī)則,并將其添加到內(nèi)核空間特定信息包過濾表內(nèi)的鏈中。關(guān)于添加、去除、編輯規(guī)則的命令,一般語法如下:
現(xiàn)實中,為了易讀,我們一般都用這種語法。大部分規(guī)則都是按這種語法寫的,因此,如果看到別人寫的規(guī)則,你很可能會發(fā)現(xiàn)用的也是這種語法。Linux 2.4內(nèi)核netfilter內(nèi)建了三個表,其中默認(rèn)表Filter中又包括3個規(guī)則鏈,分別是負(fù)責(zé)外界流入網(wǎng)絡(luò)接口的數(shù)據(jù)過濾的INPUT鏈、負(fù)責(zé)對網(wǎng)絡(luò)接口輸出的數(shù)據(jù)進(jìn)行過濾的OUTPUT鏈,以及負(fù)責(zé)在網(wǎng)絡(luò)接口之間轉(zhuǎn)發(fā)數(shù)據(jù)過濾的FORWARD鏈。下圖是信息包在防火墻的Filter表中的穿越過程。
信息包在Filter表中的穿越過程
這里介紹一個工具軟件,可以幫助你在Linux的GUI圖形用戶界面下快速構(gòu)架一個防火墻。Firestarter 是一個完全的免費軟件,它可以在KDE和GNOME環(huán)境下,它提供圖形界面免去了在生硬的文本環(huán)境下配置防火墻的麻煩。
最新版本Firestarter完全支持中文界面。Firestarter 的作者和開發(fā)者是芬蘭人:Tomas Jounonen 和Paul Drain在http://firestarter.sourceforge.net/ 可以自由下載它的源代碼你還可以使用 majix@sci.f pd@cipherfunk.org 電子郵件和他們聯(lián)系。最新版本是1.03。筆者下載的是它的RPM包,為了方便這里筆者提供它的下載鏈接:
http://jaist.dl.sourceforge.net/sourceforge/firestarter/firestarter-1.0.3-1.i386.rpm #p#
1、系統(tǒng)檢測
由于開發(fā)者Tomas Jounonen和Paul Drain使用C語言和 GTK +(GIMP Tool Kit,GIMP工具包是一個用于創(chuàng)造圖形用戶接口的庫)開發(fā)的,所以安裝前請檢查系統(tǒng)gtk2+模塊的gcc編譯器版本。
# rpm –qa | grep gcc # rpm –qa | grep gtk2+ |
硬件: 中央處理器:兼容 Intel X86處理器Pentium 200 以上 ,32 兆(推薦64兆)內(nèi)存,100兆硬盤空間 ,顯示內(nèi)存4兆。
軟件: 內(nèi)核版本 2.2以上 ,KDE 2.0以上或GNOME 1.2以上,X Window System XFree86 3.6.x 以上,桌面分辨率至少為640×480 ,桌面顏色至少6萬5千色(16位元)。
2、安裝軟件
以根權(quán)限登陸Linux打開一個終端:
# rpm -ivh firestarter-1.0.3-3.i386.rpm |
3、配置軟件
系統(tǒng)會在/usr/bin/firestarter 建立主程序,第一次運行firestarter 需要進(jìn)行簡單的配置:
1) 軟件運行的主界面
如下圖。
軟件配置向?qū)?
首先點擊選項子菜單,進(jìn)行一些簡單配置,主要包括為軟件建立日志文件目錄、設(shè)置防火墻啟動方式、設(shè)置策略。設(shè)置結(jié)束后用鼠標(biāo)點擊“Run firewall wizard”啟動防火墻配置向?qū)А?#p#
2) 設(shè)置網(wǎng)絡(luò)設(shè)備
如下圖。
配置網(wǎng)絡(luò)設(shè)備
如果使用XDSL等寬帶接入的設(shè)備來說選擇網(wǎng)卡的接口即可。如果你使用的是Cable Modem接入網(wǎng)絡(luò)的話,那么在“IP 地址通過DHCP分配”前打鉤。然后用鼠標(biāo)按前進(jìn)按鈕。
3)設(shè)置網(wǎng)絡(luò)連接共享
設(shè)置網(wǎng)絡(luò)連接共享
選擇可以共享互聯(lián)網(wǎng)連接共享的設(shè)備,筆者使用的是eth0。說明:Linux網(wǎng)絡(luò)設(shè)備名稱在配置時被賦予別名,該別名由一個描述性的縮略詞和一個編號組成。某種類型的第一個設(shè)備的編號為 0,其他設(shè)備依次被編號為 1、2、3,等。eth0, eth1 ... 這些是以太網(wǎng)卡接口。它們用于大多數(shù)的以太網(wǎng)卡,包括許多并行端口以太網(wǎng)卡。選擇完成后然后用鼠標(biāo)按前進(jìn)按鈕。#p#
4)啟動防火墻
最后系統(tǒng)會提示你配置結(jié)束。按“保存”按鈕退出向?qū)Ш蠓阑饓印H缦聢D。
按“保存”按鈕退出向?qū)Ш蠓阑饓?
5)配置ICMP包過慮
如下圖。
配置ICMP包過濾
ICMP全稱Internet Control Message Protocol,中文名為因特網(wǎng)控制報文協(xié)議。它工作在OSI的網(wǎng)絡(luò)層,向數(shù)據(jù)通訊中的源主機報告錯誤。ICMP可以實現(xiàn)故障隔離和故障恢復(fù)。我們平時最常用的ICMP應(yīng)用就是通常被稱為Ping的操作。如果你選擇容許ICMP包過濾,這里簡單介紹一下各選項的作用,見下表。
ICMP協(xié)議內(nèi)容簡介
![]() |
表1 |
有嚴(yán)重危害的ICMP類型
除Ping以外,其他類型的ICMP也可以用于掃描網(wǎng)絡(luò)。ICMP的時間戳(Timestamp,類型13) 會產(chǎn)生一個時間戳應(yīng)答(Timestamp Reply,類型14),但是只有在Unix系統(tǒng)中才出現(xiàn)這種情況,微軟的IP堆棧中沒有此項功能。因此,根據(jù)對時間戳請求的應(yīng)答,不僅可以知道目的系統(tǒng)的主機是激活的,而且還能知道目的主機是否采用了微軟的操作系統(tǒng)。
一些安全意識強的組織往往會在防火墻配置中全面過濾入站的ICMP消息,這種情況下ICMP 探測就會失效;然而,大多數(shù)網(wǎng)絡(luò)配置都不會對ICMP 消息進(jìn)行全面過濾,這是因為網(wǎng)絡(luò)管理員經(jīng)常要使用ICMP 消息來解決網(wǎng)絡(luò)的一些故障。ICMP其實很簡單。其初衷是使IP網(wǎng)絡(luò)平滑地工作。對于那些對安全性要求不高的網(wǎng)絡(luò),或者不需要防止端口掃描的網(wǎng)絡(luò),可以不考慮有關(guān)ICMP的問題。然而,對于安全性至關(guān)重要的網(wǎng)絡(luò),則只能讓盡可能少的ICMP類型通過防火墻。在你認(rèn)為需要的ICMP協(xié)議的選項打鉤后用鼠標(biāo)選擇“接受”。下圖是 Firestarter 防火墻工作界面。
Firestarter 防火墻工作界面
#p#
6)定制安全策略
您可以隨時根據(jù)網(wǎng)絡(luò)情況定制Firestarter的安全策略,如下圖。
定制Firestarter的安全策略
通過定制安全策略可以決定那些服務(wù)可以使用。哪些用戶可以使用這些服務(wù)。一般來說我們不要啟動Linux中所有服務(wù),應(yīng)當(dāng)只啟動你必須的服務(wù),有些服務(wù)比如:Finger(查詢帳號) 、Telnet、NFS都是相對不安全的,我們可以用一些安全的程序代替它們,例如:可以使用SSH代替Telnet。對于一些你必須啟動的服務(wù)應(yīng)盡量升級到最新版本。
7)應(yīng)用技巧讓防火墻自動啟動
如果希望Firestarter服務(wù)器每次啟動都能自動運行,可以用ntsysv設(shè)置。以root權(quán)限運行命令:
# ntsysv |
打開如下圖所示的窗口,在Firestarter服務(wù)選項加上*(用空格鍵),然后重新啟動系統(tǒng),這樣系統(tǒng)會啟動Firestarter服務(wù)。
啟動Firestarter服務(wù)器自動加載
總 結(jié):
首先肯定的說Firestarter防火墻是一款非常優(yōu)秀的基于GUI圖形用戶界面下的,完全免費的自由軟件,它為小型Linux網(wǎng)絡(luò)提供了良好的安全服務(wù)。它的使用簡單但功能強大:Firestarter運行時只占用很少的系統(tǒng)資源,它為Linux平臺提供了快捷有效的安全防護功能。并且在系統(tǒng)出現(xiàn)異常情況的時候能及時的向管理員通知及相關(guān)信息、以幫助系統(tǒng)管理員及時的對系統(tǒng)作出相應(yīng)的處理和反應(yīng)。
Fire starter防火墻在程序運行后在系統(tǒng)桌面的任務(wù)條菜單處,易于迅速的啟動和關(guān)閉網(wǎng)絡(luò)中指定的計算機。Firestarter的安裝十分容易,有安裝向?qū)б龑?dǎo),即使是Linux軟件不熟悉的用戶也能通過向?qū)лp松完成防火墻的安裝和設(shè)置。
另外,F(xiàn)irestarter的README文件里面的往釋非常清楚,方便了用戶的修改和重新定義某些參數(shù)。就像Firestarter的開發(fā)者Tomas Jounonen所說的它是一個“All-in-one”的Linux防火墻。總的來說,F(xiàn)lrestarter防火墻適用于單機工作站、SOHO服務(wù)器的系統(tǒng)平臺的安全防護,它能勝任在Linux下一般的系統(tǒng)安全任務(wù)。
【編輯推薦】