高 楊 曲寶滿
(1.武漢數字工程研究所 武漢 430205)(2.國防科工局 北京 100048)
負載均衡技術[1]是一種服務器或網絡設備的集群技術,通過將特定網絡業務分配給多個網絡設備,擴展信息系統的處理能力,提高網絡穩定性和靈活性。基于傳統網絡的負載均衡方案都存在一定缺陷,其根本原因是業務與設備高度耦合相互影響,導致資源利用率下降、業務部署周期延長、維護工作復雜困難。
軟件定義網絡(Software-Defined Network,SDN)[2]通過分離數據平面和控制平面,打破傳統網絡垂直結構,實現集中控制,引入開放可編程能力,解決了傳統網絡架構在可靠性、擴展性及靈活性存在的許多問題。在現有的負載均衡方案中,基于SDN 的解決方案[3~5]影響力且最大認可度最高,其中,控制器負責獲取服務器運行狀態,部署負載均衡策略,實現面向連接的服務器負載均衡,該類方案能夠在一定程度上解決硬件設備成本高,靈活性差等問題,但也存在下列隱患。
1)安全性,伴隨網絡業務運營實踐的推進,來自網絡安全層面的威脅日益增多,傳統安全防御的靜態性導致防護方在網絡攻防博弈中易處于一種被動狀態,基于SDN的負載均衡解決方案也同樣面臨這一問題[6]。
2)資源利用,SDN解決方案的一大特點是實現跨廠商的多域組網,跨廠商帶來的一個問題是難以保證服務器配置的一致性,當來自不同廠商的服務器相差較大時,很多負載均衡算法難以充分發揮集群的計算能力,造成資源浪費[7]。
3)靈活性,調度算法能夠保證新到來任務的合理分發,但無法保證所有任務的均衡分配,因此還需要設計調度策略保證任務均衡分配。
綜上所述,本文首先設計獨立的威脅處理模塊,避免網絡業務與威脅處理相互影響,并利用擬態防御思想動態、異構、冗余的技術特征,提高框架魯棒性實現主動防御;其次,設計基于擬態防御的調度算法,通過引入服務器處理能力和安全等級,充分利用集群計算資源,保證新到來任務的合理分發;接下來,設計調度策略動態調節框架內服務器數量,同時切換不同安全等級的服務器,增加攻擊方利用軟硬件漏洞實現攻擊和滲透的難度。
值得注意的是本文提出的是一種基礎安全調度框架,該框架的許多功能具有可替代性并值得進一步研究,包括蜜罐、威脅處理模塊、調度算法、判決算法等都能夠在實際應用中根據用戶需求實現定制和替換。
傳統網絡安全防護方式的被動性和靜態性導致防護方在網絡攻防博弈中處于被動狀態,造成不對稱的網絡攻防局面[9]。在網絡攻防博弈中,防御方通常要面對合法用戶和攻擊方,防御方主要通過防火墻[10]、IDS[11]等確定并阻止攻擊方進入網絡關鍵區域,同時為合法用戶提供正常訪問。攻擊方則只需要面對防護方,利用偵察、掃描等技術獲取防御方信息,還可以通過中間人攻擊可以冒充合法用戶身份實現非法操作。
針對上述問題,國內專家提出了擬態防御理論,其技術特征包括動態、異構、冗余。首先,系統架構應當由多個執行體構成并同時完成系統功能的數據處理;其次,系統應當使用統一的一致性判決算法判斷多個執行體輸出數據,提高系統輸出的可靠性;最后,系統需要通過一定策略對執行體實現多層級多粒度的動態調度或切換,即防御動態化。
目前,基于擬態防御思想的安全設計已經在多個網絡基礎設施平臺實現了原型驗證和相關測試,例如工控擬態路由器、擬態處理器[12]等。文獻[13]結合擬態防御理論,設計了一種面向SDN控制器的主動防御機制,通過異構冗余的控制器架構和動態防御策略,提高控制器安全性、靈活性和可靠性。本文首先研究安全框架中的工作流程,設計基于擬態防御的調度算法和動態多樣性的調度策略,在充分利用服務器集群計算資源的同時,增加攻擊方利用軟硬件漏洞進行滲透和攻擊的難度,提高框架的靈活性和擴展性。
SDN技術通過分離數據轉發和路由控制,實現對網絡的集中控制和分布轉發,并以軟件可編程的形式向外界提供接口[14]。傳統網絡架構通常使用分布式協議,交換機擁有一定控制權限,因此構造解決方案需要考慮每個交換機的狀態,難以實現最佳解決方案;另一方面,傳統網絡架構通常使用間接配置,研究方向側重于保證網絡協議的收斂,而不是直接對交換機執行操作和配置。而SDN 為網絡管理人員提供全局視圖,通過南向接口能夠實現對交換機的細粒度控制、自動化配置、以及定義新接口等。
如圖1 所示,SDN 體系框架包括基礎設施、控制和應用三個層次,以及溝通南向和北向的兩種接口。基礎設施層由SDN轉發設備構成,用于完成數據的轉發和處理、收集應用設備狀態信息等功能。南向接口是位于控制層與基礎設施層之間的開放接口,控制器通過南向接口實現對交換機的網絡編程,控制基礎設施層的轉發行為,換言之,基礎設施層通過南向接口接收來自控制器的指令,根據指令處理網絡數據包。

