梁瓊瑤,秦 華,劉文懋
1(北京工業(yè)大學(xué) 信息學(xué)部,北京 100124)
2(北京神州綠盟信息安全科技股份有限公司,北京 100089)
傳統(tǒng)網(wǎng)絡(luò)中部署安全設(shè)備往往受限于網(wǎng)絡(luò)物理拓?fù)涞木o耦合性,且部署后的安全設(shè)備功能相對(duì)固定,不易擴(kuò)容.當(dāng)前特別是在云計(jì)算環(huán)境下,面對(duì)快速、多變、持續(xù)性的安全威脅,亟需具有快速、按需而變能力的安全防護(hù)方案.2012年Gartner機(jī)構(gòu)提出軟件定義安全[1](Software Defined Security,SDS),通過分離安全控制平面和數(shù)據(jù)平面,將網(wǎng)絡(luò)安全設(shè)備與其接入模式、部署方式進(jìn)行解耦,底層通過網(wǎng)絡(luò)功能虛擬化(Network Function Virtualization,NFV)將安全設(shè)備虛擬化形成安全資源池,頂層通過軟件定義的方式進(jìn)行自動(dòng)化管理,實(shí)現(xiàn)新業(yè)務(wù)安全需求的快速開發(fā)和部署.
基于SDS構(gòu)建的安全服務(wù)功能鏈可動(dòng)態(tài)、靈活的提供各種安全服務(wù).IETF SFC工作組的草案[2,3]中對(duì)服務(wù)功能鏈的定義、架構(gòu)、使用場景、路由轉(zhuǎn)發(fā)、協(xié)議及報(bào)文格式等進(jìn)行了詳細(xì)闡述.文獻(xiàn)[4,5]主要描述了在NFV架構(gòu)下對(duì)服務(wù)功能鏈資源調(diào)度工作,充分考慮了對(duì)網(wǎng)絡(luò)資源的優(yōu)化利用,但未提及如何構(gòu)建服務(wù)功能鏈.文獻(xiàn)[6]提出了基于SDN/NFV的安全服務(wù)鏈架構(gòu),描述了SDN,NFV與安全服務(wù)鏈的關(guān)系,并通過組合虛擬安全應(yīng)用模塊來構(gòu)建安全服務(wù)鏈,但未具體描述安全服務(wù)鏈的實(shí)現(xiàn)以及安全資源調(diào)度的問題.
綜上,本文基于SDS的服務(wù)功能鏈框架,研究在虛擬網(wǎng)絡(luò)環(huán)境中動(dòng)態(tài)編排部署安全服務(wù)功能鏈,主要討論了安全服務(wù)功能鏈的構(gòu)建、虛擬安全設(shè)備的調(diào)度以及流量調(diào)度方面的問題,實(shí)現(xiàn)按需而變的安全防護(hù)機(jī)制.
SDS架構(gòu)可分為四個(gè)部分:安全應(yīng)用接口,實(shí)現(xiàn)安全功能的安全資源池,軟件定義的安全控制器和軟件定義的SDN控制器,如圖1所示.
圖1 SDS架構(gòu)
安全應(yīng)用接口:位于架構(gòu)的頂層,向安全控制器推送用戶定義的安全需求;
安全資源池:由傳統(tǒng)的物理安全防護(hù)組件、虛擬化安全防護(hù)組件組成,通過安全能力抽象和資源池化,將安全設(shè)備抽象為具有安全能力的資源池,提供基礎(chǔ)的安全防護(hù)能力;
安全控制器:安全控制器北向與安全應(yīng)用進(jìn)行數(shù)據(jù)和安全需求的交互;南向提供對(duì)基礎(chǔ)安全防護(hù)組件的注冊(cè)、調(diào)度的管理;西向與SDN控制器對(duì)接,生成需要的邏輯拓?fù)?、?shù)據(jù)流的調(diào)度指令;
SDN控制器:維護(hù)全網(wǎng)視圖,監(jiān)控全網(wǎng)拓?fù)?根據(jù)安全控制器傳遞的流指令實(shí)現(xiàn)網(wǎng)絡(luò)流量重定向的功能.
將安全設(shè)備部署到云計(jì)算環(huán)境中形成集中管理的安全資源池,需要使用NFV虛擬化技術(shù)實(shí)現(xiàn)安全設(shè)備虛擬化,以便根據(jù)需求動(dòng)態(tài)靈活的部署.
2.2.1 基于NFV的安全架構(gòu)
基于NFV[7]的安全架構(gòu),如圖2所示,底層的虛擬安全設(shè)備SFVI抽象為安全資源池里的資源,SFV通過軟件編程的方式進(jìn)行智能化、自動(dòng)化的業(yè)務(wù)編排和管理,為VSF提供各種安全能力,以完成相應(yīng)的安全功能,從而實(shí)現(xiàn)一種靈活的安全防護(hù).當(dāng)用戶申請(qǐng)某種安全能力時(shí),通過統(tǒng)一的資源調(diào)度算法選擇合適的節(jié)點(diǎn),在該節(jié)點(diǎn)上完成相應(yīng)的業(yè)務(wù).
圖2 基于NFV的安全架構(gòu)
2.2.2 基于NFV的安全資源調(diào)度
為了充分利用安全資源池中宿主機(jī)的資源,改善負(fù)載平衡,在啟動(dòng)虛擬安全設(shè)備時(shí)綜合考慮三種資源指標(biāo)(內(nèi)存、CPU和磁盤空間)調(diào)度算法.
調(diào)度工作分為兩個(gè)階段:
(1)過濾階段:比較宿主機(jī)節(jié)點(diǎn)每個(gè)資源指標(biāo)(空閑內(nèi)存、空閑CPU、空閑磁盤空間)是否大于所啟動(dòng)虛擬安全設(shè)備占用的資源空間,若其中一個(gè)指標(biāo)不符合,則將該宿主機(jī)節(jié)點(diǎn)過濾掉.
(2)計(jì)算階段:計(jì)算剩余宿主機(jī)資源指標(biāo)歸一化效用值.
1)MEMmax表示剩余宿主機(jī)中最大空閑內(nèi)存值,MEMmin表示剩余宿主機(jī)中最小空閑內(nèi)存值,空閑內(nèi)存為X的宿主機(jī)其內(nèi)存的歸一化效用值Um的計(jì)算如公式(1)所示.
2)CPUmax表示剩余宿主機(jī)中最大空閑CPU數(shù),CPUmin表示剩余宿主機(jī)中最小空閑CPU數(shù),空閑CPU數(shù)為Y的宿主機(jī)其CPU的歸一化效用值Uc的計(jì)算如公式(2)所示.
3)DISKmax表示剩余宿主機(jī)中最大空閑磁盤空間值,DISKmin表示剩余宿主機(jī)中最小空閑磁盤空間值,空閑磁盤空間為Z的宿主機(jī)其磁盤空間的歸一化效用值Ud的計(jì)算如公式(3)所示.
4)綜合三項(xiàng)資源指標(biāo)的效用值,該宿主機(jī)節(jié)點(diǎn)的綜合效用值U的計(jì)算如公式(4)所示.
其中,W1、W2和W3分別代表三種資源指標(biāo)(內(nèi)存、CPU、磁盤空間)對(duì)應(yīng)的權(quán)重值且W1+W2+W3=1,U值最大的節(jié)點(diǎn)即為要選擇的最優(yōu)調(diào)度節(jié)點(diǎn).
2.3.1 術(shù)語定義
服務(wù)功能術(shù)語定義如下:
安全服務(wù)功能(Security Service Function,SSF):安全服務(wù)功能負(fù)責(zé)對(duì)收到的報(bào)文進(jìn)行具體處理,如防火墻、IDS、IPS等安全設(shè)備.
分類器(Classifier):根據(jù)不同的用戶安全需求,對(duì)不同的流量進(jìn)行分類.分類后的流量會(huì)經(jīng)過不同的SSF.
服務(wù)功能轉(zhuǎn)發(fā)器(Service Function Forwarder,SFF):根據(jù)報(bào)文攜帶的安全服務(wù)功能鏈封裝信息將流量轉(zhuǎn)發(fā)至SSF上,同時(shí)處理從SSF回傳的流量.可以把SFF理解為一個(gè)OpenvSwitch虛擬交換機(jī).
安全服務(wù)功能鏈(Security Service Function Chain,SSFC):一條SSFC定義了一個(gè)有序的虛擬安全功能(VSF)集合,網(wǎng)絡(luò)流量需按既定順序通過這些VSF.
安全服務(wù)功能路徑(Security Service Function Path,SSFP):介于SSFC和SFF之間,給出了每個(gè)SSF對(duì)應(yīng)的SFF.
2.3.2 SSFC架構(gòu)
SSFC的實(shí)現(xiàn)包含如下幾個(gè)組件[8],如圖3所示.
邏輯層面上根據(jù)用戶安全需求,生成安全服務(wù)功能鏈,SDN控制器為該安全服務(wù)功能鏈選擇經(jīng)過的SSF實(shí)例,實(shí)現(xiàn)邏輯SSFC到物理轉(zhuǎn)發(fā)路徑的映射;
物理層面上包含Classifier、SFF和SSF組件.Classifier對(duì)用戶流量進(jìn)行分類,確定對(duì)應(yīng)邏輯的服務(wù)功能鏈;SFF將封裝有對(duì)應(yīng)邏輯服務(wù)功能鏈的數(shù)據(jù)報(bào)文進(jìn)行逐跳轉(zhuǎn)發(fā);SSF即虛擬安全設(shè)備,用于處理收到的數(shù)據(jù)報(bào)文.
服務(wù)功能鏈實(shí)現(xiàn)流程如圖3所示,包括以下步驟:(1/2)根據(jù)用戶安全需求,生成安全服務(wù)功能鏈,并將信息發(fā)送給SDN控制器;
(3)控制器根據(jù)安全服務(wù)功能鏈生成安全服務(wù)功能路徑SSFP并將相關(guān)的流表信息下發(fā)給Classifier、SFF;
(4)用戶數(shù)據(jù)報(bào)文進(jìn)入Classifier,Classifier根據(jù)3下發(fā)的規(guī)則對(duì)流進(jìn)行分類,匹配相應(yīng)的SSFP;
(5/6)與SSFP相匹配的數(shù)據(jù)報(bào)文發(fā)送到SFF,SFF根據(jù)SSFP將流量發(fā)送到SSF1,SSF1將處理后的報(bào)文返回SFF;
(7/8)同步驟5、6;
(9)根據(jù)SSFP,報(bào)文已完成SSFC的轉(zhuǎn)發(fā)路徑,將報(bào)文發(fā)送到傳統(tǒng)網(wǎng)絡(luò)中.
圖3 SFC架構(gòu)
2.3.3 SSFC邏輯表示
SSFC是一組有序的VSF集合,用戶流量按照制定的策略依次通過多個(gè)SSF.如圖4所給出的安全服務(wù)功能鏈SSFC 1、SSFC 2、SSFC 3為例,所提供的SSF依次為:
圖4 S S F C邏輯表示圖
2.3.4 SSFC物理實(shí)現(xiàn)
SSFC架構(gòu)中各種組件完成SSFC報(bào)文轉(zhuǎn)發(fā)的實(shí)現(xiàn)依據(jù)是IETF定義的SSFC數(shù)據(jù)傳輸協(xié)議Network Service Header(NSH),NSH專門用于創(chuàng)建動(dòng)態(tài)服務(wù)功能鏈,NSH報(bào)文格式如下:
圖5 NSH報(bào)文格式
Service Path Identifier(SPI)和Service Index(SI)為兩個(gè)重要字段.
SPI:標(biāo)識(shí)服務(wù)路徑,參與節(jié)點(diǎn)必須使用此標(biāo)識(shí)符進(jìn)行服務(wù)功能路徑選擇.
1.2.2 RACE實(shí)驗(yàn) 5'-Full RACE:根據(jù)從cDNA文庫中已得到的MLAA-22基因(AY288965)的cDNA序列,使用引物設(shè)計(jì)專用軟件分別設(shè)計(jì)其下游特異性引物GSP2(外側(cè)引物):5'-ACTGAGCTTTGGCAGCCGATACAAT-3',以及下游特異性引物GSP3(內(nèi)側(cè)引物): 5'-CTCAATAAGGCAGTTTCGGTGGTAT-3';此引物由Takara公司合成。按廠家提供的試劑盒說明書進(jìn)行MLAA-22基因的5'-Full RACE實(shí)驗(yàn),以擴(kuò)增其cDNA的5'端未知序列。
SI:提供SSFP的位置,給定SSFP的初始分類器應(yīng)該將SI設(shè)置為255,但是控制平面可以適當(dāng)?shù)嘏渲肧I的初始值(即考慮服務(wù)功能路徑的長度).在執(zhí)行所需服務(wù)后,NSH數(shù)據(jù)包中的SI值自減1.
SI與SPI一起用于確定一條服務(wù)功能鏈,并用于確定路徑中的下一個(gè)SFF/ SSF.圖4中SSFC1、SSFC2的表示如表1所示.
表1 SSFC1、SSFC2表示
邏輯層面SSFC到物理層面轉(zhuǎn)發(fā)路徑的映射表示:
(1)SSFC={SSF1,SSF2,…,SSFn}.表示一條SSFC由多個(gè)SSF組成有順序的安全服務(wù)功能鏈;
(2)Classifier={DPID,SPI,SI,PORT}.DPID表示OVS的標(biāo)識(shí)符,SPI表示鏈的標(biāo)識(shí)符,SI為初始值,PORT表示數(shù)據(jù)包封裝上NSH協(xié)議后從這個(gè)OVS端口出去;
(3)SFF={DPID,SPI,SI,PORT,SSF}.DPID表示OVS的標(biāo)識(shí)符,SPI、SI為數(shù)據(jù)報(bào)文的匹配項(xiàng),PORT表示連接SSF的OVS端口;
(4)SSF={TYPE,SFF}.TYPE表示虛擬安全設(shè)備的類型,如WAF、ADS等;SFF表示虛擬安全設(shè)備所映射的服務(wù)功能轉(zhuǎn)發(fā)器,通常指OVS橋.
流表下發(fā)是由SDN控制器控制,安全控制器將解析的SSFC流指令傳遞到SDN控制器,SDN控制器獲取拓?fù)洳⒔Y(jié)合安全控制器的流指令,通過下發(fā)流表的方式,實(shí)現(xiàn)流量重定向操作,使分類后的流量依次經(jīng)過相應(yīng)的SSFs再到目標(biāo)網(wǎng)絡(luò).本文的流表規(guī)則是通過OpenFlow[9]多級(jí)流表的方式實(shí)現(xiàn)的.
2.4.1 流表規(guī)則
根據(jù)SSFC架構(gòu),流表下發(fā)在Classifier和SFF上,設(shè)計(jì)如下:
Classifier:數(shù)據(jù)包到達(dá)Classifier,首先與table=0的流表匹配,經(jīng)匹配項(xiàng)(如源IP、目的IP、協(xié)議類型、MAC地址等)匹配后進(jìn)行NSH封裝actions={set_nsp,set_nsi,output},set_nsp表示加載鏈的標(biāo)識(shí)符,set_nsi表示加載虛擬安全設(shè)備的次序,output表示將封裝NSH的數(shù)據(jù)包從OVS的端口出去.
SFF:數(shù)據(jù)包達(dá)到SFF后,首先匹配nsp,再匹配nsi,這里使用到了多級(jí)流表,流程如下:{(table=0,actions=goto_table:1);(table=1,match=nsp,actions=goto_table:4);(table=4,match=(nsp,nsi),actions=goto_table:10);(table=10,match=(nsp,nsi),actions=output)},不同級(jí)別的流表有不同的作用:
Table0:將數(shù)據(jù)包分類并進(jìn)行NSH封裝;
Table1:識(shí)別數(shù)據(jù)包經(jīng)過哪條服務(wù)功能鏈;
Table4:數(shù)據(jù)包的下一跳,即下一跳要經(jīng)過的虛擬安全設(shè)備;
Table10:數(shù)據(jù)包的出口.
以圖6中SSFC1為例,構(gòu)建如下圖所示拓?fù)?圖中最頂端的計(jì)算機(jī)中啟動(dòng)SDN控制器(ODL)和安全控制器,Classifier、SFF1、SFF2中為OpenvSwitch交換機(jī),VSD1、VSD2為虛擬安全設(shè)備.H1與H2通信,要求通信過程中依次經(jīng)過虛擬安全設(shè)備VSD1、VSD2.
圖6 實(shí)驗(yàn)拓?fù)鋱D
用戶配置所需的安全服務(wù)功能鏈即依次經(jīng)過VSD1(firewall)、VSD2(ips),如圖7所示.安全控制器根據(jù)用戶配置在安全資源池中啟動(dòng)相應(yīng)的虛擬安全設(shè)備,VSD1的啟動(dòng)如圖8所示.
圖7 SSFC前端顯示
圖8 VSD1(firewall)啟動(dòng)圖
3.2.1 流表數(shù)據(jù)
安全控制器將SSFC的流指令發(fā)送給ODL控制器,ODL生成相應(yīng)的流表下發(fā)給Classifier、SFF.H1到H2的數(shù)據(jù)流流向按圖6中的①~⑥各步驟所示,實(shí)驗(yàn)數(shù)據(jù)如下:
① H1的數(shù)據(jù)包到達(dá)Classifier,數(shù)據(jù)包封裝上NSH,從2端口出.流表如下:
② 數(shù)據(jù)流達(dá)到SFF1并匹配以下流表,nsp=44,nsi=255,目的地址=192.168.1.30,從1端口出.
③ VSD1對(duì)數(shù)據(jù)包進(jìn)行處理,nsp=44,nsi=254,再將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到SFF1
④ 數(shù)據(jù)報(bào)文匹配以下流表,nsp=44,nsi=254,從1端口出.
⑤ 數(shù)據(jù)報(bào)文匹配以下流表,nsp=44,nsi=254,目的地址=192.168.1.40,從1端口出.
⑥ VSD2對(duì)數(shù)據(jù)包進(jìn)行處理,nsp=44,nsi=253,再將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到SFF2.
3.2.2 報(bào)文數(shù)據(jù)
SFF1到VSD1:nsp=44,nsi=255,SFF1到SFF2:nsp=44,nsi=254.分別如圖9、圖10所示.
圖9 報(bào)文分析
圖10 報(bào)文分析
通過實(shí)驗(yàn)證明,基于軟件定義安全的服務(wù)功能鏈的設(shè)計(jì)是可行的.在虛擬網(wǎng)絡(luò)環(huán)境中,根據(jù)用戶的安全需求使數(shù)據(jù)流有序的依次經(jīng)過各個(gè)虛擬安全設(shè)備,實(shí)現(xiàn)網(wǎng)絡(luò)流量的動(dòng)態(tài)控制.
本文基于軟件定義安全的服務(wù)功能鏈框架,充分利用NFV虛擬化的特性,實(shí)現(xiàn)了根據(jù)用戶安全需求動(dòng)態(tài)編排部署安全功能服務(wù)鏈,并通過實(shí)驗(yàn)證明了基于軟件定義安全的服務(wù)功能鏈可以實(shí)現(xiàn)按需而變的安全防護(hù).本文研究的服務(wù)功能鏈?zhǔn)窃趩我坏腟DN控制器基礎(chǔ)上,然而實(shí)際網(wǎng)絡(luò)應(yīng)用中,單一的SDN控制器對(duì)全網(wǎng)進(jìn)行監(jiān)管理負(fù)載過重,下一步在分布式控制器的基礎(chǔ)上研究服務(wù)功能鏈.