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