引言
OpenFlow是一種軟件定義網(wǎng)絡(luò)(SDN)的解決方案,,它使得網(wǎng)絡(luò)的靈活性大大增加。它是以在實(shí)際環(huán)境中測(cè)試新協(xié)議為初衷而開(kāi)發(fā)的新技術(shù),。OpenFlow在使用新協(xié)議時(shí)不打斷原有網(wǎng)絡(luò)的正常運(yùn)行,,并且使用OpenFlow的網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備(Switch)實(shí)現(xiàn)了與控制器(Controller)的標(biāo)準(zhǔn)接口,,新的協(xié)議、轉(zhuǎn)發(fā)方式不必重新開(kāi)發(fā)網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備,,從而減少了不必要的麻煩(如廠(chǎng)家不愿意開(kāi)放其技術(shù)細(xì)節(jié),,導(dǎo)致第三方無(wú)法進(jìn)行對(duì)設(shè)備的靈活升級(jí)、使用),。OpenFlow技術(shù)使得網(wǎng)絡(luò)更加靈活,,已經(jīng)成為軟件定義網(wǎng)絡(luò)的解決方案之一。現(xiàn)在已有的研究成果中,,已出現(xiàn)了以O(shè)penFlow技術(shù)實(shí)現(xiàn)QoS,、路由算法[等的方法,針對(duì)如何使用OpenFlow技術(shù)解決網(wǎng)絡(luò)安全問(wèn)題還是一個(gè)新的課題,。
本文以O(shè)penFlow技術(shù)為基礎(chǔ),,開(kāi)展新型網(wǎng)絡(luò)安全體系結(jié)構(gòu)設(shè)計(jì)方法的探索。主要研究了OpenFlow技術(shù),;并為采用隧道技術(shù)改進(jìn)的OpenFlow網(wǎng)絡(luò)安全設(shè)計(jì)方法進(jìn)行了探索,;給出了基于OpenFlow技術(shù)的增強(qiáng)型網(wǎng)絡(luò)安全設(shè)計(jì)方法;最后為OpenFlow技術(shù)在未來(lái)網(wǎng)絡(luò)安全中的應(yīng)用進(jìn)行了展望,。
1OpenFlow技術(shù)
OpenFlow是斯坦福大學(xué)CleanSlate計(jì)劃資助的一個(gè)開(kāi)放式協(xié)議標(biāo)準(zhǔn),,同時(shí)也作為GENI計(jì)劃的一個(gè)子項(xiàng)目,主要用于在現(xiàn)有網(wǎng)絡(luò)上部署新的協(xié)議和新的業(yè)務(wù)應(yīng)用叫OpenFlow技術(shù)主要由OpenFlow交換機(jī),、控制器Controller和虛擬化FlowVisor組成,。OpenFlow交換機(jī)完成數(shù)據(jù)轉(zhuǎn)發(fā);控制器Controller完成轉(zhuǎn)發(fā)策略的判斷,;虛擬化FlowVisor提供一個(gè)虛擬化層,,使得多個(gè)控制器可以控制同一個(gè)交換機(jī)。
圖1 OpenFlow技術(shù)組網(wǎng)結(jié)構(gòu)
為了簡(jiǎn)單起見(jiàn),,先不考慮網(wǎng)絡(luò)虛擬化問(wèn)題,,那么一個(gè)基本的OpenFlow技術(shù)組網(wǎng)結(jié)構(gòu)如圖1所示,它包括OpenFlow交換機(jī)(Switch)和OpenFlow控制器(Controller),。當(dāng)?shù)谝粋€(gè)數(shù)據(jù)包到達(dá)Switch后,,由Switch使用OpenFlow協(xié)議通過(guò)安全通道(SecureChannel)將它轉(zhuǎn)發(fā)至Controller,Controller
上的軟件進(jìn)行轉(zhuǎn)發(fā)決策,,將轉(zhuǎn)發(fā)決策下發(fā)到Switch的流表(FlowTable)中,,后續(xù)數(shù)據(jù)包按FlowTable規(guī)則轉(zhuǎn)發(fā)。安全通道是基于SSL協(xié)議的,,保證了控制器及系統(tǒng)的安全,。它在設(shè)備與控制器之間釆用證書(shū)認(rèn)證的方式來(lái)進(jìn)行合法設(shè)備的識(shí)別,以防未授權(quán)設(shè)備的接入,,從而保證控制器和系統(tǒng)本身不受攻擊,。
圖2所示是OpenFlow交換機(jī)的流表。它包括三個(gè)部分,,分別是MatchFields(表示匹配的流信息元組),、Counters(是一個(gè)數(shù)據(jù)包字節(jié)統(tǒng)計(jì))、Instructions(表示針對(duì)這個(gè)流的處理方式),。每個(gè)流表項(xiàng)包括了一組Instructions,它們?cè)诋?dāng)數(shù)據(jù)流匹配到這個(gè)表項(xiàng)時(shí)被執(zhí)行,。在Instructions中定義了一系列Action行為,如Apply-Actions>Clear-Actions>Write-Actions等,。這些行為中可根據(jù)ActionSet的內(nèi)容具體執(zhí)行,。ActionSet中有幾個(gè)“必須”Action,分別是Output,、Drop和Group,。
2采用隧道技術(shù)改進(jìn)的OpenFlow網(wǎng)絡(luò)安全設(shè)計(jì)
如果實(shí)現(xiàn)網(wǎng)絡(luò)安全設(shè)計(jì),需要Controller進(jìn)行逐包檢測(cè)而不是按流轉(zhuǎn)發(fā)(如上所述),,因?yàn)榘戳鬓D(zhuǎn)發(fā)只能完成最簡(jiǎn)單的包過(guò)濾防火墻的功能,。為了結(jié)合目前最新的網(wǎng)絡(luò)安全技術(shù),如深度包/流檢測(cè),,以達(dá)到對(duì)網(wǎng)絡(luò)更細(xì)粒度的保護(hù),,需要改變按流轉(zhuǎn)發(fā)的策略為按包檢測(cè)。這樣做在OpenFlow技術(shù)實(shí)現(xiàn)上是可行的,,但按包檢測(cè)進(jìn)行轉(zhuǎn)發(fā)會(huì)使網(wǎng)絡(luò)傳輸速率下降,,使得網(wǎng)絡(luò)規(guī)模不會(huì)很大,。
本解決方案是將流轉(zhuǎn)發(fā)至一個(gè)線(xiàn)速的包處理器NetFPGA進(jìn)行網(wǎng)絡(luò)安全分析,以便在進(jìn)行網(wǎng)絡(luò)安全檢查的同時(shí)提高轉(zhuǎn)發(fā)速率,,圖3所示是基于OpenFlow技術(shù)的網(wǎng)絡(luò)安全設(shè)計(jì)圖,。如果發(fā)起從PC1到PC2的訪(fǎng)問(wèn),其過(guò)程又需要網(wǎng)絡(luò)安全的保證,,那么流量首先經(jīng)過(guò)交換機(jī),,然后控制器更新交換機(jī)的流表,于是流量就從交換機(jī)通過(guò)隧道技術(shù)轉(zhuǎn)發(fā)給了NetFPGA,由它來(lái)為轉(zhuǎn)發(fā)的流進(jìn)行安全性檢測(cè),。如果通過(guò),,則將流解隧道封裝轉(zhuǎn)發(fā)到目的地PC2;不通過(guò)則丟棄,。采用隧道技術(shù)進(jìn)行傳輸?shù)膬?yōu)勢(shì)有三點(diǎn):首先,,隧道封裝后不會(huì)丟失原始流的信息,以防直接改寫(xiě)流表造成原始流目的地址丟失,;其次,,隧道封裝后形成新流,不會(huì)使新流和原始流(剛進(jìn)入系統(tǒng)且未經(jīng)檢查的流)混淆,;最后,,隧道封裝后有利于與傳統(tǒng)設(shè)備(非OpenFlow設(shè)備)的兼容,以便實(shí)現(xiàn)第3部分將要提出的增強(qiáng)型網(wǎng)絡(luò)安全設(shè)計(jì)架構(gòu),。至于NetFPGA的實(shí)現(xiàn),,則會(huì)有多種多樣,可以將現(xiàn)有網(wǎng)絡(luò)安全設(shè)備的研究成果用在這里,。采用了基于OpenFlow技術(shù)的網(wǎng)絡(luò)安全設(shè)計(jì)使得網(wǎng)絡(luò)中的每個(gè)轉(zhuǎn)發(fā)設(shè)備都具備安全性功能,,因?yàn)樗鼈冊(cè)谵D(zhuǎn)發(fā)時(shí)要考慮控制器和NetFPGA的轉(zhuǎn)發(fā)策略,而這些策略是通過(guò)網(wǎng)絡(luò)安全技術(shù)人員精心設(shè)置的,。例如,,為了實(shí)現(xiàn)基于OpenFlow技術(shù)的網(wǎng)絡(luò)安全設(shè)計(jì),應(yīng)對(duì)原始OpenFlow技術(shù)進(jìn)行擴(kuò)充,。以下是筆者提出的具體改進(jìn)方案:
圖3 基于OpenFlow技術(shù)的網(wǎng)絡(luò)安全設(shè)計(jì)
首先是在流表的Instruction的ActionSet中增加check行為和tunnel_encap行為,。給check行為定義三個(gè)值,分別是00(未進(jìn)行安全檢查),、11(安全檢查完畢,,確保安全)、10(安全檢查完畢,,不安全),;同時(shí)也給tunnel_encap定義三個(gè)值,分別是00(不需要隧道封裝)、11(需要隧道封裝),、10(解封裝),。
其次,在OpenFlow交換機(jī)上實(shí)現(xiàn)數(shù)據(jù)隧道功能和流緩存時(shí)間統(tǒng)計(jì)功能,,并且在Controller上實(shí)現(xiàn)暫存,、修改流狀態(tài)功能。當(dāng)PC1將流量發(fā)至PC2并經(jīng)過(guò)交換機(jī)時(shí),,由交換機(jī)將流轉(zhuǎn)發(fā)給Controller,Controller查看到傳輸?shù)哪康牡厥荘C2,則Controller將check字段設(shè)成00(未進(jìn)行安全檢查),tunnel_encap字段設(shè)成11(需要隧道封裝),,傳給交換機(jī)并將這個(gè)流的信息暫存,。然后,交換機(jī)將PC1傳過(guò)來(lái)的流量封裝到一個(gè)IP隧道中,,這個(gè)隧道的內(nèi)層就是PC1到PC2的IP傳輸路徑,,外層就是PC1到NetFPGA的IP傳輸路徑,并標(biāo)記為新流,。再次發(fā)送新流請(qǐng)求給Controller(這時(shí)目的地是NetFPGA),,讓其找出從交換機(jī)到NetFPGA的下一跳輸出端口(這時(shí)check值為00,tunnel_encap為00)。當(dāng)交換機(jī)收到這個(gè)策略時(shí),,將其路徑寫(xiě)入流表,,按外層數(shù)據(jù)包匹配的流表項(xiàng)(PC1到NetFPGA)進(jìn)行轉(zhuǎn)發(fā)。交換機(jī)上的流表項(xiàng)應(yīng)設(shè)置緩存時(shí)間,,因?yàn)樯洗螜z查過(guò)的流沒(méi)有安全問(wèn)題并不代表下一時(shí)刻流中的數(shù)據(jù)也是安全的,,所以需要設(shè)置超時(shí)閾值以便于重新檢查。
其他交換機(jī)在轉(zhuǎn)發(fā)詢(xún)問(wèn)到NetFPGA的路徑時(shí)不需要封裝,,因?yàn)镃ontroller中暫存的記錄tunnel_encap為00,。當(dāng)NetFPGA收到隧道包后,它將進(jìn)行流內(nèi)容的安全檢查,,并通知更新交換機(jī)流表將check值設(shè)為11(安全檢查完畢,,確保安全)或?yàn)?0(安全檢查完畢,不安全),,將tunnel_encp值設(shè)為10(解封裝),。同時(shí),修改Controller中暫存的原始流記錄值的check為11,、tunnel_encap為10,。
接收到check為11、tunnel_encap為10的交換機(jī)將這個(gè)流的外層隧道剝離,,并再次發(fā)送內(nèi)層轉(zhuǎn)發(fā)請(qǐng)求給Controller以尋找到PC2的下一跳路徑,。由于Controller中針對(duì)該流的暫存標(biāo)記已修改為check為11、tunnel_encap為10,所以不再封裝與檢查。收到結(jié)果后,,則按照內(nèi)層路徑進(jìn)行轉(zhuǎn)發(fā),。這樣,數(shù)據(jù)包就從PC1傳輸?shù)搅薖C2,。當(dāng)交換機(jī)收到check為10的流時(shí),,丟棄數(shù)據(jù)包。
在基于OpenFlow技術(shù)的網(wǎng)絡(luò)安全設(shè)計(jì)中,,可以設(shè)置多個(gè)Controller和NetFPGA,。它們分別實(shí)現(xiàn)不同的策略,以保證網(wǎng)絡(luò)安全策略的縱深化,、層次化,。對(duì)于重點(diǎn)保護(hù)區(qū)域,設(shè)置高級(jí)別的安全策略,,安全性相對(duì)較低的區(qū)域采用低級(jí)別的朿略,。
3基于OpenFlow技術(shù)的增強(qiáng)型網(wǎng)絡(luò)安全設(shè)計(jì)
OpenFlow技術(shù)使網(wǎng)絡(luò)的部署更加靈活,使用這項(xiàng)技術(shù)的網(wǎng)絡(luò)安全部署也就能夠突顯出它的優(yōu)勢(shì),。
首先,,網(wǎng)絡(luò)保護(hù)全面。網(wǎng)絡(luò)中的每個(gè)轉(zhuǎn)發(fā)設(shè)備都是防火墻/IPS/UTM,,因?yàn)樗鼈兌及凑誄ontroller和NetFPGA的策略轉(zhuǎn)發(fā),。以前,網(wǎng)絡(luò)安全設(shè)備(如防火墻等)都僅部署在兩個(gè)安全級(jí)別不同的網(wǎng)絡(luò)邊界,,但對(duì)同一個(gè)安全級(jí)別內(nèi)部的攻擊卻束手無(wú)策,。采用了OpenFlow技術(shù)的網(wǎng)絡(luò)安全設(shè)計(jì)使得全網(wǎng)就會(huì)有一個(gè)全局的安全策略,不會(huì)出現(xiàn)‘僅防一點(diǎn)“的尷尬局面,。所以,,它的保護(hù)具有全面性。
其次,,網(wǎng)絡(luò)保護(hù)具有均衡性,。不會(huì)出現(xiàn)”木桶效應(yīng)“,因?yàn)镃ontroller和NetFPGA的策略是一致的,,必要時(shí)可進(jìn)行分等級(jí)的安全性部署,。眾所周知,一個(gè)好的網(wǎng)絡(luò)安全設(shè)計(jì)是不應(yīng)該出現(xiàn)明顯弱點(diǎn)的,。采用了OpenFlow技術(shù)的網(wǎng)絡(luò)安全性設(shè)計(jì)使得網(wǎng)絡(luò)中沒(méi)有明顯的弱點(diǎn),。為了防止網(wǎng)絡(luò)被黑客攻破,可以采用分等級(jí)保護(hù)的策略,。在網(wǎng)絡(luò)設(shè)計(jì)時(shí),,將網(wǎng)絡(luò)按安全性劃分出若干個(gè)邏輯等級(jí),在每一個(gè)邏輯等級(jí)上實(shí)施不同的轉(zhuǎn)發(fā)策略,并且在同一個(gè)安全級(jí)別的邏輯網(wǎng)絡(luò)內(nèi)還可按不同應(yīng)用進(jìn)行策略配置,。這樣,,使得網(wǎng)絡(luò)的安全性策略有層次、有條理,,不至于出現(xiàn)一點(diǎn)被攻破就全盤(pán)皆輸?shù)那闆r,。所以,它的保護(hù)具有均衡性,。
再次,,網(wǎng)絡(luò)保護(hù)易于升級(jí)、維護(hù),,并且具有高可用性,。Controller(或NetFPGA)內(nèi)部的轉(zhuǎn)發(fā)策略易升級(jí),以應(yīng)對(duì)新型網(wǎng)絡(luò)攻擊,。由于采用了集中式的網(wǎng)絡(luò)安全保護(hù),即安全策略是高度集中的,,因此,,升級(jí)病毒、攻擊特征庫(kù)僅需在中心控制設(shè)備上進(jìn)行,。由于OpenFlow網(wǎng)絡(luò)的特性,,升級(jí)后的網(wǎng)絡(luò)設(shè)備全部具有最新更新補(bǔ)丁。另外,,可把中心Controller(或NetFPGA)采用雙機(jī)熱備策略,。備用中心節(jié)點(diǎn)通過(guò)”心跳“信號(hào)來(lái)檢測(cè)主中心節(jié)點(diǎn)是否還”活著“,如果主節(jié)點(diǎn)出現(xiàn)問(wèn)題,,備用節(jié)點(diǎn)馬上接管起主節(jié)點(diǎn)的任務(wù),。所以,OpenFlow的網(wǎng)絡(luò)安全設(shè)計(jì)具有易升級(jí),、易維護(hù)和高可用的特性,。
在這里,我們看到了基于OpenFlow技術(shù)的網(wǎng)絡(luò)安全設(shè)計(jì)的優(yōu)勢(shì),。這種架構(gòu)是一個(gè)全新的思路,。如果再把傳統(tǒng)的網(wǎng)絡(luò)安全保護(hù)方式與這種全新的方式結(jié)合起來(lái),那么這個(gè)系統(tǒng)就顯得更加完善,。我們稱(chēng)滿(mǎn)足上述優(yōu)勢(shì)并與傳統(tǒng)方式相結(jié)合的OpenFlow設(shè)計(jì)為增強(qiáng)型設(shè)計(jì),。它可在不破壞OpenFlow技術(shù)架構(gòu)的同時(shí),再在網(wǎng)絡(luò)的關(guān)鍵點(diǎn)上設(shè)置一些諸如IPS,、防火墻等設(shè)備,,這會(huì)使得兩種保護(hù)方式相得益彰。傳統(tǒng)設(shè)備按IP地址轉(zhuǎn)發(fā),這也是在本文第2部分中提到使用隧道技術(shù)的原因之一,。在關(guān)鍵服務(wù)器的前端設(shè)置一個(gè)IPS,在網(wǎng)絡(luò)邊界設(shè)置防火墻,,都是不錯(cuò)的選擇。OpenFlow技術(shù)在信道傳輸?shù)膶用嫔媳Wo(hù)了網(wǎng)絡(luò)安全,,IPS在應(yīng)用層面上過(guò)濾安全威脅,,防火墻在兩個(gè)可信度不同的域之間建立起安全橋梁。隨著傳統(tǒng)網(wǎng)絡(luò)安全設(shè)備的不斷更新?lián)Q代,,其保護(hù)的功能也越來(lái)越強(qiáng),。在這種環(huán)境下部署OpenFlow與傳統(tǒng)設(shè)備的結(jié)合,會(huì)使網(wǎng)絡(luò)更加安全,、可靠,。
4OpenFlow技術(shù)在未來(lái)網(wǎng)絡(luò)安全中的應(yīng)用展望
在不久的將來(lái),網(wǎng)絡(luò)將向著更快,、更安全,、更豐富和更人性化發(fā)展。目前出現(xiàn)的云計(jì)算技術(shù)代表了網(wǎng)絡(luò)的先進(jìn)發(fā)展方向,,用戶(hù)可以像使用水,、電及煤氣那樣方便地使用云計(jì)算的服務(wù)。然而,,如何識(shí)別合法用戶(hù)在其中顯得格外重要,。目前,還在被IETF討論的LISP協(xié)議(Locator/IDSeparationProtocol)可以將位置與身份分離,,這樣,,單一IP地址不再擔(dān)當(dāng)網(wǎng)絡(luò)尋址與身份的雙重任務(wù)。LISP使用戶(hù)在位置改變時(shí),,身份標(biāo)識(shí)保持不變,。文獻(xiàn)中闡述了如何使用身份標(biāo)識(shí)EID和位置標(biāo)識(shí)RLOC。LISP將身份標(biāo)識(shí)賦予每個(gè)流,,這迎合了OpenFlow的流控制技術(shù),,所以,LISP與OpenFlow技術(shù)可以完美結(jié)合,。文獻(xiàn)[8]將OpenFlow技術(shù)引入云計(jì)算服務(wù),。在云計(jì)算數(shù)據(jù)中心,基礎(chǔ)服務(wù)層的設(shè)備將被替換成OpenFlow設(shè)備實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā),,同時(shí)利用OpenFlow控制器根據(jù)用戶(hù)數(shù)據(jù)流中的EID進(jìn)行轉(zhuǎn)發(fā)決策來(lái)提供安全,、合法的云服務(wù),圖4所示是OpenFlow的云計(jì)算應(yīng)用方案,。同時(shí),,應(yīng)根據(jù)用戶(hù)的EID信息通過(guò)OpenFlow技術(shù)將不同組別的用戶(hù)劃分到不同的VLAN中,,以便在網(wǎng)絡(luò)上對(duì)云計(jì)算虛擬化應(yīng)用提供用戶(hù)隔離,從而保證安全性,。
圖4 OpenFlow的云計(jì)算應(yīng)用
5結(jié)語(yǔ)
OpenFlow技術(shù)有著廣博的發(fā)展空間,,它能應(yīng)用于路由、QoS,、安全等各個(gè)方面,。它改變了網(wǎng)絡(luò)的轉(zhuǎn)發(fā)方式,是個(gè)全新而大膽的解決方案,。通過(guò)本文的分析,,我們看到基于OpenFlow技術(shù)的網(wǎng)絡(luò)安全設(shè)計(jì)的優(yōu)勢(shì),它與傳統(tǒng)方式構(gòu)成的增強(qiáng)型設(shè)計(jì)方案使得網(wǎng)絡(luò)安全問(wèn)題得到了很好的解決,。最后,,云計(jì)算的發(fā)展也為OpenFlow技術(shù)提供了施展的舞臺(tái)。