高 楊 曲寶滿
(1.武漢數(shù)字工程研究所 武漢 430205)(2.國(guó)防科工局 北京 100048)
負(fù)載均衡技術(shù)[1]是一種服務(wù)器或網(wǎng)絡(luò)設(shè)備的集群技術(shù),通過(guò)將特定網(wǎng)絡(luò)業(yè)務(wù)分配給多個(gè)網(wǎng)絡(luò)設(shè)備,擴(kuò)展信息系統(tǒng)的處理能力,提高網(wǎng)絡(luò)穩(wěn)定性和靈活性?;趥鹘y(tǒng)網(wǎng)絡(luò)的負(fù)載均衡方案都存在一定缺陷,其根本原因是業(yè)務(wù)與設(shè)備高度耦合相互影響,導(dǎo)致資源利用率下降、業(yè)務(wù)部署周期延長(zhǎng)、維護(hù)工作復(fù)雜困難。
軟件定義網(wǎng)絡(luò)(Software-Defined Network,SDN)[2]通過(guò)分離數(shù)據(jù)平面和控制平面,打破傳統(tǒng)網(wǎng)絡(luò)垂直結(jié)構(gòu),實(shí)現(xiàn)集中控制,引入開(kāi)放可編程能力,解決了傳統(tǒng)網(wǎng)絡(luò)架構(gòu)在可靠性、擴(kuò)展性及靈活性存在的許多問(wèn)題。在現(xiàn)有的負(fù)載均衡方案中,基于SDN 的解決方案[3~5]影響力且最大認(rèn)可度最高,其中,控制器負(fù)責(zé)獲取服務(wù)器運(yùn)行狀態(tài),部署負(fù)載均衡策略,實(shí)現(xiàn)面向連接的服務(wù)器負(fù)載均衡,該類(lèi)方案能夠在一定程度上解決硬件設(shè)備成本高,靈活性差等問(wèn)題,但也存在下列隱患。
1)安全性,伴隨網(wǎng)絡(luò)業(yè)務(wù)運(yùn)營(yíng)實(shí)踐的推進(jìn),來(lái)自網(wǎng)絡(luò)安全層面的威脅日益增多,傳統(tǒng)安全防御的靜態(tài)性導(dǎo)致防護(hù)方在網(wǎng)絡(luò)攻防博弈中易處于一種被動(dòng)狀態(tài),基于SDN的負(fù)載均衡解決方案也同樣面臨這一問(wèn)題[6]。
2)資源利用,SDN解決方案的一大特點(diǎn)是實(shí)現(xiàn)跨廠商的多域組網(wǎng),跨廠商帶來(lái)的一個(gè)問(wèn)題是難以保證服務(wù)器配置的一致性,當(dāng)來(lái)自不同廠商的服務(wù)器相差較大時(shí),很多負(fù)載均衡算法難以充分發(fā)揮集群的計(jì)算能力,造成資源浪費(fèi)[7]。
3)靈活性,調(diào)度算法能夠保證新到來(lái)任務(wù)的合理分發(fā),但無(wú)法保證所有任務(wù)的均衡分配,因此還需要設(shè)計(jì)調(diào)度策略保證任務(wù)均衡分配。
綜上所述,本文首先設(shè)計(jì)獨(dú)立的威脅處理模塊,避免網(wǎng)絡(luò)業(yè)務(wù)與威脅處理相互影響,并利用擬態(tài)防御思想動(dòng)態(tài)、異構(gòu)、冗余的技術(shù)特征,提高框架魯棒性實(shí)現(xiàn)主動(dòng)防御;其次,設(shè)計(jì)基于擬態(tài)防御的調(diào)度算法,通過(guò)引入服務(wù)器處理能力和安全等級(jí),充分利用集群計(jì)算資源,保證新到來(lái)任務(wù)的合理分發(fā);接下來(lái),設(shè)計(jì)調(diào)度策略動(dòng)態(tài)調(diào)節(jié)框架內(nèi)服務(wù)器數(shù)量,同時(shí)切換不同安全等級(jí)的服務(wù)器,增加攻擊方利用軟硬件漏洞實(shí)現(xiàn)攻擊和滲透的難度。
值得注意的是本文提出的是一種基礎(chǔ)安全調(diào)度框架,該框架的許多功能具有可替代性并值得進(jìn)一步研究,包括蜜罐、威脅處理模塊、調(diào)度算法、判決算法等都能夠在實(shí)際應(yīng)用中根據(jù)用戶需求實(shí)現(xiàn)定制和替換。
傳統(tǒng)網(wǎng)絡(luò)安全防護(hù)方式的被動(dòng)性和靜態(tài)性導(dǎo)致防護(hù)方在網(wǎng)絡(luò)攻防博弈中處于被動(dòng)狀態(tài),造成不對(duì)稱的網(wǎng)絡(luò)攻防局面[9]。在網(wǎng)絡(luò)攻防博弈中,防御方通常要面對(duì)合法用戶和攻擊方,防御方主要通過(guò)防火墻[10]、IDS[11]等確定并阻止攻擊方進(jìn)入網(wǎng)絡(luò)關(guān)鍵區(qū)域,同時(shí)為合法用戶提供正常訪問(wèn)。攻擊方則只需要面對(duì)防護(hù)方,利用偵察、掃描等技術(shù)獲取防御方信息,還可以通過(guò)中間人攻擊可以冒充合法用戶身份實(shí)現(xiàn)非法操作。
針對(duì)上述問(wèn)題,國(guó)內(nèi)專家提出了擬態(tài)防御理論,其技術(shù)特征包括動(dòng)態(tài)、異構(gòu)、冗余。首先,系統(tǒng)架構(gòu)應(yīng)當(dāng)由多個(gè)執(zhí)行體構(gòu)成并同時(shí)完成系統(tǒng)功能的數(shù)據(jù)處理;其次,系統(tǒng)應(yīng)當(dāng)使用統(tǒng)一的一致性判決算法判斷多個(gè)執(zhí)行體輸出數(shù)據(jù),提高系統(tǒng)輸出的可靠性;最后,系統(tǒng)需要通過(guò)一定策略對(duì)執(zhí)行體實(shí)現(xiàn)多層級(jí)多粒度的動(dòng)態(tài)調(diào)度或切換,即防御動(dòng)態(tài)化。
目前,基于擬態(tài)防御思想的安全設(shè)計(jì)已經(jīng)在多個(gè)網(wǎng)絡(luò)基礎(chǔ)設(shè)施平臺(tái)實(shí)現(xiàn)了原型驗(yàn)證和相關(guān)測(cè)試,例如工控?cái)M態(tài)路由器、擬態(tài)處理器[12]等。文獻(xiàn)[13]結(jié)合擬態(tài)防御理論,設(shè)計(jì)了一種面向SDN控制器的主動(dòng)防御機(jī)制,通過(guò)異構(gòu)冗余的控制器架構(gòu)和動(dòng)態(tài)防御策略,提高控制器安全性、靈活性和可靠性。本文首先研究安全框架中的工作流程,設(shè)計(jì)基于擬態(tài)防御的調(diào)度算法和動(dòng)態(tài)多樣性的調(diào)度策略,在充分利用服務(wù)器集群計(jì)算資源的同時(shí),增加攻擊方利用軟硬件漏洞進(jìn)行滲透和攻擊的難度,提高框架的靈活性和擴(kuò)展性。
SDN技術(shù)通過(guò)分離數(shù)據(jù)轉(zhuǎn)發(fā)和路由控制,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的集中控制和分布轉(zhuǎn)發(fā),并以軟件可編程的形式向外界提供接口[14]。傳統(tǒng)網(wǎng)絡(luò)架構(gòu)通常使用分布式協(xié)議,交換機(jī)擁有一定控制權(quán)限,因此構(gòu)造解決方案需要考慮每個(gè)交換機(jī)的狀態(tài),難以實(shí)現(xiàn)最佳解決方案;另一方面,傳統(tǒng)網(wǎng)絡(luò)架構(gòu)通常使用間接配置,研究方向側(cè)重于保證網(wǎng)絡(luò)協(xié)議的收斂,而不是直接對(duì)交換機(jī)執(zhí)行操作和配置。而SDN 為網(wǎng)絡(luò)管理人員提供全局視圖,通過(guò)南向接口能夠?qū)崿F(xiàn)對(duì)交換機(jī)的細(xì)粒度控制、自動(dòng)化配置、以及定義新接口等。
如圖1 所示,SDN 體系框架包括基礎(chǔ)設(shè)施、控制和應(yīng)用三個(gè)層次,以及溝通南向和北向的兩種接口。基礎(chǔ)設(shè)施層由SDN轉(zhuǎn)發(fā)設(shè)備構(gòu)成,用于完成數(shù)據(jù)的轉(zhuǎn)發(fā)和處理、收集應(yīng)用設(shè)備狀態(tài)信息等功能。南向接口是位于控制層與基礎(chǔ)設(shè)施層之間的開(kāi)放接口,控制器通過(guò)南向接口實(shí)現(xiàn)對(duì)交換機(jī)的網(wǎng)絡(luò)編程,控制基礎(chǔ)設(shè)施層的轉(zhuǎn)發(fā)行為,換言之,基礎(chǔ)設(shè)施層通過(guò)南向接口接收來(lái)自控制器的指令,根據(jù)指令處理網(wǎng)絡(luò)數(shù)據(jù)包。
圖1 SDN體系框架
基于SDN 的服務(wù)器安全調(diào)度框架包含控制層和數(shù)據(jù)層,如圖2 所示,控制層包括威脅檢測(cè)模塊、SDN控制器和調(diào)度邏輯模塊,威脅檢測(cè)模塊和調(diào)度邏輯模塊通過(guò)開(kāi)放接口整合在控制器中共同組成SDN 控制層;數(shù)據(jù)層由交換設(shè)備、其他主機(jī)/服務(wù)器及實(shí)現(xiàn)蜜罐[15]的主機(jī)/服務(wù)器等設(shè)備構(gòu)成。
圖2 基于SDN的多服務(wù)器安全調(diào)度框架
在控制層中,威脅檢測(cè)模塊主要由自定義策略庫(kù)構(gòu)成并用于過(guò)濾威脅流量,同時(shí)支持用戶自定義;SDN 控制器根據(jù)策略庫(kù)動(dòng)態(tài)生成流規(guī)則,將威脅流量定向至威脅處理模塊,控制器的另一項(xiàng)任務(wù)是分析交換設(shè)備的流量統(tǒng)計(jì)信息,判斷是否存在惡意活動(dòng)行為;調(diào)度邏輯模塊負(fù)責(zé)計(jì)算服務(wù)器負(fù)載并選出服務(wù)器處理任務(wù);由控制器完成服務(wù)器的調(diào)度。在數(shù)據(jù)層中,蜜罐用于吸引攻擊方保護(hù)框架內(nèi)脆弱主機(jī)/服務(wù)器,且受到SDN 控制器監(jiān)控;威脅處理模塊作為應(yīng)用程序運(yùn)行在服務(wù)器上,負(fù)責(zé)處理網(wǎng)絡(luò)內(nèi)的威脅流量,該模塊可根據(jù)用戶需求替換成其他安全軟件。
系統(tǒng)工作前,管理員首先預(yù)設(shè)過(guò)威脅處理模塊的策略,工作流程如圖3 所示,本文以客戶端-服務(wù)器模型為例進(jìn)行介紹。
1)客戶端的任務(wù)請(qǐng)求數(shù)據(jù)包進(jìn)入交換機(jī),交換機(jī)檢查是否存在可匹配的流規(guī)則,若存在執(zhí)行2);否則執(zhí)行3);
2)交換機(jī)判斷轉(zhuǎn)發(fā)目標(biāo)是否為威脅處理模塊,若是則向控制器報(bào)告數(shù)據(jù)包來(lái)源信息,控制器負(fù)責(zé)完成進(jìn)一步監(jiān)控,執(zhí)行5);否則執(zhí)行4);
3)交換機(jī)利用table-miss流表項(xiàng)與數(shù)據(jù)包進(jìn)行匹配,本文將該流表項(xiàng)配置為向SDN 控制器發(fā)送packet-in 消息,交換機(jī)將數(shù)據(jù)包填充在packet-in消息內(nèi)發(fā)送給控制器;
4)調(diào)度邏輯模塊獲取服務(wù)器運(yùn)行狀態(tài)和安全等級(jí)并計(jì)算服務(wù)器負(fù)載,根據(jù)結(jié)果選擇一臺(tái)服務(wù)器處理任務(wù)請(qǐng)求,SDN控制器確定下一步執(zhí)行策略并下發(fā)流規(guī)則;
5)交換機(jī)根據(jù)流規(guī)則執(zhí)行動(dòng)作集,若未轉(zhuǎn)發(fā)數(shù)據(jù)包則獨(dú)立執(zhí)行動(dòng)作,工作流程結(jié)束;否則判斷下一跳目標(biāo),若為交換機(jī)則重新執(zhí)行1),若目標(biāo)為威脅處理模塊,則根據(jù)預(yù)設(shè)策略實(shí)現(xiàn)威脅處理,或?qū)⑼{數(shù)據(jù)包重定向到蜜罐;若目標(biāo)為服務(wù)器,則返回?cái)?shù)據(jù)包響應(yīng)任務(wù)請(qǐng)求,數(shù)據(jù)包進(jìn)入交換機(jī)后執(zhí)行1),并按照上述工作流程轉(zhuǎn)發(fā)回客戶端。為提高威脅流量判斷的準(zhǔn)確性,還可以增加攻擊數(shù)據(jù)庫(kù)對(duì)比分析。
圖3 基于SDN的多服務(wù)器安全調(diào)度框架
擬態(tài)防御理論提出了異構(gòu)冗余的功能執(zhí)行體、一致性判決輸出、防御動(dòng)態(tài)化作為三個(gè)關(guān)鍵點(diǎn),本文在調(diào)度算法中實(shí)現(xiàn)異構(gòu)冗余執(zhí)行體和一致性判決輸出,在調(diào)度策略中實(shí)現(xiàn)防御動(dòng)態(tài)化。根據(jù)圖2的數(shù)據(jù)流,首先調(diào)度邏輯模塊利用監(jiān)控功能獲取所有服務(wù)器的運(yùn)行狀態(tài)及安全等級(jí),然后計(jì)算服務(wù)器當(dāng)前負(fù)載選擇服務(wù)器處理任務(wù),最后控制器下發(fā)流規(guī)則。計(jì)算負(fù)載主要由調(diào)度決策完成,算法實(shí)現(xiàn)過(guò)程如下。
1)動(dòng)態(tài)反饋當(dāng)前服務(wù)器的負(fù)載量:描述一臺(tái)服務(wù)器負(fù)載量的指標(biāo)包括中央處理器(Central Processing Unit,CPU)使用率、內(nèi)存使用率及進(jìn)程數(shù)[16]等。本文使用s、c、p 描述內(nèi)存使用率、中央處理器使用率、進(jìn)程數(shù),使用S、C、P 代表服務(wù)器的內(nèi)存容量、CPU 數(shù)量以及支持運(yùn)行的進(jìn)程數(shù)。第i 臺(tái)服務(wù)器的負(fù)載量L(i)計(jì)算如式(1)所示,wi代表指標(biāo)對(duì)應(yīng)權(quán)值,當(dāng)服務(wù)器的負(fù)載量越大時(shí)L(i)數(shù)值越小。
2)基于服務(wù)器的異構(gòu)度計(jì)算:衡量服務(wù)器異構(gòu)度的指標(biāo)包括編程語(yǔ)言、操作系統(tǒng)、硬件架構(gòu)等[17]。本文使用h、o、l表示服務(wù)器在編程語(yǔ)言、操作系統(tǒng)、硬件架構(gòu)中的異構(gòu)度,第i 臺(tái)服務(wù)器的異構(gòu)度δ(i)計(jì)算如式(3)所示,hi為不同指標(biāo)對(duì)應(yīng)的權(quán)值。
對(duì)操作系統(tǒng)而言,本文使用MOSS(Measures of Software Similarity)[18]計(jì)算基于Linux操作系統(tǒng)內(nèi)核代碼的相似度[19],操作系統(tǒng)異構(gòu)度越大δ(i)越小,且δ(i)∈(0,1]。
3)計(jì)算第i臺(tái)服務(wù)器的負(fù)載狀態(tài)AL(i):調(diào)度邏輯模塊選擇出AL(i)大于某一數(shù)值的服務(wù)器,使用輪詢法隨機(jī)選擇一臺(tái)臺(tái)服務(wù)器執(zhí)行任務(wù)。輪詢法一種簡(jiǎn)單的負(fù)載均衡算法,該算法為網(wǎng)絡(luò)內(nèi)部服務(wù)器輪流分配客戶端請(qǐng)求,即使用服務(wù)器i=1,2,3…的順序分配。
此外,服務(wù)器會(huì)定期向反饋分析模塊報(bào)告其執(zhí)行內(nèi)容,反饋分析功能負(fù)責(zé)完成一致性判決,從而提高功能性輸出的可靠性,其中判決算法包括多數(shù)判決、加權(quán)判決[19]等,本文對(duì)此不再贅述。
利用基于擬態(tài)防御的調(diào)度算法能夠保證新到來(lái)任務(wù)的合理分發(fā),為保證網(wǎng)絡(luò)內(nèi)部所有客戶端請(qǐng)求的均衡分配,還需要設(shè)計(jì)調(diào)度策略動(dòng)態(tài)調(diào)節(jié)服務(wù)器的數(shù)量,增加攻擊方利用軟硬件漏洞進(jìn)行攻擊滲透的難度,實(shí)現(xiàn)動(dòng)態(tài)安全防御,為此本文設(shè)計(jì)以下的調(diào)度策略[20]。
1)當(dāng)某臺(tái)服務(wù)器處于過(guò)載狀態(tài)時(shí),需要將該服務(wù)器負(fù)責(zé)的任務(wù)請(qǐng)求轉(zhuǎn)移到其他輕負(fù)載狀態(tài)的服務(wù)器上,或加入新的服務(wù)器;
2)當(dāng)某些服務(wù)器同時(shí)處于輕負(fù)載狀態(tài)時(shí),需要判斷是否能夠?qū)⑷蝿?wù)請(qǐng)求集中轉(zhuǎn)發(fā)到一個(gè)或幾個(gè)服務(wù)器,刪除空余的服務(wù)器;
3)當(dāng)某臺(tái)服務(wù)器長(zhǎng)期處于高負(fù)載狀態(tài)時(shí),需要選擇新的安全等級(jí)較高的服務(wù)器替換當(dāng)前服務(wù)器;
4)當(dāng)大量服務(wù)器長(zhǎng)期處于高負(fù)載狀態(tài)時(shí),需要通知管理員完成進(jìn)一步的安全檢查,預(yù)防DDoS[21]等攻擊的產(chǎn)生。
為確定服務(wù)器工作狀態(tài),本文首先根據(jù)服務(wù)器處理能力設(shè)定臨界值,如圖4 所示,四種運(yùn)行狀態(tài)對(duì)應(yīng)三種臨界值,對(duì)應(yīng)四種工作狀態(tài)。當(dāng)1/AL(i)低于工作值時(shí)服務(wù)器未工作,可以參加到調(diào)度過(guò)程中;當(dāng)1/AL(i)介于工作值與切換值之間時(shí),服務(wù)器為正常工作狀態(tài),該狀態(tài)又可分為輕負(fù)載狀態(tài)和重負(fù)載狀態(tài);當(dāng)1/AL(i)高于切換值時(shí)服務(wù)器處于過(guò)載狀態(tài)。在穩(wěn)定工作狀態(tài)中,服務(wù)器工作數(shù)量應(yīng)當(dāng)是穩(wěn)定的[19],若此時(shí)客戶端請(qǐng)求任務(wù)突然增多會(huì)造成服務(wù)器過(guò)載,調(diào)度邏輯模塊在探知該情況執(zhí)行策略1),工作流程如圖5所示。
圖5 策略1)工作流程
當(dāng)調(diào)度邏輯模塊發(fā)現(xiàn)服務(wù)器A 處于過(guò)載狀態(tài)時(shí),首先向控制器發(fā)送Warning_packet,內(nèi)含服務(wù)器的相關(guān)資源、負(fù)載能力、處理任務(wù)占用統(tǒng)計(jì)數(shù)據(jù)及其資源比等信息;其次,選擇出目前參與處理任務(wù)且處于輕負(fù)載狀態(tài)的服務(wù)器B,若B 不存在則啟用新服務(wù)器;接下來(lái),調(diào)度邏輯模塊生成Hand_off packet,刪除A 處理的任務(wù)C 并添加到B 中??刂破魇盏骄鏀?shù)據(jù)包后,解析數(shù)據(jù)幀提取參數(shù)并下發(fā)流規(guī)則完成對(duì)目標(biāo)定向。
對(duì)策略2)而言,為實(shí)現(xiàn)對(duì)服務(wù)器資源的回收,調(diào)度邏輯模塊定期獲取服務(wù)器負(fù)載狀態(tài),計(jì)算負(fù)載情況并判斷是否需要執(zhí)行策略2),工作流程如圖6所示。
首先,調(diào)度邏輯模塊向服務(wù)器發(fā)送Query_packet,服務(wù)器返回包含安全參數(shù)和運(yùn)行狀態(tài)的Response_packet。調(diào)度邏輯模塊計(jì)算并存儲(chǔ)服務(wù)器負(fù)載,判斷是否有服務(wù)器處于過(guò)載狀態(tài),若存在則使用策略1)工作流程;否則判斷是否存在兩臺(tái)及以上服務(wù)器處于輕負(fù)載狀態(tài);若不存在則工作流程結(jié)束;若存在則比較兩臺(tái)服務(wù)器處理能力的差值,當(dāng)差值小于x 時(shí)無(wú)法回收工作流程結(jié)束,當(dāng)差值大于x 時(shí),將任務(wù)轉(zhuǎn)移到處理能力更強(qiáng)的服務(wù)器上,回收后的服務(wù)器資源保存在列表null中。
圖6 策略2)工作流程
對(duì)策略3)而言,當(dāng)框架內(nèi)某臺(tái)服務(wù)器長(zhǎng)期處于高負(fù)載狀態(tài)時(shí),使用與策略1)相似的調(diào)度決策過(guò)程,區(qū)別是選擇一臺(tái)新的安全等級(jí)較高的服務(wù)器,本文選擇異構(gòu)度δ(i)較小的服務(wù)器。
對(duì)策略4)而言,調(diào)度邏輯模塊周期獲取服務(wù)器的負(fù)載狀態(tài)并記錄到相關(guān)日志中,并判斷是否由大量服務(wù)器長(zhǎng)期處于高負(fù)載狀態(tài),若存在這一情況則向SDN 控制器發(fā)送Warning_packet,數(shù)據(jù)包內(nèi)包含所有處于過(guò)載狀態(tài)的服務(wù)器,由管理員完成進(jìn)一步的安全檢查。
本文提出了一種基于SDN 的服務(wù)器安全調(diào)度框架,通過(guò)構(gòu)造獨(dú)立的威脅處理模塊和調(diào)度邏輯模塊,避免威脅處理業(yè)務(wù)與正常網(wǎng)絡(luò)業(yè)務(wù)之間相互影響,并在調(diào)度邏輯模塊內(nèi)置基于擬態(tài)防御的調(diào)度算法和動(dòng)態(tài)多樣性調(diào)度策略,算法通過(guò)獲取所有服務(wù)器的安全等級(jí)、運(yùn)行狀態(tài)等信息計(jì)算服務(wù)器負(fù)載,保證新到來(lái)任務(wù)請(qǐng)求的合理分發(fā),調(diào)度策略從整體角度保證任務(wù)請(qǐng)求的均衡分配,并動(dòng)態(tài)增加/刪減服務(wù)器的數(shù)量,為基于SDN的服務(wù)器負(fù)載均衡提供新的解決思路。
由于本文提出的是一種基礎(chǔ)安全調(diào)度框架,該框架的許多功能具有可替代性并值得進(jìn)一步研究,在后續(xù)工作中,本文將根據(jù)實(shí)際情況對(duì)威脅處理模塊、調(diào)度算法、判決算法完成進(jìn)一步研究和替換。