胡衛宏 葉崛宇 閆夏莉 岳巧麗 張海闊
(中國互聯網絡信息中心 北京 100190)
云計算是在數據中心主機上承載多種不同服務,以實現計算、網絡、存儲等資源的整合與共享,從而達到高效利用資源的目的[1]。為了實現更加高效的數據處理,傳統的數據中心應用云計算技術是必然的發展趨勢。隨著數據中心這種技術架構的轉變以及大數據、移動互聯網等的快速發展,網絡安全的邊界概念越來越模糊化,傳統意義上的將防火墻部署在網絡邊界的防御手段已經難以有效地發揮作用。一方面,這種單點防御策略難以在性能上滿足數據中心流量與日俱增的需求;另一方面,新的安全威脅與攻擊層出不窮,傳統防御手段的檢測識別與響應處理需要在網絡中的多個點(路由器、交換機、防火墻等)進行預先設置,工作量大,配置復雜,無法滿足數據中心網絡對安全威脅做出快速響應的需求。
軟件定義網絡[2](Software Defined Network, SDN)是一種新型網絡架構,通過將網絡設備控制面與數據面分離來實現網絡流量的靈活控制,讓網絡成為一種可靈活調配的資源。基于SDN的三個重要概念:可編程、控制平面與數據平面分離、集中式控制模型。文獻[3-7]提出了面向SDN的軟件定義安全防御策略,能夠為數據中心網絡邊界、虛擬層和租戶提供靈活的安全保障,但這些方案不能很好地兼容傳統架構的數據中心網絡。
網絡功能虛擬化[8](Network Function Virtualization,NFV)是云計算的一部分,將網絡功能從原本的硬件設備上分離出來,以實現彈性、靈活、與設備廠商無關的網絡組網。目前,OpenNetVM[9]和Click-On-OSv[10]等利用DPDK[11]、NetMap[12]技術已經能夠在通用計算架構的虛擬機上實現高性能的網絡功能虛擬化。隨著互聯網的不斷發展,對于云服務商而言,各類新型業務層出不窮,采用傳統的專用防火墻難以滿足新業務在安全防護方面快速開發部署的需求,虛擬化防火墻在云服務中的意義日益顯著。本文基于數據與控制平面分離,以及網絡功能虛擬化思想,提出一種面向云的軟件定義防御體系架構,以解決云數據中心網絡傳統防御方式的不足,同時提出該體系下一種高性能虛擬防火墻的設計,并通過實驗分析證明了該防御體系的可行性。
軟件定義防御體系(Software Defined Defense System,SDDS)旨在提供一個模塊化、靈活、安全的基礎性框架,既可支持傳統網絡安全以及訪問控制策略,也能夠支持演化到SDN網絡。SDDS能夠無縫集成到云數據中心網絡環境,協同利用內部以及外部的資源,實現可定制化的安全防御策略。
基于云數據中心網絡環境的特點,SDDS的設計應從以下幾個出發點考慮:
1)自動化:基于策略驅動,采用軟件定義安全方式,由軟件來管理,實現安全功能模塊(如入侵檢測、網絡分片和訪問控制等)的自動部署與執行。
2)靈活性:功能彈性化,可按需定制,易于規模化應用,能夠隨著安全威脅或環境變化進行策略調整。對硬件安全設備依賴最小,適用于多種應用環境(如云計算、虛擬架構等),支持對新加入設備自動進行基礎安全策略配置與實施。
3)可移植性:將安全策略從硬件層面抽象到軟件層面,從而允許安全防御模塊在不同環境進行重復部署。
4)協同控制:通過協同管理數據中心網絡的安全要素,例如入侵檢測、防護、網絡分片、防火墻和監控等,實現聯動防御。
5)管理可視化:全網拓撲及事件可視,以實現全網絡安全態勢可感知,便于管理以及對威脅或攻擊進行快速響應處理。
SDDS架構的主要特征是通過對網絡流量進行數據層的編程實現軟件定義的安全防御功能;邏輯上的特征是中心化的控制平面,便于進行靈活的安全管理操作,而不需要對底層網絡安全元素個體進行單獨配置。此外,全網層面的管理機制保證了不同網絡設備之間的高效聯動。SDDS的邏輯架構如圖1所示。