圖1 SDN體系框架
基于SDN 的服務器安全調度框架包含控制層和數據層,如圖2 所示,控制層包括威脅檢測模塊、SDN控制器和調度邏輯模塊,威脅檢測模塊和調度邏輯模塊通過開放接口整合在控制器中共同組成SDN 控制層;數據層由交換設備、其他主機/服務器及實現蜜罐[15]的主機/服務器等設備構成。

圖2 基于SDN的多服務器安全調度框架
在控制層中,威脅檢測模塊主要由自定義策略庫構成并用于過濾威脅流量,同時支持用戶自定義;SDN 控制器根據策略庫動態生成流規則,將威脅流量定向至威脅處理模塊,控制器的另一項任務是分析交換設備的流量統計信息,判斷是否存在惡意活動行為;調度邏輯模塊負責計算服務器負載并選出服務器處理任務;由控制器完成服務器的調度。在數據層中,蜜罐用于吸引攻擊方保護框架內脆弱主機/服務器,且受到SDN 控制器監控;威脅處理模塊作為應用程序運行在服務器上,負責處理網絡內的威脅流量,該模塊可根據用戶需求替換成其他安全軟件。
系統工作前,管理員首先預設過威脅處理模塊的策略,工作流程如圖3 所示,本文以客戶端-服務器模型為例進行介紹。
1)客戶端的任務請求數據包進入交換機,交換機檢查是否存在可匹配的流規則,若存在執行2);否則執行3);
2)交換機判斷轉發目標是否為威脅處理模塊,若是則向控制器報告數據包來源信息,控制器負責完成進一步監控,執行5);否則執行4);
3)交換機利用table-miss流表項與數據包進行匹配,本文將該流表項配置為向SDN 控制器發送packet-in 消息,交換機將數據包填充在packet-in消息內發送給控制器;
4)調度邏輯模塊獲取服務器運行狀態和安全等級并計算服務器負載,根據結果選擇一臺服務器處理任務請求,SDN控制器確定下一步執行策略并下發流規則;
5)交換機根據流規則執行動作集,若未轉發數據包則獨立執行動作,工作流程結束;否則判斷下一跳目標,若為交換機則重新執行1),若目標為威脅處理模塊,則根據預設策略實現威脅處理,或將威脅數據包重定向到蜜罐;若目標為服務器,則返回數據包響應任務請求,數據包進入交換機后執行1),并按照上述工作流程轉發回客戶端。為提高威脅流量判斷的準確性,還可以增加攻擊數據庫對比分析。

圖3 基于SDN的多服務器安全調度框架
擬態防御理論提出了異構冗余的功能執行體、一致性判決輸出、防御動態化作為三個關鍵點,本文在調度算法中實現異構冗余執行體和一致性判決輸出,在調度策略中實現防御動態化。根據圖2的數據流,首先調度邏輯模塊利用監控功能獲取所有服務器的運行狀態及安全等級,然后計算服務器當前負載選擇服務器處理任務,最后控制器下發流規則。計算負載主要由調度決策完成,算法實現過程如下。
1)動態反饋當前服務器的負載量:描述一臺服務器負載量的指標包括中央處理器(Central Processing Unit,CPU)使用率、內存使用率及進程數[16]等。本文使用s、c、p 描述內存使用率、中央處理器使用率、進程數,使用S、C、P 代表服務器的內存容量、CPU 數量以及支持運行的進程數。第i 臺服務器的負載量L(i)計算如式(1)所示,wi代表指標對應權值,當服務器的負載量越大時L(i)數值越小。

2)基于服務器的異構度計算:衡量服務器異構度的指標包括編程語言、操作系統、硬件架構等[17]。本文使用h、o、l表示服務器在編程語言、操作系統、硬件架構中的異構度,第i 臺服務器的異構度δ(i)計算如式(3)所示,hi為不同指標對應的權值。

對操作系統而言,本文使用MOSS(Measures of Software Similarity)[18]計算基于Linux操作系統內核代碼的相似度[19],操作系統異構度越大δ(i)越小,且δ(i)∈(0,1]。
3)計算第i臺服務器的負載狀態AL(i):調度邏輯模塊選擇出AL(i)大于某一數值的服務器,使用輪詢法隨機選擇一臺臺服務器執行任務。輪詢法一種簡單的負載均衡算法,該算法為網絡內部服務器輪流分配客戶端請求,即使用服務器i=1,2,3…的順序分配。

