付 琳,邵培南,應(yīng) 飛,解 維
(中國(guó)電子科技集團(tuán)公司第三十二研究所,上海 201808)
信息系統(tǒng)運(yùn)行環(huán)境由網(wǎng)絡(luò)通信層、基礎(chǔ)層、應(yīng)用支撐層和應(yīng)用層組成,系統(tǒng)的運(yùn)行可能受到來(lái)自軟硬件病毒、后門(mén)和漏洞的安全威脅攻擊[1]。例如對(duì)應(yīng)用層HTTP協(xié)議的網(wǎng)頁(yè)篡改和SQL注入、對(duì)應(yīng)用支撐層Web容器和分布式文件系統(tǒng)的后門(mén)和漏洞攻擊、對(duì)基礎(chǔ)層云容器、操作系統(tǒng)的后門(mén)和漏洞攻擊等[2]。以上攻擊行為可能會(huì)導(dǎo)致信息系統(tǒng)運(yùn)行的功能異常或終止,核心數(shù)據(jù)受到篡改、竊取或破壞[3]。
信息系統(tǒng)的安全防御技術(shù)分為被動(dòng)安全防御和主動(dòng)安全防御[4]。被動(dòng)安全防御基于已知安全威脅特征規(guī)則的病毒、后門(mén)、漏洞等進(jìn)行威脅診斷和清洗,如防火墻、病毒檢測(cè)、后門(mén)檢測(cè)等[5]。擬態(tài)防御理論由鄔江興院士提出,是一種以動(dòng)態(tài)異構(gòu)冗余(Dynamic Heterogeneous Redundancy,DHR)原理[6]為基礎(chǔ)的主動(dòng)安全防御技術(shù)。
本文將DHR架構(gòu)與擬態(tài)信息系統(tǒng)相結(jié)合,設(shè)計(jì)一種擬態(tài)通用運(yùn)行環(huán)境(Mimic Common Operating Environment,MCOE)框架。MCOE以運(yùn)行擬態(tài)信息系統(tǒng)的異構(gòu)執(zhí)行體池為對(duì)象,提供N個(gè)異構(gòu)執(zhí)行體部署、服務(wù)請(qǐng)求的分發(fā)、執(zhí)行、表決[7]、管理和安全威脅診斷[8]等運(yùn)行支撐功能,用以保障安全威脅攻擊情景下服務(wù)請(qǐng)求的正確、可靠運(yùn)行[9]。
信息系統(tǒng)的網(wǎng)絡(luò)通信層擬態(tài)防御主要基于擬態(tài)網(wǎng)絡(luò)通信產(chǎn)品來(lái)實(shí)施[10]。本文提及的信息系統(tǒng)的擬態(tài)防御,主要是針對(duì)基礎(chǔ)層、應(yīng)用支撐層和應(yīng)用層的擬態(tài)防御。通常,擬態(tài)信息系統(tǒng)的必要組成要素如下:
1)擬態(tài)化改造中功能等價(jià)的K(K≥1)個(gè)冗余異構(gòu)應(yīng)用程序源代碼。對(duì)系統(tǒng)應(yīng)用程序源代碼的擬態(tài)化改造主要是增加標(biāo)簽化的表決調(diào)用和表決前后的上下文處理。標(biāo)簽化的表決調(diào)用指第三方API(如Oracle)參數(shù)、關(guān)鍵安全數(shù)據(jù)文件、庫(kù)表數(shù)據(jù)結(jié)構(gòu)操作、指定程序點(diǎn)的內(nèi)在程序片段功能或內(nèi)存關(guān)鍵數(shù)據(jù)的一致性表決調(diào)用。對(duì)此部分?jǐn)?shù)據(jù)的一致性表決主要通過(guò)防止關(guān)鍵文件、數(shù)據(jù)庫(kù)受到篡改確保關(guān)鍵功能正確執(zhí)行,實(shí)現(xiàn)細(xì)粒度的安全防御。對(duì)源代碼的擬態(tài)化改造具體分為如下3個(gè)部分:
(1)標(biāo)簽化表決調(diào)用(包括標(biāo)簽化API標(biāo)識(shí)、表決主鍵、表決參數(shù)JSON字符串)和表決調(diào)用前后上下文程序段處理。
(2)標(biāo)簽化第三方API的協(xié)同執(zhí)行調(diào)用,防止因服務(wù)請(qǐng)求并發(fā)執(zhí)行引起的N個(gè)異構(gòu)執(zhí)行體API不一致。
(3)添加API鉤子函數(shù)和統(tǒng)一處理組件,用于識(shí)別利用后門(mén)和漏洞訪問(wèn)的第三方API,如識(shí)別數(shù)據(jù)竊取的通信API或SQL語(yǔ)句。
2)異構(gòu)軟硬件構(gòu)造化或擬態(tài)軟件產(chǎn)品構(gòu)建化的系統(tǒng)三層異構(gòu)冗余的運(yùn)行環(huán)境設(shè)施。例如:異構(gòu)執(zhí)行體[11]基礎(chǔ)層操作系統(tǒng)、云容器、虛擬機(jī)的異構(gòu),應(yīng)用支撐層Web容器的異構(gòu),應(yīng)用層擬態(tài)存儲(chǔ)[12]等擬態(tài)產(chǎn)品的異構(gòu)。
擬態(tài)信息系統(tǒng)的運(yùn)行支撐環(huán)境為基于系統(tǒng)異構(gòu)應(yīng)用程序源代碼和運(yùn)行環(huán)境設(shè)施形成的異構(gòu)執(zhí)行體池,由基礎(chǔ)層A冗余異構(gòu)、應(yīng)用支撐層B冗余異構(gòu)、應(yīng)用層的K冗余異構(gòu)形成具有M=A×B×K種異構(gòu)執(zhí)行體的異構(gòu)執(zhí)行體池。在受到安全威脅攻擊的情況下,系統(tǒng)運(yùn)行支撐環(huán)境的異構(gòu)性可確保系統(tǒng)正確可靠運(yùn)行。
MCOE實(shí)現(xiàn)面向服務(wù)請(qǐng)求的N個(gè)異構(gòu)執(zhí)行體執(zhí)行過(guò)程的自動(dòng)化,對(duì)服務(wù)請(qǐng)求進(jìn)行入口、過(guò)程、結(jié)果三級(jí)安全防護(hù),并且提供了集成化的分發(fā)和表決的接口規(guī)范[13]。
MCOE是實(shí)現(xiàn)面向C/C++、Java語(yǔ)言開(kāi)發(fā)的 C/S或B/S信息系統(tǒng)的擬態(tài)防御架構(gòu)[14],為擬態(tài)信息系統(tǒng)提供了自動(dòng)化的通用運(yùn)行環(huán)境和擬態(tài)防御手段,其防御方法和目標(biāo)如下:
1)通過(guò)N個(gè)異構(gòu)執(zhí)行體運(yùn)行節(jié)點(diǎn)軟硬件資源異構(gòu)最大化的資源調(diào)度,主動(dòng)防御特定軟硬件后門(mén)漏洞引起的安全威脅。
2)通過(guò)異構(gòu)執(zhí)行體運(yùn)行節(jié)點(diǎn)軟硬件資源和資源對(duì)象(如云容器、虛擬機(jī))調(diào)度的隨機(jī)性和動(dòng)態(tài)性最大化,及時(shí)阻斷由系統(tǒng)四層軟硬件發(fā)起的安全威脅攻擊。
3)通過(guò)服務(wù)請(qǐng)求執(zhí)行過(guò)程中N個(gè)異構(gòu)執(zhí)行體內(nèi)部和服務(wù)請(qǐng)求響應(yīng)結(jié)果的兩級(jí)表決,防止關(guān)鍵的文件、數(shù)據(jù)庫(kù)、內(nèi)存數(shù)據(jù)結(jié)構(gòu)映像受到篡改,確保在受到安全威脅的情況下系統(tǒng)能夠正確運(yùn)行。
MCOE總體框架如圖1所示,其中包括分發(fā)、內(nèi)部表決、外部表決、管理和協(xié)同5個(gè)服務(wù)器,以及部署在各個(gè)服務(wù)器上的節(jié)點(diǎn)代理服務(wù)進(jìn)程。
服務(wù)請(qǐng)求主鍵為分發(fā)服務(wù)器接收到客戶(hù)端服務(wù)請(qǐng)求時(shí)創(chuàng)建的唯一標(biāo)識(shí),MOCE體系架構(gòu)中的各個(gè)服務(wù)器通過(guò)服務(wù)請(qǐng)求主鍵進(jìn)行關(guān)聯(lián)。客戶(hù)端服務(wù)請(qǐng)求驅(qū)動(dòng)的MCOE,其中各服務(wù)器間協(xié)同工作的運(yùn)行場(chǎng)景如下:
1)分發(fā)服務(wù)器接收客戶(hù)端服務(wù)請(qǐng)求,按需進(jìn)行已知特征安全威脅[15]識(shí)別和清洗,調(diào)用管理服務(wù)器的資源調(diào)度服務(wù)接口獲取相應(yīng)服務(wù)請(qǐng)求,執(zhí)行所需的N個(gè)異構(gòu)執(zhí)行體、內(nèi)部表決服務(wù)器和協(xié)同運(yùn)行服務(wù)器的運(yùn)行節(jié)點(diǎn)資源。
2)分發(fā)服務(wù)器發(fā)送包含服務(wù)請(qǐng)求主鍵和各個(gè)服務(wù)器運(yùn)行節(jié)點(diǎn)資源(服務(wù)器、云容器或虛擬機(jī)對(duì)象資源)的文件給相應(yīng)服務(wù)器的運(yùn)行節(jié)點(diǎn)代理服務(wù)。
3)N個(gè)異構(gòu)執(zhí)行體、內(nèi)部表決服務(wù)器和協(xié)同運(yùn)行服務(wù)器的運(yùn)行節(jié)點(diǎn)代理接收文件后,在相應(yīng)系統(tǒng)配置文件中創(chuàng)建基于服務(wù)請(qǐng)求主鍵的待處理配置記錄,并向分發(fā)服務(wù)器返回應(yīng)答。
4)分發(fā)服務(wù)器轉(zhuǎn)發(fā)服務(wù)請(qǐng)求到相應(yīng)的N個(gè)異構(gòu)執(zhí)行體服務(wù)器。
5)N個(gè)異構(gòu)執(zhí)行體服務(wù)器執(zhí)行服務(wù)請(qǐng)求,當(dāng)執(zhí)行到關(guān)鍵數(shù)據(jù)操作、重要功能模塊和標(biāo)簽化的第三方API時(shí),讀取待處理配置記錄中的內(nèi)部表決服務(wù)器地址,調(diào)用內(nèi)部表決服務(wù)器對(duì)表決內(nèi)容進(jìn)行一致性表決,同時(shí)對(duì)未標(biāo)簽化的API進(jìn)行安全威脅診斷和處理。
6)內(nèi)部表決服務(wù)器對(duì)于表決異常的結(jié)果進(jìn)行表決,對(duì)結(jié)果做魯棒性處理,上報(bào)異常到管理服務(wù)器,同時(shí)反饋內(nèi)部表決結(jié)果(一致Y/異常E)給相應(yīng)異構(gòu)執(zhí)行體。
7)內(nèi)部表決結(jié)果為Y的異構(gòu)執(zhí)行體繼續(xù)執(zhí)行程序,對(duì)標(biāo)簽化的第三方API調(diào)用協(xié)同執(zhí)行服務(wù)器進(jìn)行后續(xù)處理。協(xié)同執(zhí)行服務(wù)器具體驅(qū)動(dòng)第三方API的執(zhí)行,返回包含執(zhí)行結(jié)果參數(shù)的標(biāo)簽化API給調(diào)用方的相應(yīng)執(zhí)行體。
8)分發(fā)服務(wù)器接收和預(yù)處理N個(gè)異構(gòu)執(zhí)行體服務(wù)請(qǐng)求的響應(yīng)結(jié)果,調(diào)用管理服務(wù)器的資源調(diào)度服務(wù)接口獲取外部表決服務(wù)器地址,同時(shí)驅(qū)動(dòng)該外部表決服務(wù)器執(zhí)行相應(yīng)的表決。
9)外部表決服務(wù)器對(duì)于表決,對(duì)異常的結(jié)果進(jìn)行表決,對(duì)結(jié)果做魯棒性處理,上報(bào)異常到管理服務(wù)器,同時(shí)反饋外部表決結(jié)果(一致Y/異常E) 給分發(fā)服務(wù)器。
10)分發(fā)服務(wù)器收到外部表決結(jié)果,若表決結(jié)果為一致,則返回正常的服務(wù)請(qǐng)求響應(yīng)結(jié)果給客戶(hù)端;否則返回異常,由客戶(hù)端重新發(fā)起該請(qǐng)求。
在內(nèi)部表決和外部表決執(zhí)行過(guò)程中,表決結(jié)果為異常的異構(gòu)執(zhí)行體節(jié)點(diǎn)資源和運(yùn)行上下文均發(fā)給管理服務(wù)器。對(duì)于經(jīng)表決魯棒性處理后確定的異常,由表決服務(wù)器實(shí)時(shí)向管理服務(wù)器發(fā)出告警,管理服務(wù)器交互式地進(jìn)行安全威脅診斷、清洗和恢復(fù)。

