一種用于kvm虛擬機系統(tǒng)的安全防護方法及系統(tǒng)的制作方法【專利摘要】本發(fā)明提供一種用于KVM虛擬機系統(tǒng)的安全防護方法,包括下列步驟:1)周期性地調(diào)用KVM虛擬機系統(tǒng)Qemu接口,獲取虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù);2)將獲取到的虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù)與備份的相應(yīng)數(shù)據(jù)進行比較,用備份的數(shù)據(jù)對虛擬機系統(tǒng)中狀態(tài)異常的內(nèi)核對象進行恢復(fù)。本發(fā)明相對于基于物理機系統(tǒng)開發(fā)的安全工具,本發(fā)明實現(xiàn)了輕量級的性能開銷,能夠極大地節(jié)省開銷,保障虛擬機的性能。本發(fā)明能夠直接對狀態(tài)異常的虛擬機進行修復(fù)。本發(fā)明在實現(xiàn)對虛擬機安全防護的同時,能夠最大程度地避免虛擬機運行的中斷,將對虛擬機性能的影響降到最低?!緦@f明】一種用于KVM虛擬機系統(tǒng)的安全防護方法及系統(tǒng)
技術(shù)領(lǐng)域:
[0001]本發(fā)明涉及虛擬機安全監(jiān)控
技術(shù)領(lǐng)域:
,具體的說,本發(fā)明涉及一種用于KVM(Kernel-basedVirtualMachine)虛擬機系統(tǒng)的安全防護方法及系統(tǒng)?!?br>背景技術(shù):
】[0002]云計算開創(chuàng)了軟件即服務(wù)(SaaS)、平臺即服務(wù)(PaaS)、基礎(chǔ)設(shè)施即服務(wù)(IaaS)的全新服務(wù)模式,徹底改變了傳統(tǒng)IT資源的交付和商用模式,被視為信息產(chǎn)業(yè)界的又一場技術(shù)變革,給傳統(tǒng)的IT產(chǎn)業(yè)帶來了新的發(fā)展機遇。云計算的迅猛發(fā)展促進了虛擬化技術(shù)在商業(yè)上的廣泛應(yīng)用。作為云計算平臺的核心支撐技術(shù),虛擬化技術(shù)將各種硬件、軟件、操作系統(tǒng)、存儲、網(wǎng)絡(luò)以及其他的IT資源進行虛擬化,形成規(guī)模巨大的共享IT資源池,納入云計算的管理平臺。通過虛擬化技術(shù)方案,傳統(tǒng)服務(wù)器物理資源都被抽象成可管理的邏輯資源,通過互聯(lián)網(wǎng)像水、電和煤氣一樣提供給最終用戶。企業(yè)用戶把關(guān)鍵業(yè)務(wù)放在虛擬化環(huán)境中運營,在業(yè)務(wù)擴張、資源不足時只需要添加新的硬件進入資源池,無需任何即可更新和升級即可完成系統(tǒng)規(guī)模的擴展。[0003]然而,任何一種平臺大規(guī)模上線后都會成為廣大網(wǎng)絡(luò)黑客攻擊的對象,虛擬機也不例外,針對于傳統(tǒng)計算機系統(tǒng)存在的種種威脅對虛擬機系統(tǒng)同樣適用。在虛擬化環(huán)境中,虛擬機系統(tǒng)裝載用戶應(yīng)用并暴露在互聯(lián)網(wǎng)環(huán)境下運行,很顯然會遭受到來自網(wǎng)絡(luò)環(huán)境中的各種攻擊和威脅。而目前虛擬機系統(tǒng)使用的安全工具往往是基于物理機系統(tǒng)開發(fā)的,其防護方法無一例外都是借助傳統(tǒng)方式。每一個虛擬機系統(tǒng)都安裝安全工具對物理服務(wù)器的存儲空間、內(nèi)存資源、CPU資源的消耗是巨大的。常規(guī)防病毒掃描和病毒代碼庫更新等占用大量資源的操作將在很短的時間內(nèi)導(dǎo)致過量的系統(tǒng)負載。如果防病毒掃描或定期更新在所有的虛擬機上同時啟動,將會引起“防病毒風(fēng)暴”,造成對由內(nèi)存、存儲和CPU構(gòu)成的基本虛擬化資源池的“哄搶”,這將嚴重影響虛擬機性能,阻礙虛擬機系統(tǒng)的正常運行。[0004]另一方面,KVM是一個基于Linux內(nèi)核的開源虛擬化方案,本發(fā)明中將基于KVM技術(shù)的虛擬機系統(tǒng)稱為KVM虛擬機系統(tǒng),圖1示出了KVM虛擬機系統(tǒng)的架構(gòu)圖。與Xen、VMffare等提供完整解決方案的商業(yè)化虛擬產(chǎn)品不同,KVM的思想是在Linux內(nèi)核的基礎(chǔ)上添加虛擬機管理模塊,重用Linux內(nèi)核中已經(jīng)完善的進程調(diào)度、內(nèi)存管理、1管理等部分,使之成為一個可以支持虛擬機運行的虛擬機監(jiān)視器(VMM)。由于具備簡單易用性的特點,KVM正超越Xen成為大多數(shù)企業(yè)環(huán)境首選的開源虛擬化技術(shù)。但是,目前,尚未出現(xiàn)專門針對KVM虛擬機系統(tǒng)進行優(yōu)化的安全防護方案。[0005]因此,當(dāng)前迫切需要一種特別適用于KVM虛擬機系統(tǒng)的安全防護解決方案。【
發(fā)明內(nèi)容】[0006]本發(fā)明的任務(wù)是提供一種特別適用于KVM虛擬機系統(tǒng)的安全防護解決方案。[0007]根據(jù)本發(fā)明的一個方面,提供了一種用于KVM虛擬機系統(tǒng)的安全防護方法,包括下列步驟:[0008]I)周期性地調(diào)用KVM虛擬機系統(tǒng)Qemu接口,獲取虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù);[0009]2)將獲取到的虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù)與備份的相應(yīng)數(shù)據(jù)進行比較,用備份的數(shù)據(jù)對虛擬機系統(tǒng)中狀態(tài)異常的內(nèi)核對象進行恢復(fù)。[0010]其中,所述中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù)包括:中斷處理函數(shù)system_call()的內(nèi)存地址、系統(tǒng)調(diào)用表sys_call_table的內(nèi)存地址以及每個系統(tǒng)調(diào)用函數(shù)的內(nèi)存地址。[0011]根據(jù)本發(fā)明的另一個方面,提供了一種用于KVM虛擬機系統(tǒng)的安全防護系統(tǒng),包括安全檢測模塊、數(shù)據(jù)恢復(fù)模塊、備份系統(tǒng)模塊和控制模塊;[0012]其中,安全檢測模塊用于掃描虛擬機的內(nèi)核對象的關(guān)鍵數(shù)據(jù);[0013]數(shù)據(jù)恢復(fù)模塊用于恢復(fù)狀態(tài)異常的虛擬機系統(tǒng)調(diào)用數(shù)據(jù);[0014]備份系統(tǒng)模塊用于備份虛擬機系統(tǒng)的內(nèi)核對象的關(guān)鍵數(shù)據(jù);[0015]控制模塊用于調(diào)度安全檢測模塊和數(shù)據(jù)恢復(fù)模塊的執(zhí)行,控制模塊接收安全檢測模塊的返回值并為數(shù)據(jù)恢復(fù)模塊提供必要的參數(shù);[0016]其中,所述關(guān)鍵數(shù)據(jù)包括:中斷服務(wù)處理函數(shù)SyStem_Call()地址,系統(tǒng)調(diào)用表sys_caIl_tabIe()地址,以及每個系統(tǒng)調(diào)用函數(shù)的地址。[0017]其中,所述安全防護系統(tǒng)部署在KVM虛擬機系統(tǒng)的KVM驅(qū)動器所在宿主機的用戶態(tài)空間。[0018]其中,所述檢測模塊還用于向虛擬機發(fā)送虛擬機狀態(tài)獲取請求時,調(diào)用Qemu接口cpu_physical_memory_map(),在不暫停對應(yīng)虛擬機的運行的同時,將虛擬機的物理內(nèi)存地址映射到檢測模塊的進程地址空間,獲取映射內(nèi)存地址空間的讀指針。[0019]其中,所述恢復(fù)模塊還用于在恢復(fù)狀態(tài)異常的虛擬機系統(tǒng)調(diào)用數(shù)據(jù)時,利用調(diào)用Qemu接口cpu_physical_memory_map(),將虛擬機的物理內(nèi)存地址映射到恢復(fù)模塊的進程地址空間,獲取相應(yīng)的寫指針,暫停虛擬機的運行,然后將備份數(shù)據(jù)寫入虛擬機的物理內(nèi)存地址。[0020]與現(xiàn)有技術(shù)相比,本發(fā)明具有下列技術(shù)效果:[0021]1、相對于基于物理機系統(tǒng)開發(fā)的安全工具,本發(fā)明實現(xiàn)了輕量級的性能開銷,能夠極大地節(jié)省開銷,保障虛擬機的性能。[0022]2、本發(fā)明的方案能夠直接對狀態(tài)異常的虛擬機進行修復(fù)。[0023]3、本發(fā)明將安全監(jiān)控系統(tǒng)部署在被監(jiān)控的虛擬機系統(tǒng)外部,實現(xiàn)了虛擬機與安全監(jiān)控系統(tǒng)的隔咼。[0024]4、本發(fā)明在實現(xiàn)對虛擬機安全防護的同時,能夠最大程度地避免虛擬機運行的中斷,將對虛擬機性能的影響降到最低?!靖綀D說明】[0025]以下,結(jié)合附圖來詳細說明本發(fā)明的實施例,其中:[0026]圖1示出了KVM虛擬機系統(tǒng)的架構(gòu)圖;[0027]圖2示出了本發(fā)明一個實施例的基于KVM的安全防護方法的流程圖;[0028]圖3示出了本發(fā)明一個實施例的基于KVM的安全防護系統(tǒng)的架構(gòu)圖;[0029]圖4示出了本發(fā)明一個實施例的基于KVM的安全防護系統(tǒng)的安全監(jiān)控系統(tǒng)的安全分析執(zhí)行時序圖;[0030]圖5示出了示出了本發(fā)明一個實施例的基于KVM的安全防護系統(tǒng)的安全監(jiān)控系統(tǒng)的數(shù)據(jù)恢復(fù)執(zhí)行時序圖?!揪唧w實施方式】[0031]發(fā)明人針對KVM虛擬機系統(tǒng)的特點進行了深入研究,Linux系統(tǒng)實現(xiàn)系統(tǒng)調(diào)用時利用了i386體系結(jié)構(gòu)中的軟中斷機制。應(yīng)用程序通過產(chǎn)生intOxSO中斷調(diào)用系統(tǒng)調(diào)用,使程序從用戶態(tài)進入到內(nèi)核態(tài)執(zhí)行。當(dāng)系統(tǒng)調(diào)用發(fā)生時,CPU切換到內(nèi)核態(tài)并根據(jù)中斷向量0x80在中斷描述符表IDT中查找到system_call()的地址。system_call()在進行必要的處理后,統(tǒng)一調(diào)用callsys_call_table(,631,4)來調(diào)用85^_0311_1&1316表中的系統(tǒng)調(diào)用服務(wù),631存放的即系統(tǒng)調(diào)用號,系統(tǒng)調(diào)用函數(shù)執(zhí)行完后將結(jié)果返回給用戶態(tài)的應(yīng)用程序。保障系統(tǒng)調(diào)用的整個流程不被破壞,即可保證系統(tǒng)調(diào)用的完整性,從而保證虛擬機系統(tǒng)的安全。換句話說,可以通過保障中斷描述符表中系統(tǒng)調(diào)用對應(yīng)的中斷服務(wù)處理函數(shù)SyStem_Call()不被重定向;保障syStem_Call()中使用的系統(tǒng)調(diào)用表不被重定向;以及保障系統(tǒng)調(diào)用函數(shù)不被重定向,即可在很大程度上保證虛擬機系統(tǒng)的安全,并且實現(xiàn)輕量級的性能開銷。[0032]根據(jù)本發(fā)明的一個實施例,提供了一種用于KVM虛擬機系統(tǒng)的安全防護方法。首先,根據(jù)制定的周期定期地調(diào)用Qemu接口獲取虛擬機系統(tǒng)中與系統(tǒng)調(diào)用相關(guān)的關(guān)鍵數(shù)據(jù),即中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù)。然后,比較獲取到的數(shù)據(jù)與備份的數(shù)據(jù)是否一致,如果不一致,則說明對應(yīng)的項遭到了篡改,提取備份的數(shù)據(jù)覆蓋虛擬機內(nèi)存的指定地址空間,對虛擬機系統(tǒng)中狀態(tài)異常的內(nèi)核對象進行恢復(fù)。[0033]圖2示出了本實施例的用于KVM虛擬機系統(tǒng)的安全防護方法的流程圖,該流程包括下列步驟:[0034]步驟1:根據(jù)客戶機的8}^七61]1.1]^。,獲取85^_0311_131316的地址。[0035]步驟2:根據(jù)被監(jiān)控虛擬機的8}^丨6111.1]^。文件中的85^_0311_131316地址,通過開源自省庫LibvmiAPI映射sys_call_table所在的內(nèi)存頁面,并返回該頁面的可讀指針。[0036]步驟3:通過系統(tǒng)調(diào)用號_置_<^611從sys_call_table中獲取指定系統(tǒng)調(diào)用函數(shù)sys_open()的地址addrl。[0037]步驟4:將所獲取的系統(tǒng)調(diào)用函數(shù)sys_open()的地址addrI,與系統(tǒng)的相應(yīng)地址快照addr2作對比,如果8(1(11'1與3(1(^2不一致,說明系統(tǒng)調(diào)用被重定向,進入步驟5,如果addrI與addr2—致,說明系統(tǒng)調(diào)用正常,對虛擬機的本輪監(jiān)控結(jié)束。[0038]步驟5:暫停虛擬機。[0039]步驟6:啟動恢復(fù)流程。[0040]步驟7:利用備份的址快照addr2恢復(fù)被篡改的系統(tǒng)調(diào)用函數(shù)SyS_0pen()的地址。對虛擬機的本輪監(jiān)控結(jié)束。[0041]進一步地,在一個優(yōu)選實施例中,首先讀取被監(jiān)控虛擬機系統(tǒng)的idtr寄存器,idtr寄存器用于存放系統(tǒng)中斷描述符表(IDT)的內(nèi)存地址,通過idtr能夠獲取系統(tǒng)中斷描述符表的內(nèi)容;根據(jù)中斷向量號int0x80計算得到系統(tǒng)調(diào)用對應(yīng)的中斷處理函數(shù)system_call()的內(nèi)存地址8(1(11'1。提取備份的85^丨6111_0311()的地址快照addr2,將8(1(11'1與3(1(^2進行比對,如果addrI和addr2不一致則說明addrI被篡改,報告異常,并啟動恢復(fù)流程,恢復(fù)中斷處理函數(shù)system_calI()的地址。若system_calI()內(nèi)存地址檢測結(jié)果正常,獲取sys_cal1_table的地址,以進一步檢查system_call()函數(shù)體是否被篡改。本實施例中,根據(jù)得到的system_call()的內(nèi)存地址,利用Libvmi函數(shù)庫調(diào)用Qemu接口cpu_physical_memory_map(),將SyStem_Call()函數(shù)體所在的物理內(nèi)存頁面映射到宿主機用戶態(tài)空間(即映射到安全防護進程的進程地址空間),并返回該內(nèi)存空間的可讀指針,然后讀取到SyS_call()函數(shù)的二進制指令。通過反匯編system_call()函數(shù)可以得知,system_call()只有在調(diào)用系統(tǒng)調(diào)用處使用了call指令,x86call指令的二進制格式為\xff\xl4\x85,因此可以從sys_call()函數(shù)體開始進行搜索得到存放syS_call_table的地址addrl。抽取備份的地址快照addr2進行對比。如果8(1(11'1與3(1(^2不一致,則說明被監(jiān)控虛擬機系統(tǒng)中的sys_call()函數(shù)體已被篡改,啟動恢復(fù)流程恢復(fù)sys_caIl_tabIe的地址。在恢復(fù)狀態(tài)異常的虛擬機系統(tǒng)調(diào)用數(shù)據(jù)時,利用調(diào)用Qemu接口cpu_physical_memory_map(),將虛擬機的物理內(nèi)存地址映射到恢復(fù)模塊的進程地址空間,獲取相應(yīng)的寫指針,暫停虛擬機的運行,然后將備份數(shù)據(jù)寫入虛擬機的物理內(nèi)存地址。[0042]圖3示出了示出了本發(fā)明一個實施例的基于KVM的安全防護系統(tǒng)的架構(gòu)圖。參考圖3,該安全防護系統(tǒng)VM-monitor部署在KVM所在宿主機的用戶態(tài)空間,有效地利用了KVM的隔離性與虛擬機VM相隔離。所述基于KVM的安全防護系統(tǒng)包括安全檢測模塊、數(shù)據(jù)恢復(fù)模塊、備份系統(tǒng)模塊和控制模塊。[0043]其中,安全檢測模塊用于掃描虛擬機的內(nèi)核對象數(shù)據(jù),這其中包括系統(tǒng)調(diào)用對應(yīng)的中斷服務(wù)處理函數(shù)system_call()地址、system_call()中調(diào)用的系統(tǒng)調(diào)用表sys_call_table()地址以及系統(tǒng)調(diào)用表中每個系統(tǒng)調(diào)用函數(shù)的地址,通過與備份的基準(zhǔn)數(shù)據(jù)的對比分析這些地址數(shù)據(jù)狀態(tài)是否異常。[0044]數(shù)據(jù)恢復(fù)模塊用于恢復(fù)狀態(tài)異常的虛擬機系統(tǒng)調(diào)用數(shù)據(jù),安全檢測模塊檢測到狀態(tài)異常的系統(tǒng)調(diào)用后,經(jīng)由控制模塊向數(shù)據(jù)恢復(fù)模塊傳遞對應(yīng)的參數(shù),數(shù)據(jù)恢復(fù)模塊根據(jù)傳入的參數(shù)通過寫虛擬機內(nèi)存的方式恢復(fù)虛擬機系統(tǒng)調(diào)用的狀態(tài)。[0045]備份系統(tǒng)模塊用于備份虛擬機系統(tǒng)的內(nèi)核對象的關(guān)鍵數(shù)據(jù),這些關(guān)鍵數(shù)據(jù)包括:中斷服務(wù)處理函數(shù)system_call()地址,系統(tǒng)調(diào)用表sys_call_table()地址,以及每個系統(tǒng)調(diào)用函數(shù)的地址。這些備份數(shù)據(jù)將為安全檢測模塊和數(shù)據(jù)恢復(fù)模塊的功能實現(xiàn)提供必要的基準(zhǔn)數(shù)據(jù)。[0046]控制模塊用于調(diào)度安全檢測模塊和數(shù)據(jù)恢復(fù)模塊的執(zhí)行,控制模塊接收安全檢測模塊的返回值并為數(shù)據(jù)恢復(fù)模塊提供必要的參數(shù)。[0047]圖4示出了本發(fā)明一個實施例的基于KVM的安全防護系統(tǒng)的安全監(jiān)控系統(tǒng)的安全分析執(zhí)行時序圖,參考圖4,進行安全分析時,首先控制模塊向檢測模塊發(fā)送虛擬機狀態(tài)檢測請求。然后檢測模塊再向KVM虛擬機系統(tǒng)的Qemu接口發(fā)送虛擬機狀態(tài)獲取請求。Qemu接口接收到虛擬機狀態(tài)獲取請求后,映射Guest內(nèi)存空間,然后返回所映射的內(nèi)存地址空間的指針。檢測模塊根據(jù)所接收的指針讀取虛擬機內(nèi)存狀態(tài)并進行分析,最后將分析結(jié)果返回控制豐吳塊。[0048]圖5示出了示出了本發(fā)明一個實施例的基于KVM的安全防護系統(tǒng)的安全監(jiān)控系統(tǒng)的數(shù)據(jù)恢復(fù)執(zhí)行時序圖。首先,控制模塊通過與檢測模塊交互(根據(jù)圖4的時序完成交互),獲得虛擬機完整性的分析結(jié)果。當(dāng)分析結(jié)果為虛擬機狀態(tài)異常時,控制模塊向恢復(fù)模塊發(fā)送虛擬機異常狀態(tài)恢復(fù)請求,然后恢復(fù)模塊讀取備份系統(tǒng)模塊中的相應(yīng)備份,將其寫入虛擬機內(nèi)存以恢復(fù)虛擬機狀態(tài)。最后,恢復(fù)模塊向控制模塊返回恢復(fù)結(jié)果。[0049]進一步地,在一個優(yōu)選實施例中,檢測模塊發(fā)送虛擬機狀態(tài)獲取請求時,利用Libvmi函數(shù)庫調(diào)用Qemu接口cpu_physical_memory_map(),將虛擬機的物理內(nèi)存地址映射到檢測模塊的進程地址空間,然后返回所映射的內(nèi)存地址空間的指針,該指針的屬性為讀指針,此時虛擬機仍保持運行狀態(tài)。檢測模塊根據(jù)所接收的指針在自身的進程地址空間讀取虛擬機內(nèi)存狀態(tài)并進行分析,再將分析結(jié)果返回控制模塊。恢復(fù)模塊在收到虛擬機異常狀態(tài)恢復(fù)請求后,從備份系統(tǒng)模塊讀取對應(yīng)的備份數(shù)據(jù),然后利用Libvmi函數(shù)庫調(diào)用Qemu接口cpu_physical_memory_map(),將虛擬機的物理內(nèi)存地址映射到恢復(fù)模塊的進程地址空間,Qemu接口返回相應(yīng)的寫指針,同時暫停虛擬機的運行。恢復(fù)模塊根據(jù)返回的寫指針將備份數(shù)據(jù)寫入虛擬機的物理內(nèi)存地址,從而使虛擬機的狀態(tài)恢復(fù)正常。最后恢復(fù)虛擬機的運行。[0050]上述優(yōu)選實施例能夠在實現(xiàn)對虛擬機安全防護的同時,最大程度地避免虛擬機運行的中斷,將對虛擬機性能的影響降到最低。[0051]最后應(yīng)說明的是,以上實施例僅用以描述本發(fā)明的技術(shù)方案而不是對本技術(shù)方法進行限制,本發(fā)明在應(yīng)用上可以延伸為其它的修改、變化、應(yīng)用和實施例,并且因此認為所有這樣的修改、變化、應(yīng)用、實施例都在本發(fā)明的精神和教導(dǎo)范圍內(nèi)?!局鳈?quán)項】1.一種用于KVM虛擬機系統(tǒng)的安全防護方法,包括下列步驟:1)周期性地調(diào)用KVM虛擬機系統(tǒng)Qemu接口,獲取虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù);2)將獲取到的虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù)與備份的相應(yīng)數(shù)據(jù)進行比較,判斷虛擬機系統(tǒng)中是否存在狀態(tài)異常。2.根據(jù)權(quán)利要求1所述的用于KVM虛擬機系統(tǒng)的安全防護方法,其特征在于,所述中斷描述符表數(shù)據(jù)包括:中斷服務(wù)處理函數(shù)system_Cal1的內(nèi)存地址;所述系統(tǒng)調(diào)用表數(shù)據(jù)包括:系統(tǒng)調(diào)用表SyS_Call_table的內(nèi)存地址;所述系統(tǒng)調(diào)用數(shù)據(jù)包括:每個系統(tǒng)調(diào)用函數(shù)的內(nèi)存地址。3.根據(jù)權(quán)利要求1所述的用于KVM虛擬機系統(tǒng)的安全防護方法,其特征在于,所述步驟I)、2)由部署在KVM虛擬機系統(tǒng)的KVM驅(qū)動器所在宿主機的用戶態(tài)空間的安全防護系統(tǒng)執(zhí)行。4.根據(jù)權(quán)利要求2所述的用于KVM虛擬機系統(tǒng)的安全防護方法,其特征在于,所述步驟I)還包括:向虛擬機發(fā)送虛擬機狀態(tài)獲取請求,調(diào)用Qemu接口cpu_physical_memory_map(),在不暫停對應(yīng)虛擬機的運行的同時,將虛擬機的物理內(nèi)存地址映射到檢測模塊的進程地址空間,獲取映射內(nèi)存地址空間的讀指針。5.根據(jù)權(quán)利要求4所述的用于KVM虛擬機系統(tǒng)的安全防護方法,其特征在于,當(dāng)所述步驟2)中判斷虛擬機系統(tǒng)中存在狀態(tài)異常時,執(zhí)行步驟:3)用備份的數(shù)據(jù)對虛擬機系統(tǒng)中狀態(tài)異常的內(nèi)核對象進行恢復(fù)。6.根據(jù)權(quán)利要求5所述的用于KVM虛擬機系統(tǒng)的安全防護方法,其特征在于,所述步驟3)中,對狀態(tài)異常的內(nèi)核對象進行恢復(fù)包括:利用調(diào)用Qemu接口cpu_physical_memory_map(),將虛擬機的物理內(nèi)存地址映射到恢復(fù)模塊的進程地址空間,獲取相應(yīng)的寫指針,暫停虛擬機的運行,然后將備份數(shù)據(jù)寫入虛擬機的物理內(nèi)存地址。7.—種用于KVM虛擬機系統(tǒng)的安全防護系統(tǒng),包括:安全檢測模塊,用于周期性地調(diào)用KVM虛擬機系統(tǒng)Qemu接口,獲取虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù);和狀態(tài)異常判斷模塊;用于將獲取到的虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù)與備份的相應(yīng)數(shù)據(jù)進行比較,判斷虛擬機系統(tǒng)中是否存在狀態(tài)異常。8.根據(jù)權(quán)利要求7所述的用于KVM虛擬機系統(tǒng)的安全防護系統(tǒng),其特征在于,還包括:備份系統(tǒng)模塊,用于備份虛擬機系統(tǒng)的內(nèi)核對象的關(guān)鍵數(shù)據(jù);所述關(guān)鍵數(shù)據(jù)包括:虛擬機系統(tǒng)的中斷描述符表、系統(tǒng)調(diào)用表和系統(tǒng)調(diào)用數(shù)據(jù);所述中斷描述符表數(shù)據(jù)包括:中斷服務(wù)處理函數(shù)system_ca11()的內(nèi)存地址;所述系統(tǒng)調(diào)用表數(shù)據(jù)包括:系統(tǒng)調(diào)用表sys_caIl_tabIe的內(nèi)存地址;所述系統(tǒng)調(diào)用數(shù)據(jù)包括:每個系統(tǒng)調(diào)用函數(shù)的內(nèi)存地址;數(shù)據(jù)恢復(fù)模塊,用于恢復(fù)狀態(tài)異常的虛擬機系統(tǒng)調(diào)用數(shù)據(jù);和控制模塊,用于調(diào)度安全檢測模塊和數(shù)據(jù)恢復(fù)模塊的執(zhí)行,控制模塊接收安全檢測模塊的返回值并為數(shù)據(jù)恢復(fù)模塊提供必要的參數(shù)。9.根據(jù)權(quán)利要求8所述的用于KVM虛擬機系統(tǒng)的安全防護系統(tǒng),其特征在于,所述安全防護系統(tǒng)部署在KVM虛擬機系統(tǒng)的KVM驅(qū)動器所在宿主機的用戶態(tài)空間。10.根據(jù)權(quán)利要求8所述的用于KVM虛擬機系統(tǒng)的安全防護系統(tǒng),其特征在于,所述安全檢測模塊還用于向虛擬機發(fā)送虛擬機狀態(tài)獲取請求時,調(diào)用Qemu接口cpu_physical_memory_map(),在不暫停對應(yīng)虛擬機的運行的同時,將虛擬機的物理內(nèi)存地址映射到檢測模塊的進程地址空間,獲取映射內(nèi)存地址空間的讀指針;所述數(shù)據(jù)恢復(fù)模塊還用于在恢復(fù)狀態(tài)異常的虛擬機系統(tǒng)調(diào)用數(shù)據(jù)時,利用調(diào)用Qemu接口cpu_physical_memory_map(),將虛擬機的物理內(nèi)存地址映射到恢復(fù)模塊的進程地址空間,獲取相應(yīng)的寫指針,暫停虛擬機的運行,然后將備份數(shù)據(jù)寫入虛擬機的物理內(nèi)存地址?!疚臋n編號】G06F21/57GK106020932SQ201610334913【公開日】2016年10月12日【申請日】2016年5月19日【發(fā)明人】于磊,唐宏偉,趙曉芳【申請人】中國科學(xué)院計算技術(shù)研究所