葉福玲, 張 棟, 林為偉
(1. 福州大學(xué) 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院, 福建 福州 350116;2. 福州大學(xué) 網(wǎng)絡(luò)信息安全與計(jì)算機(jī)技術(shù)國(guó)家級(jí)實(shí)驗(yàn)教學(xué)示范中心, 福建 福州 350116)
隨著互聯(lián)網(wǎng)飛速發(fā)展,網(wǎng)絡(luò)安全問(wèn)題日益凸顯。作為信息安全及相關(guān)專(zhuān)業(yè)的核心課程,計(jì)算機(jī)網(wǎng)絡(luò)安全類(lèi)課程具有較強(qiáng)的實(shí)踐性,特別是網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)課程,只有通過(guò)系統(tǒng)實(shí)驗(yàn)、實(shí)訓(xùn),才能讓學(xué)生掌握網(wǎng)絡(luò)安全攻防的能力。然而,由于網(wǎng)絡(luò)安全攻防實(shí)驗(yàn)的特殊性和破壞性,網(wǎng)絡(luò)安全攻防的實(shí)驗(yàn)教學(xué)主要依賴于虛擬仿真環(huán)境。構(gòu)建網(wǎng)絡(luò)安全攻防虛擬仿真平臺(tái)對(duì)于網(wǎng)絡(luò)安全實(shí)驗(yàn)教學(xué)具有重要意義[1-4]。
近年來(lái),虛擬仿真實(shí)驗(yàn)教學(xué)產(chǎn)品在一定程度上滿足了網(wǎng)絡(luò)安全攻防實(shí)戰(zhàn)教學(xué)的需要,但卻存在一些共性問(wèn)題,主要是:(1)產(chǎn)品網(wǎng)絡(luò)拓?fù)湎鄬?duì)固化,實(shí)現(xiàn)拓?fù)涞撵`活變化困難;(2)產(chǎn)品提供的攻防環(huán)境模式相對(duì)單一,攻防環(huán)境設(shè)置和切換困難;(3)產(chǎn)品的技術(shù)細(xì)節(jié)被屏蔽,較難實(shí)現(xiàn)與其他開(kāi)源軟件融合。隨著軟件定義網(wǎng)絡(luò)(software defined networking,SDN)的發(fā)展,上述問(wèn)題有望得到解決。
作為新型網(wǎng)絡(luò)架構(gòu),SDN將轉(zhuǎn)發(fā)與控制相分離??刂破矫尕?fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā)策略的制定和下發(fā);數(shù)據(jù)平面由交換機(jī)等網(wǎng)絡(luò)元素組成,負(fù)責(zé)數(shù)據(jù)包的轉(zhuǎn)發(fā)操作??刂破矫媾c數(shù)據(jù)平面間通過(guò)南向OpenFlow協(xié)議實(shí)現(xiàn)通信[5-7]。SDN通過(guò)集中式管理、網(wǎng)絡(luò)可編程、網(wǎng)絡(luò)虛擬化等方式,使網(wǎng)絡(luò)能被靈活控制,支持各類(lèi)應(yīng)用場(chǎng)景的定制,為解決網(wǎng)絡(luò)安全攻防虛擬仿真產(chǎn)品的共性問(wèn)題提供了可行的方案。
網(wǎng)絡(luò)安全攻防虛擬仿真實(shí)戰(zhàn)平臺(tái)基于SDN架構(gòu),具有數(shù)據(jù)平面與控制平面分離、控制器集中控制網(wǎng)絡(luò),并可用全局視野對(duì)網(wǎng)內(nèi)資源進(jìn)行集中調(diào)度等特點(diǎn)。平臺(tái)引入OpenStack開(kāi)源云服務(wù),在網(wǎng)絡(luò)拓?fù)錁?gòu)建中按需、可度量、快速、彈性地對(duì)資源池中的計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)等資源進(jìn)行管理和分配[8-10]。在實(shí)體控制器和數(shù)據(jù)存儲(chǔ)的基礎(chǔ)上,平臺(tái)虛擬化部署交換機(jī)、防火墻、應(yīng)用服務(wù)器等,通過(guò)SDN控制器集中配置虛擬網(wǎng)拓?fù)?并保證虛擬網(wǎng)的有效隔離。平臺(tái)的設(shè)計(jì)基于SDN和虛擬化,支持包括網(wǎng)絡(luò)拓?fù)浜凸シ滥J降葘?shí)戰(zhàn)環(huán)境的多樣化和靈活變更,以適應(yīng)不同的實(shí)驗(yàn)場(chǎng)景。平臺(tái)基于開(kāi)源技術(shù),相對(duì)容易與其他開(kāi)源軟件實(shí)現(xiàn)融合擴(kuò)展,無(wú)需產(chǎn)品許可,建設(shè)成本較低。
(1) 軟件定義網(wǎng)絡(luò)SDN。SDN將控制功能從網(wǎng)絡(luò)設(shè)備分離,數(shù)據(jù)平面僅維護(hù)流表結(jié)構(gòu),而流表管理歸控制器負(fù)責(zé),實(shí)現(xiàn)邏輯控制和數(shù)據(jù)轉(zhuǎn)發(fā)相分離的網(wǎng)絡(luò)架構(gòu)。在這種架構(gòu)下,控制器管理和配置網(wǎng)絡(luò)的邏輯控制策略,交換機(jī)根據(jù)控制器下發(fā)的流表完成數(shù)據(jù)包的轉(zhuǎn)發(fā)。隨著SDN概念的提出,OpenFlow 成為SDN網(wǎng)絡(luò)可編程思想的載體,代表了SDN的實(shí)現(xiàn)原型和部署實(shí)例,也是目前SDN控制平面和數(shù)據(jù)平面相互通信最常用的協(xié)議標(biāo)準(zhǔn)[7,11]。攻防實(shí)戰(zhàn)平臺(tái)使用OpenFlow 1.3實(shí)現(xiàn)控制平面和數(shù)據(jù)平面的通信。
(2) Open vSwitch。Open vSwitch是一種虛擬交換機(jī),通過(guò)編程擴(kuò)展,使大規(guī)模的網(wǎng)絡(luò)自動(dòng)化成為現(xiàn)實(shí),并支持標(biāo)準(zhǔn)管理接口和協(xié)議。OpenvSwitch支持多種Linux虛擬化技術(shù),是云計(jì)算平臺(tái)中虛擬交換機(jī)的首選[12]。攻防實(shí)戰(zhàn)平臺(tái)使用Open vSwitch作為虛擬交換機(jī)。
(3) OpenStack。OpenStack既是云計(jì)算平臺(tái)項(xiàng)目,也是開(kāi)源的云計(jì)算操作系統(tǒng),它包含計(jì)算節(jié)點(diǎn)、控制節(jié)點(diǎn)、存儲(chǔ)節(jié)點(diǎn)和網(wǎng)絡(luò)節(jié)點(diǎn)。OpenStack的核心服務(wù)組件包括Nova(計(jì)算)、Neutron(網(wǎng)絡(luò))、Swift(對(duì)象存儲(chǔ))、Cinder (塊存儲(chǔ))、Glance (鏡像)、Keystone(認(rèn)證)等。OpenStack通過(guò)一個(gè)Dashboard控制面板為服務(wù)提供可視化的UI接口[13-15]。攻防實(shí)戰(zhàn)平臺(tái)使用OpenStack構(gòu)建操作平臺(tái),實(shí)現(xiàn)SDN控制設(shè)備和轉(zhuǎn)發(fā)設(shè)備等網(wǎng)絡(luò)資源的虛擬化。
平臺(tái)的實(shí)體設(shè)備包括控制服務(wù)器和數(shù)據(jù)服務(wù)器。平臺(tái)引入虛擬化技術(shù),虛擬出SDN控制器、交換機(jī)、防火墻、實(shí)戰(zhàn)靶機(jī)服務(wù)器、滲透主機(jī)等設(shè)備,構(gòu)建SDN攻防實(shí)戰(zhàn)網(wǎng)絡(luò)拓?fù)?。用戶登錄攻防平臺(tái),連接滲透主機(jī),按照事先劃分的網(wǎng)絡(luò)拓?fù)錆B透相應(yīng)的靶機(jī)服務(wù)器,展開(kāi)攻擊。平臺(tái)網(wǎng)絡(luò)拓?fù)淙鐖D1所示。
圖1 基于SDN的網(wǎng)絡(luò)安全攻防虛擬仿真實(shí)戰(zhàn)平臺(tái)網(wǎng)絡(luò)拓?fù)鋱D
(1) 控制服務(wù)器:攻防平臺(tái)的控制節(jié)點(diǎn),同時(shí)部署攻防實(shí)戰(zhàn)管理系統(tǒng)和答題系統(tǒng)。首先,控制服務(wù)器作為OpenStack的控制節(jié)點(diǎn),安裝Nova、Neutron、Swift等組件,分別負(fù)責(zé)計(jì)算、網(wǎng)絡(luò)和存儲(chǔ),其中Neutron的L2 Agent代理選用Open vSwitch實(shí)現(xiàn)虛擬交換,也是SDN交換機(jī)??刂乒?jié)點(diǎn)的所有管理在Dashboard提供的Web界面進(jìn)行。其次,控制服務(wù)器部署實(shí)戰(zhàn)管理系統(tǒng)和答題系統(tǒng),分別由教師(管理員)和學(xué)生使用。
(2) 數(shù)據(jù)服務(wù)器:平臺(tái)的數(shù)據(jù)存儲(chǔ),保證數(shù)據(jù)的保密性、完整性和可用性,負(fù)責(zé)對(duì)系統(tǒng)各類(lèi)信息的統(tǒng)一存儲(chǔ)和控制。
(3) SDN控制器:OpenStack創(chuàng)建的虛擬部件。下發(fā)流表,數(shù)據(jù)平面各轉(zhuǎn)發(fā)設(shè)備根據(jù)流表規(guī)則完成數(shù)據(jù)包轉(zhuǎn)發(fā),使各個(gè)虛擬部件配置形成網(wǎng)絡(luò)拓?fù)?并保證各組網(wǎng)絡(luò)的相互隔離,用戶只能連接相對(duì)應(yīng)的靶機(jī)。
(4) 交換機(jī):OpenStack創(chuàng)建的虛擬部件??刂破飨掳l(fā)流表到虛擬交換機(jī),由交換機(jī)連接各種攻防設(shè)備。
(5) 實(shí)戰(zhàn)靶機(jī):OpenStack創(chuàng)建的虛擬部件。根據(jù)攻防實(shí)戰(zhàn)難度的不同,提供不同安全漏洞的系統(tǒng)鏡像,滲透難度越大,靶機(jī)等級(jí)越高。實(shí)驗(yàn)時(shí),先創(chuàng)建不同等級(jí)的鏡像實(shí)例,再分配給相應(yīng)團(tuán)隊(duì)。在單向攻擊的模式下,每個(gè)團(tuán)隊(duì)滲透自己的靶機(jī),在對(duì)戰(zhàn)互攻模式下,兩個(gè)團(tuán)隊(duì)可互相攻擊對(duì)方的靶機(jī),并且可以給自己的靶機(jī)設(shè)置防御措施。
(6) 防火墻:OpenStack創(chuàng)建的虛擬部件,主要用于隔離實(shí)戰(zhàn)靶機(jī),保證虛擬實(shí)戰(zhàn)環(huán)境的隔離性。
(7) 滲透主機(jī):OpenStack創(chuàng)建的虛擬部件,可連接靶機(jī),實(shí)現(xiàn)滲透攻擊和安裝防御工具。
在開(kāi)始虛擬攻防實(shí)戰(zhàn)之前,教師或管理員需根據(jù)實(shí)驗(yàn)要求,提前設(shè)置實(shí)戰(zhàn)的網(wǎng)絡(luò)環(huán)境,學(xué)生在實(shí)戰(zhàn)環(huán)境中開(kāi)始實(shí)驗(yàn)。傳統(tǒng)攻防實(shí)戰(zhàn)平臺(tái)和SDN的攻防實(shí)戰(zhàn)平臺(tái)在實(shí)戰(zhàn)環(huán)境設(shè)置上有明顯區(qū)別。
傳統(tǒng)攻防實(shí)戰(zhàn)平臺(tái)采用實(shí)體設(shè)備,這些設(shè)備在部署時(shí)已人為劃分好各子網(wǎng),并在設(shè)備上設(shè)置了對(duì)應(yīng)端口。平臺(tái)在安裝部署時(shí),只需將對(duì)應(yīng)的主機(jī)連接至相應(yīng)的設(shè)備端口即可。這樣的設(shè)計(jì)雖然簡(jiǎn)化了安裝配置過(guò)程,但攻防實(shí)戰(zhàn)的網(wǎng)絡(luò)環(huán)境固化,擴(kuò)展困難,因而不支持實(shí)戰(zhàn)環(huán)境的多樣化和靈活變更,難以適應(yīng)多樣化的實(shí)驗(yàn)場(chǎng)景。
現(xiàn)在有部分攻防實(shí)戰(zhàn)平臺(tái)采用虛擬化技術(shù),在一定程度上解決了實(shí)體設(shè)備固化、網(wǎng)絡(luò)擴(kuò)展困難等問(wèn)題。通過(guò)虛擬化技術(shù)可以方便地添加和刪除網(wǎng)絡(luò)設(shè)備。但在傳統(tǒng)網(wǎng)絡(luò)環(huán)境中,網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)機(jī)制缺少集中控制和全局視野,一旦平臺(tái)網(wǎng)絡(luò)拓?fù)浒l(fā)生變化,就需要更改所有轉(zhuǎn)發(fā)設(shè)備,同樣難以支持實(shí)戰(zhàn)環(huán)境的多樣化和靈活變更,較難適應(yīng)不同的實(shí)驗(yàn)場(chǎng)景。
引入SDN后的平臺(tái)系統(tǒng)架構(gòu)如圖2所示,可以看出攻防實(shí)戰(zhàn)平臺(tái)的實(shí)戰(zhàn)環(huán)境變得靈活,可從攻防實(shí)戰(zhàn)環(huán)境設(shè)置的3個(gè)步驟體現(xiàn)。
圖2 基于SDN的網(wǎng)絡(luò)安全攻防虛擬仿真實(shí)戰(zhàn)平臺(tái)系統(tǒng)架構(gòu)圖
2.2.1 構(gòu)建網(wǎng)絡(luò)部件
平臺(tái)利用OpenStack的Neutron組件提供虛擬網(wǎng)絡(luò)功能,全過(guò)程通過(guò)Nova組件實(shí)現(xiàn)資源調(diào)度。OpenStack由NeutronServer提供API給Plugin插件調(diào)用,實(shí)現(xiàn)攻防實(shí)戰(zhàn)所需控制器、交換機(jī)、防火墻、靶機(jī)等各種部件。Plugin訪問(wèn)數(shù)據(jù)庫(kù)獲取邏輯網(wǎng)絡(luò)的配置信息以及同物理網(wǎng)絡(luò)的對(duì)應(yīng)關(guān)系。Plugin Agent對(duì)Neutron Server端的各類(lèi)Plugin提供代理,和各類(lèi)Plugin完成信息交互。
在SDN網(wǎng)絡(luò)下,Plugin的選擇具有多樣性。以交換機(jī)為例,當(dāng)Neutron的Plugin配置成Open vSwitch時(shí),控制平面通過(guò)OpenFlow流表進(jìn)行轉(zhuǎn)發(fā)控制,數(shù)據(jù)平面使用VXLAN技術(shù)進(jìn)行隧道封裝,這樣構(gòu)建出來(lái)的網(wǎng)絡(luò)將支持靈活的API調(diào)用。
此外,攻防實(shí)戰(zhàn)平臺(tái)支持在現(xiàn)有網(wǎng)絡(luò)下,根據(jù)實(shí)戰(zhàn)用戶數(shù)量變化,在硬件配置允許的范圍內(nèi)新增或刪除網(wǎng)絡(luò)部件,實(shí)現(xiàn)實(shí)戰(zhàn)環(huán)境的靈活配置。
2.2.2 構(gòu)建SDN網(wǎng)絡(luò)拓?fù)?/p>
在構(gòu)建網(wǎng)絡(luò)部件時(shí),平臺(tái)選擇裝有OpenDayLight(ODL)開(kāi)源控制器的虛擬機(jī),通過(guò)北向接口連接攻防實(shí)戰(zhàn)平臺(tái)的控制軟件,使用OpenFlow 1.3作為和交換機(jī)通信的南向接口,連接各個(gè)Open vSwitch交換機(jī)。
在數(shù)據(jù)包發(fā)送前,控制器需提前向交換機(jī)下發(fā)流表。流表包含所有OpenFlow預(yù)設(shè)或用戶自定義的規(guī)則。當(dāng)數(shù)據(jù)包到達(dá)交換機(jī)時(shí),交換機(jī)根據(jù)規(guī)則匹配和處理實(shí)現(xiàn)轉(zhuǎn)發(fā)或丟棄數(shù)據(jù)包。交換機(jī)內(nèi)包含一張或多張流表,從0開(kāi)始編號(hào)和匹配。每張流表包含了多條規(guī)則,按規(guī)則優(yōu)先級(jí)先后匹配。當(dāng)數(shù)據(jù)包在流表匹配到某一條規(guī)則時(shí),交換機(jī)將更新計(jì)數(shù)器,執(zhí)行Flow Entry設(shè)置的指令,再跳轉(zhuǎn)至其他流表或直接執(zhí)行匹配動(dòng)作。當(dāng)數(shù)據(jù)包在該流表內(nèi)沒(méi)有任何匹配,就進(jìn)入優(yōu)先級(jí)最小Table-miss規(guī)則,數(shù)據(jù)包默認(rèn)被丟棄、發(fā)給控制器或另一張流表。
基于SDN的攻防實(shí)戰(zhàn)平臺(tái)能靈活定制網(wǎng)絡(luò)拓?fù)?。?shù)據(jù)包匹配的內(nèi)容可以是報(bào)文的任意字段,并且由ODL集中控制流表的下發(fā),設(shè)置流表規(guī)則,實(shí)現(xiàn)任意網(wǎng)絡(luò)部件的連通或隔離。當(dāng)需要修改時(shí),只需集中修改規(guī)則,下發(fā)新的流表。例如,在單向攻擊模式中,控制器設(shè)置每臺(tái)客戶端虛擬機(jī)和分配靶機(jī)的連接,實(shí)現(xiàn)單向滲透攻擊。改成互攻模式后,控制器設(shè)置客戶端虛擬機(jī)可以連接防護(hù)自己的靶機(jī),同時(shí)也可連接至對(duì)手團(tuán)隊(duì)的靶機(jī)進(jìn)行滲透攻擊。另一方面,當(dāng)實(shí)戰(zhàn)隊(duì)伍數(shù)量變化時(shí),平臺(tái)支持在硬件配置能力范圍內(nèi)靈活新增或刪減網(wǎng)絡(luò)部件,再通過(guò)控制器向新增交換機(jī)下發(fā)流表,制定數(shù)據(jù)包的處理機(jī)制。
2.2.3 實(shí)現(xiàn)網(wǎng)絡(luò)隔離
在SDN網(wǎng)絡(luò)下,可用基于隧道封裝模式的Overlay技術(shù)實(shí)現(xiàn)數(shù)據(jù)平面上不同用戶在同一物理網(wǎng)絡(luò)的相互隔離。攻防實(shí)戰(zhàn)平臺(tái)基于SDN網(wǎng)絡(luò),使用VXLAN這一典型的Overlay技術(shù)。如圖3所示,虛擬機(jī)VM1和VM2經(jīng)qbr、br-int、br-tun等3個(gè)虛擬網(wǎng)元實(shí)現(xiàn)VXLAN隧道通信。
平臺(tái)的虛擬交換機(jī)Open vSwitch對(duì)應(yīng)于VXLAN的VTEP(VXLAN tunnel end point)類(lèi)型的網(wǎng)絡(luò)設(shè)備,在Open vSwitch上搭建VXLAN網(wǎng)絡(luò)。以圖3為例,在VM1上設(shè)置VXLAN,遠(yuǎn)端IP設(shè)置為VM2能對(duì)外通信的IP,命令格式為:
# ovs-vsctl add-port [VM1的網(wǎng)橋] vx1 -- set interface vx1 type=vxlanoptions:remote_ip=[VM2能對(duì)外通信的ip]。
VM2設(shè)置過(guò)程同VM1,只需將IP改成VM1能對(duì)外通信的IP。設(shè)置完畢后,VM1和VM2之間就能實(shí)現(xiàn)VXLAN隧道通信。以上設(shè)置可實(shí)現(xiàn)對(duì)實(shí)戰(zhàn)鏈路的有效隔離,保證控制鏈路不受實(shí)戰(zhàn)環(huán)境的破壞。
圖3 VTEP類(lèi)型的VXLAN示意
引入SDN后,實(shí)戰(zhàn)環(huán)境設(shè)置更加便捷靈活。圖4展示了攻防實(shí)戰(zhàn)環(huán)境設(shè)置的流程。實(shí)戰(zhàn)環(huán)境設(shè)置完畢,用戶登錄實(shí)戰(zhàn)系統(tǒng),平臺(tái)分配相應(yīng)的虛擬主機(jī)。用戶可以連接實(shí)戰(zhàn)環(huán)境設(shè)置時(shí)配置的靶機(jī),進(jìn)行滲透攻擊和防御實(shí)驗(yàn),實(shí)現(xiàn)單向攻擊或互相攻防。整個(gè)配置過(guò)程靈活多變,并且支持在硬件配置許可的范圍內(nèi)隨時(shí)新增或刪減實(shí)戰(zhàn)團(tuán)隊(duì)。表1總結(jié)了各種攻防實(shí)戰(zhàn)平臺(tái)的組網(wǎng)方案,可以看出基于SDN的組網(wǎng)方案帶來(lái)的便捷。此外,整個(gè)平臺(tái)設(shè)計(jì)均使用開(kāi)源軟件,提高了可擴(kuò)展性并降低建設(shè)成本。
表1 各種攻防實(shí)戰(zhàn)平臺(tái)組網(wǎng)方案比較
圖4 設(shè)置攻防實(shí)戰(zhàn)環(huán)境流程
本文提出的基于SDN和虛擬化的網(wǎng)絡(luò)攻防實(shí)戰(zhàn)虛擬仿真實(shí)驗(yàn)平臺(tái),實(shí)戰(zhàn)環(huán)境的設(shè)置能夠支持網(wǎng)絡(luò)拓?fù)浜凸シ滥J降葘?shí)戰(zhàn)環(huán)境的多樣化和靈活變更,以適應(yīng)不同的實(shí)驗(yàn)場(chǎng)景。除此之外,平臺(tái)使用開(kāi)源軟件,提高了可擴(kuò)展性,并且節(jié)省了購(gòu)買(mǎi)產(chǎn)品技術(shù)許可的成本,有利于平臺(tái)的推廣和使用,并促進(jìn)網(wǎng)絡(luò)攻防虛擬仿真實(shí)驗(yàn)教學(xué)水平的提高。