圖1 軟件定義防御體系邏輯架構圖
執行層(Enforcement Layer)位于數據平面,提供了執行防御保護的一個通用平臺。安全策略部署于網絡上物理或者虛擬的點,稱為執行點,其可以位于網絡邊界、服務器主機、虛擬機等,能夠執行防御動作。通過設置不同的執行點,可對網絡進行分片管理,每個分片區域實施不同的安全防御邏輯,以實現靈活高效的防御。
控制層(Control Layer)基于軟件定義思想,具有快速適應變化、動態更新策略的特點。控制層是軟件定義防御體系的核心部分,負責根據攻擊或者威脅事件消息產生軟件定義的防御功能,并將其部署到合適的網絡位置,包括專用防御設備、運行于主機或者虛擬機的服務和移動設備等。防御的類型包括攻擊威脅的防御、訪問控制、數據保護等。攻擊及威脅的特征信息來自于網絡中其他檢測設備,訪問控制信息來自于管理層配置。
管理層(Management Layer)協同基礎架構,為整體框架帶來靈活性,是網絡管理與其他兩個層的接口。其功能包括控制中心、事件處理和可視化等。控制中心可對網絡進行分割,以確定防御策略的最佳部署位置。同時負責管理訪問控制的定義以及攻擊和威脅特征數據的更新,此外還可同意或禁止防御點安全策略的執行。管理的可視化有助于對安全事件的進行主動響應,并感知網絡拓撲的改變,從而掌握全網絡的安全態勢。通過完善威脅檢測分析算法,協調數據中心網絡各安全設備的更新策略,實現全網動態化的防御。
SDDS架構的核心特點是靈活性,主要體現在控制層一方面能夠根據新的安全威脅,動態地更新防御策略;另一方面新的檢測識別方法或安全技術也能夠被及時應用到防御系統之中。執行層僅提供執行防御保護的平臺,防御策略由控制層的軟件控制,因此底層硬件部署可保持不變。在管理層的全局協調下,SDDS能夠自動適應不斷變化的安全威脅或攻擊,同時也能夠在必要的情況下,例如威脅識別檢測可靠性不高,通過網管介入實現定制化防御。
基于SDDS的總體設計和邏輯架構,一個典型數據中心網絡環境的SDDS系統結構如圖2所示。

圖2 軟件定義防御體系示意圖
與傳統防御方式類似,數據中心網絡邊緣部署防火墻集群,通過流量牽引對出入網絡的流量按照安全策略進行處理。但在SDDS中,該防火墻集群擔任全局防御的角色,支持軟件定義防御,可對流量進行按需牽引,提高防御性能。同時,它也可作為網絡邊界網關執行點,部署SDDS全局管理模塊,協調全網安全資源實現動態按需防御。
此外,在數據中心網絡的主機或虛擬機也部署其用于單點防御的虛擬化防火墻。全局軟件定義防火墻的部分安全功能被卸載到虛擬化防火墻,以實現高性能、就近、定制化的防御。虛擬化防火墻可在通用架構主機通過虛擬方式實現,除具備靈活性特點外,也可降低部署硬件成本。與邏輯架構對應,虛擬化防火墻包括兩個功能實體:控制器與策略執行單元。控制器對分片網絡進行管理和控制,能夠接收該區域網絡中所有的消息,可以給下層執行單元下發安全策略,并對其運行狀態進行監控。執行單元是一個實現安全策略動作的實體,運行于數據平面,它對數據流的處理規則由安全策略規定。虛擬化防火墻為主機或者虛擬機租戶提供不同粒度的防御,是實現全網層次化、多粒度、靈活部署、動態更新的安全防御體系的重要組成部分。
網絡功能虛擬化是近年來國內外廣泛研究的技術,其核心思想是基于通用軟硬件平臺實現傳統專用設備上的網絡功能,以達到資源靈活共享的目的,是實現虛擬化防火墻的基礎。基于該技術以及SDDS邏輯架構,本文提出一種SDDS體系下的高性能虛擬化防火墻設計。
虛擬化防火墻是軟件定義防御體系的核心組件,需要滿足兩方面的基本需求:一是具備防火墻的高性能網絡流量處理能力;二是可以隔離不同業務以實現虛擬化。其中具備高性能網絡流量處理能力是虛擬化防火墻的首要前提,目前業界比較成熟的高性能網絡流量處理框架有PF_RING[13]、NetMap和DPDK等。Intel推出的基于Linux/FreeBSD的開源開發包DPDK,以其免費、高性能、良好的硬件支持和社區環境等特點,得到了廣泛應用。DPDK基于數據平面(Data Plane)和控制平面(Control Plane)分離的理念,采用DDIO(Data Direct I/O)、大頁面(Huge Page)、環形緩沖區(Ring Buffer)和CPU綁定等技術,實現數據平面的高速網絡流量處理。本文基于DPDK技術提出一種虛擬化防火墻設計,其數據平面包含網絡流量轉發器和安全插件,控制平面由操作系統及各種應用軟件組成。數據平面和控制平面通過DPDK的高速接口KNI(Kernel NIC Interface)進行通信,虛擬化防火墻總體架構如圖3所示。

