作者:張書元 / 臺灣大學計算機及資訊網路中心作業管理組幹事
在過去的二十多年,虛擬化這三個字在各個IT領域的出現頻率越來越高,代表它已成為一項日益重要的技術。虛擬化技術也是奠定了雲端計算服務的基礎和推手。而虛擬化安全 (virtualization security) 的搜尋熱度最近有上升的趨勢請,參考圖1 Google Web Search的結果。本文嘗試探討虛擬化技術及有關的安全性,對其原理,實施方法,及可能面對的問題作簡要的介紹,希望通過對他們更多的了解,有助使用者個人或管理的虛擬化環境的資訊安全有一些幫助。
圖1 : virtualization security 在Google Web Search搜尋結果
壹、虛擬化技術
何謂虛擬化?廣義上來說,一種邏輯的程序或框架,通常以軟體的方式來實行,將硬體或軟體資源從系統或子系統的服務予以抽象化、隱藏或隔開,目的是聚合功能、設備或資源,對管理端隱藏複雜性,或為下層的硬體資源聚合提供方便。
簡言之 ,虛擬化技術是一種以軟體的方式進行實體資源配置與優化的架構。虛擬化的概念最早的實際應用是1960年代,當時IBM M44/44X 實驗性主機中採用time-sharing和虛擬記憶體技術 (virtual memory) 將M44/44X主機邏輯上分割為數台虛擬主機,讓使用者能在1台主機上執行多個作業系統。至今在虛擬化技術已經演化出多種形式。其中有四種主要的虛擬化技術類型,他們是: 伺服器虛擬化,網路虛擬化,儲存虛擬化,和桌面虛擬化,說明如下
伺服器虛擬化 (Server Virtualization)
一種軟體方法或技術,使單一實體伺服器能夠同時(concurrently)作為多個作業系統運行的平台。這種技術可提高資源的利用率,並更有效地利用組織的IT資源。
網路虛擬化 (Network Virtualization)
指的是將傳統上通過硬體交付給軟體的網路資源抽象化。例如網路虛擬化將多個實體如如交換機、路由器和一些網路資源組合成一個邏輯的、虛擬的、基於軟體的網絡,它也可以將一個實體網路劃分為分別的、獨立的虛擬網路。網路虛擬化將管理平面與控制平面分離。這樣做網路硬體就只負責轉發數據封包 (data packet),而虛擬網路則用於部署和管理網路服務。
儲存虛擬化 (Storage Virtualization)
儲存虛擬化是通過軟體方式對儲存硬體資源進行抽象化表現,將一個或多個儲存目標裝置的服務或功能與其它附加的功能進行整合,通過抽象層統一對使用者提供資料儲存服務。
桌面虛擬化 (Desktop Virtualization)
操作系統環境可以完全或部分虛擬化,允許單個包含高規格存儲和處理硬件的“扁平”終端運行多個桌面,或者允許僅包含基本硬件的“瘦”終端訪問更強大的共享資源在服務器上。
貳、伺服器虛擬化(Server Virtualization)
伺服器虛擬化是目前使用最廣泛的虛擬化技術。透過軟體技術建構一邏輯虛層,透過這層軟體將伺服器下層實體資源以虛擬物件的形式呈現,例如伺服器的計算單元(CPU)、應用程式、儲存裝置和網路。此擬化技術將單一實體主機,不論是個人電腦或者大型計算主機,透過虛擬化提供多種作業系統平台,可達到降低成本,提高資源使用效率和資源靈活調整性。
圖2: 伺服器虛擬化(Server Virtualization)(retrieved from https://www.pavliks.com/server-virtualization )
伺服器虛擬化技術中的關鍵部分為hypervisor,維基百科譯為虛擬機器管理員,主要有兩種型別的hypervisor:Type 1和Type 2的虛擬機器管理程式。
Hypervisor可分成主機型(Host based)與裸機(Bare-metal)兩種架構(如圖3和圖4所示。主機型(host based) Hypervisor作為應用程式運行在實體主機OS環境內,此架構主要的缺點在於實體主機OS會消耗一定的硬體資源,又以實體主機OS來管理虛擬機器運作,虛擬機實際使用硬體層資源時,也會耗損效能,整體執行效能不佳。裸機 (bare metal)架構的優點在於可直接於電腦硬體上執行,不需在實體主機的作業系統中執行,可直接於硬體平臺上的Hypervisor執行,虛擬機(Virtual Machine)層則於Hypervisor上執行,相較於主機型提供更佳的執行效率。
圖3: Type -1 (Native/Bare-metal hypervisor, (retrieved from https://zh.wikipedia.org/wiki/Hypervisor)
圖4: Type – 2 (Hosted hypervisor, (retrieved from https://zh.wikipedia.org/wiki/Hypervisor)
參、虛擬化技術的脆弱性、與安全問題
相較於傳統架構,虛擬化技術的架構引入了虛擬機(virtual machine)及內部系統,虛擬機監控器(hypervisor),虛擬網路,虛擬存儲,為均運行在同一實體主機上相互隔離的邏輯元素,將虛擬化系統分解成以上四個組成,本小節整理了常見虛擬環境資訊安全問題。將其分為四大類,列出如下:
分類
|
常見問題
|
與虛擬機相關的安全問題
|
VM escape
VM poaching
Antivirus storm
System restore
|
與主機(Hypervisor/VMM)相關的安全問題
|
Hypervisor hyper jacking
Unsecure VM migration
Network internal and external threats
Vulnerabilities of the Hypervisor
|
針對虛擬機和主機的遠程攻擊
|
Rootkit attacks
Malicious code injection
Side channel attacks
DOS attacks
|
管理的安全問題
|
VM sprawl
Virtualization platform’s security management
Resource access control
|
表一:虛擬化環境資訊安全問題分類
常見問題說明
VM Escape
虛擬機(VM)內部的操作系統可能存在漏洞,可以幫助攻擊者在其中插入並執行惡意程序,從而有助於與Hypervisor直接互動,並可能導致執行代碼向hypervisor進行橫向攻擊。
VM Poaching
虛擬機盜取 (VM Poaching) 與Denial of Service攻擊有相似之處。當一台VM佔用的資源超過分配的資源時,就會發生偷取虛擬機VM,這將導致VM崩潰。
Antivirus storm
防毒軟體對虛擬環境中的虛擬機使用分佈式代理程序(agent),當多個代理程序初始化同步掃描時,會導致虛擬環境的性能明顯下降。
Hypervisor hyper jacking
Hypervisor劫持是入侵者惡意控制 VMM 的一種攻擊,它在虛擬機內創建虛擬環境。攻擊方式是建立虛擬機並進而入侵管理虛擬機的軟體程序,以便攻擊者可以控制整個環境而不會引起虛擬機用戶或是管理員的注意。
Rootkit attacks
它們通常是惡意軟體,其目的在是躲避正常檢測方法而隱藏某些進程(process)或程序的存在,並啟用對系統的一些特權持續訪問存取。檢測這些攻擊很困難,因為它們可能會破壞可以檢測到它們的軟件。
Malicious code injection
惡意代碼注入是對虛擬機的典型威脅之一。駭客可以通過注入惡意代碼來侵入虛擬機。SQL injection是最常見的代碼注入類型;但還有其他類型的代碼注入,還有如 LDAP 注入和 XPath 注入。
VM sprawl
虛擬機蔓延被定義為雲端環境中沒有適當 IT 管理的大量虛擬機被產生。虛擬機蔓延是許多資料中心面臨的最大問題之一。由於可在幾分鐘內輕鬆建立一個新的虛擬機,因此虛擬機的增長並不完全明顯,一段時間後,組織將面臨大量的虛擬機。可能導致虛擬化環境產生資源不足和資源競爭。
圖5:虛擬化環境的攻擊問題樹狀圖
虛擬化安全措施和要求
虛擬化安全方案的完整性、有效性很大程度上取決於其每一個個別組件的安全性,包括管理程序、伺服器主機和主機操作系統、guest作業系統、應用程式和存儲設備或系統。由於虛擬化環境/系統是如此重要,讓我們看看一些安全標準協會提供的安全性指南.。計算安全標準機構已經發布了雲端計算安全指南。這些指南涵蓋了虛擬化安全的不同方面。例如,美國國家標準與技術研究院 (NIST) 指南提到了保護虛擬化環境的安全問題和建議,而雲端安全聯盟 (CSA) 指南討論了雲端虛擬化相關的安全問題,並提供了虛擬化環境安全的建議。歐洲網路和信息安全局 (ENISA) 指南側重於安全措施,例如過濾、補丁管理、虛擬機和管理程序的強化、加強用戶身份驗證、做好使用者身份管理等。
虛擬化安全性是一個廣泛的概念,包含許多評估,實施,監視和管理虛擬化環境中的安全性的不同技術。這些需要虛擬化系統每一個環接的齊心協力一致性的措施、程序和過程確保虛擬化環境的安全。
虛擬化安全措施/策略的大方向如下,但不限於
- 在每台虛擬機上執行與安全有關的設定和程序
- 保護虛擬機、虛擬網絡和其他虛擬設備避免來自底層設備的攻擊和漏洞
- 確保對每台虛擬機的帳號存取控制和權限管理。
- 在整個虛擬化環境中建立一致的安全策略。
虛擬機器監視器安全 (Hypervisor Security)
以下是針對虛擬機器監視器的建議,
a. 定期的檢視,安裝廠商發布的更新或是補丁。這些虛擬機器監視器安全管理程序都有自動的程序更新,它可幫助節省時間。
b. 對管理網路(management network)與資料網路(data network) 建議使用個別專用網路,和使用業界安全標準進行身份驗證和加密來保護所有通信網路。
c. 虛擬化的設備與可信任的時間伺服器同步。
d. 關閉未使用的設備與主機系統的連接,例如,關閉未使用的網路介面控制器(Network Interface Adaptor) 或者網路卡與任何網路的連接。
e. 除非需要,停用所有虛擬機管理程序與Guest作業系統和或者伺服器主機作業系統之間的剪貼板或文件共享。因為這些的每一項都可以被駭客用作攻擊的跳板。
f. 小心地使用自我檢查功能來監控每個Guest作業系統活動。如果Guest作業系統受到威脅,其安全條件、設定可能會被禁用或重新調整。
g. 小心使用自我檢查功能來監控Guest作業系統的網路活動。這對於實體和虛擬環境之間的通信非常重要,例如網路防火牆、安全設備、網路IDS傳感器。
h. 仔細監視虛擬機監控程序本身是否存在危害的跡象。這包括虛擬機監控程序否可能提供完整的自我監控功能,及持續監控和分析其日誌。
來賓作業系統(Guest Operating System)安全
在虛擬化環境中運行的Guest作業系統幾乎與在實體硬體資源/伺服器上運行的作業系統相同。適用於在真實硬件上運行的作業系統所有安全注意事項也適用於客戶作業系統;但對Guest作業系統還有一些其他安全的注意事項。
以下是對Guest作業系統的建議
a. 遵循管理實體作業系統的做法,例如時間同步、日誌管理、身份驗證 遠端登入管理等。
b. 及時安裝來賓作業系統的所有更新,所有現代作業系統都具有自動檢查更新並安裝它們的功能
c. 定期備份來賓作業系統使用的虛擬驅動器,使用與組織中非虛擬化主機相同的備份策略。
d. 在每個Guest作業系統中,斷開未使用的虛擬硬件。這對於虛擬驅動器(通常是虛擬光碟和磁碟驅動器)尤其重要,對於主網路接口和串連Port和/或平行Port以外的虛擬網路適配器也很重要。
e. 對每個Guest作業系統使用的帳號單獨的身份驗證解決方案,除非有特殊原因讓一個Guest作業系統兩個帳號使用相同的密碼或者是憑據。
圖6: 虛擬機的攻擊和脆弱性象限圖. [3]
參考文獻
[1] https://zh.wikipedia.org/wiki/Hypervisor
[2] Zelalem Birhanu Aweke, Salessawi Ferede Yitbarek, Rui Qiao, Reetuparna Das, Matthew Hicks, Yossi Oren, and Todd Austin. 2016. ANVIL: Software-based protection against next-generation rowhammer attacks. ACM SIGPLAN
Not. 51, 4 (2016), 743–755.
[3] An Exhaustive Survey on Security Concerns and Solutions at
Different Components of Virtualization, RAJENDRA PATIL and CHIRAG MODI
[4] Virtualization vulnerabilities, security issues, and solutions:
a critical study and comparison, Darshan Tank, Akshai Aggarwal, Nirbhay Chaubey
[5] Kazim M, Zhu SY (2015) Virtualization security in cloud computing.
In: Zhu S, Hill R, Trovati M (eds) Guide to security assurance for cloud computing. Computer communications and networks. Springer.