圖1 MCOE體系架構(gòu)
MCOE各個(gè)服務(wù)器及部署在服務(wù)器上的運(yùn)行節(jié)點(diǎn)代理服務(wù)對(duì)服務(wù)請(qǐng)求的處理,遵循如圖2所示的主程序統(tǒng)一處理框架。

圖2 各服務(wù)器主程序處理框架
Fig.2Processing framework of main programs in eachserver
主程序統(tǒng)一處理框架分為初始化、主程序任務(wù)循環(huán)處理、服務(wù)請(qǐng)求通信和預(yù)處理線程、任務(wù)處理子線程4個(gè)部分。
1)初始化。進(jìn)行服務(wù)請(qǐng)求處理任務(wù)隊(duì)列初始化,創(chuàng)建服務(wù)請(qǐng)求任務(wù)消息包的接收和預(yù)處理線程。
2)主程序任務(wù)循環(huán)處理。任務(wù)循環(huán)處理偽代碼如下:
Read隊(duì)列元素;
While(true){//循環(huán)處理
//P為預(yù)處理狀態(tài),在表決時(shí)隊(duì)列元素包括2N/3個(gè)表決//參數(shù)為滿足執(zhí)行條件
If(任務(wù)隊(duì)列元素狀態(tài)標(biāo)志==“P” and 滿足執(zhí)行條件){
設(shè)置:任務(wù)隊(duì)列元素執(zhí)行標(biāo)志=“E”;//E為執(zhí)行狀態(tài)
創(chuàng)建相應(yīng)任務(wù)隊(duì)列元素的任務(wù)處理子線程;
Read Next任務(wù)隊(duì)列元素;
}ElseIf(任務(wù)隊(duì)列元素狀態(tài)標(biāo)志==“C”){
//C為任務(wù)完成狀態(tài)
刪除該隊(duì)列元素;
Read 當(dāng)前隊(duì)列元素;
}Else{//任務(wù)隊(duì)列元素狀態(tài)為未完成狀態(tài)
Read Next任務(wù)隊(duì)列元素;}}
3)服務(wù)請(qǐng)求通信和預(yù)處理線程。服務(wù)請(qǐng)求通信和預(yù)處理線程部分偽代碼如下:
該線程基于HTTP協(xié)議通信并發(fā)接收服務(wù)請(qǐng)求任務(wù)消息包;
解析服務(wù)請(qǐng)求任務(wù)消息包;
If 依賴(lài)于N(N≥3)個(gè)消息包處理的任務(wù){(diào)
遍歷該任務(wù)隊(duì)列;
If(隊(duì)列元素的任務(wù)主鍵相同){
//構(gòu)建N個(gè)任務(wù)參數(shù)JSON字符串?dāng)?shù)組
6)6—9月份,田間卵果率達(dá)到1%時(shí),及時(shí)噴25%滅幼脲1 000倍液或2.5%溴氰菊酯乳油3 000倍液。
在該元素中添加該參數(shù)字符串JSON;
}Else{
創(chuàng)建新元素;}
}Else{//消息包獨(dú)立處理的任務(wù)
在任務(wù)隊(duì)列尾插入該任務(wù)元素;}
If(消息包為獨(dú)立處理的任務(wù)){
Read 隊(duì)列元素和預(yù)處理;
動(dòng)態(tài)安裝和執(zhí)行相應(yīng)的任務(wù)組件;
任務(wù)隊(duì)列元素執(zhí)行標(biāo)志=“C”;
發(fā)送執(zhí)行結(jié)果到相應(yīng)節(jié)點(diǎn)代理;
Break;
}ElseIf(消息包屬于統(tǒng)一處理的N個(gè)任務(wù)){
//N個(gè)消息包統(tǒng)一進(jìn)行處理
Read 未處理的數(shù)據(jù)元素集;
If(未處理的數(shù)據(jù)元素集==Null){
//消息包未到達(dá),等待時(shí)間閾值T
Sleep(XX us);
}Else{//讀到數(shù)據(jù)集
If(同步執(zhí)行 and 第1次執(zhí)行){
發(fā)送任務(wù)處理結(jié)果到消息源服務(wù)器;
保存任務(wù)處理結(jié)果;//例如協(xié)同執(zhí)行
}ElseIf(同步執(zhí)行 and 第2次~第N次執(zhí)行){
返回第1次保存的任務(wù)處理結(jié)果給源服務(wù)器;}
If(處理結(jié)果滿足任務(wù)節(jié)點(diǎn)提交條件 and 異步執(zhí)行){
發(fā)送處理結(jié)果到相應(yīng)的消息源節(jié)點(diǎn);}}}
//例如表決服務(wù)器,基于源節(jié)點(diǎn)運(yùn)行代理服務(wù)實(shí)現(xiàn)交互
If(處理任務(wù)消息數(shù)==N){
//已完成本次任務(wù)處理
隊(duì)列任務(wù)處理狀態(tài)=“C”;
Break;
}ElseIf(處理任務(wù)消息數(shù)≠N and處理時(shí)間>閾值T){
調(diào)用管理服務(wù)進(jìn)行異常處理;
Break;}
MCOE框架內(nèi)外部接口設(shè)計(jì)基于以下3個(gè)方面:由分發(fā)服務(wù)器和管理服務(wù)器協(xié)同完成的服務(wù)請(qǐng)求預(yù)處理、資源調(diào)度和請(qǐng)求轉(zhuǎn)發(fā)過(guò)程;N異構(gòu)執(zhí)行體驅(qū)動(dòng)的表決和第三方API協(xié)同執(zhí)行過(guò)程;由分發(fā)器和外部表決器協(xié)同完成的響應(yīng)結(jié)果表決過(guò)程和客戶(hù)端轉(zhuǎn)發(fā)過(guò)程。
MCOE服務(wù)器間接口遵循HTTP通信協(xié)議,接口定義為json格式文件,各服務(wù)器依據(jù)json庫(kù)函數(shù)進(jìn)行解析預(yù)處理,如圖3所示。