圖3 虛擬化防火墻總體架構
安全插件是不同用戶針對各自業務定制的防護軟件,以動態鏈接庫的形式接入虛擬化防火墻,并提供預先定義的標準回調函數接口供流量轉發器調用,負責相關網絡流量的清洗,對應SDDS邏輯架構執行層功能。插件管理系統負責動態加載和卸載安全插件,并為插件提供輕量級的虛擬化機制,在安全插件加載的過程中實現計算、網絡和存儲資源的虛擬化,兼顧網絡性能和隔離安全,對應SDDS邏輯架構的控制層。
插件管理系統在加載安全插件的過程中掌控相關資源分配、權限控制、轉發通道創建和流量牽引等事務,是虛擬化防火墻的控制中心。插件管理系統加載安全插件的關鍵流程如下:(1)為插件fork子進程并綁定CPU,控制子進程不繼承父進程的信號、消息隊列、定時器等,隔離插件的CPU、內存空間和IPC(Inter-Process Communication),實現插件的計算資源虛擬化;(2)通過chroot設置子進程的權限和根路徑,隔離插件的用戶、組、文件系統,實現插件的存儲資源虛擬化;(3)調用DPDK的EAL(Environment Abstraction Layer)初始化函數接口,指定子進程的類型(--proc-type)為secondary,通過共享大頁面的方式創建與流量轉發器之間的高速網絡流量轉發通道,并為通道配置基于目的IP地址的轉發規則,隔離插件的網絡流量,實現插件的網絡資源虛擬化;(4)循環調用插件的回調函數并根據返回值處理數據報文;(5)通過Quagga進行BGP牽引[14],將去往相關目的IP地址的網絡流量引入虛擬化防火墻。
插件管理系統為安全插件提供虛擬化機制,并將與之相關的網絡流量牽引到虛擬化防火墻,流量轉發器在此基礎上進行網絡流量的數據鏈路層處理與網絡層轉發。
流量轉發器是數據平面的核心,負責網卡、安全插件和KNI之間網絡數據流量的高速轉發。圖4為流量轉發器的模型示意圖。

