不要僅僅因為Linux比其他操作系統更安全就認為你的Linux系統是安全的,開發人員和發行商將來能為系統管理員提供什麼幫助呢?
你知道我已經寫這個專欄有五年的時間了嗎?在這五年之中都發生了些什麼呢,我們看到linux的競爭者已經接受了它,而其Linux已經可以作為一個桌面平台。
在linux安全領域,也有值得注意的進展,Linux的防火牆現在已經非常成熟,大量的嵌入式防火牆設備都基於它,與安全無關的設備也大量地采用了Linux,Linux支持令人吃驚的數量眾多的安全工具,使得它稱為安全審計員和安全顧問最喜愛的系統,此外,Linux已經形成了基於角色的訪問控制操作系統,最著名的就是NSA的SELinux。
但是Linux安全的未來是怎麼樣的呢?我已經寫了許多有關Linux安全的現狀和過去,但是還沒有寫過有關未來的東西,這個月,我將我想到的Linux安全將走向何方以及它應該走向何方做一下總結。
現在有什麼錯誤嗎?
近來顯示大量的人開始關注Linux的安全並沒有比微軟的Windows操作系統安全得多,在開始交火討論之前,讓我們先解釋一下這個觀點,首先,作為個人來說,我認為Linux是比Windows更安全的,我已經在這個專欄的文章中反復重復過,用戶在Linux下比在Windows下更容易控制他們的系統。
問題是Linux用戶,與Windows用戶類似,傾向於將他們的精力集中在讓系統做他們想讓系統做的事情上,他們太信任系統內置或默認的安全設置,那麼,當不可避免的軟件bug出現時,那些bug的影響趨於更廣泛,比起預防來說要做的工作就更多了。
例如:如果我們運行BINDv9提供名稱解析服務,將花一些工作和研究才能使其工作起來,要將其放在一個chroot環境中需要更多的努力,chroot可以將named進程放在文件系統的一個子集中運行,因此,當一個BIND漏洞被發現,大多數BIND用戶可能都經歷過沒有放在chroot環境的痛苦,如果運行的是微軟的名稱解析服務—它沒有BIND那麼多的安全特征,那可能痛苦指數是一樣的。
所有這一切都是要簡單地告訴你大部分linux安全特征和功能並沒有讓Linux用戶受益,結果是,至少按照我朋友所說的進行專業的滲透測試,攻破你普通的Redhat企業版並不比普通的Windows 2003系統困難。
這是不幸的也是讓人非常吃驚的,它的代碼是完全透明的,Linux仍然有類似的軟件bug,一般來說和Windows的數量和頻率幾乎一樣。和Windows一樣,Linux是由成百上千的人開發出來的一大堆復雜的代碼,代碼越多,bug可能就會越多,不是嗎?
我最近接受SearchSecurity.com采訪時談到了一篇關於微軟研究基金指導的安全革新文章,研究結果表明Windows比 Linux更安全,結論主要基於常見安全bug和發行補丁的平均時間,我相信我是正確地評論了研究結果,不考慮Linux的其他安全優勢,如定制能力和軟件包的選擇,換句話說,我感覺這個研究更多的是比較默認安裝情景,而不考慮每個操作系統被它的用戶進行安全加固的因素。
但是我考慮得更多,我更擔心或許一個平台的安全隱患是不能統計的,除非大多數系統運行的平台實際上觸發了隱患,嚴格來說這不是一個終端用戶行為的作用,我也不會指責系統管理員,因為我在後面會詳述,我想linux開發人員和發行商必需繼續想出讓安全特征更普通、透明和更容易配置和使用的方法,順便說一下,因為我正在比較linux和windows,公平起見我應該指出Windows也有許多安全特征,但用戶也很少使用它們。
好,Linux和Windwos在默認情況下它們都不安全,在軟件bug和安全補丁兩個都不相上下。
兩個操作系統都是使用簡單的任意訪問控制模式來進行安全設置,在這個模式下,一個超級用戶賬號—在linux下是root,在windows下是Administrator—擁有控制全部系統的權力,包括其他用戶的文件,在這兩個操作系統中,組成員可以被用來創建不同等級的訪問,比如說, root可以進行多種授權,實際上,在大多數系統上你不得不作為特權用戶登陸或臨時變成那個用戶為了完成重要的事情。
結果,任何用特權用戶運行的進程能完全控制linux或windwos系統,但是,我是作為非特權用戶登陸配置我重要的後台進程的,這些後台進程出現了bug是不會影響到整個系統的。但是其他軟件的bug可能使得它從一個非root進程升級它的權限,例如:假設你已經獲得了一個運行Apache 的web服務器,一天一個攻擊者控制攻擊程序攻擊一個沒打補丁的Apache緩沖區溢出漏洞,結果是攻擊者在你的服務器上獲得了一個shell會話,從這一點來說,攻擊者正作為www運行,因為Apache是作為www運行的,假設這個系統還有一個未打補丁的內核漏洞,那將導致本地權限提升。
系統管理員可能已經知道了這個漏洞,但是補丁還沒有出來,畢竟,嚴格地說是一個本地漏洞,除你之外沒有人在這個系統上有shell權限,誰想在給內核打補丁後不得不重新啟動呢?但是現在一個遠程攻擊者有了一個本地shell訪問權限,如果他成功地利用了這個內核漏洞,他就是root了,這就是常見的入侵場景,但是使用了root-takes-all安全模塊後不用再擔心這個了。
這就是linux安全的現狀,保護linux需要我們花費相當多的努力利用復雜的安全特征,這些復雜的特征默認情況下往往沒有啟用,要保持所有補丁都是最新的。我們在一個好的公司裡:大多數使用現代操作系統它們擁有相同的局限和挑戰。
強制訪問控制
我已經提到在linux、UNIX和windows上的訪問控制或文件權限是任意的,這就是一個弱的安全模塊,那麼,SELinux怎麼養呢? 它使用基於角色的訪問控制(RBAC)和類型增強(TE),它們兩個都是強制訪問控制的實例,是的,的確,它就是這樣。
但是我擔心這或許不是linux安全的未來,原因是SELinux不是當前linux安全的重要組成部分。
RBAC限制用戶的行為和對系統資源的訪問,基於仔細定義的規則,這些規則比常見的UNIX組機制相似但更深遠,類似地,類型增強限制進程的活動,基於它們預先定義的操作域,RBAC和TE對網絡的影響是創建將用戶和進程操作分開的豎井(我的術語),嚴格地限制豎井之間的交互。
這是一個非常優雅的有效的安全模型,但是,對於大多數人們來說,RBAC、TE和其他強制訪問控制太復雜,很難管理。大多數人看來, SELinux和類似的操作系統命中注定只能用於某些特定領域:操作系統對於需要它的人來說非常有用但注定不能被廣泛接受。不管是贊美SELinux的安全架構還是對RBAC原理的迷戀,我認為強制訪問控制本身並不是Linux安全的革命。
底層管理程序和虛擬機
如果RBAC和TE事實證明太難以使用不能很好地在操作系統層區分安全破壞,底層管理程序和虛擬機(vm)可能在一個更高層次實現這個目標,我們已經熟悉虛擬機處於兩個不同的上下文中:運行時虛擬環境(就象那些使用java的程序)和虛擬平台(如Vmware、plex86和 VirtualPC,它運行你在一個虛擬的硬件環境中運行整個操作系統)。
java虛擬機被設計成有特殊的安全特征,最值得注意的就是java沙箱,通常,java安全來自於java小程序運行時與真實的操作系統資源是隔開的,每一個事情都是通過java虛擬機完成的,除了一個好的安全模型之外,對於程序員和最終用戶在使用上也相對簡單安全些,正是因為這些原因 java已經受到普遍應用。
底層管理程序隔離運行在相同硬件上的虛擬機,限制它們交互和防止安全破壞,IBM已經為底層管理程序創建了一個叫做sHype的安全架構,一個開源的底層管理程序/虛擬機項目—叫做Xen—到現在也是可用的了。
底層管理程序的目的是為了防止一個虛擬機與其他運行在同一硬件上的虛擬機發生沖突,例如:獨占共享資源,有一些智能管理系統在這個層次已經做得很強大了,或許還有一些潛在的隱患,至少,增加了傳統的入侵檢測系統(IDS)檢查系統洩密的復雜性。
強制訪問控制和底層管理程序/虛擬機不是相互排斥的,一方面,我的主張是,強化朋友和伙伴對安全分析的重視,底層管理程序比MAC在linux 安全未來的發展更具有潛力,但是另一方面,這兩者可以結合起來使用,設想一下一個大型的、強大的服務器系統運行幾個由底層管理程序控制的虛擬機的情景,一個VM能運行在一個通用的操作系統上,如linux,提供web服務,另一個VM為敏感信息提供數據庫服務,它們都能運行在一個基於MAC的操作系統上,如SELinux,兩個VM都能從強制安全控制受益,使用SELinux能提供一層額外的安全保護。
基於異常的入侵檢測和防病毒系統
如MAC和底層管理程序目前已經生根發芽了,但是將來可能還會出現更大的影響力的技術:如基於異常的入侵檢測系統。基於不規則的IDS很簡單:它包括創建一個正常網絡或系統活動的基線,以及在任何突發意外或有反常活動被檢查到時發送警告。
基於特征的系統的致命弱點是如果攻擊方式是最新的,那麼在你的IDS的特征數據庫中就要有與之對應的特征,如果沒有就檢測不到。
使用基於異常的IDS,與之相反,任何新的攻擊方式只要不是正常行為都能被檢查到,IDS管理員必須訓練和周期地重新訓練IDS系統,目的是創建一個正常行為的基線,這會導致一段時間內頻繁地出現虛報現象,直到這個基線被調試好為止。
1999年我出席了由Marcus Ranum主持的一個講座,他提到了基於異常的系統是IDS未來的發展方向,象這樣的產品已經可用,如來自Lancope和Arbor Network的產品,但是我仍然希望有人能想出如何才能開發出便宜的易用的東西,這可能導致一類網絡底層管理程序增加同樣的智能到網絡上,無論是虛擬還是真實機器的構成,底層管理需都要借用虛擬平台。
順便說一下,病毒掃描程序也需要從異常檢測技術(如IDS一樣)受益,這個觀點現在已經被大多數病毒掃描程序證實,它們主要依賴於病毒特征的匹配,盡管如此還是要遭受大量的病毒/木馬/蠕蟲的爆發,目前基於病毒特征匹配的殺毒工具很明顯基本上沒什麼效果了。
結論
前面這些就是我想到的linux安全的未來,同時,繼續保持使用這個專欄中提到的技術:防火牆、病毒掃描程序、自動補丁/升級工具、VPN和特殊應用程序安全控制如chroot以及審核跟蹤。
那麼,再見了,本專欄的文章全部結束,我將集中精力在其他新鮮事物上,我將繼續我安全編輯的角色,將一如既往地支持Linux journal,給大家帶來一些安全領域的內容