倪思源,扈紅超,劉文彥,梁 浩
(1.鄭州大學(xué) 中原網(wǎng)絡(luò)安全研究院,鄭州 450000;2.中國(guó)人民解放軍戰(zhàn)略支援部隊(duì)信息工程大學(xué),鄭州 450000)
云計(jì)算憑借其隨需應(yīng)變、按需即付的優(yōu)勢(shì)給用戶帶來(lái)極大的便利。為支持大規(guī)模的云服務(wù),數(shù)據(jù)中心需開(kāi)通數(shù)千臺(tái)服務(wù)器和交換機(jī)。數(shù)據(jù)中心要為眾多服務(wù)器和網(wǎng)絡(luò)設(shè)備供電,因此會(huì)消耗大量能源。典型數(shù)據(jù)中心的能耗相當(dāng)于25 000 戶家庭的能耗,每5 年可能翻1 番[1-2]。最近的研究結(jié)果表明,由于數(shù)據(jù)中心的服務(wù)器利用率不足會(huì)導(dǎo)致大量的資源被浪費(fèi),且服務(wù)器的平均利用率僅為5%~20%之間[3]。因此,在提供云服務(wù)的同時(shí),提高數(shù)據(jù)中心的服務(wù)器利用率非常重要。
部署在服務(wù)器上的虛擬機(jī)被攻擊后會(huì)影響正常服務(wù),所以研究人員提出一種冗余備份的虛擬機(jī)策略,冗余策略能夠提高云計(jì)算環(huán)境的容錯(cuò)性,減小對(duì)用戶體驗(yàn)帶來(lái)的影響。然而,系統(tǒng)組件的同質(zhì)化,使得攻擊者易于探測(cè)用戶信息、竊取用戶數(shù)據(jù),導(dǎo)致云計(jì)算環(huán)境受到安全威脅[4]。2019 年1 月,研發(fā)人員發(fā)現(xiàn)WINRAR 漏洞,該漏洞威脅了5 億用戶的系統(tǒng)安全。同年10 月,Android 零日漏洞也被發(fā)現(xiàn),該漏洞威脅了華為、三星、小米等多家電子設(shè)備的安全?;A(chǔ)設(shè)施異構(gòu)化能夠增大攻擊者探測(cè)難度[5],提高云計(jì)算環(huán)境的安全性,在此基礎(chǔ)上對(duì)虛擬機(jī)進(jìn)行動(dòng)態(tài)輪換能夠進(jìn)一步增強(qiáng)虛擬機(jī)安全性,通過(guò)動(dòng)態(tài)改變虛擬機(jī)的部署位置和虛擬機(jī)的操作系統(tǒng),避免用戶虛擬機(jī)受到側(cè)信道攻擊[6]和探測(cè)攻擊[7]。
然而,異構(gòu)云基礎(chǔ)設(shè)施和虛擬機(jī)輪換會(huì)帶來(lái)云計(jì)算資源分配的難題[8]。一方面,由于基礎(chǔ)設(shè)施異構(gòu)化使得傳統(tǒng)的裝箱方法不再適用資源分配,供應(yīng)商需考慮每一個(gè)服務(wù)器可提供的資源來(lái)實(shí)現(xiàn)負(fù)載均衡。另一方面,虛擬機(jī)的輪換會(huì)改變當(dāng)前服務(wù)器的負(fù)載情況,如何在輪換的過(guò)程中減小負(fù)載波動(dòng)值得研究。本文提出一種基于輪換策略的異構(gòu)云資源分配算法,將不同的資源抽象成維度不同的向量,利用余弦定理來(lái)衡量向量之間的相似度,根據(jù)向量間的相似度進(jìn)行資源分配以實(shí)現(xiàn)負(fù)載平衡,并在初次資源分配完成后對(duì)虛擬機(jī)選擇相似度最高的服務(wù)器進(jìn)行輪換。
云計(jì)算中的資源分配屬于大規(guī)模多任務(wù)調(diào)度問(wèn)題,一直是人們研究的熱點(diǎn)。文獻(xiàn)[9]提出一種兩步式的資源分配算法,首先在云中選擇一個(gè)集群,然后在集群中選擇一個(gè)節(jié)點(diǎn)部署虛擬機(jī),該模型使用了3 個(gè)集群和6 個(gè)節(jié)點(diǎn),實(shí)驗(yàn)結(jié)果表明,選擇合適的集群比選擇合適的節(jié)點(diǎn)對(duì)資源分配的影響更大。文獻(xiàn)[10]討論了如何量化服務(wù)器和整個(gè)系統(tǒng)間的負(fù)載平衡,該研究選用貪心算法來(lái)平衡服務(wù)器之間的負(fù)載,當(dāng)服務(wù)器負(fù)載超過(guò)閾值時(shí),對(duì)該服務(wù)器上的虛擬機(jī)進(jìn)行遷移,并計(jì)算遷移虛擬機(jī)后的服務(wù)器負(fù)載平衡變化值,選取最小不平衡變化值進(jìn)行遷移。文獻(xiàn)[11]根據(jù)虛擬機(jī)的狀態(tài),提出了靜態(tài)虛擬機(jī)放置和動(dòng)態(tài)虛擬機(jī)放置的算法,既考慮了單個(gè)服務(wù)器的資源剩余量和資源利用率,又兼顧了整體服務(wù)器的資源剩余量和資源利用率。該算法使用平面資源六邊形,由代表不同資源利用類(lèi)別的三角形組成。虛擬機(jī)被分配到互補(bǔ)資源三角形中的服務(wù)器上來(lái)平衡總體利用率。文獻(xiàn)[12]在文獻(xiàn)[11]的基礎(chǔ)上提出了一種虛擬機(jī)放置互補(bǔ)策略。該互補(bǔ)策略考慮資源使用和時(shí)間使用兩個(gè)方面,并認(rèn)為在不同時(shí)間使用相同資源的虛擬機(jī)或在相同時(shí)間使用不同資源的虛擬機(jī)是互補(bǔ)的。文獻(xiàn)[13]設(shè)計(jì)一種基于啟發(fā)式正交二叉樹(shù)搜索的三維裝箱算法,該算法以所有葉子節(jié)點(diǎn)填充率最高為目標(biāo),滿足了裝箱的3 個(gè)約束條件。文獻(xiàn)[14]結(jié)合日常砌墻策略,提出了一種混合模擬退火算法,利用找點(diǎn)法和參考線規(guī)則來(lái)進(jìn)行裝箱,該算法能有效解決三維裝箱問(wèn)題。
虛擬機(jī)是一種用于模擬物理服務(wù)器的虛擬化技術(shù)。隨著虛擬化的發(fā)展,虛擬機(jī)擴(kuò)容和虛擬機(jī)的實(shí)時(shí)遷移為提高服務(wù)器利用率提供了兩種潛在的解決方案[15-16]。虛擬機(jī)大小調(diào)整方案可以對(duì)虛擬機(jī)資源配置的細(xì)粒度進(jìn)行調(diào)整。與峰值資源請(qǐng)求的資源調(diào)配相比,虛擬機(jī)大小調(diào)整的資源調(diào)配可以更好地利用物理資源,而計(jì)算開(kāi)銷(xiāo)可以忽略不計(jì)。實(shí)時(shí)遷移能夠以無(wú)中斷的方式在不同服務(wù)器之間移動(dòng)正在運(yùn)行的虛擬機(jī)。通過(guò)應(yīng)用實(shí)時(shí)遷移和虛擬機(jī)擴(kuò)容,數(shù)據(jù)中心管理器可以將虛擬機(jī)整合到更少的服務(wù)器上,以提高數(shù)據(jù)中心的能源使用率。在整合虛擬機(jī)時(shí),可能存在虛擬機(jī)工作負(fù)載突發(fā)的情況使服務(wù)器過(guò)載[17]。虛擬機(jī)遷移通過(guò)改變底層的物理環(huán)境可以抵御云計(jì)算中的側(cè)信道攻擊,文獻(xiàn)[18]在此基礎(chǔ)上利用MTD 技術(shù),通過(guò)多個(gè)操作系統(tǒng)的輪換來(lái)增強(qiáng)安全性,并利用現(xiàn)有技術(shù),提供了一個(gè)可行的動(dòng)態(tài)防御解決方案,可以方便地部署在真實(shí)的網(wǎng)絡(luò)環(huán)境中。不同于虛擬機(jī)遷移,該方案通過(guò)輪換刪除原服務(wù)器上的虛擬機(jī),并在新的服務(wù)器上部署新的虛擬機(jī)。測(cè)試結(jié)果表明,平臺(tái)的多樣性和動(dòng)態(tài)性提高了系統(tǒng)的安全性,攻擊成功率與輪換時(shí)間間隔成反比。
隨著云計(jì)算的發(fā)展,越來(lái)越多的計(jì)算資源被提供給客戶,如CPU、內(nèi)存大小、磁盤(pán)大小、帶寬等。因此,分配方法應(yīng)該支持任意數(shù)量的維度[19]。同時(shí),在保障虛擬機(jī)安全性的同時(shí)服務(wù)器的資源利用率和負(fù)載波動(dòng)也應(yīng)被關(guān)注。針對(duì)以上問(wèn)題,本文在傳統(tǒng)的裝箱方法上做了改進(jìn),并提出一種基于輪換策略的異構(gòu)云資源分配算法,主要貢獻(xiàn)如下:
1)對(duì)底層物理設(shè)施異構(gòu)化,通過(guò)異構(gòu)底層物理服務(wù)器,增大攻擊者探測(cè)難度,提升云計(jì)算環(huán)境安全性。
2)將影響虛擬機(jī)部署的資源抽象成向量,多維度地考慮資源分配問(wèn)題,以更貼近真實(shí)的資源分配環(huán)境,同時(shí)根據(jù)虛擬機(jī)部署資源的向量與物理服務(wù)器向量間的相似度選擇虛擬機(jī),使得計(jì)算節(jié)點(diǎn)成本更小,能源利用率更大。
3)在每個(gè)虛擬機(jī)初次部署的同時(shí),為每個(gè)虛擬機(jī)設(shè)置駐留時(shí)間,當(dāng)?shù)竭_(dá)駐留時(shí)間后根據(jù)當(dāng)前服務(wù)器負(fù)載情況對(duì)虛擬機(jī)進(jìn)行輪換。輪換會(huì)改變虛擬機(jī)的操作系統(tǒng)以及所部署的服務(wù)器位置,在提高資源利用率的同時(shí)提升了執(zhí)行體的安全性。
虛擬機(jī)在部署時(shí)會(huì)面臨服務(wù)器選擇問(wèn)題,由于不同的服務(wù)器負(fù)載情況可能不同,在部署時(shí)會(huì)影響云平臺(tái)的整體負(fù)載情況。本文將多維異構(gòu)資源的分配問(wèn)題分為2 個(gè)階段:
1)初次部署虛擬機(jī)。將虛擬機(jī)部署在異構(gòu)的物理服務(wù)器上,同時(shí)保證各個(gè)服務(wù)器資源利用率高和服務(wù)器間負(fù)載平衡,這本質(zhì)上是一個(gè)多目標(biāo)優(yōu)化問(wèn)題。
2)輪換已經(jīng)部署好的虛擬機(jī)。輪換可以減小攻擊者對(duì)虛擬機(jī)的影響,提升虛擬機(jī)安全性,但是輪換會(huì)引起服務(wù)器負(fù)載變化,所以在考慮虛擬機(jī)安全的同時(shí),應(yīng)盡量減小服務(wù)器的負(fù)載波動(dòng)。
資源分配問(wèn)題通常被視為裝箱問(wèn)題,即在最少的箱子里放置最多的物品。云計(jì)算中影響資源分配的因素有很多,如CPU、內(nèi)存大小、磁盤(pán)大小、帶寬等。本文用不同的維度來(lái)表示這些因素,并對(duì)云計(jì)算中多維資源分配問(wèn)題進(jìn)行研究。裝箱問(wèn)題描述如下:有n種體積不同的物品,將這n種物品裝到體積為C的m個(gè)箱子中,并約定這n種物品的體積均小于箱子的體積C。不同的裝箱策略使用的箱子個(gè)數(shù)可能不同,裝箱問(wèn)題要求使用最少的箱子來(lái)裝這些物品。
云計(jì)算的物理基礎(chǔ)設(shè)施是由一臺(tái)臺(tái)的物理服務(wù)器組成的,異構(gòu)能有效提高云計(jì)算環(huán)境的安全性,但是異構(gòu)的服務(wù)器之間容量不同,因此異構(gòu)裝箱較傳統(tǒng)的裝箱問(wèn)題相比引入了新的問(wèn)題。對(duì)于每臺(tái)服務(wù)器均需滿足以下約束條件:
部署在服務(wù)器J上的虛擬機(jī)資源需求要小于服務(wù)器容量,不滿足該約束條件即視為裝箱失敗。以三維裝箱為例,將服務(wù)器的CPU、內(nèi)存與磁盤(pán)空間抽象為互不相關(guān)的3 個(gè)維度,如圖1 所示。的容量為(6,6,3),的容量 為(7,5,6)。的體積為(2,1,3)的體積為(1,2,1),的體積為(1,2,2),的體積為(3,1,2),的體積為(2,1,1)。按傳統(tǒng)的裝箱方法,當(dāng)虛擬機(jī)任務(wù)請(qǐng)求到達(dá)時(shí),先嘗試放入已經(jīng)打開(kāi)的箱子,如果能放下就放入該箱子,放不下就開(kāi)啟新的箱子,直到找到能放下的箱子為止。如圖1(a)所示;可以放置在,放置后剩余資源為(5,5,0),此時(shí)磁盤(pán)空間已經(jīng)使用完,但是CPU 與內(nèi)存空間還剩余很多,會(huì)造成嚴(yán)重的資源浪費(fèi);、和可以放置在上,放置后剩余資源為(2,0,2),此時(shí),導(dǎo)致無(wú)法放置。但這種放置策略會(huì)造成資源浪費(fèi),即PM的利用率不高。如圖1(b)所示,將放置在上,和放置在上,此時(shí),所有虛擬機(jī)都能成功部署在服務(wù)器上。這種放置策略可以有效提高箱子的利用率,減少資源的浪費(fèi)。
圖1 虛擬機(jī)放置策略Fig.1 Virtual machine placement strategies
網(wǎng)絡(luò)攻擊對(duì)網(wǎng)絡(luò)系統(tǒng)的危害主要分為網(wǎng)絡(luò)可用性危害與信息安全屬性危害[20],主要體現(xiàn)在對(duì)可用性、機(jī)密性、完整性、不可抵賴(lài)性、認(rèn)證性等安全屬性的危害。由于不同的系統(tǒng)遇到危害時(shí)敏感性反應(yīng)不同,假設(shè)攻擊者只要能入侵目標(biāo)主機(jī)便視為成功攻擊,攻擊過(guò)程的5 個(gè)階段描述如圖2 所示。
圖2 侵入攻擊階段示意圖Fig.2 Schematic diagram of intrusion attack phase
同一臺(tái)物理服務(wù)器上的虛擬機(jī)之間共享資源,攻擊者通過(guò)定位到目標(biāo)主機(jī)所在的服務(wù)器位置,將攻擊者控制的虛擬機(jī)與目標(biāo)主機(jī)部署到同一臺(tái)服務(wù)器上,并對(duì)目標(biāo)主機(jī)發(fā)起側(cè)信道攻擊。同時(shí),攻擊者也可以探測(cè)用戶虛擬機(jī)的操作系統(tǒng),根據(jù)用戶操作系統(tǒng)漏洞對(duì)目標(biāo)主機(jī)進(jìn)行攻擊。攻擊成功率P與虛擬機(jī)操作系統(tǒng)漏洞有關(guān):
其中,V表示虛擬機(jī)操作系統(tǒng)漏洞。因此,動(dòng)態(tài)地改變虛擬機(jī)部署的位置和虛擬機(jī)的操作系統(tǒng)能夠增大攻擊者的探測(cè)難度,降低攻擊者的攻擊成功率。
本節(jié)提出基于輪換策略的異構(gòu)云資源分配算法,將異構(gòu)云資源分配問(wèn)題建模為多維裝箱問(wèn)題進(jìn)行求解,同時(shí)提出一個(gè)資源分配利用率指標(biāo),根據(jù)該指標(biāo)選擇虛擬機(jī)要部署的服務(wù)器位置。
本節(jié)根據(jù)利用率指標(biāo)來(lái)解決虛擬機(jī)布局問(wèn)題。在資源分配時(shí)根據(jù)當(dāng)前服務(wù)器的負(fù)載情況以及資源利用率來(lái)選擇虛擬機(jī)的放置位置,參數(shù)定義如表1所示。
表1 參數(shù)定義Table 1 Parameters definition
式(3)表示服務(wù)器j的剩余資源為服務(wù)器j的總資源減去部署虛擬機(jī)i所占用的資源。由于部署虛擬機(jī)時(shí)要考慮當(dāng)前服務(wù)器負(fù)載情況以及資源剩余情況,因此本文根據(jù)當(dāng)前的服務(wù)器資源利用率來(lái)選擇虛擬機(jī)的部署位置。對(duì)于一個(gè)2 維向量空間,兩個(gè)向量間的夾角越小,兩個(gè)向量越相似。將此推廣至兩個(gè)k維向量,即虛擬機(jī)i的資源需求request 與服務(wù)器j的資源剩余,這兩個(gè)k維向量余弦值如式(5)所示,其中θvp表示虛擬機(jī)i的資源需求與服務(wù)器j的剩余資源夾角大小。
θvp值越大表示虛擬機(jī)i的資源需求與服務(wù)器j的剩余資源之間夾角越大,兩個(gè)向量相關(guān)性越低。反之,θvp值越小表示虛擬機(jī)的資源需求與服務(wù)器的剩余容量相關(guān)性越高。本文選取與虛擬機(jī)i的θvp值最小的服務(wù)器j來(lái)放置虛擬機(jī)。
資源分配問(wèn)題本質(zhì)上是一個(gè)多目標(biāo)優(yōu)化的問(wèn)題,旨在提高能源效率、資源利用率、負(fù)載平衡和服務(wù)器整合。本文將云計(jì)算中的異構(gòu)資源分配問(wèn)題視為多維異構(gòu)裝箱問(wèn)題,具體描述如下:有n個(gè)體積不同的虛擬機(jī)(0 ≤i≤n),m個(gè)容量不同的服務(wù)器(0 ≤j≤m),如式(6)所示,目標(biāo)是用最少的服務(wù)器部署最多的虛擬機(jī)。
目標(biāo)函數(shù):
在革命戰(zhàn)爭(zhēng)年代,長(zhǎng)征時(shí)期紅軍戰(zhàn)士爬雪山、過(guò)草地、煮皮帶、吃樹(shù)根,堅(jiān)決執(zhí)行“不拿群眾一針一線”的方針;在社會(huì)主義年代,老一代科學(xué)家風(fēng)餐露宿、頑強(qiáng)拼搏,克服各種難以想象的困難,突破技術(shù)難關(guān),最終完成了我國(guó)“兩彈一星”戰(zhàn)略。大學(xué)生接受紅色文化熏陶,有助于將艱苦奮斗精神滲透到他們的學(xué)習(xí)和生活中去,培養(yǎng)謙虛、踏實(shí)的學(xué)習(xí)和生活態(tài)度[1]。
由于虛擬機(jī)是多維資源包,本文用向量來(lái)表示虛擬機(jī)的多維資源,其中k表示資源類(lèi)型的維度。式(7)表示放置的虛擬機(jī)資源需求要小于服務(wù)器的剩余資源,表示服務(wù)器j的k維資源剩余情況,表示服務(wù)器的容量,表示虛擬機(jī)i各個(gè)維度占的體積。式(8)表示將虛擬機(jī)i部署在服務(wù)器j上。
變量說(shuō)明:
S(xij):0-1 變量,當(dāng)虛擬機(jī)i在服務(wù)器j上的狀態(tài)正常時(shí),S(wij)為1,否則為0。
約束條件:
式(9)表示虛擬機(jī)i在服務(wù)器j上駐留的時(shí)間不能超過(guò)時(shí)間t。式(10)表示服務(wù)器的負(fù)載變化情況,它等于虛擬機(jī)輪換前后服務(wù)器體積的變化,其中,add 表示輪換后服務(wù)器j新增的虛擬機(jī)體積,delete 表示服務(wù)器j上要?jiǎng)h除的虛擬機(jī)體積。式(11)表示服務(wù)器當(dāng)前負(fù)載狀態(tài),它等于動(dòng)態(tài)輪換之前服務(wù)器的負(fù)載與輪換后服務(wù)器負(fù)載變化之和。虛擬機(jī)動(dòng)態(tài)輪換時(shí)也要滿足式(7)的約束條件,即輪換的虛擬機(jī)體積要小于服務(wù)器的容量。
本文通過(guò)動(dòng)態(tài)、異構(gòu)的虛擬機(jī)部署方式來(lái)增強(qiáng)虛擬機(jī)的安全性。對(duì)于虛擬機(jī)(Ov,Pj),本文考慮操作系統(tǒng)Ov以及部署的服務(wù)器位置Pj兩個(gè)要素,通過(guò)異構(gòu)操作系統(tǒng)Ov和部署的服務(wù)器位置Pj來(lái)提高虛擬機(jī)的安全性。如圖3 所示,在創(chuàng)建虛擬機(jī)(O1,P1)時(shí),給每個(gè)虛擬機(jī)提前設(shè)定好駐留時(shí)間,同時(shí)設(shè)置代理監(jiān)控每個(gè)虛擬機(jī)的狀態(tài)。當(dāng)虛擬機(jī)到達(dá)駐留時(shí)間或虛擬機(jī)狀態(tài)異常時(shí),便刪除該服務(wù)器上的虛擬機(jī),但是該虛擬機(jī)的數(shù)據(jù)仍然存在一個(gè)安全的共享數(shù)據(jù)庫(kù)中。同時(shí),創(chuàng)建一個(gè)新的虛擬機(jī)(O2,P2),該虛擬機(jī)操作系統(tǒng)與原虛擬機(jī)不同,部署的服務(wù)器位置也不同,但是虛擬機(jī)(O2,P2)能從數(shù)據(jù)庫(kù)中獲取虛擬機(jī)(O1,P1)的數(shù)據(jù),并和虛擬機(jī)(O1,P1)一樣對(duì)外提供服務(wù)。虛擬機(jī)根據(jù)當(dāng)前服務(wù)器的負(fù)載,選擇θvp值最大的服務(wù)器進(jìn)行輪換,并要求request,即當(dāng)前服務(wù)器剩余容量大于要輪換的虛擬機(jī)體積。
圖3 虛擬機(jī)輪換方法Fig.3 Virtual machine rotation method
算法1基于輪換策略的異構(gòu)云多維資源分配算法
本文根據(jù)服務(wù)器利用率指標(biāo)來(lái)解決虛擬機(jī)布局問(wèn)題。在資源分配時(shí)根據(jù)當(dāng)前服務(wù)器的負(fù)載情況以及資源利用率來(lái)選擇虛擬機(jī)的放置位置。對(duì)虛擬機(jī)遍歷所有的服務(wù)器,通過(guò)式(5)計(jì)算θvp值,θvp=[θvp(i,1),θvp(i,2),…,θvp(i,j)]。將虛擬機(jī)部署到θvp值最小的服務(wù)器上,此時(shí)應(yīng)注意服務(wù)器的負(fù)載情況,若服務(wù)器資源剩余量小于虛擬機(jī)資源請(qǐng)求,則選擇θvp第二小的服務(wù)器上,依次類(lèi)推,直到能成功部署虛擬機(jī)為止。若資源池中有虛擬機(jī)需要輪換,服務(wù)器的負(fù)載狀態(tài)要同時(shí)考慮輪換的虛擬機(jī)體積和部署的虛擬機(jī)體積。若資源池中無(wú)虛擬機(jī)需要輪換,服務(wù)器的負(fù)載狀態(tài)僅考慮要部署的虛擬機(jī)體積。
1)時(shí)間復(fù)雜度分析。當(dāng)初次部署虛擬機(jī)時(shí),沒(méi)有虛擬機(jī)進(jìn)行輪換。n個(gè)虛擬機(jī)遍歷m個(gè)服務(wù)器,并選取最佳θvp選擇服務(wù)器,時(shí)間復(fù)雜度為O(mn)。當(dāng)有虛擬機(jī)進(jìn)行輪換且輪換個(gè)數(shù)為w時(shí),輪換的時(shí)間復(fù)雜度為O(wn)。
2)安全性分析。探測(cè)攻擊是攻擊者常用的一種攻擊手段。攻擊者通過(guò)向用戶發(fā)送帶有惡意網(wǎng)址或附件的電子郵件來(lái)收集有關(guān)目標(biāo)網(wǎng)絡(luò)信息,并根據(jù)收集到的信息來(lái)判斷用戶的操作系統(tǒng),然后利用該操作系統(tǒng)的漏洞發(fā)動(dòng)攻擊。對(duì)于攻擊者來(lái)說(shuō),每次無(wú)論是否攻擊成功,都能獲得用戶的操作系統(tǒng)類(lèi)型,并為下次攻擊做準(zhǔn)備。攻擊成功率如式(12)所示:
其中,P表示虛擬機(jī)被攻擊成功的概率,V表示虛擬機(jī)操作系統(tǒng)的種類(lèi),n表示攻擊者發(fā)動(dòng)的攻擊次數(shù),探測(cè)攻擊最多發(fā)動(dòng)2 次攻擊就一定能攻擊成功。輪換策略增大了攻擊者的攻擊難度,使得攻擊者無(wú)法根據(jù)上一次探測(cè)到的信息來(lái)判斷用戶的操作系統(tǒng)。
本文實(shí)驗(yàn)在Intel?CoreTMi7-4790 CPU 3.6 GHz,16 GB RAM 的主機(jī)上進(jìn)行,基于輪換策略的多維異構(gòu)裝箱算法采用C++語(yǔ)言編程實(shí)現(xiàn),并利用Matlab工具對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。攻擊者已知的操作系統(tǒng)漏洞和防御者操作系統(tǒng)具有的漏洞都服從[0,11]的均勻分布,攻擊手段采用探測(cè)攻擊。每個(gè)實(shí)驗(yàn)進(jìn)行100 次蒙特卡洛仿真,保證誤差在合理范圍內(nèi)。
本文通過(guò)通用漏洞披露(Common Vulnerability Enumeration,CVE)公布的數(shù)據(jù),獲取了11 種操作系統(tǒng)在1994 年—2017 年被公開(kāi)的所有漏洞。這11 種操作系統(tǒng)分別是OB(OpenBSD)、NB(NetBSD)、FB(FreeBSD)、W03(Windows Server 2003)、W08(Windows Server 2008)、W12(Windows Server 2012)、U(Ubuntu)、D(Debian)、R(Redhat)、OS(OpenSolaris)和S(Solaris)。表2 所示為上述系統(tǒng)存在的漏洞數(shù)量以及不同操作系統(tǒng)間存在的共同漏洞數(shù)量。
表2 操作系統(tǒng)共同漏洞數(shù)量Table 2 Number of common vulnerabilities in operating systems
假設(shè)攻擊者已獲知的操作系統(tǒng)為Ii,該系統(tǒng)的漏洞數(shù)為V(Ii),用戶虛擬機(jī)的操作系統(tǒng)為Ij,用戶的操作系統(tǒng)漏洞數(shù)為V(Ij),攻擊者已知的漏洞和用戶虛擬機(jī)間的操作系統(tǒng)共同漏洞數(shù)為V(Ii,Ij)。用戶虛擬機(jī)被攻擊成功的概率為:
仿真實(shí)驗(yàn)1不同維度下服務(wù)器資源利用率的對(duì)比實(shí)驗(yàn)。本實(shí)驗(yàn)分別對(duì)10 臺(tái)服務(wù)器、50 個(gè)虛擬機(jī)和20 臺(tái)服務(wù)器、100 個(gè)虛擬機(jī)這兩種組合進(jìn)行分析。對(duì)比這兩種組合中不同維度下的服務(wù)器資源利用率情況。實(shí)驗(yàn)結(jié)果如圖4 所示。
圖4 不同維度下服務(wù)器資源利用率對(duì)比Fig.4 Comparison of server resource utilization in different dimensions
從圖4 可以看出,對(duì)于10 臺(tái)服務(wù)器和50 個(gè)虛擬機(jī)的裝箱實(shí)驗(yàn),不同維度的服務(wù)器資源利用率不同,隨著維度的升高,虛擬機(jī)的資源利用率逐漸降低。在2 維時(shí)資源利用率為0.990 0,在3 維時(shí)資源利用率為0.989 7,在5 維時(shí)資源利用率為0.988 7;對(duì)于20 臺(tái)服務(wù)器和100 個(gè)虛擬機(jī),在2 維時(shí)資源利用率為0.981 5,在3 維資源利用率為0.978 4,在5 維時(shí)資源利用率為0.967 9。通過(guò)以上實(shí)驗(yàn)分析結(jié)果可以看出,隨著維度的增加,服務(wù)器的資源利用率會(huì)降低。
仿真實(shí)驗(yàn)2不同異構(gòu)程度的裝箱對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)設(shè)置10臺(tái)服務(wù)器、50個(gè)虛擬機(jī)進(jìn)行裝箱。對(duì)異構(gòu)程度不同的虛擬機(jī)與服務(wù)器組合進(jìn)行對(duì)比分析。4 組組合分別是:同構(gòu)服務(wù)器,同構(gòu)虛擬機(jī);同構(gòu)服務(wù)器,異構(gòu)虛擬機(jī);異構(gòu)服務(wù)器,同構(gòu)虛擬機(jī);異構(gòu)服務(wù)器,異構(gòu)虛擬機(jī)。將本文所使用的基于最大利用率策略與輪流放置策略、隨機(jī)放置策略進(jìn)行對(duì)比,如圖5所示。
圖5 服務(wù)器異構(gòu)裝箱資源利用率對(duì)比Fig.5 Comparison of server heterogeneous packing resource utilization
從圖5 可以看出:當(dāng)服務(wù)器與虛擬機(jī)都同構(gòu)時(shí),3 種策略下的服務(wù)器平均資源利用率相同,均為0.990 0;當(dāng)服務(wù)器同構(gòu)、虛擬機(jī)異構(gòu)時(shí),基于最大利用率策略與輪流策略的資源利用率相同為0.993 9,隨機(jī)放置策略的服務(wù)器的資源利用率為0.979 1;當(dāng)服務(wù)器異構(gòu)、虛擬機(jī)同構(gòu)時(shí),基于最大利用率策略下平均資源利用率最高為0.993 8,輪流策略次之,平均資源利用率為0.965 2,隨機(jī)策略最差,平均資源利用率為0.941 6;當(dāng)服務(wù)器異構(gòu)、虛擬機(jī)異構(gòu)時(shí),基于最大利用率策略下平均資源利用率最高為0.993 8,輪流策略次之,平均資源利用率為0.940 7,隨機(jī)策略最差,平均資源利用率為0.848 2。以上實(shí)驗(yàn)結(jié)果表明,基于利用率裝箱策略在異構(gòu)裝箱問(wèn)題中表現(xiàn)較好。
仿真實(shí)驗(yàn)3不同策略下服務(wù)器利用率的對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)分為兩組:一組是10 臺(tái)服務(wù)器,50 個(gè)虛擬機(jī);另一組是20 臺(tái)服務(wù)器,100 個(gè)虛擬機(jī)。對(duì)比兩組配置在不同虛擬機(jī)部署策略下的服務(wù)器資源利用率。
圖6 所示為基于利用率裝箱策略和輪流放置策略、隨機(jī)放置策略的資源利用率情況。
圖6 不同策略下服務(wù)器資源利用率對(duì)比Fig.6 Comparison of server resource utilization under different strategy
從圖6 可以看出:當(dāng)服務(wù)器為10 臺(tái),虛擬機(jī)為50 個(gè)時(shí),計(jì)算每臺(tái)服務(wù)器的負(fù)載情況。本文使用的基于利用率裝箱策略下服務(wù)器的平均資源利用率為0.993 6,差值為0.016 8,輪流放置策略的平均資源利用率為0.981 4,差值為0.051 1,隨機(jī)放置策略的平均資源利用率為0.841 0,差值為0.323 0。當(dāng)服務(wù)器為20 臺(tái),虛擬機(jī)數(shù)量為100 個(gè)時(shí),計(jì)算每臺(tái)服務(wù)器的負(fù)載情況?;诶寐恃b箱策略平均資源利用率為0.991 7,差值為0.028 4,輪流放置策略的平均資源利用率為0.981 6,差值為0.048 0,隨機(jī)放置策略的平均資源利用率為0.848 2,差值為0.471 4。以上實(shí)驗(yàn)分析可得,基于利用率裝箱策略能夠有效提高服務(wù)器的資源利用率并減小負(fù)載波動(dòng)。
仿真實(shí)驗(yàn)4輪換前后服務(wù)器負(fù)載狀態(tài)對(duì)比實(shí)驗(yàn)。由于每個(gè)虛擬機(jī)創(chuàng)建的時(shí)間不同,每個(gè)虛擬機(jī)開(kāi)始輪換的時(shí)間也不同,因此本實(shí)驗(yàn)單獨(dú)考慮每個(gè)虛擬機(jī)輪換情況。首先從服務(wù)器資源池中隨機(jī)選取10 個(gè)虛擬機(jī),依次進(jìn)行輪換并計(jì)算輪換前后服務(wù)器負(fù)載平衡變化。
如圖7 所示,輪換前服務(wù)器的平均負(fù)載平衡率為0.966 5,差值為0.055 3。進(jìn)行10 次輪換后服務(wù)器的平均負(fù)載平衡率為0.964 0,差值為0.068 5。通過(guò)分析實(shí)驗(yàn)數(shù)據(jù)可得,輪換后服務(wù)器的負(fù)載平衡率降低了0.002 5,不同服務(wù)器之間負(fù)載平衡率差值增大了0.013 5,輪換后服務(wù)器平均負(fù)載平衡降低了0.2 個(gè)百分點(diǎn),負(fù)載波動(dòng)值增大了15.3 個(gè)百分點(diǎn)。
圖7 輪換前后負(fù)載平衡率變化情況Fig.7 Changes in load balance rate before and after rotation
仿真實(shí)驗(yàn)5有無(wú)輪換策略下虛擬機(jī)被攻擊的對(duì)比實(shí)驗(yàn)。本文實(shí)驗(yàn)隨機(jī)從操作系統(tǒng)庫(kù)中選取1 個(gè)操作系統(tǒng),從物理資源池中隨機(jī)選擇1 臺(tái)服務(wù)器來(lái)部署虛擬機(jī),操作系統(tǒng)服從[0,11]均勻分布。攻擊者對(duì)用戶虛擬機(jī)發(fā)動(dòng)探測(cè)攻擊,并根據(jù)探測(cè)到的信息調(diào)整攻擊策略發(fā)動(dòng)下一次攻擊。實(shí)驗(yàn)進(jìn)行100 次蒙特卡洛仿真,保證誤差在合理范圍內(nèi)。
圖8 所示為有無(wú)輪換策略下用戶操作系統(tǒng)被攻擊成功的概率的實(shí)驗(yàn)對(duì)比分析。
圖8 虛擬機(jī)被攻擊成功的概率對(duì)比Fig.8 Comparison of success rate of virtual machines being attacked
本文針對(duì)的是探測(cè)攻擊,在攻擊鏈中攻擊者先探測(cè)用戶的虛擬機(jī),根據(jù)從用戶探測(cè)到的信息來(lái)判斷用戶的操作系統(tǒng),然后根據(jù)掌握的操作系統(tǒng)漏洞對(duì)用戶發(fā)起攻擊。如圖8 所示,對(duì)于非輪換策略,攻擊者在首次發(fā)動(dòng)攻擊時(shí),有0.27 的概率能夠成功攻擊用戶,但是第一次攻擊結(jié)束后,攻擊者根據(jù)探測(cè)到的信息再次發(fā)動(dòng)攻擊的成功率變?yōu)?。對(duì)于有輪換策略,用戶在攻擊者發(fā)動(dòng)1 次探測(cè)的時(shí)間范圍內(nèi)進(jìn)行輪換,此時(shí)用戶的操作系統(tǒng)已經(jīng)改變,攻擊者已經(jīng)無(wú)法根據(jù)上次探測(cè)到的信息來(lái)確定用戶的操作系統(tǒng)。進(jìn)行100 次探測(cè)攻擊實(shí)驗(yàn),攻擊者的平均攻擊成功率約為0.183 6,輪換后虛擬機(jī)的安全性提升了18.5 個(gè)百分點(diǎn),實(shí)驗(yàn)結(jié)果表明,輪換策略能夠有效提高操作系統(tǒng)的安全性。
云計(jì)算中的資源分配通常被建模為裝箱問(wèn)題。在裝箱問(wèn)題中,靜態(tài)同構(gòu)的云計(jì)算環(huán)境會(huì)威脅到虛擬機(jī)安全,動(dòng)態(tài)異構(gòu)的云計(jì)算環(huán)境更符合真實(shí)的資源分配情況,但也引入了新的資源分配問(wèn)題。同時(shí),由于影響資源分配的因素較多,傳統(tǒng)的裝箱方法無(wú)法解決多維的資源分配問(wèn)題。針對(duì)以上問(wèn)題,本文提出一種基于輪換策略的多維異構(gòu)云資源分配算法。將虛擬機(jī)和服務(wù)器資源抽象為向量,并給出一種利用率指標(biāo),根據(jù)利用率指標(biāo)為虛擬機(jī)選擇要部署的服務(wù)器。為提高虛擬機(jī)的安全性引入了輪換策略,給每個(gè)虛擬機(jī)設(shè)定一定的駐留時(shí)間,當(dāng)虛擬機(jī)在服務(wù)器上的駐留時(shí)間達(dá)到閾值或虛擬機(jī)狀態(tài)出現(xiàn)異常后,對(duì)虛擬機(jī)進(jìn)行輪換。實(shí)驗(yàn)結(jié)果表明,該算法在多維異構(gòu)的裝箱問(wèn)題中具有較高的資源利用率,且能夠提高虛擬機(jī)的安全性。下一步研究方向?yàn)閷ふ易罴演啌Q周期,在保證安全性的前提下盡可能減少輪換產(chǎn)生的開(kāi)銷(xiāo)。