圖3 MCOE服務(wù)器接口定義
分發(fā)服務(wù)相關(guān)的接口描述見(jiàn)表1,其中接口主要提供服務(wù)請(qǐng)求轉(zhuǎn)發(fā)、服務(wù)請(qǐng)求響應(yīng)結(jié)果接收和外部表決所需參數(shù)。其中,通過(guò)管理服務(wù)提供的擬態(tài)資源調(diào)度接口調(diào)度出隨機(jī)性、動(dòng)態(tài)性和異構(gòu)性三性最大化的N異構(gòu)執(zhí)行體服務(wù)器,為擬態(tài)防御提供異構(gòu)化的基礎(chǔ)環(huán)境。異構(gòu)執(zhí)行體相關(guān)的接口描述見(jiàn)表2,其中接口主要提供N異構(gòu)執(zhí)行體運(yùn)行過(guò)程中內(nèi)部表決和第三方API協(xié)同運(yùn)行所需的參數(shù)。管理服務(wù)器相關(guān)接口描述見(jiàn)表3,其中接口基于“管理者+代理”方式實(shí)現(xiàn)。部署在各個(gè)服務(wù)器上的運(yùn)行節(jié)點(diǎn)代理服務(wù)采集各個(gè)服務(wù)器的節(jié)點(diǎn)運(yùn)行資源狀態(tài)和日志數(shù)據(jù),并將采集數(shù)據(jù)上報(bào)給運(yùn)行管理服務(wù),接收、處理運(yùn)行管理服務(wù)下發(fā)的資源狀態(tài)監(jiān)管命令和節(jié)點(diǎn)清洗命令。

