(中國船舶重工集團公司第七二二研究所 武漢 430205)
網(wǎng)絡(luò)安全的重要性引起了人們的關(guān)注,由于不斷增加的網(wǎng)絡(luò)攻擊威脅,各類網(wǎng)絡(luò)中的重要元素逐漸變?yōu)榫W(wǎng)絡(luò)安全設(shè)備(如防火墻和IPSec網(wǎng)關(guān))。在這些網(wǎng)絡(luò)管理中,系統(tǒng)行為的規(guī)范一般是由策略定義[1],由策略決定安全設(shè)備在不同情況下執(zhí)行的動作。目前廣泛應(yīng)用的網(wǎng)絡(luò)管理方法是結(jié)合策略的方法[2],但目前策略配置主要由人工進行配置,由于人工配置的原因會出現(xiàn)配置的策略之間的沖突。一些安全漏洞可能會在安全設(shè)備執(zhí)行策略時出現(xiàn),導(dǎo)致系統(tǒng)的正常運行受到影響。隨著網(wǎng)絡(luò)規(guī)模的增大,策略的數(shù)目也在不斷增加,使得策略沖突情況將更容易發(fā)生。因此,對策略進行沖突檢測來減少這些情況是至關(guān)重要的。由于分布式系統(tǒng)具有種類繁多的安全設(shè)備和結(jié)構(gòu)復(fù)雜的網(wǎng)絡(luò),難以實現(xiàn)人工方式對策略沖突進行檢測。目前網(wǎng)絡(luò)管理領(lǐng)域中關(guān)于策略的重要研究方向是找到一種方法可以準(zhǔn)確快速檢測策略沖突。
近年來在安全策略的沖突檢測方面,國內(nèi)外做了許多研究,針對策略沖突檢測提出了不同的方法,文獻[3]提出了一種基于有限狀態(tài)傳感器策略的碰撞檢測方法,該方法將事件轉(zhuǎn)移函數(shù)和自適應(yīng)子集添加到有限自動機(Finite State Transducer,F(xiàn)ST)中以處理沖突。文獻[4]提出了一種有向無環(huán)圖模型(DAG),該模型通過將分布式系統(tǒng)中的元素抽象為DAG來檢測策略沖突。文獻[5]還使用圖論來檢測和解決從沖突。與以前的文獻不同,文獻[6]使用分類樹的授權(quán)算法將父節(jié)點的規(guī)則與子節(jié)點上的相應(yīng)規(guī)則進行比較,從而檢測沖突。文獻[7~8]中通過對策略語義的研究,實現(xiàn)了策略沖突檢測。當(dāng)現(xiàn)有策略與靜態(tài)職責(zé)分離策略共存時,文獻[9]所提出的沖突解決方法以滿足互斥要求為目標(biāo)。這些方法在性能上均存在不足,在基于角色、有限自動機、有向圖等方法上,對于規(guī)則的順序比較具有較強依賴性。而本文的決策樹模型將對上訴問題進行解決,決策樹可以大量減少順序比較。
近年來國內(nèi)外對決策樹進行了大量研究,2010年,普渡大學(xué)博士B.Vamanan針對大規(guī)模規(guī)則集研究提出基于分子集的決策樹算法EffiCuts[10]。2013年,北京大學(xué)W.Li博士在EffiCuts算法基礎(chǔ)上提出改進算法HybridCuts算法[11],通過減少子集數(shù)目提升算法查找性能。對于決策樹切割技術(shù)單一問題,2014年中科院計算所G.Xie團隊提出智能切割算法 SmartSplit[12]。2018 年,北京大學(xué) W.Li博士再次對決策樹算法進行改進,提出融合等長度和等密度切割的決策樹算法 CutSplit[13]。2019 年,W.Li博士再次進行優(yōu)化,提出支持高性能更新的TabTree算法[14]?,F(xiàn)在已經(jīng)有的大量關(guān)于決策樹的研究的出現(xiàn)證明了決策樹在現(xiàn)實中具有應(yīng)用價值。
安全策略的匹配順序是從上到下,因此安全策略中的沖突可能是由不同規(guī)則之間的依賴性引起的。因此,沖突檢測的第一步是對不同規(guī)則之間的關(guān)系進行定義。
由于IPSec的自上而下的策略匹配,如果安全策略順序配置不正確,則可能永遠(yuǎn)不會觸發(fā)某些規(guī)則,從而導(dǎo)致策略錯誤。策略沖突從定義上可以被分為以下幾類沖突。
1)策略屏蔽沖突
規(guī)則Rx屏蔽了規(guī)則Ry,當(dāng)且僅當(dāng)滿足以下兩個條件之一:
Rx[序號]< Ry[序號],Rx=Ry,Rx[行為]≠ Ry[行為]
Rx[序號]<Ry[序號],Ry? Rx,Rx[行為]≠ Ry[行為]
2)策略冗余沖突
對規(guī)則Rx來說,規(guī)則Ry是冗余的,當(dāng)且僅當(dāng)滿足下面兩個條件之一:
Rx[序號]< Ry[序號],Rx=Ry,Rx[行為]=Ry[行為]
Rx[序號]< Ry[序號],Ry? Rx,Rx[行為]=Ry[行為]
反之,對規(guī)則Ry來說,規(guī)則Rx是冗余的,當(dāng)且僅當(dāng):
Rx[序號]< Ry[序號],Rx? Ry,Rx[行為]=Ry[行為]
當(dāng)存在以下情況時,內(nèi)部策略也將發(fā)生冗余沖突:
Rx[序號]< Ry[序號],Rx∩ Ry≠ φ,Rx[行為]=Ry[行為]
3)策略相關(guān)沖突
規(guī)則Rx和Ry之間出現(xiàn)策略相關(guān)沖突,當(dāng)且僅當(dāng)滿足以下條件:
Rx[序號]<Ry[序號],Rx∩Ry≠φ,Rx[行為]≠Ry[行為]
在數(shù)據(jù)分類領(lǐng)域中,決策樹是一項重要技術(shù),通過學(xué)習(xí)訓(xùn)練集構(gòu)造決策樹,然后根據(jù)決策樹模型對目標(biāo)數(shù)據(jù)類別進行預(yù)測[15]。在構(gòu)造決策樹時,首要的步驟是預(yù)處理策略集對應(yīng)的五元組數(shù)據(jù),具體是將復(fù)合維度分解和確定維度空間。五元組中的源、目的地址,源、目的端口均為連續(xù)維度,在進行劃分時的維度范圍是最小值至最大值,而協(xié)議則是非連續(xù)維度,協(xié)議中的值為一個個的協(xié)議元素,在進行劃分時為元素集合的劃分。對于協(xié)議這種非連續(xù)維度中的元素可能存在元素A包含元素B的情況,這種情況下對應(yīng)維度就為復(fù)合維度,在預(yù)處理時需要將復(fù)合維度進行分解,將例如元素B的這類元素分解為其本身與其父元素的組合。例如表1中的策略的元素有SCTP、TCP、UDP和IP這些協(xié)議。這些協(xié)議元素中例如SCTP就可以視為復(fù)合元素,將這種復(fù)合元素分解為所有復(fù)合元素的父元素的集合,即IP/SCTP。以此類推,表1中的協(xié)議這類復(fù)合型維度可以被分解為表2所示。
表1 規(guī)則示例
表2 復(fù)合維度分解
在預(yù)處理時,對于源IP地址、目的IP地址這類連續(xù)維度,將對應(yīng)維度在規(guī)則中的最大值和最小值找到。由于協(xié)議這類非連續(xù)維度的范圍就是維度中所有可以取到的元素集合。因此,表1對應(yīng)的維度范圍如表3所示。
表3 確定維度空間
在對策略集進行預(yù)處理后,我們可以開始構(gòu)建決策樹。首先,我們可以根據(jù)確定的維度空間對策略集中的規(guī)則進行裁剪。首先確定決策樹的兩個參數(shù):葉子節(jié)點中可以存放的最大規(guī)則數(shù)T和每個維度范圍可劃分為np個。當(dāng)T小于當(dāng)前節(jié)點內(nèi)存放的規(guī)則數(shù)時,說明節(jié)點內(nèi)存放規(guī)則數(shù)多于設(shè)定值,選擇對應(yīng)的維度范圍進行均分,當(dāng)節(jié)點內(nèi)存放規(guī)則均不大于T時就認(rèn)為該節(jié)點為葉子節(jié)點,當(dāng)所有節(jié)點均劃為葉子節(jié)點時,決策樹的構(gòu)造就完成了。
以表4中的規(guī)則為例,由于規(guī)則數(shù)目較少,假定T和np均為3,在構(gòu)建決策樹時,先以源IP地址進行劃分,源IP地址的維度空間為202.168.80.0~202.168.80.255,根據(jù)np=3,將其均勻的切割為3個區(qū)間,若規(guī)則中源IP地址落在202.168.60.0~202.168.60.85的范圍內(nèi)時將其劃分到第一個節(jié)點,規(guī)則中源IP地址落在 202.168.80.86~202.168.80.170的范圍內(nèi)時將其劃分到第二個節(jié)點,規(guī)則中源IP地址落在202.168.80.171~202.168.80.255的范圍內(nèi)時將其劃分到第三個節(jié)點,然后對劃分后的節(jié)點與T進行大小判斷,若節(jié)點內(nèi)的規(guī)則數(shù)大于T則選擇下一個維度即目的地址進行切割,直到葉子節(jié)點內(nèi)的規(guī)則數(shù)均不大于T。
圖1 構(gòu)造決策樹
圖2是決策樹構(gòu)建算法流程,先對策略集進行預(yù)處理,若存在復(fù)合維度,先將復(fù)合型維度進行分解,統(tǒng)計連續(xù)維度范圍,從源IP地址開始,將范圍均分為np個范圍,計算落在劃分的各個節(jié)點范圍中的策略數(shù),判斷T是否小于節(jié)點內(nèi)策略數(shù),若T小于節(jié)點內(nèi)策略數(shù),擇下一個維度進行劃分,直到所有葉子節(jié)點內(nèi)策略數(shù)均不大于T,在找到對應(yīng)葉子節(jié)點后,順序查找比較存放在葉子節(jié)點內(nèi)的策略,若葉子節(jié)點中存放的策略的五元組存在交集,則進一步判斷存在的沖突類型。根據(jù)上述策略的沖突分類判斷沖突類型,若為屏蔽沖突,根據(jù)希望執(zhí)行動作決定將被屏蔽策略刪除或?qū)⑵帘尾呗詣h除,若為冗余沖突,可刪除冗余的策略,若為相關(guān)沖突,則將兩條策略交集部分根據(jù)希望執(zhí)行動作進行分割,將交集部分劃分到希望執(zhí)行的動作對應(yīng)策略下,將另一條策略中的交集部分刪除。若新增策略與已有策略之間沒有交集則將其添加至相應(yīng)的葉子節(jié)點內(nèi)。
圖2 算法流程
基于決策樹的策略沖突檢測具體步驟如下。
1)將已有策略集構(gòu)建為一個決策樹模型,決策樹構(gòu)建完成后先檢測當(dāng)前情況內(nèi)的葉子節(jié)點內(nèi)是否存在策略沖突,若存在,根據(jù)沖突類型的不同選擇不同解決方法,若不存在,則說明當(dāng)前構(gòu)建完成的決策樹中不含沖突策略,在之后新增策略比對時,只存在新增策略與已有策略之間的沖突。
2)將新增策略A從源IP地址這個維度進行比對劃分,根據(jù)新增策略A的源IP地址范圍判斷其落在哪個子節(jié)點分支上,若源IP地址同時落在兩個或兩個以上的源IP地址分支上,則將策略A根據(jù)源IP地址分支的范圍劃分為n個相應(yīng)源IP地址范圍的策略。
3)將新增策略A繼續(xù)以下一個維度進行匹配,操作與步驟2)類似,直至將策略A與對應(yīng)葉子節(jié)點匹配。
4)將新增策略A與相應(yīng)的葉子節(jié)點內(nèi)的策略進行順序比對,判斷策略A與已有策略之間是否存在交集,若無交集,則說明新增策略與已有策略之間不存在沖突,若存在交集,則判斷新增策略與已有策略之間的沖突類型。
這種方法下僅需檢測對應(yīng)葉子節(jié)點內(nèi)的規(guī)則就可以找到策略之間是否發(fā)生沖突,不需要對所有已有策略進行比對,分析是否產(chǎn)生沖突。
目前提出的對策略的沖突進行檢測的方法一般是基于順序匹配,本文提出的決策樹方法對比順序匹配極大減少了策略查找數(shù)目。本文的方法是先構(gòu)造決策樹,通過將策略在不同維度上進行切割,最終形成每個葉子節(jié)點內(nèi)策略數(shù)均不大于T的決策樹,在進行策略沖突檢測時,先將策略在決策樹中分維度進行匹配,在最后與之相匹配的葉子節(jié)點內(nèi)的規(guī)則集中進行順序查找匹配。對于n條規(guī)則,構(gòu)造決策樹進行沖突檢測的方法的時間復(fù)雜度為O(mn),在決策樹的葉子節(jié)點內(nèi)進行策略的查找匹配的時間復(fù)雜度為O(Tm)。在文獻[7]中的方法中需要對每兩條策略之間進行特征因子處理,進行了大量的順序查找比對,這種方法的時間復(fù)雜度為O(nm)。將兩種方法的測試數(shù)據(jù)進行對比,當(dāng)策略數(shù)目較少的時候,本文方法與文獻[7]的方法相比并沒有出現(xiàn)明顯的優(yōu)勢,但隨著策略數(shù)目的翻倍增加,本文方法的算法效率對比文獻[7]的方法優(yōu)勢越發(fā)明顯,對同樣數(shù)目的策略,策略沖突檢測時間出現(xiàn)明顯減少。
圖3 相同運行環(huán)境下本文算法與文獻[7]方法運行時間對比
本文結(jié)合了包分類中的匹配思想,先對策略進行預(yù)處理、構(gòu)建決策樹后,在葉子節(jié)點中查找規(guī)則沖突情況。本文提出的方法中若新增策略為確定值而非范圍時,進行分維度查找匹配的過程與包分類的過程類似。因此對策略進行劃分,在葉子節(jié)點內(nèi)進行查找的方法對包分類也有參考意義。對比之前基于順序查找的各種方法來說,本文提出的方法在查找上提高了性能。與文獻[7]的方法比較,當(dāng)規(guī)則數(shù)目較大時,時間效率有很大提升,有明顯的優(yōu)勢。本文由于測試數(shù)據(jù)的IP地址范圍有限,對于變化范圍更大的IP地址范圍需進一步研究調(diào)整決策樹的。但本文針對五元組模型提出的策略沖突檢測模型,對于其他策略模型是否具有適用性還需作進一步的研究。