Linux與Windows的安全性比較

  安全問題對於it管理員來說是需要長期關注的。主管們需要一套框架來對作業系統的安全性進行合理的評估,包括:基本安全、網路安全和協定,套用協定、發布與操作、確信度、可信計算、開放標準。在本文中,我們將按照這七個類別比較微軟windows和linux的安全性。最終的定性結論是:目前為止,linux提供了相對於windows更好的安全性能,只有一個方面例外(確信度)。

無論按照什麼標準對windows和linux進行評估,都存在一定的問題:每個作業系統都不止一個版本。微軟的作業系統有windows98、windows nt、 windows 2000、 windows 2003 server和windows ce,而linux的發行版由於核心(基於2.2、2.4、2.6)的不同和軟體包的不同也有較大的差異。我們本文所使用的作業系統,都是目前的技術而不是那些"古老"的解決方案。

用戶需要記住:linux和windows在設計上就存在哲學性的區別。windows作業系統傾向於將更多的功能集成到作業系統內部,並將程式與核心相結合;而linux不同於windows,它的核心空間與用戶空間有明顯的界限。根據設計架構的不同,兩者都可以使作業系統更加安全。

linux和windows安全性的基本改變

對於用戶來說,linux和windows的不斷更新引發了兩者之間的競爭。用戶可以有自己喜歡的系統,同時也在關注競爭的發展。微軟的主動性似乎更高一些――這是由於業界"冷嘲熱諷"的"激勵"與linux的不斷發展。微軟將在下幾個月對windows安全進行改觀,屆時微軟會發布windows xp的service pack2。這一服務包增強了windows的安全性,關閉了原先默認開放的許多服務,也提供了新的補丁管理工具,例如:為了避免受到過多無用的信息,警告服務和信使服務都被關閉。大多數情況下,關閉這些特性對於增強系統安全性是有好處的,不過很難在安全性與軟體的功能性、靈活性之間作出折衷。

最顯著的表現是:微軟更加關注改進可用性的同時增強系統的安全性。比如:2003年許多針對微軟的漏洞攻擊程式都使用執行檔作為電子郵件的附屬檔案(例如mydoom)。service pack2包括一個附屬檔案執行服務,為outlook/exchange、 windows messenger和internet explorer提供了統一的環境。這樣就能降低用戶運行執行檔時感染病毒或者蠕蟲的威脅性。另外,禁止數據頁的可執行性也會限制潛在的緩衝區溢出的威脅。不過,微軟在service pack2中並沒有修改windows有問題的架構以及安全傳輸的部分,而是將這部分重擔交給了用戶。

微軟的重點顯然是支持應用程式的安全性。service pack2中增強的許多方面都是以outlook/exchange和internet explorer作為對象的。例如:internet explorer中有一個智慧型的mime類型檢查,會對目標的內容類型進行檢查,用戶可以獲悉該內容中是否存在潛在的有害程式。不過這一軟體是不是能將病毒與同事的電子數據表區分開來呢?

service pack2的另一個新特性是能夠卸載瀏覽器的多餘外掛程式,這需要終端用戶檢查並判斷需要卸載哪些外掛程式。outlook/exchange可以預覽電子郵件訊息,因此用戶可以在打開之前就將電子郵件刪除。另一個套用安全的增強,防火牆在網路協定棧之前啟動。對於軟體開發者來說,遠方過程調用中許可權的改變,使得安全性差的代碼難以工作正常。

service pack2也為windows用戶提供了許多華麗的新特性,但是問題仍然存在:這些特性會不會對管理員甚至是終端用戶造成負擔?是不是在增加了windows作業系統代碼安全性的同時讓系統變得更加複雜?

開放原始碼、共享原始碼