表1 分發(fā)服務(wù)相關(guān)接口描述Table 1 Description of interfaces related to MCOE distribution services

表2 N異構(gòu)執(zhí)行體相關(guān)接口描述Table 2 Description of interfaces related to N heterogeneous executor

表3 管理服務(wù)器相關(guān)接口描述Table 3 Description of interfaces related to the management server
MCOE各個(gè)功能模塊間的交互遵循HTTP通信協(xié)議,各模塊的功能實(shí)現(xiàn)均遵循2.2節(jié)中的程序統(tǒng)一處理框架。
分發(fā)服務(wù)結(jié)合傳統(tǒng)安全防御對(duì)已知安全威脅的清洗提供了Web信息系統(tǒng)的入口級(jí)安全防御。分發(fā)服務(wù)提供客戶(hù)端服務(wù)請(qǐng)求的接收、對(duì)已知威脅的清洗[16]、N個(gè)冗余異構(gòu)執(zhí)行體服務(wù)請(qǐng)求分發(fā)、請(qǐng)求響應(yīng)結(jié)果的處理以及將請(qǐng)求響應(yīng)結(jié)果轉(zhuǎn)發(fā)給客戶(hù)端等功能。如圖4所示,分發(fā)服務(wù)主要包括3個(gè)功能模塊:
1)請(qǐng)求預(yù)處理引擎。接收服務(wù)請(qǐng)求,定義服務(wù)請(qǐng)求主鍵服務(wù)請(qǐng)求安全威脅清洗;構(gòu)建N個(gè)異構(gòu)執(zhí)行體服務(wù)請(qǐng)求。
2)分發(fā)處理模塊。通過(guò)“擬態(tài)資源調(diào)度接口”獲取相應(yīng)節(jié)點(diǎn)執(zhí)行資源;構(gòu)建包含服務(wù)請(qǐng)求主鍵、內(nèi)部表決、協(xié)同執(zhí)行和N個(gè)異構(gòu)執(zhí)行體服務(wù)器執(zhí)行資源的服務(wù)器地址文件,通過(guò)“服務(wù)請(qǐng)求主鍵和處理過(guò)程所需的服務(wù)器地址接口”下發(fā)到相應(yīng)的服務(wù)器;通過(guò)“服務(wù)請(qǐng)求轉(zhuǎn)發(fā)接口”轉(zhuǎn)發(fā)服務(wù)請(qǐng)求到相應(yīng)的N個(gè)構(gòu)執(zhí)行體。
3)請(qǐng)求響應(yīng)處理模塊。接收請(qǐng)求響應(yīng)執(zhí)行結(jié)果;通過(guò)“擬態(tài)資源調(diào)度接口”獲取外部表決器執(zhí)行資源;構(gòu)建包含服務(wù)請(qǐng)求主鍵、外部表決服務(wù)器執(zhí)行資源的服務(wù)器地址文件;基于此文件驅(qū)動(dòng)外部表決的執(zhí)行;接收表決服務(wù)器的反饋結(jié)果,表決一致時(shí)將服務(wù)請(qǐng)求最終響應(yīng)結(jié)果返回給客戶(hù)端,表決不一致時(shí)返回異常信息給管理服務(wù)。