圖4 流量轉發器模型示意圖
流量轉發器通過回調函數將數據報文指針傳遞給安全插件,并基于函數返回值決定丟棄或轉發相應的數據報文。流量轉發器綁定兩個CPU(RX和TX),并為每個安全插件分配獨立的高速網絡流量轉發通道(R和T)。RX負責從網卡接收網絡流量并根據轉發規則進行轉發,TX負責將網絡流量發送給網卡,R、T分別為安全插件的輸入、輸出環形緩沖區。
轉發規則表包含插件轉發規則和本地轉發規則,轉發規則由目的IP地址和轉發目標組成。插件轉發規則負責將相關網絡流量引入安全插件,目的IP地址為其防護的服務IP,轉發目標為其輸入環形緩沖區。本地轉發規則負責將虛擬防火墻控制平面相關的網絡流量(如BGP協議)引入本地操作系統,目的IP地址為虛擬防火墻的網絡接口IP,轉發目標為KNI。
數據接收RX的關鍵流程如下:(1)啟動相關網口的checksum-offload功能,將數據校驗工作卸載到網卡以降低CPU的負載;(2)采用burst模式從網卡批量接收數據報文,burst模式可降低每個數據報文的驅動級傳輸成本(PCIE總線帶寬、函數調用、內存訪問等);(3)根據轉發規則確定數據報文的轉發目的;(4)根據轉發目的對數據報文進行排序,并采用burst模式將數據報文批量壓入相關插件的環形緩沖區或KNI的FIFO隊列,burst模式可以降低每個數據報文的平均CAS(Compare And Swap)自旋概率及函數調用消耗。與數據接收RX類似,數據發送TX同樣采用checksum-offload功能和burst模式以提高網絡流量的傳輸性能,其關鍵流程如下:(1)從KNI批量收集數據報文;(2)從環形緩沖區批量收集數據報文,并交換報文的源MAC和目的MAC;(3)設置數據報文的硬件校驗標志位,將數據校驗操作卸載到網卡;(4)將數據報文批量發送到網卡。
流量轉發器根據轉發規則表,完成對網絡流量的轉發和隔離,并負責數據報文的校驗,為安全插件提供網絡上下文環境,以進一步實現具體業務的安全防護邏輯。
隨著網絡技術的發展,網絡攻擊越來越多且形式多樣,使用防火墻進行流量的訪問控制是重要的安全防護之一。網絡攻擊中的分布式拒絕服務[15](DDoS)是攻擊者控制傀儡機器對攻擊目標發起大量請求,導致目標服務器資源耗盡無法為用戶提供正常服務。DDoS是云數據中心網絡常見的攻擊形式,且多為大規模流量攻擊,對防御性能要求較高,應用服務軟件很難通過自身的安全策略進行有效防御。本文開發了流量轉發器以及插件管理系統等模塊,實現了基于DPDK的虛擬化防火墻,根據攻擊流量特征開發安全插件,利用虛擬化防火墻平臺清洗攻擊流量以保障正常流量得到及時服務。
測試環境利用一臺通用服務器及操作系統搭建,系統配置如表1所示。實驗以DNS協議為例進行測試,使用應用軟件ISC BIND v9.12[16]搭建權威服務器。按照后綴域名匹配過濾及前綴域名匹配過濾規則開發安全插件,通過插件管理系統進行配置,綁定單個CPU接入到虛擬化防火墻中。采用思博倫發包機模擬隨機域名攻擊場景,對虛擬化防火墻的防御性能進行測試。

表1 虛擬化防火墻系統配置
搭建應用軟件無防護和虛擬化防火墻防護兩種環境進行平行測試。測試流量由正常DNS查詢與攻擊流量混合構成。獲取.cn權威服務器正常解析期間的查詢日志,提取域名組成正常流量;由子域名隨機和后綴域名隨機1∶1混合組成攻擊流量。調整正常流量和攻擊流量的比例進行發包,并統計記錄回應報文,分析權威服務器的服務能力(應用軟件的服務能力是指正常查詢流量的回應占比),以及虛擬化平臺的防御性能。根據本實驗環境下應用軟件的最大服務能力,固定發送QPS為400 000(正常流量)并逐步增加攻擊流量,使總流量最終達到10 Gbit/s(QPS約為1.2×107)。通過發包機統計回應報文數據,計算正常流量回應的占比,分析攻擊場景下應用軟件的服務能力,測試結果如圖5所示。

圖5 應用軟件的服務能力(單CPU插件)
可以看出,應用軟件在無防護的場景下服務能力下降明顯,當總流量達到4 000 000以上時,正常流量回應的占比不足10%,大部分正常查詢都無法得到應答。經過虛擬化防火墻清洗攻擊流量后,隨著流量逐步加大應用軟件的服務能力僅有輕微的下降,但總流量超過7 000 000后應用軟件的服務能力出現較為顯著的下降。經分析,由于小部分正常流量和攻擊流量有相同的特征,因此只要安全插件啟動,這部分流量就會被誤清洗,導致服務能力小幅下降。當總流量超過7 000 000后,超過單個CPU處理能力的上限導致服務能力下降較為明顯,通過將安全插件綁定至多個CPU可消除處理能力瓶頸。圖6為雙CPU插件的測試結果。