linux和windows對於代碼透明度這一哲學問題上是完全不同的。linux符合gnu通用公用許可證,用戶可以拷貝、複製並分發原始碼。windows使用的是封閉原始碼,因此微軟的安全方法被稱為"通過隱藏來保證安全"。2001年,微軟為了回響客戶與共享原始碼計畫的要求,提供了對windows原始碼的訪問權。現在,共享原始碼計畫有一百萬的參與者,可以訪問的原始碼包括windows2000、windowsxp、windows server2003、windows ce 3.0、windows ce 、c#/cli實現和asp.net與visual studio.net。共享原始碼計畫許可證的對象包括公司用戶、政府、合作者、學術機構與個人。

微軟的共享原始碼計畫政策屬於"可看但不可修改",例外的情況是windows ce共享原始碼許可證計畫。對於公司來說,可以將基於windows ce的設備和解決方案推向市場。這是微軟共享原始碼計畫下,源設備製造商(oem)、半導體提供商、系統集成商可以完全訪問windows ce原始碼的唯一項目。所有許可證持有者都有對原始碼的完全訪問權,當然可以修改代碼,但只有oem才能發布對基於wince設備的修改。所有其他的共享原始碼許可證持有者,如果要訪問該項目不允許的原始碼,需要向redmond.wash的微軟總部請示。

某些用戶認為共享原始碼計畫對於調試程式會有幫助,微軟要求編譯的時候必須在微軟總部,這不得不說是一個很大的限制。儘管微軟想盡力增加透明,如果無法編譯,就很難確定原始碼在真實的it環境中是否能正常工作。限制用戶修改並編譯windows的原始碼,降低了人們訪問windows共享原始碼並尋找安全漏洞的熱情。

數據中心和桌面下linux的安全收益

在未來的12個月裡,linux將加強在數據中心的份額,並試圖衝擊微軟在桌面上的壟斷。這很大程度上是受益於linux2.6版核心的新特性與新功能。有了linux v2.6,安全框架現在已經模組化了。在這種模型下,linux核心的所有方面都提供了細粒度的用戶訪問控制,而以前的版本的核心允許超級用戶完全控制。現在的實現仍然支持root完全訪問系統,但完全可以創建一個不遵循該模型的liinux系統。

linux v2.6核心的一個主要變化,就是新增的linux安全模組(lsm),用戶不需要打核心補丁就能為linux增加更多的安全機制。新版核心,在lsm上建立了多個訪問控制機制,其中包括美國國安局(nsa)的securiy enhanced linux(selinux)。由於國安局對作業系統安全與強制訪問控制的興趣,產生了selinux。國安局的研究人員正在開發linux的安全模組,可以支持2.6核心的類型加強、基於腳色的訪問控制、多層次安全。selinux使用了命為"域類型強制"的安全模型,可以將應用程式互相隔離,同時也與基本的作業系統隔離,從而限制入侵後程式或者網路服務造成的影響。

linux的2.6核心中已經加入了對selinux的細粒度布爾值標籤的支持,其他的廠商也開始利用國安局的selinux。例如,immunix提供了一些列產品,包括stackguard和子域stackguard模組,可以配置進程只使用某些系統調用。redhat聲稱selinux將在redhat企業伺服器4.0的安全架構上起重要的作用。

今天,linux的核心中已經有一個功能強大、靈活的強制訪問控制子系統。這個系統強制隔離有機密和完整性要求的數據,因此任何潛在的破壞,即時是由超級用戶進程所造成的,都被linux系統限制起來了。

linux v2.6還提供了對加密安全的支持,包括了ipsec使用的加密api。這樣,在網路和存儲加密時就可以使用多種算法(例如:sha-1、des、三重des、md4、hmac、ede、和blowfish)。linux對ipsec ipv4和ipv6協定的支持是一個很大的進步。由於安全抽象到了協定層,用戶程式對潛在攻擊程式的脆弱性有所降低。密碼加密模組目前還不是linux核心的一部分,如果linux真的實現了這樣的特性,就可以阻止未簽名的模組被核心訪問。