圖4 分發(fā)服務(wù)功能組成示意圖
Fig.4Schematic diagram of function composition ofdistribution service
表決服務(wù)包括內(nèi)部表決服務(wù)和外部表決服務(wù),是MCOE最為關(guān)鍵的組成部分[17]。內(nèi)部表決服務(wù)提供了異構(gòu)執(zhí)行體執(zhí)行過(guò)程中的安全防御,外部表決服務(wù)提供了異構(gòu)執(zhí)行體執(zhí)行結(jié)果的安全防御。
如圖5所示,內(nèi)部表決服務(wù)主要包括4個(gè)功能模塊:
1)表決信息接收處理。通過(guò)“內(nèi)部表決調(diào)用接口”接收來(lái)自N個(gè)異構(gòu)執(zhí)行體的內(nèi)部表決內(nèi)容,確定相應(yīng)的表決組件。
2)表決執(zhí)行。對(duì)N個(gè)異構(gòu)執(zhí)行體關(guān)鍵數(shù)據(jù)操作、重要功能模塊和第三方API參數(shù)進(jìn)行一致性表決。
3)魯棒性處理。表決異常時(shí),根據(jù)表決對(duì)象的魯棒性策略按需執(zhí)行魯棒性處理過(guò)程。
4)表決結(jié)果反饋。表決大多數(shù)一致時(shí),將表決結(jié)果返回給正常的N個(gè)異構(gòu)執(zhí)行體,若存在不一致的異構(gòu)執(zhí)行體調(diào)用管理服務(wù)進(jìn)行異常處理。表決不一致調(diào)用管理服務(wù)進(jìn)行異常處理。

