萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> 用iptable來提高網絡安全

用iptable來提高網絡安全

防火牆基礎 每一位Linux的新用戶都會在某種程度上開始考慮在這以新的特殊的操作系統上安裝防火牆系統,最終,每個人都遇到了iptable的概念,在早期,用戶可能並不知道iptable是什麼意思,甚至沒有聽到過這個術語,這一實事令人非常失望,要知道有效的iptable管理對於Linux網絡環境的安全是至關重要的。 在下文中,我將假設您曾聽說過防火牆這個詞,並且對防火牆與計算機與網絡的關系有些模糊的認識,簡而言之,防火牆提供並強制實現了允許與拒絕通過某些特定端口對特定網絡上的計算機進行訪問的規則,對大多數Windows用戶而言,提到防火牆時,他們往往會想到Windows防火牆、ZoneAlarm、諾頓防火牆或者他們會認為是一個“硬件防火牆”,比如很多可以從Circuit City或是Best Buy等地方買到的低廉的路由器設備。 Windows防火牆和ZoneAlarm(還有很多其他產品)有時被稱作“軟件防火牆”,事實上,它們和硬件防火牆在概念上有一些區別,從實際的角度看,它們在概念上最大的不同是其所提供的安全程度的差別。因為軟件防火牆位於本地系統,它提供的是減弱了的安全性:當未經授權的訪問觸及到軟件防火牆時,它已經觸及了軟件防火牆所要保護的系統,當然,這並不是說您不應該使用這樣的軟件防火牆,而是說它們僅僅是一個額外的安全層,如果使用得當,它可以提高你網絡的整體安全,但您永遠不要用軟件防火牆來替代獨立的硬件防火牆。 作為防火牆來講,Windows防火牆和ZoneAlarm的質量都很低,即使ZoneAlarm Pro版(比免費版本的要好很多,並且令人難以置信地優於Windows XP系統中有著深深的漏洞的Windows防火牆)也不能算是一個強大的防火牆,諾頓防火牆在某些方面比上述的產品要好,比如它能夠提供更佳的安全性,但在某些方面又比較差,比如它難以進行配置,掩藏了它所做的工作,這比ZoneAlarm還要差(但和Windows防火牆是相同的),通常,諾頓防火牆可能會把很多東西攪在一起而沒有給用戶任何的提示,除了“哦,這可能又是諾頓搞的”。 總而言之,這些運行在Windows系統上的主流防火牆軟件的主要問題在於它們沒有運行在足夠低的層次來提供真正有意義的安全,還有其他一些基於Windows系統的防火牆軟件提供了更為基礎的防火牆功能,它們使用Windows核心Socket的API,但是Windows操作系統所設計和驅動的這些API提供了潛在的“洩漏”,所以即使是這些基於Windows Socket層的防火牆(比如iSafer Winsock Firewall)也可以被黑客通過聰明的辦法解決,這主要依賴於您在網絡連接中所使用的一系列硬件和驅動程序等。 最後,這些基於Windows系統的防火牆的問題主要在於這些位於操作系統上層的軟件試圖讓操作系統在控制網絡信息包之前放棄對這些信息的控制,這樣才可以對信息流進行有效過濾。 免費的UNIX防火牆 免費版本的UNIX擁有更好的包過濾模型,例如在Linux有netfilter項目,netfilter工作在整合了操作系統內核的網絡通信過濾上,負責在netfilter中實施與執行的控制規則的管理系統被稱作iptable;在OpenBSD操作系統中也有類似的機制,被稱作pf,在iptable和pf的相互比較中,都有許多被引用過的優點與缺點。 無論如何,iptable和pf作為防火牆系統來講都極其出色,盡管我沒有做過詳盡的調查,但在零售電子產品的市場中至少有一半的硬件防火牆實際上運行著嵌入了Linux內核與netfilter的系統,有些運行著iptable,有些則運行著替代iptable的古怪的混合事物,這樣做讓所有的事情的工作方式與種不同,也許是為了阻止人們對在幕後工作的路由器於防火牆設備施加更多的控制。不管怎樣,如果您購買了路由器/防火牆設備,您就有了合理的機會運行iptable作為防火牆,即使您從沒在任何設備上安裝過Linux。 由於Linux(和其他免費版本的UNIX)的開放式與模塊化設計,與內核集成的包過濾功能比較容易實現,並且在近幾年中得以不斷提高,因此,這促成了防火牆功能與這些操作系統的網絡界面之間的“聯姻”,在理論上,這基本上也提供了一個難以滲透的網絡模型。 當然,在理論上,理論和實踐是相同的,但是,在實踐中它們是不同的。在實踐中,您能從這種安全模型中獲得的安全取決於您有效定義防火牆規則以及過濾規則管理系統的靈活性與功能性,比如在我們討論的環境中,就是iptable。 iptable的前任被稱作ipchain,迄今為止,它是與iptable最相似的,區別在於ipchain的配置和管理要比iptable復雜一些,而且,ipchain是沒有狀態的,而iptable是有狀態的。這意味著iptable可以根據當前網絡通信的運行狀態來實施防火牆規則:例如,規則可以根據某一特定端口的數據流量來部署,而不止是簡單地封鎖這一端口。這使得iptable在確保系統安全方面比ipchain更加有用。更有趣的是,ZoneAlarm在很少的情況下也是有狀態的,但它的這種狀態在很大程度上是無法配置的,,因此其狀態操作的好處可以被自動腳本繞過,如果寫腳本的人要知道他或她在做什麼。 iptable基礎 無論您在外部使用的是哪種防火牆,對於給定的機器在適當的位置進行恰當的iptable配置總是一個好主意。根據用途的不同,每一個單獨的機器可能會有不同的包過濾需求,因此,外部防火牆設備的配置應該最大程度上允許本地系統去做其所需要做的事情,同時,每個單獨的機器也應該能在最大程度上拒絕其僥幸的可能,而不需犧牲其關鍵功能。 當您開始安裝一台Linux機器的時候,它可能已經有了某些形式的iptable配置。在某些Linux的發布版本中,可能會包含好幾頁長的復雜規則,設計這些規則的目的在於讓用戶使用上百個應用軟件於服務,而用戶可能根本就不會碰它們;這就是想的太多的發布版本這些年所做的,比如Mandrake。最小化的系統有一個趨勢,就是將所有的設置都設為“允許”,給出了極端簡單但是本質上沒有意義的配置,這樣的配置假設用戶會對配置進行改動,這樣做其實等同與安裝了安全軟件而根本沒有進行任何設置,實際上,想的太多的方式也並沒有比不進行配置的安全方式更有效。 有一些用戶界面工具可以在更高的層面、更抽象並以更“友好”的方式來管理您的系統安全配置,這樣,您就不必針對單個表格的定義和規則管理命令來對iptable進行手動配置了,您可以通讀幫助頁面來完整地了解如何直接配置iptable,這只需要簡單的在命令行輸入“man iptables”即可。 另一方面,這些用戶界面的防火牆管理工具,包括了支持CLI的工具,比如Bastille,和帶有漂亮顏色與可以點擊的按鈕的GUI工具,比如KDE的Guarddog。基於浏覽器界面的服務器管理系統Webmin也具備iptable的管理能力。甚至有些Linux的發布版本的整個目的就是為了提供一個iptable的GUI前台、一定的配置功能、合理健全的默認配置、路由服務配置界面的整合以及其它常用的網絡防火牆設備的功能。 我發現如果提供更多的相關知識可以在管理網絡與系統安全的iptable方面具備更好的能力,這些基礎知識的任務在於讓CLI iptable的管理更加簡單和容易,這樣您可以更好的理解這篇文章的內容。 簡單iptable管理 當您管理一台供私人使用的電腦時,您可能要做一些以前從沒有做過的事情,它將幫助您實現一步一步完成的系統,這樣事情就變得簡單和容易一些了,在您繼續學習的過程中,擁有這樣的系統將幫助您學習在初試設置的基礎上進行提高,也許最重要的是您要知道如果有些事情攪在一起了,如何撤銷這種損害。 由於這些原因,這篇簡要指南將集中在通過三種簡便有效的命令與一個您選擇的文本編輯器對iptable的管理。這些命令是iptables、iptables-save和iptables-restore,對於文本編輯器的選擇,我最喜歡的是vim,您可以按個人的喜好選擇。 當您開始管理一個含有很多用戶的網絡時(對於“很多”,我指的是至少超過五個用戶),您開始需要通過自動操作來減少工作量,同時減少在多個計算機上的重復操作。一個標准的iptable配置可以照原樣被部署在您網絡中所有的工作站上,這是網絡管理中很重要的一部分工作,這可以在實現操作環境規范中安全性與管理性的同時,減少您花在配置每一台機器接入網絡的時間。 這還包括很多原因:標准配置的簡單部署、簡單執行、公司安全策略的定義,以及集中式的防火牆配置測試等等。正由於這些原因,這篇指南將集中在使用iptables、iptables-save和iptables-restore命令對iptable進行管理,當然,還有一個您自己選擇的文本編輯器。 備份 當然,您所要做的第一件事情就是備份您原有的iptable配置,這樣當您今後遇到麻煩的時候就可以簡單地還原它了。備份的工作非常簡單也不需要太多思考,但需要您做出一些決定,您可以在命令行中通過“iptables –L”命令來看一下當前的iptable配置,但這一命令並沒有提供當前配置的太多的信息,如果為了今後重復使用而對現有配置進行備份,您需要使用iptables-save命令,輸入“iptables-save”,不需要任何參數,輸出的結果將顯示netfilter在系統中運行時的iptable規則,這些正是我們所要存儲的數據。 您所要做出的第一個決定是在什麼地方存儲您的iptable配置文件,一種選擇是在很多使用說明中所建議的:在/var/lib/iptables目錄中使用(或創建)一個目錄來存儲您的配置文件,另一種方法:既然在配置iptable時您是根用戶(root user),那就可以存儲在/root目錄或任何一個子目錄中。 在其他的情況下,您一定要確認您選擇的目錄路徑和文件名不會模糊不清使您會忘記它們或忘記如何找到它們。如果您將它們存儲在明為iptable的目錄中,那麼將原有的iptable配置存儲為saved.cfg就足夠了,如果不是的話,您可以將它存儲為iptables.saved,如果您需要使用三個字母的擴展名,或許您可以用iptables.bak的名字。 假設您要將文件存儲在/var/lib/iptables/saved.cfg,那麼您備份現有配置的方法如下
copyright © 萬盛學電腦網 all rights reserved