圖6 應用軟件的服務能力(雙CPU插件)
測試結果表明,單個應用服務器的流量處理能力有限,在遇到大規模攻擊時服務能力顯著下降,虛擬化防火墻在萬兆網卡下能處理10 Gbit/s的網絡流量,最大化保障應用軟件的服務能力。虛擬化防火墻方案有較強的可實施性,且配置靈活,適應多元化應用場景,可支撐網絡應用服務器根據自身需求定制開發安全插件,利用虛擬化防火墻平臺的高性能流量處理能力有效防御網絡攻擊。
SDDS靈活的架構設計以及軟件定義特性,順應了云數據中心網絡發展趨勢,不僅對DDoS攻擊有良好的防御效果,而且在安全功能、協議支持、業務系統集成中都能夠達到傳統防御的效果。
訪問控制是云數據中心環境下最基礎的安全功能需求。外網的訪問控制可由部署在網絡邊界的全局軟件定義防火墻實現;云內部多租戶的環境中,將同一物理主機中的虛擬機(租戶)流量引入虛擬防火墻以實現有效的網絡隔離。云環境的動態化特性,對防火墻的入侵檢測(IDS)以及防御(IPS)功能也提出很高要求。SDDS一方面兼容傳統的入侵檢測系統,全局管理模塊將接收到的入侵事件進行處理并生成特征指紋,再下發到虛擬防火墻執行防御動作;另一方面,虛擬防火墻的軟件定義特性允許開發定制化入侵檢測算法,并采取過濾、隔離或導流等措施,實現檢測、分析與防御的統一,快速對入侵行為做出響應。此外,在更為復雜的Web應用防護方面,SDDS既能夠以串聯的方式部署在服務器前端,采用傳統的規則匹配方式,識別并阻斷異常請求,又能夠支持基于云的WAF防護,采用DNS技術,將用戶請求轉發至云端節點進行檢測。
在網絡協議層面,軟件定義防御體系可能遇到的問題主要集中在虛擬化防火墻,具體而言包括兩個方面:一是虛擬化防火墻能否對TCP/IP模型各層網絡攻擊進行安全防護;二是虛擬化防火墻能否支持各種常用的管理控制協議,以支撐軟件定義防御體系中各個子系統的協同運作。對于第一個問題,DPDK采用將PCIE總線映射到用戶空間的機制給予程序直接操作網卡的權限,使得虛擬化防火墻可以存取數據鏈路層、網絡層、傳輸層和應用層的完整數據,從而實現全協議棧的安全防護。而對于第二個問題,KNI為數據平面和控制平面之間建立的高速數據轉發通道,使得虛擬化防火墻能夠與操作系統無縫對接,復用操作系統的所有網絡功能,與軟件定義防御體系中的其他子系統進行網絡交互,實現虛擬化防火墻的可管可控。
軟件定義防御體系具有高度的靈活性和可擴展性,可在零侵入的情況下集成到各類業務系統中,對已有業務系統影響很小。分析軟件定義防御體系的兩種部署方式,全局虛擬化防火墻通過旁路部署,旁掛于云數據中心的路由器,利用BGP協議進行流量牽引,無須改變已有業務系統的網絡拓撲結構;單點虛擬化防火墻取代傳統網卡驅動,在完成驅動功能的基礎上實現安全防護,對業務系統沒有代碼侵入,無須改動已有的業務流程。利用網絡功能虛擬化技術,虛擬化防火墻中安全策略的應用或升級不影響業務系統,而是采用安全插件的方式動態加載和卸載,方便實時管理和控制,具有實施成本低、技術架構無關性等特點,可靈活應對不同業務系統的安全需求。
本文針對傳統防御體系難以滿足云服務安全需求的問題,提出軟件定義防御體系及虛擬化防火墻模型,為云服務用戶提供高度靈活的網絡安全保障機制。彈性化是云計算的核心價值,彈性的資源分配和應用部署受到市場的廣泛認可。隨著云計算的持續發展,相關的網絡安全問題日益凸顯,探索彈性的新型防御體系,對于完善云的內涵具有積極意義。