服務器虛擬化屏蔽硬件的差異,為數據中心帶來更高的可用性、可靠性及可維護性,但同時也帶來了諸多安全問題,一類是惡意攻擊導致系統不能正常服務的攻擊,另一類是以竊取私密信息為目的的攻擊。
系統虛擬化為客戶機提供分區和隔離,高效整合服務器資源,提高硬件資源利用率,而且極大地降低了管理和運維成本。但是由于共享資源的本質,服務器虛擬化天生存在著諸多安全問題。這些安全問題主要有兩類,一類是惡意攻擊導致系統不能正常服務的攻擊,另一類是以竊取私密信息為目的的攻擊。傳統物理主機場景下攻擊不易取得客戶數據,但是虛擬化場景下如果主機遭到入侵,那么運行其上的所有的客戶機都處于威脅中。研究并解決這些安全問題對更好地利用虛擬化技術,提供安全可靠服務,具有重要意義。
系統虛擬化概述
虛擬化技術從1965 年的IBMSystem/360 Model 40 VM 起, 經過了近三十年的沉寂,在近二十年得到快速發展。系統虛擬化是指將一臺物理計算機系統虛擬化為一臺或多臺虛擬計算機系統。每個虛擬計算機系統(簡稱客戶機)都擁有自己的虛擬硬件,提供一個獨立的客戶機執行環境。提供客戶機運行環境的虛擬化層稱之為客戶機監控器(Virtual Machine Monitor,VMM)。隨著X86 架構對其虛擬化漏洞的修復,推出VT/AMD-v 技術,X86 平臺的虛擬化技術發展迅猛,出現了諸多的基于硬件輔助虛擬化的VMM,如VMware ESX、XEN、KVM、VirtualBox、Hyper-V 等等,也相應誕生了一大批虛擬化商業產品與方案,如VMware ESX、Huawei、 FusionSphere、Citrix XEN、Red hat RHEV、Oracle Virtual Box、Microsoft 等。
系統虛擬化技術推進了新一輪的數據中心改造,源于虛擬化技術帶來的好處:
1、封裝:以客戶機為粒度進行封裝,可以方便地實現快照(snapshot)、克隆(clone)、遷移(migration)、掛起(suspend)和恢復(resume)。從而大大提供系統可維護性,降低IT 管理維護成本。
2、提高資源使用率:多臺客戶機運行在VMM 上進行統一調度,這些客戶機可以共享硬件資源,并交替忙閑運行,可以極大提高硬件資源的使用效率。
3、隔離:由于客戶機是運行在VMM之上的一個獨立的實例,因此一個客戶機的故障不會影響到另外一個客戶機的運行。但是隔離也不是完全的,也存在一些安全隱患,也就是本文要討論的問題。
4、抽象:由于VMM 的存在,客戶機并不感知硬件的差別,可以自由的在不同的硬件上方面的遷移,屏蔽了硬件的多樣性和復雜性,便利服務的提供和部署。
X86 平臺的虛擬化技術可以分為三類(不包括不同體系結構的虛擬化):
1、軟件完全虛擬化
優先級壓縮(Ring Compression)和二進制代碼翻譯(Binary Translation)相結合。基本原理是:將Guest OS 運行在較低特權級別上,執行遇到特權指令時被VMM 截獲進行虛擬化。X86 架構下存在虛擬化漏洞,即作特權操作卻沒有觸發異常的這些指令需要特殊處理,即動態掃描執行代碼,如果發現這些指令便將其替換為支持虛擬化的指令塊。
2、硬件輔助完全虛擬化
為了解決虛擬化漏洞的問題,處理器生產商推出相應的虛擬化解決方案,即Intel VT/AMD-v 技術。與軟件完全虛擬化不同,硬件輔助虛擬化將客戶機運行在一個新的模式下(non-root mode),該模式具有一套完全的運行環境,當運行到特權指令時被處理器截獲并報告給VMM。VMM 進行處理并反饋給客戶機運行環境。
3、半虛擬化
半虛擬化是指通過修改操作系統的內核代碼從而避免虛擬化漏洞。在現在的虛擬化系統中,也利用半虛擬的思想優化I/O 路徑。 硬件輔助虛擬化是現在虛擬化主要采用的虛擬化方案,如VMware、XEN、KVM 等VMM 都屬于該類型(XEN 也有半虛擬化架構)。
可以看出,VMM 將Guest OS作為自己的應用實例運行在其之上,提供Guest OS 運行所需的資源,如運行時資源(內存、相關寄存器)、存儲、I/O(如網絡)等,另外為了提升效率或可管理性,也提供了一個PV Tools 安裝在Guest OS中,并在VMM 中有對應的后端。這些資源對于Guest OS 來說是透明的,不過對于VMM 來說是完全感知的。
存儲
Guest OS 的磁盤在VMM 看來是一個文件,即鏡像文件,這個文件具有多種格式,常見的有VMDK、VHD、VDI、QED、QCOW2、RAW 等。這些鏡像文件都可以通過VMM 平臺的工具進行掛載讀取。若Guest OS 在安裝時未作磁盤加密,那么這些鏡像文件在掛載后,Guest 的磁盤文件就可以被讀取。而為了管理方面虛擬化方案提供商往往提供未加密的磁盤鏡像文件。比較傳統主機,虛擬化場景下的虛擬主機的磁盤文件更容易被竊取和攻擊。
內存
無論是使用影子頁表還是EPT/NPT等內存虛擬化技術,HOST 都掌握著GuestOS 的內存信息。以KVM 為例,Guest OS的內存都是通過qemu 用戶進程分配。HOST OS1 若遭到入侵,無論是HOST 所用的內存區域還是Guest 所用的內存區域遭破壞都會影響系統的服務,且數據可能被泄露,這對一些運行關鍵應用的Guest來說是具有風險的。
網絡
現在主流方案中使用HOST 的軟交換實現Guest 之間,Guest 與HOST 之間的IP 交換,例如Bridge、Openvswitch 等開源組件或vNetwork Standard Switch (vSS) 等商業組件。不像傳統主機模式下,每個物理服務器都有一套安全防護產品,外部設有防火墻,且通信直接和二、三層的網絡硬件通信,不易被侵入。而虛擬化環境下的網絡交換完全通過軟件實現,主機一旦被侵入,所有的客戶機通信數據也很容易被捕獲。
PV Tools
這里的PV Tools 是虛擬化方案中對Guest OS 增強或管理需要,而安裝的一些組件的統稱。不同的廠商對該工具有不同的名稱,如VMware Tools、 Oracle Virtualbox Guest Additional。這些工具包含兩類組件,一類是為了加強性能的虛擬化工具,另一類是為了管理監控等用途的工具。無論是哪類工具,都是從HOST 到Guest 建立了通信通道,并自定義了通信協議。這些通道和工具的漏洞也可能成為惡意客戶機“租戶”進行攻擊的通道。
客戶機遷移、HA 等特性
客戶機在物理服務器間進行遷移,是通過同步存儲和內存數據到一致狀態,然后進行暫停、恢復客戶機的操作完成的。遷移是通過物理網絡傳輸的。這個遷移過程也存在安全風險。而HA(High Availability)是在不同的物理機上運行同一客戶機的相同實例,當一個虛擬機出現故障時,業務系統迅速切換到另一臺實例上,從而保證高可用性。HA 往往時在不同的物理機上提供,運行過程中需要時刻同步運行信息,這些運行時刻的信息都通過網絡傳輸,信息傳輸過程遷移特性一樣也帶來安全風險。 現有的云計算方案都是通過核心虛擬化系統之外的安全組件完成。本文主要針對虛擬化技術方案, 通過底層的安全加強和設計增強安全,針對上一小節提出的安全問題,提出以下應對策略。
嚴格控制權限等級和接口,采用加密存儲(可考慮GPU 加密)
現在架構下超級管理員對HOST/VMM有完全的控制權限,而且HOST 上也裝有讀取客戶機磁盤鏡像文件的工具,獲得管理員口令或繞開登錄認證后即可獲取客戶機所有的磁盤文件信息。因此嚴格控制管理員權限,控制管理員可訪問的接口,設計應用程序間的認證和鑒權策略,避免人為干預。另外,操作系統在安裝時選擇加密選項,從策略層面規避安全隱患。為了進一步避免存儲丟失的風險,也可以考慮加密存儲。
加強內存虛擬化完整性設計
虛擬化VMM 的內存管理延續了傳統操作系統的內存管理機制,內核對應用程序的內存具有讀寫權限。虛擬化場景下,客戶機的內存都暴露給VMM 或HOST,客戶機的用戶私密性得不到保證。為了保護客戶機內存數據的私密和安全性,需要進一步加強HOST 內存完整性和安全設計。
調整傳統安全組件結構,新型網絡和安全框架融合
引入軟件交換和軟件定義網絡(SDL)之后,傳統網絡的物理邊界已經消失,傳統的單一防火墻結構已經不適用虛擬化架構的安全需求,需要有整體的安全框架統一規范虛擬化環境下的網絡。
規范PV、監控協議
目前虛擬化解決方案廠商的半虛擬化驅動、監控組件都沒有統一的規范和標準,客戶機運行在高危狀態下(如果含有不合法或惡意的程序段),用戶服務和數據沒有絲毫安全可言。因此需要統一規范半虛擬化驅動和監控程序的統一規范,制定統一標準,使得這些工具能夠被客戶機安全軟件所監控,而不像現在的方案中,這些工具完全不受客戶機安全軟件的限制。
加密傳輸遷移、HA 數據
虛擬機遷移、HA 給虛擬化帶來了更高的可操作性和可用性,這些功能都依賴網絡傳輸操作系統的運行時數據。采用加密數據傳輸可很大程度上避免信息泄露風險。
虛擬化為信息中心帶來了低廉的運維成本、便捷和靈活的部署與操作及高可用性,由于其技術方案的原因,同時也帶來了諸多的安全問題。不解決這些安全問題,虛擬化仍然不能被安全相關的關鍵應用所接受。本文針對系統虛擬化的存儲、內存、網絡、PV Tools 以及遷移和HA 等特性的現有方案討論了這些方面信息泄露相關的安全問題,并給出初步的應對策略。虛擬化安全不光是個別安全技術的堆砌,而是整體的考慮和設計。作者下一步著手虛擬化的存儲加密模型的設計和實現,并陸續展開對其他安全問題的研究。