作者:楊蔚宇 到目前為止,您安裝了Linux的計算機如果還沒有任何安全措施的話,那我覺得您應該了解一些有關Linux的安全知識了,並且在此基礎上運用本文介紹的方法讓您的Linux平台更安全。當然,我只是根據自己的需求來讓加固Linux平台的,所以不一定能夠完全滿足您的要求,但是我想也應該會有一些幫助。 安全需求 在家裡,我使用的是Red Hat Linux。一般來說,我很少關機,也經常使用這台機器通過寬帶連在互聯網上。也就是說,我的機器一般情況下都處於在線狀態。對於這台計算機的安全性,我有兩點考慮: 1. 我要把那些不想讓別人看見的數據和文檔隱藏起來; 2.不讓不速之客用我的計算機資源。 在我的電腦上,有很多重要的數據。我想大部分人電腦上都有自己認為很重要的文檔和數據。我不想讓除了我之外的任何人讀寫這些文件。此外,我不想讓入侵者使用我的機器來攻擊另外一個目標。如果我發現有人使用我的機器來攻擊別人,我會感到很氣憤。相信大家也會與我有同感。更令人忐忑不安的問題是,有時雖然我們被“黑”,充當了攻擊別人系統的角色,而自己卻蒙在鼓裡。 做好安全計劃 在開始安裝Linux系統時,我就要在內核中配置Iptables。Iptabels被認為是Linux中實現包過濾功能的第四代應用程序。第一代是Linux內核1.1版本所使用的,Alan Cox從BSD Unix中移植過來的ipfw。在Linux 2.0版的內核中,Jos Vos和其它一些程序員對ipfw進行了擴展,並且添加了ipfwadm用戶工具。在Linux2.2版內核中,Russell和Michael Neuling做了一些非常重要的改進。也就是在該內核中,Russell添加了幫助用戶控制過濾規則的ipchains工具。現在,Russell又完成了其名為NetFilter的內核框架。 NetFilter的目的是為用戶提供一個專門用於包過濾的底層結構。並且,用戶和開發人員還可以將其內建在Linux內核中。Iptables是一個內建在NetFilter框架中的模塊。它可以讓用戶訪問內核過濾規劃和命令。如果您了解ipchains,就會發現事實上Iptables和ipchains是非常相似的。 通過對Iptables的配置,我可以阻止任何一個數據包進入或者離開我的機器。這非常重要,因為我的機器24小時在線。有了這個新的保護功能,就使得我的機器時刻都能阻擊來自網絡上的各種攻擊。Iptables的使用和配置並不困難。在此限於篇幅,我就不再討論(讀者可以很容易就在網上找到相關資料)。 接下來要討論的是LIDS(Linux入侵檢測系統)。LIDS以內核補丁的方式存在。LIDS的目的是通過限制對計算機文件和進程的訪問,來提高計算機的安全性。在有人試圖破壞這些限制時,它就會向你報警。LIDS另外一個優點就是它甚至可以限制root賬號的權限。這種限制root賬號權限的方法,在入侵者得到root權限時,可以最大限度地降低損失。我使用LIDS來保護二進制系統文件、/var/log目錄下的日志文件、/etc目錄下的配置文件。我將其標志為Readonly的二進制文件沒有任何用戶,包括root在內,可以對其進行刪改操作。對於日志文件,我將其標識為Append。這樣對於該目錄裡的文件,可以進行寫操作,但是不能修改或者刪除現存的數據。 下一步我要做的就是要盡量減少在機器上運行的服務。在機器上運行的服務越少,別人入侵我的機器的可能性就越小。在缺省情況下,很多Linux發行版都會運行很多常駐程序。就我個人看來,這樣做並不是十分合理的。所以我關閉了我的Telnet、FTP以及所有以“R”字母開頭的常駐程序。這樣,我就可以避免有時候來不及升級或者安裝一些補丁程序而給系統帶來威脅。對於那些我一定要使用的服務,我就會盡可能及時地安裝安全補丁。並且,如果該服務發現了漏洞,而又沒有相關的補丁出現時,我就會暫時關閉該服務,直到有修正補丁出現為止。 一旦盡量減少了計算機上運行的服務數量之後,我就使用“netstat l”命令來進行監聽。這樣做的目的是為了確保我沒有遺漏任何我不需要的服務。事實上,不做任何監聽工作是我們經常容易犯的錯誤。如果監聽到任何我不需要的服務,這時候就可以修正了。 用好安全門 在電腦世界裡,沒有絕對的安全,也就是說你不可能完全杜絕黑客的攻擊。雖然我的計算機還沒有被攻破過,但是我從來不認為它就是100%安全的。在我剛開始使用Linux的頭幾個月裡,幾乎沒有考慮過其安全性。我做的工作基本上都是如何讓這個新的操作系統工作起來、工作得更好等。那時,我把更多的精力投入到了學習一些Linux方面的基本命令以及如何使用系統等,而沒有精力來關注其它事情。在那段時間裡,我受到過很多攻擊。雖然當時並沒有造成致命的傷害,但現在想起來仍心有余悸。 好了,既然你的機器注定將永遠受到攻擊,那麼還是讓我們來看一看如何看好它吧。首先來看一下TCT(The Coroner’s Toolkit,http://www.porcupine.org/forensics/tct.Html),這是一個不錯的工具。它可以運行於Linux、FreeBSD、OpenBSD、Solaris、Unix等平台之上。它能夠針對文件的最後修改、訪問或者改變的時間來進行分析,並且根據數據節點的值提取出文件列表,以進行恢復。你可以在你懷疑有危險的機器上運行它,來進行檢查。運行這個工具後,它會在你的硬盤上收集數據並進行檢查。不過,我感覺這個工具對於新手來說,使用起來過於困難。因此,如果您以前從來沒有使用過TCT,那麼在使用前必須要讀非常多的文檔。還好,在該工具的主頁上,有很多HOWTO文檔的鏈接,所以如果想試一試的朋友可以先看一看這些文檔。如果覺得英文文檔看起來比較費力,可以在Google中查找TCT關鍵字的中文網頁,就可以找到很多相關的中文資料。 安全的信息傳送 缺省的信息傳送是不安全的。這種情況下,你在Internet上傳輸的內容可以被別的人看到。你可以使用traceroute驗證一下看看。 在命令行方式下輸入“traceroute www.google.com”後,你就可以知道在你向Google提交搜索數據包時,到底有多少台機器可以看到你的數據包了。 平時,在我登錄某一站點時,我要確保自己使用的是安全頁——HTTPS。HTTPS使用SSL對傳輸的數據進行加密。如果不這樣做,我所傳輸的數據就很容易被別有用心的機器所竊聽。比如,在使用它們的各種Web服務時,Yahoo就提供了一個安全的登錄和提交的方式。我有一個Yahoo電子郵件賬號。使用該賬號,我可以在任何時候登錄來檢查我的郵件,而不用擔心我的信息會被別人偷窺。 對於遠程管理,我使用ssh和scp兩個程序來代替Telnet和FTP。它們安裝起來非常容易,並且功能也完全可以滿足我的需要。一旦安裝好以後,我可以在Iptables配置中打開相應的機器端口,這樣我就可以從外部連接到機器上了。 這裡盡量簡單地介紹了我是如何使自己的機器變得安全起來的。希望這些經驗能對大家如何安全地用好Linux有所幫助。