郭云川,李凌,2,李勇俊,2,成林,杜君,張玲翠
(1.中國科學(xué)院信息工程研究所,北京 100093;2.中國科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,北京 100049;3.中國信息安全測評中心,北京 100085;4.北京網(wǎng)御星云信息技術(shù)有限公司,北京 100085)
目前,網(wǎng)絡(luò)威脅呈現(xiàn)多樣化、復(fù)雜化和頻繁化的特征。為保證網(wǎng)絡(luò)與系統(tǒng)的安全,需要部署異構(gòu)安全設(shè)備,配置有效安全策略,以確保及時(shí)處理網(wǎng)絡(luò)威脅、保障網(wǎng)絡(luò)穩(wěn)定運(yùn)行。
安全設(shè)備的策略具有明顯的個(gè)性化特征,即對于相同語義的配置命令,不同安全設(shè)備的配置命令不同。為異構(gòu)設(shè)備進(jìn)行統(tǒng)一配置,需要兼容不同安全設(shè)備的配置命令。當(dāng)前普遍采用的策略配置方式是逐一配置,這要求管理員學(xué)習(xí)不同安全設(shè)備的配置命令語法和語義,并通過設(shè)備提供的命令行接口(CLI,command-line interface)等方式逐一配置設(shè)備策略。該方法需要管理員學(xué)習(xí)大量配置語法,工作成本較高,且當(dāng)需要對多臺設(shè)備配置相同的策略時(shí),管理員需要重復(fù)大量相同的操作,效率較低、容易出錯(cuò)。
針對異構(gòu)設(shè)備網(wǎng)絡(luò)環(huán)境下安全設(shè)備配置命令語法各異的特點(diǎn)所帶來的安全策略配置過程煩瑣、容易出錯(cuò)、效率低下的問題,現(xiàn)已有多位學(xué)者從不同角度展開了研究[1]。首先,在異構(gòu)設(shè)備網(wǎng)絡(luò)策略和配置命令描述方面,目前的研究工作主要集中在高級抽象策略描述語言的構(gòu)建上[2-12]。如Damianou等[3]設(shè)計(jì)了聲明性、強(qiáng)類型和面向?qū)ο蟮牟呗悦枋稣Z言Ponder,并在文獻(xiàn)[10]中拓展了Ponder,使其滿足分布式的異構(gòu)環(huán)境的策略描述需求。但是,在本文異構(gòu)設(shè)備網(wǎng)絡(luò)的背景下,這些高級抽象語言并不能高效地從底層對策略進(jìn)行準(zhǔn)確描述。其次,在策略翻譯[13]方法的研究方面,早期工程中主要采用了基于特定設(shè)備的策略翻譯方法,即為每種設(shè)備的配置開發(fā)一種特定的翻譯方法,但該方法通用性差,復(fù)雜度高。作為此方法的改進(jìn),學(xué)者們提出了基于歷史推理[14-16]和基于翻譯規(guī)則的策略翻譯方法[17-19]。其中,文獻(xiàn)[18]提出了一種自動化生成翻譯模板的方法,該方法在滿足特定安全性需求的基礎(chǔ)上,實(shí)現(xiàn)了自動化的翻譯模板派生。但在異構(gòu)設(shè)備網(wǎng)絡(luò)中存在對復(fù)雜策略進(jìn)行高精度翻譯的需求,目前的策略翻譯方法大多僅適用于簡單的訪問控制策略,翻譯過程復(fù)雜,且精度不能滿足本文中設(shè)備異構(gòu)網(wǎng)絡(luò)的需求。最后,在策略配置方面,目前的研究工作主要集中在自動化策略配置方法上[20-23]。其中,文獻(xiàn)[20]在自動化策略配置方法的基礎(chǔ)上,定義了5種配置錯(cuò)誤,同時(shí)基于歸納法和樹結(jié)構(gòu)設(shè)計(jì)了2種錯(cuò)誤檢測算法,實(shí)現(xiàn)了對配置錯(cuò)誤的有效檢測,保證了自動化策略配置的有效執(zhí)行。但在本文的異構(gòu)設(shè)備網(wǎng)絡(luò)的背景下,策略配置過程的可控性較差,準(zhǔn)確度較低,現(xiàn)有方法不能保證策略配置的有效性。
由于以上3個(gè)方面的研究工作無法有效解決本文異構(gòu)設(shè)備網(wǎng)絡(luò)背景下的產(chǎn)生的問題,因此本文設(shè)計(jì)了一種基于動態(tài)模板的策略翻譯及配置方法,主要貢獻(xiàn)如下。
1)為提高配置效率,提出了基于編碼的統(tǒng)一策略描述和翻譯方法,支持異構(gòu)設(shè)備的配置策略的歸一化描述,將歸一化的配置策略向個(gè)性化策略轉(zhuǎn)換。
2)為將個(gè)性化策略有效地配置到設(shè)備上,提出了基于關(guān)鍵詞的策略配置方案,通過對比關(guān)鍵詞,判定下一步配置動作,以控制配置過程,獲取準(zhǔn)確的配置結(jié)果,保障策略配置的有效性。
3)為兼容異構(gòu)安全設(shè)備的策略配置方式,提出了基于動態(tài)模板的策略翻譯及配置方法,通過構(gòu)建動態(tài)模板庫,保障以上方案的可擴(kuò)展性,實(shí)現(xiàn)可擴(kuò)展的策略翻譯及配置。
策略翻譯及配置[1]是將統(tǒng)一描述的策略轉(zhuǎn)化為設(shè)備個(gè)性化的策略并配置到相應(yīng)設(shè)備上的過程,包括策略描述語言(PDL,policy description language)、策略翻譯方法和策略配置方法,其相關(guān)工作討論如下。
異構(gòu)網(wǎng)絡(luò)設(shè)備環(huán)境下,信息異構(gòu)性和自治性等特征導(dǎo)致各類設(shè)備安全策略兼容性低和可擴(kuò)展性低等問題[2]。因此,需要一種具有高兼容性、細(xì)粒度和可擴(kuò)展性的策略描述語言,來統(tǒng)一管理和配置設(shè)備策略。針對上述需求,很多學(xué)者從不同角度對策略描述語言展開了研究。
首先,策略描述語言研究初期的重點(diǎn)主要集中在策略靜態(tài)描述。Damianou等[3]設(shè)計(jì)了Ponder語言,通過采用強(qiáng)類型、聲明性和面向?qū)ο蟮姆椒?,滿足了大規(guī)模策略管理及配置的需求,同時(shí)使Ponder語言保持了良好的靈活性和自適應(yīng)性。為了滿足復(fù)雜計(jì)算機(jī)系統(tǒng)存在的策略表述需求,研究者提出了SANTA語言[4-7],該語言遵循基于規(guī)則的方法,采用積極授權(quán)、消極授權(quán)、沖突裁決3種策略規(guī)則來定義訪問控制策略語言。上述工作主要側(cè)重于靜態(tài)地對安全策略描述,并未考慮如何對系統(tǒng)的行為情況進(jìn)行表示。
針對上述問題,研究者提出了動態(tài)策略描述語言,該類語言的研究重點(diǎn)是對系統(tǒng)行為進(jìn)行建模。Lobo等[8]設(shè)計(jì)了策略描述語言,基于自動機(jī)理論采用“事件?條件?行為”形式將一系列事件映射為特定行為功能函數(shù),從而實(shí)現(xiàn)對策略的精確描述。Ribeiro等[9]提出的安全策略語言(SPL,security policy language)是一種事件驅(qū)動(event-driven)的策略語言,其支持基于歷史(history-based)的和基于義務(wù)(obligation-based)的訪問控制策略。SPL采用類形式的定義,可以使用不同的參數(shù)實(shí)例化。
盡管上述策略描述語言能夠簡潔地對策略進(jìn)行準(zhǔn)確描述,但它們并沒有充分考慮對異構(gòu)環(huán)境的兼容程度。針對該問題,Damianou等[10]將Ponder語言進(jìn)行了進(jìn)一步改進(jìn),規(guī)范了Ponder語言在分布式環(huán)境下的主體、目標(biāo)、生命周期以及部署模型等性質(zhì),提高了Ponder語言的在分布式環(huán)境下的兼容性。Abwnawar等[11]則將SANTA語言拓展到了異構(gòu)云環(huán)境的數(shù)據(jù)隱私保護(hù)場景中,實(shí)現(xiàn)了對復(fù)合屬性的支持。代向東等[12]提出了一種簡單策略規(guī)范描述語言,實(shí)現(xiàn)對底層設(shè)備策略的描述。
上述策略描述語言實(shí)現(xiàn)了對異構(gòu)策略的精確描述,但這類策略描述語言大多都存在抽象程度高,且執(zhí)行性和擴(kuò)展性較差的缺點(diǎn),因此無法對異構(gòu)設(shè)備網(wǎng)絡(luò)環(huán)境下底層安全設(shè)備策略進(jìn)行統(tǒng)一描述。
策略翻譯是將統(tǒng)一的策略轉(zhuǎn)換成設(shè)備個(gè)性化策略的過程[13],是兼容異構(gòu)配置方式的核心,包括以下3種方式:基于特定設(shè)備的策略翻譯、基于歷史推理的策略翻譯和基于規(guī)則的策略翻譯。
基于特定設(shè)備的策略翻譯的核心思想是為每一種配置開發(fā)一種翻譯方法。這類方法簡單且翻譯精準(zhǔn),但是無法隨著設(shè)備種類增加進(jìn)行靈活擴(kuò)充,需要針對新設(shè)備進(jìn)行重新開發(fā),通用性和擴(kuò)展性弱。
基于歷史推理的策略翻譯的核心思想主要是借鑒歷史案例進(jìn)行翻譯。Beigi等[14]采用案例推理的方法進(jìn)行策略翻譯,通過將案例存儲于歷史案例庫中,對其進(jìn)行推理翻譯。為了保證此類方法的翻譯效果,需要大量的歷史案例。隨著案例增多,此類方法搜索和推理速度下降。針對這一問題,Han等[15]提出了一種協(xié)同策略管理機(jī)制(CPA,collaborative policy administration)來減小歷史策略的搜索和推理負(fù)擔(dān),通過計(jì)算相似性來獲取相似的歷史策略,提高了策略翻譯速度。Wang等[16]采用大規(guī)模半監(jiān)督學(xué)習(xí)分類歷史數(shù)據(jù),基于分類結(jié)果實(shí)現(xiàn)了安全策略的自動分析及精化,進(jìn)而實(shí)現(xiàn)了策略翻譯。
基于規(guī)則的策略翻譯[9]通過自定義策略描述語言,設(shè)計(jì)了一套基于固定翻譯方法的解析重構(gòu)器,對統(tǒng)一策略進(jìn)行解析、拆分、重構(gòu)、組裝等操作,將統(tǒng)一的策略轉(zhuǎn)換為個(gè)性化策略。Leighton等[17]通過構(gòu)建轉(zhuǎn)換規(guī)則,將統(tǒng)一描述的策略翻譯為新格式的策略,達(dá)到策略翻譯的可擴(kuò)展性。這種方法雖然較傳統(tǒng)的策略翻譯方法更靈活,但需要通過人工添加新的腳本和轉(zhuǎn)換規(guī)則。針對此問題,Rudolph等[18]設(shè)計(jì)了翻譯模板自動生成方法,實(shí)現(xiàn)了滿足特定域的安全性需求的模板派生,并將該類方法應(yīng)用于工業(yè)案例中。Yang等[19]提出了基于自動機(jī)的安全策略翻譯方法,該方法實(shí)現(xiàn)了在用戶只具有有限知識的情況下進(jìn)行策略翻譯。當(dāng)前基于規(guī)則的策略翻譯僅適用于高級訪問控制策略,存在翻譯過程復(fù)雜和翻譯結(jié)果不夠精準(zhǔn)等問題。
陳文惠等[20]定義了5種配置錯(cuò)誤,給出了基于歸納法和樹結(jié)構(gòu)的2種錯(cuò)誤檢測算法。但該方法主要從策略本身邏輯出發(fā),檢測當(dāng)前策略與歷史策略之間沖突導(dǎo)致的配置錯(cuò)誤,并沒有考慮當(dāng)前策略語法語義與設(shè)備需求不符導(dǎo)致配置失敗。Lobo等[21]通過拓展PDL語言,在私有域中實(shí)現(xiàn)了防火墻策略的描述、翻譯和配置。Jillepalli等[22]將其提出的HERMES語言動態(tài)地集成到HiFiPol策略管理系統(tǒng)中,實(shí)現(xiàn)了策略自動配置。李福亮等[23]將對配置結(jié)果的驗(yàn)證作為獨(dú)立模塊,以確保策略自動配置的有效性,但該方案不能調(diào)整不滿足預(yù)期的配置。
本文中的策略是用于描述異構(gòu)設(shè)備網(wǎng)絡(luò)環(huán)境中安全設(shè)備行為規(guī)則的集合。設(shè)備配置命令格式依賴于設(shè)備類型,不同類型設(shè)備具有不同的配置命令格式。本節(jié)提出一種統(tǒng)一的策略描述格式,并將之實(shí)例化為不同模板,以兼容不同類型設(shè)備的配置。
本節(jié)定義基于編碼的統(tǒng)一策略,如式(1)所示。策略C是由Sub、Obj、Type和Param構(gòu)成的四元組,其中,Sub表示策略的生成與發(fā)送者,Obj表示策略的接收與執(zhí)行者,Type表示策略類型(如包過濾、連接關(guān)閉等),Param表示策略參數(shù)。
其中,Sub、Obj、Param可統(tǒng)一用式(2)來描述。
其中,F(xiàn)為策略元素,表示Sub、Obj或Param;N為元素編碼,V為元素值。
如式(3)所示,參數(shù)類型包括3種類型,用n、e、s表示,分別為數(shù)值、枚舉值、字符串值。
如式(4)所示,若參數(shù)值類型為枚舉型,其具體值用符號“|”分隔,表示該值為e1~en中的一個(gè),且需要被符號“[ ]”包括起來。一條策略包括多個(gè)參數(shù)編碼和參數(shù)值組成的鍵值對,參數(shù)編碼與參數(shù)值之間通過符號“:”分隔,鍵值對之間由符號“;”分隔。
策略類型Type的語義定義如式(5)所示。
其中,T=n∪s。
基于上述定義的統(tǒng)一策略格式,歸一化的策略描述格式示例如下。
其中,正體字為元素編碼(即式(2)和式(5)中的N),斜體字為參數(shù)值(即式(2)和式(5)中的V或T)。該策略采用編碼表示策略元素,采用鍵值對的方式表示元素及其對應(yīng)值。
基于該描述方式,可對差異化的命令求并集,得到歸一化策略模板,以此兼容各種設(shè)備,且可定義新的策略或?qū)?shù)進(jìn)行擴(kuò)展,動態(tài)獲得新的模板,以此支持未來的新命令。
策略翻譯是將歸一化成統(tǒng)一格式的策略轉(zhuǎn)換為設(shè)備個(gè)性化策略。為了保障策略翻譯的可擴(kuò)展性和精準(zhǔn)有效性,本文在動態(tài)模板的基礎(chǔ)上通過策略校驗(yàn)和策略映射這2個(gè)步驟,實(shí)現(xiàn)向個(gè)性化策略的翻譯,確保策略翻譯的可擴(kuò)展性。
為使歸一化策略能適配多種類的安全設(shè)備,保障安全設(shè)備的個(gè)性化配置能力,本文采用求并集的方式對所有設(shè)備策略參數(shù)進(jìn)行歸一化編碼。由此導(dǎo)致在配置異構(gòu)設(shè)備時(shí),存在某些設(shè)備無法支持歸一化策略中的部分參數(shù)配置的現(xiàn)象。此外,某些參數(shù)間存在依賴關(guān)系。為此,本文基于統(tǒng)一描述的策略格式,設(shè)計(jì)了基于編碼的策略檢驗(yàn)算法。該算法提取設(shè)備各異的配置需求,構(gòu)建為策略校驗(yàn)?zāi)0?,在策略映射前對策略進(jìn)行校驗(yàn),篩選設(shè)備能識別的參數(shù),并計(jì)算這些參數(shù)能否滿足設(shè)備需求。
圖1給出了2種防火墻的數(shù)據(jù)分組過濾命令組(分別稱這2種防火墻為防火墻A和防火墻B)。從圖1可以看出,這2種防火墻具有如下特征。1)數(shù)據(jù)分組過濾能力差異。如圖1所示,防火墻A可以根據(jù)網(wǎng)絡(luò)數(shù)據(jù)分組協(xié)議、IP地址等參數(shù)進(jìn)行判斷處理,而防火墻B的配置參數(shù)更加豐富,如可以對LSAP等參數(shù)進(jìn)行設(shè)置。2)參數(shù)/命令間存在依賴關(guān)系。如在為防火墻A配置IP數(shù)據(jù)分組過濾之前,必須先通過命令行定義該IP對象,而后引用該對象進(jìn)行配置過濾規(guī)則。3)具有不同的必選和可選參數(shù)。如防火墻A的配置命令中,網(wǎng)絡(luò)二層協(xié)議號是必選項(xiàng),目的MAC地址是可選參數(shù)。
在策略翻譯中若不考慮上述3個(gè)特征,將導(dǎo)致翻譯不準(zhǔn)確,翻譯后的命令組無法識別等問題。針對該問題,本文設(shè)計(jì)了統(tǒng)一策略校驗(yàn)算法,如算法1所示。其核心思想是:首先刪除統(tǒng)一策略中設(shè)備不能識別的參數(shù);然后校驗(yàn)策略中是否包含設(shè)備所必須參數(shù)及其依賴參數(shù),若校驗(yàn)不通過,則校驗(yàn)失?。蛔詈髣h除策略中目標(biāo)設(shè)備的可選參數(shù)及其不完整的依賴參數(shù),形成校驗(yàn)后的統(tǒng)一策略,從而減輕管理員的策略配置難度,防止管理員錯(cuò)誤配置導(dǎo)致的不可控問題。
算法1統(tǒng)一策略校驗(yàn)算法
圖1 策略參數(shù)關(guān)系示例
為了保證策略翻譯的準(zhǔn)確性和可擴(kuò)展性,需依據(jù)設(shè)備配置命令需求,構(gòu)建策略校驗(yàn)?zāi)0?,并動態(tài)添加至策略模板庫中。
雖然不同類型的安全設(shè)備個(gè)性化配置策略存在差異,但均由一條或若干條命令行組成,命令行由命令標(biāo)識符、提示詞和提示符組成。為了保證有效的策略翻譯,本節(jié)定義一種統(tǒng)一的策略翻譯模板,基于個(gè)性化的策略構(gòu)建為策略翻譯模板。
策略翻譯模板由組成該策略的所有命令行的翻譯模板組成,命令行翻譯模板語法如式(6)所示,其中,S表示單條命令行翻譯模板;A為每行命令行的開始標(biāo)志符,如式(7)所示,由符號@或者符號#組成,@表示當(dāng)條命令行為當(dāng)前策略的可選命令行,#表示當(dāng)條命令行為當(dāng)前策略的必選命令行;B為每行命令行的實(shí)際內(nèi)容,如式(8)所示,可以為[KNP]B、KNPB或者?的形式。K表示命令標(biāo)識符,N為參數(shù)編碼,P表示目標(biāo)設(shè)備的參數(shù)格式,如式(9)所示,其中pattern為目標(biāo)設(shè)備能識別的格式信息。KNP組成命令行參數(shù)模板的基本信息,若某參數(shù)不是必選參數(shù),則用[ ]表示。
從個(gè)性化策略向策略翻譯模板的映射思路為,通過統(tǒng)一提示字符串,填充目標(biāo)設(shè)備識別格式模板,構(gòu)建策略翻譯模板。圖2給出了一個(gè)模板構(gòu)建示例,第一條命令行中,命令標(biāo)識符“host add”用于提示設(shè)備該條命令行的功能,因此翻譯模板中保留該命令標(biāo)識符;而用于提示用戶需要填充具體IP地址提示字符串“string2”不需要被設(shè)備識別,基于歸一化策略中的IP參數(shù)的編碼,修改其為對應(yīng)的編碼值,并在其后續(xù)連接“<>”并填充“%d.%d.%d.%d”表示該設(shè)備需要識別點(diǎn)分十進(jìn)制的IP地址格式。
將個(gè)性化的策略命令組重構(gòu)為翻譯模板后,即可指導(dǎo)將統(tǒng)一的策略轉(zhuǎn)換為個(gè)性化的策略。如圖3示例所示,具體過程如下。
1)參數(shù)映射。由于策略歸一化中將參數(shù)進(jìn)行統(tǒng)一的編碼,因此基于編碼解析歸一化策略中每個(gè)參數(shù)編碼,在翻譯模板找到每個(gè)編碼中出現(xiàn)的所有位置,并獲取該位置后緊接著的目標(biāo)格式。
2)格式轉(zhuǎn)換。根據(jù)翻譯模板中參數(shù)后的目標(biāo)格式,對歸一化格式的參數(shù)進(jìn)行轉(zhuǎn)換,形成設(shè)備能識別的參數(shù)格式。如將歸一化IP地址數(shù)值型參數(shù)0x0ca85a10根據(jù)目標(biāo)設(shè)備需要的點(diǎn)分十進(jìn)制正則表達(dá)式翻譯為設(shè)備需要的格式“192.168.90.10”。
圖2 模板構(gòu)建示例
圖3 翻譯過程示例
3)命令生成。根據(jù)步驟1)找到的參數(shù)位置,將步驟2)中轉(zhuǎn)換好的參數(shù)填充入對應(yīng)位置,并且刪除設(shè)備不能識別的字符串和符號,包括自定義的編碼和符號,如#和[ ],最終生成目標(biāo)設(shè)備配置命令組。
通過以上步驟,將歸一化描述的策略進(jìn)行解析、映射、轉(zhuǎn)換、填充,形成目標(biāo)設(shè)備可識別的配置命令,并將歸一化的策略翻譯為不同設(shè)備的配置命令,完成策略翻譯。由于采用翻譯模板指導(dǎo)翻譯的方式,因此可基于設(shè)計(jì)的翻譯模板動態(tài)構(gòu)建規(guī)則,通過增改翻譯模板的方式實(shí)現(xiàn)策略翻譯的可擴(kuò)展性。
在生成個(gè)性化的策略后,根據(jù)配置策略對目標(biāo)設(shè)備進(jìn)行配置,具體配置過程如下。
1)命令配置。通過設(shè)備提供的CLI接口,將翻譯后的命令行配置到設(shè)備上。
2)結(jié)果匹配。在命令行配置過程中,獲取每條命令行的配置反饋信息,根據(jù)待對比的關(guān)鍵詞,判定該反饋信息所體現(xiàn)的配置結(jié)果。
循環(huán)以上2個(gè)步驟,在將配置命令下發(fā)并配置到目標(biāo)設(shè)備的過程中,目標(biāo)設(shè)備存在4種狀態(tài),即Status0~ Status3。Status0狀態(tài)表示目標(biāo)設(shè)備處于監(jiān)聽數(shù)據(jù),Status1狀態(tài)表示目標(biāo)設(shè)備接收到連接,Status2狀態(tài)表示目標(biāo)設(shè)備收到命令行集合后準(zhǔn)備配置,Status3狀態(tài)表示目標(biāo)設(shè)備配置命令行后獲取配置結(jié)果。
如圖4所示,首先目標(biāo)設(shè)備處于Status0狀態(tài),當(dāng)收到連接請求時(shí)進(jìn)入Status1狀態(tài);在Status1狀態(tài)時(shí)收到非空命令行集合后進(jìn)入Status2狀態(tài),而在連接超時(shí)或收到斷開連接信號時(shí),斷開連接進(jìn)入Status0狀態(tài);在Status2狀態(tài)時(shí),當(dāng)命令行集合非空時(shí)配置命令行后進(jìn)入Status3狀態(tài),而當(dāng)命令行集合為空時(shí)進(jìn)入Status1狀態(tài)繼續(xù)等待接收命令行;在Status3狀態(tài)時(shí),返回配置成功結(jié)果進(jìn)入Status2狀態(tài),繼續(xù)配置,而返回配置失敗結(jié)果時(shí)進(jìn)入Status1狀態(tài),重新接收命令行。
圖4 策略配置目標(biāo)設(shè)備狀態(tài)轉(zhuǎn)移
通過以上步驟,可以將配置命令逐一配置到設(shè)備上,并通過動態(tài)增改關(guān)鍵詞庫,配置新類型的設(shè)備,保證策略配置的可擴(kuò)展性。
實(shí)驗(yàn)環(huán)境包括3臺異構(gòu)的安全設(shè)備、一臺服務(wù)器和一臺交換機(jī),具體信息如表1所示。其中,3臺安全設(shè)備分別為天融信NGFW防火墻、華為USG6000V模擬防火墻和Linux系統(tǒng)的IPtables防火墻,作為待配置安全設(shè)備;交換機(jī)型號為CiscoSG200,用于連接服務(wù)器與安全設(shè)備;服務(wù)器的操作系統(tǒng)為CentOS,用于運(yùn)行策略翻譯及配置系統(tǒng),使用本文所提出的方法對3臺異構(gòu)安全設(shè)備進(jìn)行策略翻譯及配置。
表1 實(shí)驗(yàn)拓?fù)湓O(shè)備信息
基于策略歸一化方案,對異構(gòu)安全設(shè)備策略進(jìn)行歸一化描述。以網(wǎng)絡(luò)數(shù)據(jù)分組過濾策略為例,該策略的歸一化過程可描述如下。首先,為網(wǎng)絡(luò)數(shù)據(jù)分組過濾策略的序列號PolicyType_SerialNum賦值,此處將其定義為“0001”號策略。然后,從“01”號開始依次對策略參數(shù)進(jìn)行編碼,編碼格式為“SerialNum_0X:Param_Name”,其中“0X”表示第X個(gè)參數(shù),“Param_Name”為參數(shù)名。基于上述策略歸一化過程,采用統(tǒng)一的策略編碼形式,對異構(gòu)的策略形式進(jìn)行歸一化描述,從而構(gòu)建出兼容性強(qiáng)、描述準(zhǔn)確的策略形式。結(jié)合上述的例子,網(wǎng)絡(luò)數(shù)據(jù)分組過濾策略的歸一化描述如下。
PolicyType_SerialNum :0001;
PolicyObject_SerialNum :PolicyObject;
PolicySubject_SerialNum :PolicySubject;
SerialNum_01 :Action;
SerialNum_02 :SrcStartIP;
SerialNum_03 :SrcEndIP;
SerialNum_04 :SrcStartPort;
SerialNum_05 :SrcEndPort;
SerialNum_07 :DstStartIP;
SerialNum_08 :DstEndIP;
SerialNum_09 :DstStartPort;
SerialNum_10 :DstEndPort;
SerialNum_11 :Protocol;
…
基于上述策略形式,構(gòu)建基于位圖的配置命令校驗(yàn)?zāi)0濉S捎跉w一化的策略采用編碼的方式描述策略參數(shù),因此可根據(jù)編碼將其轉(zhuǎn)換為位圖,即將參數(shù)編碼作為圖中的位置向量,并采用二進(jìn)制值0和1來表示對應(yīng)位置的該參數(shù)是否存在。位圖的構(gòu)建過程簡單,通過“按位與”運(yùn)算,能實(shí)現(xiàn)較快的位圖校驗(yàn)。
根據(jù)以上校驗(yàn)方法和位圖構(gòu)建方法,構(gòu)建配置命令的校驗(yàn)?zāi)0澹绞饺缦?。首先獲取配置命令組所有參數(shù)編碼,將編碼作為位圖位置向量,將位圖對應(yīng)的比特位賦值為1,其他位置賦值為0,生成第一個(gè)校驗(yàn)?zāi)0逦粓D,用于過濾不能配置的參數(shù);然后獲取配置命令組中必選命令行中必選參數(shù)對應(yīng)的歸一化編碼,構(gòu)建為位圖,用于初步判斷是否包含必選參數(shù);最后依次獲取所有參數(shù)與命令行依賴的必選參數(shù)編碼,構(gòu)建為位圖,生成若干個(gè)模板位圖(若是沒有依賴關(guān)系,則不需要構(gòu)建)。將構(gòu)建完成的位圖組放入校驗(yàn)?zāi)0鍘熘?,?dāng)進(jìn)行策略翻譯時(shí),先提取校驗(yàn)?zāi)0暹M(jìn)行校驗(yàn),校驗(yàn)不通過則通知管理員。
根據(jù)翻譯模板構(gòu)建方案。對實(shí)驗(yàn)環(huán)境中的防火墻設(shè)備進(jìn)行翻譯模板構(gòu)建。圖5為對天融信防火墻翻譯模板構(gòu)建的示例,將設(shè)備原配置命令格式經(jīng)過符號轉(zhuǎn)換、關(guān)鍵詞替代和目標(biāo)格式信息填充等步驟,生成策略翻譯模板。
圖5 策略翻譯模板示例
同時(shí),構(gòu)建策略配置命令標(biāo)識符模板,將3臺設(shè)備的回復(fù)命令標(biāo)識符存儲于模板庫中,方便后續(xù)提取匹配。
當(dāng)策略發(fā)送到設(shè)備直屬的配置系統(tǒng)時(shí),會進(jìn)行策略翻譯,生成目標(biāo)設(shè)備可識別的配置命令,并將其作為策略配置的指導(dǎo)。
進(jìn)行策略翻譯前,首先根據(jù)目標(biāo)設(shè)備當(dāng)前策略的校驗(yàn)?zāi)0暹M(jìn)行策略校驗(yàn),如圖6所示,具體過程如下。
1)生成配置策略位圖。提取當(dāng)前待配置策略的參數(shù)部分,讀取其參數(shù)關(guān)鍵詞編碼,將所讀編碼轉(zhuǎn)化為相應(yīng)位圖,例如若當(dāng)前策略包含編碼為1、6、7、8、10、14、24的參數(shù),則將位圖中的第1、6、7、8、10、14、24位置的比特位賦值為1,其他位置賦值0。
2)獲取目標(biāo)設(shè)備校驗(yàn)規(guī)則位圖集合。獲取模板庫中對應(yīng)設(shè)備的校驗(yàn)?zāi)0濉?/p>
3)過濾無關(guān)參數(shù)。通過“按位與”操作進(jìn)行位圖校驗(yàn),過濾當(dāng)前不能配置的參數(shù)。
圖6 參數(shù)校驗(yàn)示例
4)校驗(yàn)當(dāng)前策略能否配置。首先,校驗(yàn)策略是否含有必選參數(shù)與命令行;然后,依次迭代校驗(yàn)確保策略中包含每個(gè)必選參數(shù)與命令行所依賴的參數(shù);最后,校驗(yàn)判斷是否包含可選參數(shù)以及其依賴的參數(shù),確定策略中能配置的可選參數(shù)。
校驗(yàn)后,將可配置的策略進(jìn)行翻譯,即基于設(shè)備的翻譯模板,將歸一化編碼策略轉(zhuǎn)換為該設(shè)備能識別的配置命令,如圖7所示,具體過程如下。
1)翻譯模板獲取。根據(jù)當(dāng)前策略類型和目標(biāo)設(shè)備類型,從模板庫中提取該設(shè)備配置策略的翻譯模板。
2)參數(shù)映射。將待配置策略中的源參數(shù)映射到翻譯模板上具有相同語義的目標(biāo)參數(shù)。由于采用歸一化的編碼,因此通過簡單的編碼數(shù)字解析,即可將源參數(shù)與翻譯模板中的目標(biāo)參數(shù)進(jìn)行一一映射。
3)參數(shù)格式轉(zhuǎn)換。相同的參數(shù)在不同的設(shè)備上可能存在不同的表示格式,因此需要將源參數(shù)格式轉(zhuǎn)換為目標(biāo)設(shè)備可識別的參數(shù)格式。通過提取翻譯模板中的參數(shù)格式,不需要人工介入,即可實(shí)現(xiàn)簡單的參數(shù)格式轉(zhuǎn)換。
4)個(gè)性化命令生成。根據(jù)目標(biāo)設(shè)備翻譯模板,按照策略參數(shù)編碼所映射的位置,填入轉(zhuǎn)換后的策略參數(shù),最終形成目標(biāo)設(shè)備可識別的個(gè)性化配置命令集合。
在實(shí)驗(yàn)環(huán)境中,一共涉及3種防火墻,這3種防火墻的配置命令各不相同,通過構(gòu)建這3種防火墻配置命令的翻譯模板,實(shí)現(xiàn)策略到配置命令行的翻譯,同時(shí)獲取每條命令行的配置結(jié)果。通過關(guān)鍵詞對比判定配置結(jié)果,即提取關(guān)鍵詞模板中的字符串,比對不同情況的關(guān)鍵詞確定配置結(jié)果,如天融信防火墻配置命令失敗時(shí)會返回“error”關(guān)鍵詞和具體的錯(cuò)誤代碼,因此提取“error”關(guān)鍵詞與當(dāng)前配置結(jié)果匹配,若匹配成功,則表示該命令行配置失敗,反之則配置成功。通過配置結(jié)果判定,可以避免連環(huán)失敗配置,通過重新配置或?qū)κ∵M(jìn)行反饋,避免了無效的策略配置。
圖7 個(gè)性化配置命令生成示例
圖8 策略翻譯實(shí)驗(yàn)
如圖8所示,通過人工查看此次實(shí)驗(yàn)配置結(jié)果與配置反饋結(jié)果一致,證明策略翻譯的準(zhǔn)確性。由實(shí)驗(yàn)結(jié)果可知,通過構(gòu)建新的翻譯模板,將歸一化的策略翻譯為異構(gòu)設(shè)備格式的配置命令,證明了本文所提出的策略翻譯方法的可擴(kuò)展性;圖8中策略配置成功表明設(shè)備正確識別該翻譯結(jié)果,證明本文中策略翻譯的準(zhǔn)確性;同時(shí),嘗試構(gòu)建具有參數(shù)不全的策略配置設(shè)備,獲得配置失敗的反饋,證明本文中策略校驗(yàn)功能的有效性。
針對異構(gòu)設(shè)備網(wǎng)絡(luò)中安全設(shè)備配置語法不一所帶來的配置煩瑣、效率低下的問題,設(shè)計(jì)了一種可擴(kuò)展、準(zhǔn)確性高的策略翻譯及配置方法。利用編碼簡單、易計(jì)算的特點(diǎn)降低了策略翻譯的復(fù)雜度;利用策略校驗(yàn)保證了策略翻譯的準(zhǔn)確度;通過構(gòu)建翻譯模板,指導(dǎo)歸一化策略向個(gè)性化策略轉(zhuǎn)換;并采用關(guān)鍵詞對比法控制策略配置流程,防止出現(xiàn)無效的、與預(yù)期不符的策略配置結(jié)果;通過構(gòu)建動態(tài)模板庫的方式,保證以上各個(gè)步驟的可擴(kuò)展性。未來的工作可以對翻譯模板構(gòu)建進(jìn)行優(yōu)化,采用自動構(gòu)建方法,減少人工構(gòu)建的成本。