楊立博
(山東財經(jīng)大學(xué)經(jīng)濟(jì)學(xué)科實驗教學(xué)中心 山東 250014)
作為當(dāng)今云計算的核心技術(shù)之一,虛擬化技術(shù)因其穩(wěn)定性、安全性和平臺資源利用率高等特性,得到了越來越廣泛的應(yīng)用。
虛擬化技術(shù)產(chǎn)生于1960年代,IBM在其大型主機(jī)系統(tǒng)VM/370正式啟用該技術(shù)。當(dāng)時硬件資源十分昂貴和稀缺,虛擬化技術(shù)能夠很好地解決有限的計算資源被充分利用的問題。但之后因為硬件技術(shù)的快速發(fā)展以及分時操作系統(tǒng)的出現(xiàn),虛擬化技術(shù)進(jìn)入慢速發(fā)展階段。隨著多核處理器的出現(xiàn),計算機(jī)處理能力得到了很大的提升,這導(dǎo)致服務(wù)器的利用率快速下降。虛擬化技術(shù)能夠在保證提供正常服務(wù)的情況下提高服務(wù)器的利用率,特別是隨著云計算概念的提出,使得虛擬化技術(shù)再次成為熱門的研究課題。
虛擬化技術(shù)、超線程技術(shù)以及多任務(wù)它們?nèi)叩母拍钣泻艽髤^(qū)別。虛擬化指的是多個虛擬機(jī)在同一個物理機(jī)器上同時運(yùn)行,并且每個虛擬機(jī)上運(yùn)行一個同時運(yùn)行多個應(yīng)用程序的操作系統(tǒng);超線程技術(shù)是指利用單CPU來模擬多CPU的運(yùn)行效果;多任務(wù)是指在操作系統(tǒng)中同時并行運(yùn)行多個程序。
虛擬器管理器能夠有效地對多個虛擬機(jī)實施隔離,已經(jīng)被廣泛地應(yīng)用于多個方面。根據(jù)抽象層次的不同,虛擬化技術(shù)可以分為5類:指令級虛擬化、硬件級虛擬化、操作系統(tǒng)級虛擬化、運(yùn)行庫級虛擬化和編程語言級虛擬化。不同類別的虛擬化技術(shù)的實現(xiàn)原理都是一樣的,即利用某種特殊的手段對底層資源進(jìn)行管理和分配,向上層提供抽象出來底層資源。
虛擬化大體分為完全虛擬化、部分虛擬化和操作系統(tǒng)層虛擬化,完全虛擬化即指在不區(qū)分物理環(huán)境和虛擬環(huán)境的前提下,虛擬機(jī)管理器完全復(fù)制底層物理硬件。
由于惡意軟件層出不窮,使得向用戶提供服務(wù)的應(yīng)用系統(tǒng)面臨日益增長的安全威脅?;谙到y(tǒng)內(nèi)部的安全監(jiān)測技術(shù)和基于網(wǎng)絡(luò)監(jiān)控的安全監(jiān)測技術(shù)已經(jīng)不能夠適應(yīng)這種需求,因此選擇采用虛擬化技術(shù)解決云計算環(huán)境下應(yīng)用系統(tǒng)中存在的安全隱患。
與傳統(tǒng)架構(gòu)相比較,虛擬化架構(gòu)在安全方面具有明顯優(yōu)勢:虛擬化架構(gòu)中的虛擬機(jī)管理器介于真實硬件平臺和操作系統(tǒng)間,特權(quán)級高于操作系統(tǒng),并且虛擬化架構(gòu)隔離性和可信計算基都更為理想;傳統(tǒng)架構(gòu)中的操作系統(tǒng)只擁有整個硬件平臺的管理權(quán)限而已。
安全監(jiān)控是指通過從網(wǎng)絡(luò)和計算機(jī)中獲得的事件信息來分析系統(tǒng)和用戶的行為,從而增強(qiáng)網(wǎng)絡(luò)和計算機(jī)系統(tǒng)的安全性,目前常見的有防火墻、入侵檢測等等。
根據(jù)安全監(jiān)控實現(xiàn)技術(shù)可將基于完全虛擬化的安全監(jiān)控及其相關(guān)研究工作分為以下兩類:
2.1 外部監(jiān)控,即使用虛擬機(jī)管理器攔截機(jī)中發(fā)生的異常事件,在虛擬機(jī)外部進(jìn)行事件安全性檢測。
2.2 內(nèi)部監(jiān)控,即通過虛擬機(jī)管理器加載和保護(hù)的內(nèi)核模塊進(jìn)行異常事件攔截,確保計算機(jī)系統(tǒng)和網(wǎng)絡(luò)的安全。
一般虛擬監(jiān)控系統(tǒng)的設(shè)計原則都在保證虛擬機(jī)監(jiān)控器的透明性、實時性、安全性和有效性,以防虛擬機(jī)監(jiān)控器存在安全漏洞、隔離性受到破壞以及出現(xiàn)虛擬機(jī)逃逸等問題。目前主流的虛擬機(jī)監(jiān)控器有XEN和VMware等。
威脅基于完全虛擬化的安全監(jiān)控技術(shù)的因素主要來自于三個方面:內(nèi)核、內(nèi)核可加載模塊和應(yīng)用進(jìn)程。首先,入侵程序通常以為內(nèi)核可加載模塊存在,會修改內(nèi)核代碼或數(shù)據(jù),從而篡改內(nèi)核的控制流。其次,惡意的內(nèi)核可加載模塊通常具有隱藏特性,使得系統(tǒng)用戶無法察覺。最后,入侵程序感染系統(tǒng)中的應(yīng)用進(jìn)程,使得其正常行為發(fā)生改變。常規(guī)的安全監(jiān)控工具與被監(jiān)控的程序位于同一層次,如果被監(jiān)控的惡意程序的權(quán)限高于監(jiān)控工具,那么惡意程序就完全有可能繞過或者破壞監(jiān)控工具,從而導(dǎo)致監(jiān)控失效。
內(nèi)核作為操作系統(tǒng)的核心程序,由代碼和數(shù)據(jù)構(gòu)成。操作系統(tǒng)安全最重要的一點(diǎn)就是內(nèi)核數(shù)據(jù)的完整性,為此保證內(nèi)核的完整性成為安全監(jiān)控的關(guān)鍵。
內(nèi)核容易受到內(nèi)核對象鉤子和動態(tài)內(nèi)核對象操作的威脅、修改數(shù)據(jù),為此我們必須建立起完整的內(nèi)核保護(hù)模塊。圖1為內(nèi)核保護(hù)模塊結(jié)構(gòu)圖。
圖1 內(nèi)核保護(hù)模塊結(jié)構(gòu)圖
惡意的內(nèi)核可加載模塊通常會隱藏自身,使得入侵行為不被系統(tǒng)用戶察覺。其最常見的隱藏方式就是該模塊加載到內(nèi)存后將它自己從內(nèi)核可加載模塊的列表中摘除,但并沒有將它從內(nèi)核內(nèi)存中卸載。然而與內(nèi)核可加載模塊同層次的監(jiān)控工具并不能很好的檢測到具有隱藏特性的惡意內(nèi)核可加載模塊,其監(jiān)控仍存在漏洞。
隱藏內(nèi)核可加載模塊檢測的關(guān)鍵在于交叉視圖對比技術(shù),在虛擬機(jī)監(jiān)控器層次訪問虛擬機(jī)系統(tǒng)中的/proc/modules文件來獲得不可信的內(nèi)核可加載模塊列表。虛擬機(jī)監(jiān)控器層次視圖,也就是可信的內(nèi)核可加載模塊列表。我們知道內(nèi)核模塊在創(chuàng)建和卸載時會進(jìn)行系統(tǒng)調(diào)用,進(jìn)而由內(nèi)核分配它所需資源,因此虛擬機(jī)層次視圖的構(gòu)建可以通過虛擬機(jī)監(jiān)控器截獲客戶操作系統(tǒng)的系統(tǒng)調(diào)用來實現(xiàn)。最后將不可信視圖與可信視圖進(jìn)行交叉對比,檢測出隱藏的內(nèi)核可加載模塊。
傳統(tǒng)環(huán)境下,安全監(jiān)控是基于相對穩(wěn)定的網(wǎng)絡(luò)和系統(tǒng)環(huán)境。在虛擬計算環(huán)境下,虛擬機(jī)管理器可以對操作系統(tǒng)運(yùn)行的多個虛擬機(jī)進(jìn)行隔離。因此利用虛擬機(jī)管理器將安全監(jiān)控系統(tǒng)部署在管理器上,不僅可以增強(qiáng)監(jiān)控系統(tǒng)的安全性,同時相對于目標(biāo)虛擬機(jī)而言具有透明性。然而,由于虛擬機(jī)本身所具有的動態(tài)性和多樣性,這也給安全監(jiān)控帶來了巨大的挑戰(zhàn),仍需要后續(xù)技術(shù)發(fā)展進(jìn)行改進(jìn)。
[1]Smith J E,Nair R, The Architecture of Virtual Machines[J].IEEE Computer, 2005, 38(5):32-38.