時常有人說,Linux比Windows更安全。但與網絡連接的任何計算機是不可能絕對安全的。
正如我們需要經常注意院子的圍牆是否堅固一樣,對操作系統也需要我們經常維護和強化。在此,我們僅談論幾個用戶可以用來強化系統的大體步驟。
本文重點談的是如何強化的問題,不過在開始強化之前,用戶需要對以下三個問題有一個清醒的認識,一個問題是這個系統用於什麼目的,二是它需要運行哪些軟件,三是用戶需要防護哪些漏洞或威脅。這三個問題依次為因果關系,即前一個問題是後一個問題的原因,後一個問題是前一個的結果。
從零開始 從一個已知的安全狀態開始強化一個系統是完全可能的,但在實際上這種強化也可以從一個“裸體”系統開始。這意味著用戶將擁有對系統盤重新分區的機會,將所有的數據文件與操作系統文件分離開來未嘗不是一個謹慎的安全措施。
下一步是配置一個最小的安裝,當然得讓系統啟動,然後添加必要的能夠完成工作的程序包。這一步很關鍵。為什麼需要最少化安裝呢?原因在於機器中的代碼越少,可被利用的漏洞就會越少:誰也無法利用並不存在的漏洞,是不是?你還需要給操作系統打補丁,並且還得給運行在這個系統上的所有應用程序打補丁。
不過,要注意,如果有人能夠從物理上接近所訪問的機器,他就有可能從光盤或其它媒體啟動計算機,並獲取系統的訪問權。因此,用戶最好配置一下系統的BIOS,限制僅能從硬盤啟動,並且要用一個強健的口令來保護這種設置。
下一步是編譯一下自己的系統內核,這裡還是要強調僅包含那些你需要的部分。一旦你自己定制的系統構建完畢,重新啟動進入內核,那你所擁有內核的被攻擊的可能性將極大地減少。但強化系統的方法不限於此,好戲還在後頭。
減少服務 運行了經過瘦身的系統之後,下一步就是要確保僅運行你需要的服務。到現在為止,用戶已經清除了許多服務,但還有可能有許多服務仍在後台運行。用戶需要在多個地方找到這些服務,如/etc/init.d 和 /etc/rc.d/rc.local等包含多種啟動進程的位置,要檢查由cron所啟動的一切東西。用戶還可以用netstat或Nmap等程序檢查監聽套接字。比如,許多用戶需要禁用的服務可能包括網絡文件系統(samba)、遠程訪問服務等。
當然不能一概而論,如果你確實需要某些服務,就要設法限制它對系統其余部分的潛在破壞性作用,要盡可能讓其在自己的chroot路徑中運行,使其與文件系統的其余部分相分離。
重視許可問題 作為用戶或管理人員,必須要保證任何用戶都不能執行其不必要的程序或打開不必要文件。管理員應當審計整個系統,並將每個文件的許可減少到最小的可行程度。我們的目標是任何人都不能讀取或寫入與其無關的文件。此外,還應當對所有的敏感數據加密。
進一步講,管理員要保證擁有一個安全的root口令,而且知道此口令的人越少越好,只有這樣,才能保障任何人都無法訪問他們不應當訪問的賬戶。還要保障用戶登錄信息的最新,要堅持口令的到期時間等策略問題。此外,清除預先提供的賬戶也是很聰明的做法,或者至少要改變默認的口令。
需要強調的是,安全是一個過程而非一個臨時性的活兒。這就意味著,管理人員應當監視並進一步強化系統,特別是需要監視系統日志,要以盡可能快的速度為系統打補丁。還要關注安全咨訊,在獲知最新的漏洞後,能盡快地應對之。所以本文並不能全面解決Linux安全,而是向用戶展示強化系統的一些可能性。
如果你是一個linux用戶或管理者,應當采取一些步驟使其更安全,但這有可能降低系統效率。所以關鍵是找到一個恰當的平衡點。