圖5 內(nèi)部表決服務(wù)功能組成示意圖
Fig.5Schematic diagram of function composition ofinternal voting service
外部表決服務(wù)中大部分功能模塊與內(nèi)部表決服務(wù)相同,不同之處在于外部表決是對(duì)N個(gè)服務(wù)請(qǐng)求響應(yīng)的一致性表決,通過(guò)分發(fā)服務(wù)和外部表決服務(wù)之間的交互完成。
協(xié)同執(zhí)行服務(wù)具體驅(qū)動(dòng)第三方API的執(zhí)行,確保N個(gè)異構(gòu)執(zhí)行體API執(zhí)行結(jié)果的一致性,并提供執(zhí)行協(xié)同統(tǒng)一框架以支持協(xié)同執(zhí)行種類(lèi)的擴(kuò)展和配置。當(dāng)對(duì)N個(gè)異構(gòu)執(zhí)行體內(nèi)的第三方API內(nèi)部表決結(jié)果為一致時(shí),N個(gè)異構(gòu)執(zhí)行體通過(guò)異步方式調(diào)用協(xié)同執(zhí)行服務(wù)器進(jìn)行第三方API的統(tǒng)一執(zhí)行。當(dāng)接收到第1個(gè)協(xié)同執(zhí)行調(diào)用時(shí),完成對(duì)第三方API的協(xié)同執(zhí)行、將執(zhí)行結(jié)果返回給相應(yīng)的執(zhí)行體,并保存執(zhí)行結(jié)果;當(dāng)收到第2個(gè)~第N個(gè)執(zhí)行體的協(xié)同執(zhí)行調(diào)用時(shí),將保存的協(xié)同執(zhí)行結(jié)果返回給相應(yīng)的執(zhí)行體。
管理服務(wù)包括管理服務(wù)器和運(yùn)行節(jié)點(diǎn)服務(wù)管理者和管理者服務(wù)代理,其中主要的功能模塊如圖6所示。