此外,服務器會定期向反饋分析模塊報告其執行內容,反饋分析功能負責完成一致性判決,從而提高功能性輸出的可靠性,其中判決算法包括多數判決、加權判決[19]等,本文對此不再贅述。
利用基于擬態防御的調度算法能夠保證新到來任務的合理分發,為保證網絡內部所有客戶端請求的均衡分配,還需要設計調度策略動態調節服務器的數量,增加攻擊方利用軟硬件漏洞進行攻擊滲透的難度,實現動態安全防御,為此本文設計以下的調度策略[20]。
1)當某臺服務器處于過載狀態時,需要將該服務器負責的任務請求轉移到其他輕負載狀態的服務器上,或加入新的服務器;
2)當某些服務器同時處于輕負載狀態時,需要判斷是否能夠將任務請求集中轉發到一個或幾個服務器,刪除空余的服務器;
3)當某臺服務器長期處于高負載狀態時,需要選擇新的安全等級較高的服務器替換當前服務器;
4)當大量服務器長期處于高負載狀態時,需要通知管理員完成進一步的安全檢查,預防DDoS[21]等攻擊的產生。
為確定服務器工作狀態,本文首先根據服務器處理能力設定臨界值,如圖4 所示,四種運行狀態對應三種臨界值,對應四種工作狀態。當1/AL(i)低于工作值時服務器未工作,可以參加到調度過程中;當1/AL(i)介于工作值與切換值之間時,服務器為正常工作狀態,該狀態又可分為輕負載狀態和重負載狀態;當1/AL(i)高于切換值時服務器處于過載狀態。在穩定工作狀態中,服務器工作數量應當是穩定的[19],若此時客戶端請求任務突然增多會造成服務器過載,調度邏輯模塊在探知該情況執行策略1),工作流程如圖5所示。

圖5 策略1)工作流程
當調度邏輯模塊發現服務器A 處于過載狀態時,首先向控制器發送Warning_packet,內含服務器的相關資源、負載能力、處理任務占用統計數據及其資源比等信息;其次,選擇出目前參與處理任務且處于輕負載狀態的服務器B,若B 不存在則啟用新服務器;接下來,調度邏輯模塊生成Hand_off packet,刪除A 處理的任務C 并添加到B 中。控制器收到警告數據包后,解析數據幀提取參數并下發流規則完成對目標定向。
對策略2)而言,為實現對服務器資源的回收,調度邏輯模塊定期獲取服務器負載狀態,計算負載情況并判斷是否需要執行策略2),工作流程如圖6所示。
首先,調度邏輯模塊向服務器發送Query_packet,服務器返回包含安全參數和運行狀態的Response_packet。調度邏輯模塊計算并存儲服務器負載,判斷是否有服務器處于過載狀態,若存在則使用策略1)工作流程;否則判斷是否存在兩臺及以上服務器處于輕負載狀態;若不存在則工作流程結束;若存在則比較兩臺服務器處理能力的差值,當差值小于x 時無法回收工作流程結束,當差值大于x 時,將任務轉移到處理能力更強的服務器上,回收后的服務器資源保存在列表null中。

圖6 策略2)工作流程
對策略3)而言,當框架內某臺服務器長期處于高負載狀態時,使用與策略1)相似的調度決策過程,區別是選擇一臺新的安全等級較高的服務器,本文選擇異構度δ(i)較小的服務器。
對策略4)而言,調度邏輯模塊周期獲取服務器的負載狀態并記錄到相關日志中,并判斷是否由大量服務器長期處于高負載狀態,若存在這一情況則向SDN 控制器發送Warning_packet,數據包內包含所有處于過載狀態的服務器,由管理員完成進一步的安全檢查。
本文提出了一種基于SDN 的服務器安全調度框架,通過構造獨立的威脅處理模塊和調度邏輯模塊,避免威脅處理業務與正常網絡業務之間相互影響,并在調度邏輯模塊內置基于擬態防御的調度算法和動態多樣性調度策略,算法通過獲取所有服務器的安全等級、運行狀態等信息計算服務器負載,保證新到來任務請求的合理分發,調度策略從整體角度保證任務請求的均衡分配,并動態增加/刪減服務器的數量,為基于SDN的服務器負載均衡提供新的解決思路。
由于本文提出的是一種基礎安全調度框架,該框架的許多功能具有可替代性并值得進一步研究,在后續工作中,本文將根據實際情況對威脅處理模塊、調度算法、判決算法完成進一步研究和替換。