現在仍然困擾windows用戶的一個問題就是緩衝區溢出。linux用戶從2.6核心開始就會收益於exec-shield補丁。exec-shield可以阻止許多漏洞攻擊程式覆蓋數據結構並向這些結構中插入代碼的企圖。由於不需要重新編譯應用程式就能使exec-shield補丁奏效,實現起來很方便。

另外,2.6核心中的搶占式核心,也減少了延遲,使得linux不但可以套用到數據中心,甚至可以在有軟實時要求的應用程式使用。許多linux用戶使用的是硬體廠商和系統提供商的不開源的驅動程式(二進制模組)。問題在於:雖然添加這些驅動和模組有用,對於linux系統並不一定有益。例如,一個未開源的驅動模組有可能控制系統調用並修改系統調用表。2.6的核心提供了特殊的保護措施,可以對限制未開源驅動或者模組對核心的訪問。這一特性增加了穩定性,但從安全形度並沒有增加新的限制,也不能阻止黑客編寫惡意模組。

許多linux用戶來說,最有創造性的特性就是用戶模式linux了(uml),uml是linux核心的一個補丁,可以允許可執行二進制檔案在linux宿主主機上編譯並運行。使用uml有很多好處,最有用的特性就是虛擬機。由於對uml的操作不會影響宿主主機,可以把它作為測試軟體、運行不穩定發行版、檢查有威脅活動的平台。uml最終會創建一個安全架構上完全虛擬的環境。


linux與windows安全性能的重要結論

對作業系統的安全性進行定性分析,很容易包含主觀意見,得到的結論會由於過去和現在的經驗而有很大的不同。本文的目標是給用戶提供一個框架,讓他們更多的理解windows和linux的安全性能。下面的分析並不全面,只是終端用戶進行評估的起點。linux和windows在技術上不斷進步,究竟哪個系統更安全的結論也會不斷變化。本文分析的結果:linux提供了比windows更好的安全特性。

基本安全

微軟和linux都提供了對驗證、訪問控制、記帳/日至、受控的訪問保護實體、加密的支持。不過linux的表現更好一些,因為linux還提供了linux安全模組、selinux和winbind。linux用戶不需對核心打補丁就能增加額外的安全機制。

linux在lsm之上構建了多種訪問控制機制,例如:為應用程式建立了單獨的空間,使它們之間相互分離,也與基本的作業系統隔離,這樣即使應用程式出現了安全問題也不會影響作業系統。linux的基本安全也可以通過應用程式增強,比如tripwire(可以定期對系統進行關鍵檔案的完整性檢查,如果檔案的內容或者屬性有變化就通知系統管理員)。

windows的限制在於基本安全是依靠mscapi的,在代碼簽名時信任多個密鑰。微軟的模型重點在於可以同時對一個產品使用弱加密或者強加密。儘管模組不是以相同的密鑰進行簽名,mscapi卻信任許多根驗證機構,代碼簽名也信任多個密鑰。因此只要有一個密鑰被泄露就會使整個系統異常脆弱。密鑰泄漏的情況:授權的代碼簽名者不小心紕漏了自己的私鑰,或者簽名機構錯誤的簽發了一個證書。這些情況曾經發生,有一次verisign錯誤的以微軟的名義簽發了兩個證書,並將這些證書的控制權交給了未授權的個人。

網路安全與協定

linux與windows對網路安全和協定的支持都很不錯。兩者都支持ipsec,這是一個運行於ip層的開放的基於加密的保護方式。ipsec能夠識別終端主機,同時能夠對網路傳輸數據和加密數據的過程中的修改作出判斷。linux下使用openssh、openssl和openldap,分別對應微軟系統下閉合源碼的ssh、ssl和ldap。

套用安全

