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