圖6 管理服務(wù)功能組成示意圖
Fig.6Schematic diagram of function composition ofmanagement service
管理服務(wù)器主要包括3個(gè)功能模塊:
1)擬態(tài)應(yīng)用管理模塊。創(chuàng)建和部署擬態(tài)應(yīng)用、匯總和處理節(jié)點(diǎn)上報(bào)應(yīng)用資源狀態(tài)日志信息、監(jiān)管擬態(tài)應(yīng)用執(zhí)行過(guò)程。
2)擬態(tài)資源管理模塊。包括擬態(tài)資源監(jiān)控、異構(gòu)執(zhí)行體調(diào)度和表決服務(wù)器資源調(diào)度。
3)擬態(tài)安全威脅診斷模塊。包括擬態(tài)運(yùn)行過(guò)程管理、告警和環(huán)境日志信息處理、安全威脅的清洗策略執(zhí)行。
運(yùn)行節(jié)點(diǎn)代理服務(wù)完成服務(wù)器節(jié)點(diǎn)資源狀態(tài)信息的采集,并將其上報(bào)給管理服務(wù)器,并且執(zhí)行管理服務(wù)器下發(fā)的管理命令。
基于對(duì)示例應(yīng)用程序ybsapp.war的MCOE模型實(shí)現(xiàn)包括3個(gè)部分:1)異構(gòu)執(zhí)行體管理和資源調(diào)度;2)分發(fā)服務(wù)對(duì)各個(gè)異構(gòu)執(zhí)行體進(jìn)行服務(wù)請(qǐng)求分發(fā);3)對(duì)各個(gè)異構(gòu)體上的請(qǐng)求響應(yīng)結(jié)果進(jìn)行外部表決并將結(jié)果反饋管理服務(wù)。
首先在異構(gòu)執(zhí)行體的基礎(chǔ)層(CPU類(lèi)型和操作系統(tǒng)類(lèi)型)和應(yīng)用支撐層(Web容器)上實(shí)現(xiàn)異構(gòu)。管理服務(wù)使用MySQL實(shí)現(xiàn)對(duì)異構(gòu)執(zhí)行體節(jié)點(diǎn)和資源的管理。異構(gòu)執(zhí)行體節(jié)點(diǎn)狀態(tài)示例如圖7所示,模型實(shí)現(xiàn)階段實(shí)際部署4個(gè)異構(gòu)執(zhí)行體應(yīng)用服務(wù)器,本文實(shí)驗(yàn)中執(zhí)行體1~執(zhí)行體4所用Web容器分別為Jboss、Tomcat8.0、Tomcat8.5、Tomcat9.0。

圖7 異構(gòu)執(zhí)行體節(jié)點(diǎn)狀態(tài)示例
異構(gòu)執(zhí)行體上的運(yùn)行節(jié)點(diǎn)代理服務(wù)將異構(gòu)執(zhí)行體狀態(tài)信息實(shí)時(shí)上報(bào)到管理服務(wù)器,管理服務(wù)器實(shí)時(shí)判定執(zhí)行體運(yùn)行狀態(tài)是否正常。
分發(fā)服務(wù)通過(guò)改造Nginx反向代理服務(wù)[18],以及對(duì)Nginx主請(qǐng)求-子請(qǐng)求機(jī)制與Proxy反向代理機(jī)制的改進(jìn),實(shí)現(xiàn)服務(wù)請(qǐng)求的異構(gòu)化、服務(wù)請(qǐng)求的轉(zhuǎn)發(fā)、外部表決服務(wù)的調(diào)用,并將外部表決結(jié)果返回給客戶(hù)端。
客戶(hù)端(192.168.2.7:8080)發(fā)起示例應(yīng)用ybsapp服務(wù)請(qǐng)求,分發(fā)服務(wù)向管理服務(wù)發(fā)出資源調(diào)度請(qǐng)求,管理服務(wù)通過(guò)異構(gòu)最大化調(diào)度[19]和負(fù)載均衡算法[20]調(diào)度出此次執(zhí)行服務(wù)請(qǐng)求的3個(gè)異構(gòu)執(zhí)行體和外部表決地址,分發(fā)服務(wù)通過(guò)“擬態(tài)資源調(diào)度接口”獲取相應(yīng)節(jié)點(diǎn)執(zhí)行資源,再由分發(fā)服務(wù)構(gòu)建包含服務(wù)請(qǐng)求主鍵、異構(gòu)執(zhí)行體和表決服務(wù)器節(jié)點(diǎn)資源的地址文件,如圖8所示。

圖8 服務(wù)請(qǐng)求執(zhí)行資源分配profile示例
Fig.8 Example profile of a service request for resourceallocation
各個(gè)服務(wù)器間通過(guò)服務(wù)請(qǐng)求主鍵進(jìn)行關(guān)聯(lián),分發(fā)服務(wù)通過(guò)Nginx轉(zhuǎn)發(fā)地址文件到相應(yīng)的N個(gè)異構(gòu)執(zhí)行體和外部表決服務(wù)器,同時(shí)轉(zhuǎn)發(fā)服務(wù)請(qǐng)求到相應(yīng)的異構(gòu)執(zhí)行體上的服務(wù)請(qǐng)求轉(zhuǎn)發(fā)接口,如圖9所示。

