摘 要:虛擬化是一個IaaS云計算的基石。只有通過把許多機器虛擬化到一個單一硬件上,云服務提供商才能夠實現比較高的利用率,使云計算成為一個有利可圖的“奮進號”。然而,在虛擬化號稱是一個強大的安全技術的同時,虛擬化帶來的靈活性會導致安全問題。
關鍵詞:虛擬化技術;云計算環境;安全機制;應用
虛擬化既是云計算的特點又是云計算使用的關鍵技術,也是云計算安全性的壁壘。虛擬化使得用戶不用關心特定應用軟件的服務方式、不用關心計算平臺的操作系統以及軟件環境等底層資源的物理配置與管理、不用關心計算中心的地理位置,實現真正意義上的軟件作為服務(SaaS)、平臺作為服務(PaaS) 、基礎設施作為服務(IaaS)。云計算主要從三個層次實現虛擬化:服務器虛擬化、存儲虛擬化、網絡虛擬化。
1 引言
Garfinkel和Rosenblum對虛擬化做了一個寬泛和簡短的概述。作者關注的關鍵問題包括可擴展性、多樣性、瞬態、軟件生命周期、數據生命周期、流動性和所有權??蓴U展性和多樣性是有問題的,因為當一個機構或組織中有許多不同的虛擬機時,虛擬化允許創建新的虛擬機可以導致爆炸性增長。這個問題非常復雜,因為虛擬機可以有規律地在一個組織的網絡中出現和消失,或者成為休眠狀態持續一段時間。作者指出,這造成了兩個問題:一是在這樣一個環境中補丁管理會變得困難,這是由由于需要很長的時間去修補大量的虛擬機和長時間不用的機器。二是許多休眠的虛擬機使得很難完全從一個虛擬云環境中消除的蠕蟲或病毒,因為如果休眠的受感染的虛擬機再次出現,可以導致新的疫情爆發。
此外,能夠重新運行以前版本的虛擬機的能力會帶來風險,比如并沒有修補之前運行時已經修補過的安全漏洞(軟件生命周期)和刪除像個人信息或加密密鑰這樣的敏感數據(數據生命周期)。VM的流動性是有問題的,因為如果一個物理機器被破壞,那么這臺機器上的任何VM都有可能會被破壞。這意味著VM的用戶必須考慮以前運行過他們的虛擬機的每臺物理機器的安全。最后,作者提出當像MAC地址這樣的常見的標識是由VMMs任意選擇時難以識別VM的所有權。
雖然作者正確指出了虛擬化環境中的安全問題,但他們似乎忽略了一個事實,這些問題已經在非虛擬環境中存在了幾十年。此外,在云環境中一些虛擬化問題也可以相對容易地得到解決。比如亞馬遜的EC2提供虛擬機的鏡像,并且這些鏡像是直接綁定到用戶帳戶。這有效地消除了VM多樣性的問題并清晰顯示了VM的所有權。如果一個云提供商在沒有VMM的情況下允許任何客戶的VM執行,就會帶來了安全問題。因此更為有效的VM隔離能是必要的。也許通過使用虛擬局域網提供者可以實現共存的虛擬機之間的網絡隔離。新運行VM和數據生命周期的問題更微妙。云提供商可能會提供一個VMM和相應的基礎設施,它們在邏輯上與云環境的其余部分分開。被重新啟動或者沒有打足夠補丁的VM將被要求在這種環境中運行。只有打過足夠補丁的客戶端VM能夠在隔離環境以外運行。這種策略可以提高云服務提供商確定客戶端虛擬機上運行的軟件版本的能力,并且能將這些版本信息和已知的漏洞數據庫相比對。通過這種方式,服務提供商就可以量化與運行客戶端VM相關的風險。這樣的版本信息可以通過虛擬機自我檢查或安裝在由服務提供者提供的所有的虛擬機鏡像上的系統服務收集。
2 基于Mirage的VM映像管理體系的設計方案
Weietal提供了一個VM鏡像管理的策略。在這里,作者重申了很多由加芬克爾和羅森布拉姆首先指出的風險。他們還指出,分享個體之間的VM的能力對于云環境是至關重要的,這種共享需要被準確地說明和記錄。為了達到這個目的,他們概述了一種名為Mirage的VM映像管理體系的設計方案。Mirage的核心思想在于鏡像應該像文件在文檔管理系統中那樣的去處理。鏡像可以由用戶鍵入或刪除,任何來自與同一個鏡像的新的鏡像會被鏈接在一起。這樣當一個鏡像被改變或被其他用戶運行時,可以追蹤它的歷史。第二個關鍵的特性是過濾器的概念,過濾器在應用到一個鏡像時將用隨機數據取代任何敏感的原文數據。為了安全的目的,該特性只局限于簡單的原文查找和替換。最后, Mirage將負責維護鏡像的修補,并在鏡像存儲庫上執行惡意軟件的掃描。為了克服性能上的損失(不管是在空間還是時間上), Mirage僅存儲虛擬機鏡像間的差異。因此一個給定VM鏡像是由原始鏡像再加上所有應用到該鏡像上的更改組成。這減少了維護鏡像的開銷。
Mirage系統最明顯的問題是作者聲稱過濾器應該基于簡單的替換文本,而不是代碼執行的結果,因為這樣有利于安全。然而,在一個鏡像中自動替換文本仍然存在一個嚴重的安全問題——代碼注入攻擊。一個VM開發者故意在VM中使用一個惡意的過濾器看起來可能很可笑。然而,許多人(甚至那些擁有相當電腦經驗的人)經常在自己的計算機上無意中安裝軟件(比如惡意軟件,膨脹軟件等等),因此不難想象一個VM所有者不知不覺地應用了一個惡意的過濾器到他們的VM鏡像。特別是在云計算提供者維護一個過濾器編寫的公共存儲庫的情況下。這時的攻擊可能會更加微妙:如果代碼注入是分布在眾多的過濾器,此時,沒有單獨的過濾器有明顯的惡意,但幾個過濾器應用于單個VM鏡像就可能導致代碼注入。有一個明顯的方法來阻止這種利用,就是只允許云服務提供商或VM擁有者開發應用于擁有者的VM鏡像上的過濾器。然而這樣一個公開的軟件系統越來越普遍的時代,這種限制性的著作權計劃似乎是在限制云的客戶。最后,作者并沒有解決存儲在一個基于鏡像的差異庫中的VM鏡像的補丁的問題。漏洞可能分布在單個VM鏡像的眾多增量中,找出來改變的增量,在不擾亂正常的VM操作的情況下修改它們不是一個簡單的問題。
3 基于虛擬化的安全機制
對虛擬化的安全機制,Christodorescu等人采取一個更為冷靜的看法。它們描述了一個相比那些先前的作者提供的更具挑戰性的威脅模型。具體地說,他們認為,客戶可以在云VMM上運行任何VM,并且云服務提供商沒有在guest VM上運行的軟件(包括操作系統、應用程序、惡意軟件等)的priori(先驗、優先)信息。為了應對這種模式作者針對虛擬機的自檢提供了一種新的方法。通過檢查VM中斷描述符表(IDT)的地址,他們可以識別這些版本所使用的操作系統。然后,為該操作系統使用大量已知的安全代碼(white-list列入可信任名單),他們的工作只研究與white-list不同的IDT和驗證鏈接的代碼(系統調用,內核模塊等)。經過驗證的代碼變得可信并提供了一個新的擴大搜索惡意代碼的起點。
上述作者的VMI方法的一個實際問題是,它只允許那些操作系統在white-list code組里的VM進行自檢。提供可以獲得操作系統的數量和根據它們品種、版本變化的頻率(尤其是Linux的品種和版本)去維護最新版并將它們全面的列入white-list將是一項艱巨的任務。更重要的是,一個明明存在,卻被人刻意回避的問題是,這種方法之所以適用于云中的VM安全問題是建立在假設VMM基本上是安全的基礎上。
作者的威脅模型明確假定VMM是“正確的,可信的,不能違反”,模型則更進一步假設云環境包含VMs,這也“不能被違背”。這些都是相當危險的假設。如果一個VMM被盜,實際上,這種偽裝的安全將失效的,因為每一個客戶端VM都運行在沒有抵抗力的VMM上。鑒于幾乎所有的操作系統都容易受到惡意利用,像VMM這樣復雜的軟件沒有漏洞(vulnerability-free)的假設是天真的。如果VMM運行在一個傳統的操作系統的上層,這只會加劇安全風險,因為它意味著操作系統和VMM可能被利用。如果VMM是最低級別的軟件,這意味著VMM本身必須承擔自我監控的角色。這最好也只是一個不確定的前景,因為任何形式的自我監控機制(比如殺毒軟件、anti-rootkit等等)可能以一種和更為致命品種的惡意軟件攻擊傳統操作系統差不多的方式被破壞。
[參考文獻]
[1]張耀祥.云計算和虛擬化技術[J].計算機安全,2011(5):6-7.
[2]蔡誼,左曉棟.面向虛擬化技術的可信計算平臺研究[J].信息安全與通信保密.2013(06).
[3]李正忠.虛擬化在企業IT架構中的價值與應用[J].信息安全與技術.2013(02).
[4]張吉生.云計算技術在電力系統中的應用[J].現代建筑電氣.2011(04).