由於微軟iis和exchange/outlook不斷出現的安全問題,linux顯得更勝一籌。apache和postfix都是跨平台的應用程式,比微軟的相應產品更加安全。由於linux有內建的防火牆使得其安全性有所增強,snort也是一個優秀的入侵檢測系統。關於基於x86系統的linux核心,一個很重要的特性就是ingomolnar的exec-shield,可以保護系統不受緩衝區或者函式指針溢出的攻擊,從而對那些通過覆蓋數據結果或者插入代碼的攻擊程式有所防護。exec-shield補丁使攻擊者很難實現基於shell-code的攻擊程式,因為exec-shield的實現對於應用程式是透明的,因此不需要應用程式的重新編譯。

微軟正在大刀闊斧的重新設計產品的安全架構,並為已安裝的系統提供補丁。不過舊版本的windows產品仍然存在安全問題,這使得任務變得複雜。許多微軟用戶正面臨安全威脅,而補丁在發布之前必須做好文檔。另外,微軟傾向於將應用程式的數據和程式代碼混合在一起,比如activex,這使得系統外的不可信數據也能被使用,甚至是利用不可信數據執行任意代碼。某些情況下,windows甚至允許外部系統提供數據簽名的代碼,這就意味著本地的系統管理員也不能審查代碼,不過他仍然知道是誰對代碼簽的名。

在.net框架下,微軟應用程式的安全性有所改進。當然,對於那些異構平台,例如linux、windows、unix尤其是建立在java平台下的應用程式,微軟的產品是有很大局限性的。

分發和操作

關於分發和操作,linux與微軟的側重點不同,linux下大部分的管理都通過命令行接口。linux的發行商也提供了各種安裝和配置工具,例如:up2date、yast2和webmin。bastille linux是一個支持red hat、debian、mandrake、suse和turbolinux的加固工具。相比之下,windows的系統管理員使用簡單易用的gui工具,配置的時候也很容易出錯誤。儘管一些人認為,一個周之內將任何人都可能成為windows的系統管理員,問題是他們到底對管理了解多少?微軟的安全問題,絕大多數都是由於發布與操作時的拙劣配置。windows自帶安裝和配置工具,微軟也為加固域控制器、架構伺服器、檔案伺服器、列印伺服器、ias伺服器、證書伺服器和堡壘主機提供了嚮導,不過加固架構與加固作業系統還是有區別的。

確信度

定義作業系統確信度的標準是公共標準(cc),這是iso標準(iso 15408)。關於確信度的等級有一個層次結構 ―― 從eal1到eal7。只有在特定的軟體、硬體和系統配置下,公共標準的評估才是有效的。windows的eal比linux要高,達到了eal4,而linux目前只達到了eal3。suse正計畫在年底達到eal4。政府機構大部分都需要cc的確信度。即使只有政府客戶(甚至特指美國國防部)才需要確信度,商業產品滿足這一要求也是一件好事。不過大部分的用戶都不需要達到國防部的標準。

可信計算

可信計算是一種架構,可以避免對應用程式的修改,與廠商的通信也是安全的。許多廠商,比如intel、微軟和ibm,都在歡迎這項新興的技術。目前,這一功能只供展示,現實中並沒有可用的系統,因此linux和windows都不能勝任。微軟的可信計算與數字權力管理有關,而開源社區目前沒有可信計算的項目。

開放標準

linux要優於windows,因為它支持所有的開放標準(儘管windows也支持許多相同的開放便準,如ipsec、ike和ipv6,也樂意擴展標準)。對於使用異構系統並有互操作需求的公司,"標準"如果代有私有代碼,就使得對缺陷的檢測和錯誤的修正更困難、耗費的時間也更多。一個例子就是微軟對kerberos標準協定的擴展。微軟提供了對kerberos票據的授權功能,儘管kerberos一開始也是按照這個目的設計的,這一功能卻一直沒有使用。微軟擴展了kerberos標準,在處理過程中也期望其它程式共享票據的授權數據欄位。因此,微軟的kerberos版本與標準不能完全互動。it經理會發現:在一個異構的it環境中,使用微軟kerberos會使得整個環境難以管理,它們需要完全的windows it架構。

開源

