周 文,劉曉毅,龍 愷
(中國電子科技集團公司第三十研究所,四川成都610041)
桌面虛擬化是一種基于服務器的計算模式,并且借用了傳統(tǒng)的瘦客戶端的模型,將個人的桌面環(huán)境與物理機器相分離,管理員將所有的桌面虛擬機存放在數(shù)據(jù)中心進行托管并統(tǒng)一管理。用戶可以在不同的地理位置通過各種設備如傳統(tǒng)的個人電腦、智能手機和瘦客戶端等連接到遠程服務器上的桌面環(huán)境,獲得與傳統(tǒng)PC一致的用戶體驗。當用戶從本地斷開桌面連接時,所有的應用程序、服務仍然在遠程服務器上運行[1]。
桌面虛擬化得到快速發(fā)展是因為其與傳統(tǒng)的PC環(huán)境相比有著無可比擬的優(yōu)勢[2]:
1)更靈活的訪問和使用。用戶對桌面的訪問不會被限制在具體設備、具體地點和具體時間。通過任何一種滿足接入要求的終端設備,就可以訪問我們的主計算機桌面。
2)更廣泛與簡化的終端設備支持。由于所有的計算都放在服務器上,終端設備的要求將大大降低,不需要傳統(tǒng)的臺式機,而瘦客戶端又重新回到我們的視野,而且智能手機、上網(wǎng)本、接近報廢的PC等設備甚至于電視,都成為可用設備,在虛擬桌面的推動下,未來的企業(yè)IT可能會更像一個電視網(wǎng)絡,變得更加靈活、易用。
3)終端設備采購、維護成本大大降低。這種IT架構(gòu)的簡化,帶來的直接好處就是終端設備的采購成本大量降低。
4)集中管理、統(tǒng)一配置,使用安全。由于所有桌面的管理和配置操作以及數(shù)據(jù)計算都發(fā)生在數(shù)據(jù)中心,管理員可以在數(shù)據(jù)中心進行有效統(tǒng)一的管理,而且桌面信息和隱私數(shù)據(jù)不需要通過網(wǎng)絡傳遞使得安全性得到了有效保證,這些信息和數(shù)據(jù)還可以設置成不允許用戶下載,從而進一步保證了信息不會被非法泄漏。
5)降低耗電、節(jié)能減排。傳統(tǒng)PC耗電量一般在200 W以上,而瘦客戶端只有25 W左右,僅僅是傳統(tǒng)PC的十分之一左右,雖然服務器的計算強度增大會帶來耗電量的些許增長,但這些增長與大數(shù)量客戶端的耗電量相比幾乎可以忽略不計。所以采用桌面虛擬化后,一年的電費會降低90%左右。耗電量的減少同時意味著碳排放的減少,這也響應了低碳時代的環(huán)保要求。
誠然,虛擬化技術(shù)的出現(xiàn),解決了傳統(tǒng)業(yè)務平臺固有的安全風險。使得整個系統(tǒng)易于管理,易于配置。調(diào)查數(shù)據(jù)表明,只有不到10%的桌面虛擬化用戶部署了安全工具,專門針對處理虛擬化技術(shù)帶來的安全風險;僅有20%的桌面虛擬化用戶發(fā)現(xiàn)自己系統(tǒng)的安全風險,考慮在未來試用安全工具進行虛擬化安全防護;剩下70%的桌面虛擬化用戶對于使他們的虛擬化環(huán)境的安全性沒有做任何的工作,也沒有意識到虛擬化技術(shù)同樣可以帶來安全風險。
桌面虛擬化技術(shù)帶來的風險有些是顯而易見的,比如服務器的映像并不固定在硬盤上,而是出現(xiàn)在整個網(wǎng)絡上。在虛擬化實施過程中,實際的硬盤數(shù)據(jù)遷移意味著虛擬服務器內(nèi)存頁會在整個網(wǎng)絡上存在。新的架構(gòu)、進程和管理系統(tǒng)以及組織結(jié)構(gòu)都會產(chǎn)生很多的潛在隱患。現(xiàn)實的問題是,針對虛擬化的安全產(chǎn)品少之甚少,面對各個虛擬化廠商和集成商,在銷售過程中,完全避而不談桌面虛擬化的風險,僅討論帶來安全方面的保證,也是使得這個問題很難暴露的一個原因[3]。
在桌面虛擬化應用環(huán)境中,只要有訪問權(quán)限,任何智能終端都可以訪問云端的桌面環(huán)境。給用戶帶來接入上的便利的同時也引入了非常大的安全隱患。首先是終端合法性無法保障,傳統(tǒng)的桌面可以采用物理隔離的方式,其他人無法進安全控制區(qū)域竊取資料。而在虛擬桌面環(huán)境下,若不采取終端控制手段,任意一臺智能終端都可接入系統(tǒng),這種安全保障就不復存在了。其次是接入身份的真實性難以確保,如果使用單純的用戶名密碼作為身份認證,那么其泄露就意味著對方可以在任何位置訪問你的桌面系統(tǒng),并獲取相關(guān)數(shù)據(jù)。一種安全可靠的終端身份認證機制對虛擬桌面應用系統(tǒng)來說就顯得尤為重要。最后就是終端丟失后帶來的數(shù)據(jù)暴露風險,雖然桌面虛擬化的終端僅存儲虛擬桌面的顯示信息,但是這些顯示信息在終端上都是明文狀態(tài),一旦終端丟失,數(shù)據(jù)將完全泄露。
針對桌面虛擬化時終端面臨的安全風險,安全終端主要從以下兩個方面進行設計考量。安全終端防護模塊見圖1。
圖1 安全終端防護模塊Fig.1 Secure thin client protection module
在用戶側(cè)采用USB-Key作為強身份認證因子,提高傳統(tǒng)用戶名密碼的認證方式的安全性。終端自身從硬件、固件、軟件三個層面實現(xiàn)自身安全性防護。
虛擬桌面要對系統(tǒng)中的物理資源和虛擬機資源做完整的管控,對于資源的獲取要進行身份鑒別。
虛擬桌面、虛擬服務器需通過USB映射,利用傳統(tǒng)身份認證系統(tǒng),實現(xiàn)USB-KEY與口令結(jié)合的方式進行用戶身份鑒別。虛擬化管理平臺在進行USB映射時,可以選擇USB設備類型,僅映射人體工程學類型的USB設備用于雙因子設備USBKEY使用,存儲類型的USB設備可以禁止映射[4]。
但是,當前的VDI協(xié)議所支持的USB重定向功能無法實現(xiàn)同一個USB-Key經(jīng)過重定向后在終端和虛擬桌面中都可以使用,進行傳輸通道的加密要求客戶端需要有密碼設備存在以保證加密強度,同時,在虛擬桌面中同樣需要硬件密碼設備進行身份鑒定,數(shù)據(jù)加密等操作。
通過改造Spice協(xié)議中的USB重定向模塊實現(xiàn)USB-Key的虛擬化功能
目前Spice協(xié)議USB重定向流程如圖2所示。
圖2 Spice USB重定向流程Fig.2 USB redirection process
在用戶端,Spice USB重定向功能是以過濾驅(qū)動存在于操作系統(tǒng)中,未開啟USB重定向功能時,Spice USB重定向模塊直接將數(shù)據(jù)轉(zhuǎn)發(fā)到用戶端操作系統(tǒng)的USB總線中,此時操作系統(tǒng)可以正常檢測到USB-Key。開啟USB重定向功能后,USB-Key數(shù)據(jù)將被重定向模塊截獲并通過Spice協(xié)議通道傳輸?shù)教摂M桌面中的Spice重定向模塊中(終端USB總線將不再收到任何USB-Key的信息),重定向模塊直接數(shù)據(jù)寫入到虛擬桌面USB總線中,實現(xiàn)虛擬桌面對USB-Key的識別。
USB-Key虛擬化需要實現(xiàn)的關(guān)鍵技術(shù)在于,當開啟了USB重定向功能后,用戶端仍然可以識別并操作USB-Key。
USB-Key虛擬化的關(guān)鍵技術(shù)在于,Spice USB重定向模塊需要支持將截獲到的USB-Key數(shù)據(jù)傳遞到遠端Spice重定向模塊的同時將數(shù)據(jù)發(fā)送到用戶端USB總線中,從而實現(xiàn)終端和虛擬桌面同時對USB-Key的訪問。
安全終端上電啟動后,由CPU和FPGA共同發(fā)起檢測,掃描掛載在CPU總線上的芯片,讀取芯片信息,如發(fā)現(xiàn)NAND FLASH,EEPROM等不符合要求時,驅(qū)動揚聲器進行報警,并將終端掛起,禁止運行BOOTLOADER程序。如果硬件完整性檢測通過,表明所有芯片均為出廠時配備,未發(fā)生非法替換行為,硬件的完整性,可靠性得到保證,允許進入下一階段,運行BOOTLOADER啟動程序,加載系統(tǒng)。
在嵌入式系統(tǒng)中,BOOTLOADER是在操作系統(tǒng)內(nèi)核運行之前加載運行的一段輕量級程序。大多數(shù)BOOTLOADER包含兩種不同的操作模式:“啟動模式”和“下載模式”。當 BOOTLOADER運行在“下載模式”下,目標機上的BOOTLOADER將通過串口和網(wǎng)絡等通信手段從主機下載文件,更改啟動文件,然后控制啟動流程。在安全終端中,通過對BOOTLAODER的定制開發(fā),使其運行在“啟動模式”下,關(guān)閉“下載模式”,網(wǎng)絡,串口等調(diào)試接口,系統(tǒng)只能從本地啟動。對本地文件鏡像(LINUX內(nèi)核,文件系統(tǒng)等)進行完整性檢測,防止文件被非法篡改。設置BOOTLAODER段為只讀,防止從LINUX下修改BOOTLOADER代碼。BOOTLOADER的流程圖如圖3所示。
圖3 BOOTLOADER的流程Fig.3 BOOTLOADER flowchart
BOOTLOADER啟動分為兩個階段:
第一階段主要完成CPU相關(guān)設置,內(nèi)存控制器初始化,堆棧設置,設置異常向量等工作。
第二階段,BOOTLOADER程序首先完成初始化FLASH設備,系統(tǒng)內(nèi)存等。然后讀取存儲在FLASH中的BOOTLOADER,啟動參數(shù),LINUX內(nèi)核,文件系統(tǒng),進行HASH運算,與預期值進行對比判斷,驗證其完整性,可靠性。當發(fā)現(xiàn)與預期值不符時,驅(qū)動揚聲器進行報警,驅(qū)動顯卡芯片,在界面顯示報警圖像,并將終端掛起,禁止啟動LINUX內(nèi)核。當完整性檢測正確時,驅(qū)動顯卡芯片,在顯示器終端上展示安全終端LOGO。將內(nèi)核及文件系統(tǒng)讀入到內(nèi)存中,調(diào)用內(nèi)核,啟動LINUX。
由UBOOT啟動完成后加載LINUX內(nèi)核,并將系統(tǒng)控制權(quán)交給內(nèi)核。為保證整個系統(tǒng)的安全可靠,通過定制編譯出需要的嵌入式內(nèi)核系統(tǒng)。內(nèi)核系統(tǒng)定制是根據(jù)硬件配置方案來深度裁剪出需要的內(nèi)核。定制的基本原則是只加載需要的驅(qū)動程序并力求精簡,把不需要的硬件驅(qū)動剔除掉,以減少內(nèi)核文件的大小。同時對用戶賬號嚴格控制,關(guān)閉root賬號,只允許單用戶登錄、操作。
LINUX系統(tǒng)內(nèi)核成功啟動以后,就具備的操作系統(tǒng)的基本功能,可以對硬件設備進行管理了。但是它還不具備應用軟件運行所需要的完整環(huán)境,操作系統(tǒng)還需要進一步加載所需的文件系統(tǒng)。
通過對主程序及啟動腳本都進行加密保護,防止終端的主程序遭到破解或篡改。使用AES加密算法實現(xiàn)指定密鑰串來加密受保護的文件,分別使用不同的密鑰串來加密單獨的文件。由于在啟動時需要指定解密的密鑰串,所以在啟動腳本中會使用密鑰串,為了隱藏密鑰串內(nèi)容,將run.sh加密并編譯為二進制文件,這樣可以有效的保護擦除工具被別人暴力破解和篡改。同時禁止用戶對FLASH,EEPROM等存儲芯片的寫操作。防止篡改BOOTLOADER,LINUX內(nèi)核等文件。
由上文分析可知,身份認證和終端防護能為用戶提供一個安全可靠的終端環(huán)境,保證會話終端的可信賴性。據(jù)此設計了一個基于安全終端的虛擬桌面系統(tǒng),其邏輯結(jié)構(gòu)圖如圖4所示。
圖4 基于安全終端的虛擬桌面系統(tǒng)Fig.4 Virtual desktop system based on the security terminal
該系統(tǒng)包含虛擬桌面服務器、應用服務器、域控服務器、安全終端4個部分??蛻舳吮仨毻ㄟ^域控服務器的身份認證才能與服務器建立連接,具體步驟如圖5所示。
圖5 用戶訪問流程Fig.5 User access process
安全終端與各系統(tǒng)的工作時序如圖5所示,各環(huán)節(jié)說明如下:
1)用戶執(zhí)行開機操作,安全終端加電,屏幕顯示用戶能夠接入的域的信息,等待用戶選擇。
2)插入USB-Key并輸入登錄信息。
3)安全終端向虛擬桌面服務器發(fā)起登錄請求;登錄請求被發(fā)送至域控服務器。
4)域控服務器校驗用戶身份,檢查是否有權(quán)限訪問桌面。
5)虛擬桌面服務器將桌面圖像的序列化視頻流推送至用戶。
6)用戶進行桌面操作,安全終端將鼠標、鍵盤動作附加身份信息后發(fā)送至虛擬桌面服務器。
7)虛擬桌面服務器執(zhí)行相應動作,向應用服務器發(fā)起訪問請求。
8)應用服務器檢查請求中包含的用戶身份,響應或拒絕用戶請求。
9)桌面刷新后,將新的視頻流重新推送至用戶。
10)用戶使用完畢后確認注銷。
11)安全終端向虛擬桌面管理器發(fā)起注銷請求。
12)虛擬桌面服務器上的虛擬機執(zhí)行掛起,并在一段時間不操作后轉(zhuǎn)入休眠。
13)安全終端執(zhí)行斷電重啟,清除所有緩存信息。
為了驗證本系統(tǒng)對于安全性能的提升,我們搭建了實驗環(huán)境,并進行了簡單的安全性驗證實驗。硬件設備采用Dell R710服務器,安全終端以及USB-Key,虛擬化平臺技術(shù)采用KVM。
實驗步驟如下:
1)在網(wǎng)絡連接正常的情況下,開機,直接輸入登錄信息登錄,記錄結(jié)果。
2)在網(wǎng)絡連接正常的情況下,開機,插入USB-Key并輸入登錄信息登錄,記錄結(jié)果。
3)修改系統(tǒng)的引導程序,嘗試非正常引導。
4)終端重啟后,讀取內(nèi)存信息。
實驗結(jié)果如下:
1)登錄失敗。
2)登陸成功。
3)系統(tǒng)拒絕修改引導。
4)內(nèi)存信息全部被清除。
從實驗結(jié)果可以看出,采用USB虛擬化映射技術(shù)之后,使得USB-Key能夠在虛擬桌面系統(tǒng)中使用。攻擊者只有同時獲取USB-Key和用戶名/密碼才能進行身份冒充,提高了身份認證的可靠性。終端自身防護措施則保證了系統(tǒng)信息無法被惡意修改,同時還確保終端重啟后不會殘留任何用戶數(shù)據(jù)。
桌面虛擬化使得用戶可以隨時隨地以任何設備對個人桌面進行訪問。在帶來便捷應用的同時也帶來了新的安全風險。這些安全機制的不健全,已經(jīng)成為用戶選擇使用虛擬桌面系統(tǒng)的最大顧慮[5]?,F(xiàn)有安全解決方案多是考慮虛擬桌面服務器端的安全防護,對于終端側(cè)的防護措施比較薄弱。本文從終端側(cè)所面臨的安全風險作為切入點,分析了應對這些風險的解決方案。并對所使用的到相應技術(shù)進行介紹。通過強因子認證和終端自身安全防護兩方面加強終端側(cè)的安全防護能力,從而實現(xiàn)安全的虛擬桌面系統(tǒng)。
[1]LIAO Xiao - fei,XIONG Xian - jie,JIN Hai,et al.LVD:A Lightweight Virtual Desktop Management Architecture[C]//Proceeding of 2nd International DMTF Academic Alliance Workshop on Systems and Virtualization Management:Standards and New Technologies.Munich,Germany:Springer-Verlag,2008:25 -36.
[2]鄭興燕.安全虛擬桌面系統(tǒng)的設計與實現(xiàn)[D].北京:北京交通大學,2012.ZHENG Xing-yan.Design and Implementation of the Security Virtual Desktop System[D].Beijing:Beijing Jiaotong University,2012.
[3]GARFINKEL T,ROSENBLUM M.When Virtual Is Harder than Real:Security Challenges in Virtual Machine Based Computing Environments[C]//In HOTOS'05:Proceedings of the 10th conference on Hot Topics in Operating Systems,2005:20.
[4]KING S T,CHEN P M.SubVirt:Implementing Malware with Virtual Machines[C]//Security and Privacy,2006 IEEE Symposium.IEEE,2006:375.
[5]SAILER R,JAEGER T.Building a MAC-based Security Architecture for the Xen Opensource Hypervisor[C]//Computer Security Applications Conference,21st Annual.Tucson,AZ:IEEE,2005:285.