圖9 分發(fā)服務(wù)Nginx轉(zhuǎn)發(fā)過(guò)程示例
Fig.9Example of forwarding process of distribution serviceNginx
圖9所示分發(fā)的是一個(gè)示例Web應(yīng)用ybs,經(jīng)過(guò)分發(fā)服務(wù)Nginx將異構(gòu)化的服務(wù)請(qǐng)求分發(fā)到3個(gè)異構(gòu)執(zhí)行體(執(zhí)行體1:192.168.2.28、執(zhí)行體2:192.168.2.75、執(zhí)行體3:192.168.2.32)上,同時(shí)調(diào)用外部表決服務(wù)器:192.168.2.36進(jìn)行服務(wù)請(qǐng)求響應(yīng)表決。
外部表決服務(wù)基于擬態(tài)表決策略,采用一致性校驗(yàn)算法對(duì)服務(wù)請(qǐng)求響應(yīng)進(jìn)行一致性表決[21]。本文實(shí)驗(yàn)的擬態(tài)表決策略采用三取二表決,即2/3表決對(duì)象一致時(shí)表決結(jié)果為正常,其他情況表決結(jié)果為異常。
外部表決成功后的反饋結(jié)果如圖10所示,異構(gòu)執(zhí)行體1~執(zhí)行體4初始的表決成功次數(shù)均為0,對(duì)異構(gòu)執(zhí)行體1~執(zhí)行體3執(zhí)行服務(wù)請(qǐng)求表決,表決結(jié)果為成功(執(zhí)行體1~執(zhí)行體3表決對(duì)象一致),執(zhí)行體1~執(zhí)行體3的表決成功加1,而執(zhí)行體4作為備用執(zhí)行體不參與表決,其表決成功次數(shù)仍為0。表決成功后將返回表決結(jié)果給分發(fā)服務(wù),再由分發(fā)服務(wù)將服務(wù)請(qǐng)求響應(yīng)返回給客戶(hù)端。

圖10 表決成功后部署情況示例
外部表決成功后將最終的服務(wù)請(qǐng)求響應(yīng)結(jié)果返回給客戶(hù)端,客戶(hù)端得到的響應(yīng)頁(yè)面如圖11所示。

圖11 客戶(hù)端響應(yīng)頁(yè)面1
對(duì)異構(gòu)執(zhí)行體進(jìn)行網(wǎng)頁(yè)篡改攻擊后,同樣進(jìn)行服務(wù)請(qǐng)求分發(fā),表決結(jié)果如圖12所示,執(zhí)行體2被表決為異常,但由于異構(gòu)執(zhí)行體互相之間的異構(gòu)性,使得網(wǎng)頁(yè)篡改對(duì)執(zhí)行體1和執(zhí)行體3并未生效,此次表決結(jié)果仍為成功。

圖12 篡改攻擊、表決后部署情況示例
Fig.12 Example of deployment results after voting for tamper attacks
外部表決服務(wù)返回表決結(jié)果和異常執(zhí)行體地址信息給分發(fā)服務(wù),分發(fā)服務(wù)將服務(wù)請(qǐng)求響應(yīng)返回給客戶(hù)端,客戶(hù)端得到的響應(yīng)頁(yè)面如圖13所示,仍為正常的服務(wù)請(qǐng)求響應(yīng)頁(yè)面。分發(fā)服務(wù)將異常執(zhí)行體地址信息上報(bào)至管理服務(wù),由管理服務(wù)調(diào)用管理者服務(wù)代理進(jìn)行異常異構(gòu)執(zhí)行體替換和清洗恢復(fù)。

圖13 客戶(hù)端響應(yīng)頁(yè)面2
經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,由于異構(gòu)執(zhí)行體本身的異構(gòu)性,當(dāng)出現(xiàn)系統(tǒng)安全攻擊時(shí)至多導(dǎo)致一個(gè)異構(gòu)執(zhí)行體出現(xiàn)異常,而基于3取2表決并不會(huì)影響最終返回給客戶(hù)端的服務(wù)請(qǐng)求響應(yīng)結(jié)果。MCOE對(duì)于異構(gòu)執(zhí)行體的部署和服務(wù)請(qǐng)求的分發(fā)、表決、管理可以達(dá)到防止網(wǎng)頁(yè)篡改的目的,保證返回給客戶(hù)端正確的服務(wù)請(qǐng)求響應(yīng)。
本文結(jié)合擬態(tài)防御理論,為擬態(tài)信息系統(tǒng)的N異構(gòu)執(zhí)行體設(shè)計(jì)系統(tǒng)化的運(yùn)行環(huán)境框架MCOE。通過(guò)改進(jìn)Nginx反向代理服務(wù)實(shí)現(xiàn)對(duì)服務(wù)請(qǐng)求分發(fā)和響應(yīng)結(jié)果的處理,同時(shí)使用一致性校驗(yàn)算法進(jìn)行服務(wù)請(qǐng)求響應(yīng)結(jié)果表決,有效防御應(yīng)用程序后門(mén)和漏洞引發(fā)的網(wǎng)頁(yè)篡改行為。下一步將對(duì)分發(fā)服務(wù)和表決服務(wù)進(jìn)行改進(jìn),提升MCOE框架使用場(chǎng)景的普適性。