如果安全作業系統的標準就是開源,那么linux顯然要優於windows。微軟的共享原始碼計畫就是為了滿足用戶對原始碼的需要。不過,該計畫的大部分內容都是"可看但不可修改"的情況。俄羅斯、英國、中國和北約參與了微軟的政府安全計畫。儘管該計畫的目標是增加透明度和加強合作,如果某組織需要訪問微軟的原始碼,需要遵守各種各樣的要求。例如:並不是所有的windows原始碼都可以線上查看,因此如果用戶需要編譯並測試應用程式,必須親自訪問微軟的總部。

推薦

linux和windows的安全性必定會引起持續的爭論,到底是開源的作業系統好,還是封閉原始碼的作業系統好?業界的邏輯是:基於開放標準與開放原始碼的作業系統,能提供更好的互用性,更好的錯誤發現和修正機制,這要比通過隱藏來達到安全的模型優秀。開源也促使linux的發行提供商對生產過程完全透明。每一步對於用戶來說都是可再現的,因此能夠逐漸的增強安全。而windows的原始碼並不易獲得,因此不能提供等價的透明。

linux提供了至少不遜於windows的安全性能。linux系統的安全取決於對linux發行版的選擇、使用的核心版本、實現與支持系統的it員工的水平。一旦你選定了產品,實現並維護作業系統的安全就完全依靠it員工了,你需要對他們進行培訓,讓他們掌握足夠的專業技能,完成分發、管理和故障排除的任務。要讓it經理和系統管理員明白如何套用這些慣例。

我們推薦各種機構首先了解自己的功能需要,然後熟悉一下作業系統關鍵性的安全性能,這樣就能減少使用作業系統的風險,確保一致性。

如果你正考慮移植到另一個作業系統或者是升級目前的產品,你需要按照安全性能的要求來選擇作業系統的環境。把你的商業需要與對作業系統安全性的理解相結合,就能在實現功能的同時,兼顧一致性與風險最小化。

表一:linux和windows作業系統重要的安全特性

分類

特性

linux

windows

定性得分

基本安全

驗證、訪問控制加密、記帳/日至

可插入的認證模組、外掛程式模組、kerberos、pki、winbind、 acls、 lsm、、selinux、 受控的訪問保護實體檢測、核心加密

kerberos、pki、 訪問控制列表、受控的訪問保護實體檢測、微軟的應用程式加密程式接口。

linux 更加出色

網路安全與協定

驗證、層、網路層

openssl、open ssh、openldap、 ipsec

ssl、 ssh、 ldap、 ad、 ipsec

兩者都很不錯

套用安全

防病毒、 防火牆、 入侵檢測軟體、 web伺服器、 email、 智慧卡支持

openav、 panda、 trendmicro、 核心內建的防火牆功能、 snort、 apache、 sendmail、 postfix、 pkcs 11、 exec-shield

mcafee、 symantec、 check point、 iis、 exchange/outlook、 pcks 11

linux略勝一籌

分發與操作

安裝、 配置、 加固、 管理、 漏洞掃描器

安裝與配置工具、 bastille、大部分的管理通過命令行完成、 nessus、 發行版相關的up2date、 yast、 webmin

windows自帶的安裝和配置工具、沒有特定的加固工具、 管理gui、 使用默認安裝的配置。

兩者都很不錯

確信度

常見的公共標準證書、 缺陷處理

linux達到了 eal3,有較好的缺陷處理能力

windows 達到了 eal4,有較好的缺陷處理能力

windows更加出色

可信計算

可信平台的模組、可信計算軟體棧、工具、驗證

由ibm開發的基於可信平台模組的開源驅動程式、可信計算組的軟體棧可望在2005年推出

下一代安全計算基礎、有可能在2006年的longhorn中出現。

兩者都不夠出色

開放標準

ipsec、 posix、 傳輸層安全、 常見標準

linux 遵循所有的開放標準

microsoft也參與了開放標準,但仍有一些私有標準。

linux更加出色