李 鐳,余興華,羅淑丹
(中國電子科技集團公司第三十研究所,四川 成都 610041)
近年來,隨著網(wǎng)絡(luò)的發(fā)展和壯大,網(wǎng)絡(luò)安全問題成為現(xiàn)代信息安全所要解決的主要問題[1]。針對不同的網(wǎng)絡(luò)環(huán)境,防火墻策略的配置不僅越來越復(fù)雜,而且多域間各策略之間的沖突時有發(fā)生,嚴(yán)重影響安全策略的執(zhí)行效率。因此,如何保證不同安全域之間的防火墻策略的一致性,以及同一安全域內(nèi)安全策略的一致性,成為防火墻安全策略配置的關(guān)鍵[2]。針對當(dāng)前大部分安全策略沖突檢測與消解算法缺少靈活性、擴展性等缺點[3-4],本文首先定義了不同防火墻策略之間的關(guān)系和沖突類型,并在此基礎(chǔ)上給出了基于策略的沖突分類描述,最后給出了防火墻沖突檢測算法。
近年來,國內(nèi)外學(xué)者對策略沖突檢測與消解作了大量研究:一是基于IETF策略核心信息模型的關(guān)于管理策略的沖突檢測,主要代表為美國IBM公司研究員Dinesh Verma提出的多維空間思想和意大利都靈大學(xué)提出的代數(shù)方法;二是關(guān)于安全策略的沖突檢測,主要有澳大利亞Queenland大學(xué)提出的基于邏輯描述語言的沖突檢測方法[3]和英國Imperial College的Lupu等人在面向?qū)ο蟮牟呗员硎菊Z言ponder[5]和基于策略的分布系統(tǒng)管理框架的基礎(chǔ)上提出的基于角色的訪問控制方法等。
通過比較防火墻安全策略之間的關(guān)系,定義兩個安全策略Rx和Ry之間的關(guān)系,如圖1所示。
圖1 安全策略間的關(guān)系
精確匹配:如果安全策略Rx中的所有策略項都與安全策略Ry中相應(yīng)策略項的值相等,那么Rx和Ry精確匹配。
包含匹配:如果安全策略Rx和安全策略Ry不是完全匹配,且Rx的每個策略項的值都是Ry對應(yīng)的策略項的值的子集或者相等,那么Rx和Ry是包含匹配。
完全無關(guān):如果安全策略Rx中的所有策略項都與安全策略Ry中相應(yīng)策略項的值不相等,也不存在子集或者超集的關(guān)系,那么Rx和Ry完全無關(guān)。
部分匹配:如果安全策略Rx至少有一個策略項的值與安全策略Ry中相應(yīng)策略項的值相等,或者存在子集、超級關(guān)系,且至少有一個策略項的值與安全策略Ry中相應(yīng)策略項的值不相等,也不存在子集、超級關(guān)系,那么Rx和Ry部分匹配。
關(guān)聯(lián)關(guān)系:如果安全策略Rx存在一些策略項的值是安全策略Ry對應(yīng)策略項的子集或相等,且Rx其他策略項的值是Ry對應(yīng)策略項的值超集,那么Rx和Ry是關(guān)聯(lián)的。
使用一棵樹來表示安全策略集,這棵樹叫做策略樹。策略樹能夠形象表示安全策略,而且根據(jù)安全策略在樹中的分布易發(fā)現(xiàn)安全策略之間的關(guān)系。策略樹中的每個節(jié)點表示安全策略中的一個策略項,節(jié)點上的每個分支表示這個策略項的一個值,具有相同值的安全策略共享一個分支。策略樹的一條路徑就表示一條安全策略。
將安全策略集合中的安全策略順序依次插入到樹中,最終可構(gòu)建安全策略樹。插入一條安全策略時,分別比較安全策略的各個策略項。通過策略項值的關(guān)系,決定將安全策略插入已存在的分支還是創(chuàng)建新的分支。在一個特定的策略項時,如果一個分支的值完全匹配安全策略的策略項值,那么就將安全策略插入這個分支;否則,就要創(chuàng)建一個新的分支,分支的值為安全策略的策略項值,然后將安全策略插入新的分支。此外,為了保留安全策略之間的關(guān)系,如果安全策略的策略項值與分支的值存在子集或者超集關(guān)系,也需要將安全策略插入到這個分支中。
通過比較同一安全域內(nèi)安全策略的關(guān)系和安全策略的動作,定義安全策略間存在以下幾種沖突。
覆蓋沖突:安全策略Rx在安全策略Ry的后面,而Rx子集包含匹配Ry或Rx精確匹配Ry,且Rx的動作與Ry不同,那么就說Rx被Ry覆蓋。覆蓋沖突是一個嚴(yán)重錯誤,因為被覆蓋的安全策略永遠(yuǎn)不起作用。
關(guān)聯(lián)沖突:安全策略Rx和安全策略Ry是關(guān)聯(lián)的,且動作不同,那么Rx和Ry存在關(guān)聯(lián)沖突。關(guān)聯(lián)沖突不是一個錯誤,但是需要提示管理員注意到安全策略之間的關(guān)聯(lián)關(guān)系。
冗余沖突:安全策略Rx在安全策略Ry的后面,而Rx子集包含匹配Ry或Rx精確匹配Ry,且Rx的動作和Ry相同,那么Rx就是Ry的冗余。冗余的安全策略不會起到任何作用,但是冗余安全策略的存在,會降低策略匹配效率。因此,冗余沖突是一個嚴(yán)重的錯誤,管理員需要發(fā)現(xiàn)冗余的安全策略,并將其刪除。
泛化沖突:安全策略Rx在安全策略Ry的后面,Rx超集包含匹配Ry,且Rx和Ry的動作不同,那么Rx就是Ry的泛化。泛化沖突不是一個錯誤,但是不能調(diào)換具有泛化沖突的安全策略,否則會改變其語義。因此,在插入一條安全策略時,有必要將泛化沖突提示管理員,然后讓管理員確認(rèn)。
不相關(guān)異常:如果一條安全策略的條件永遠(yuǎn)不會產(chǎn)生,則該安全策略具備不相關(guān)異常。
下面將說明如何進(jìn)行策略間的沖突檢測。檢測安全策略之間存在沖突的基本思想在于,判斷兩條安全策略在策略樹中的路徑是否一致。如果新插入的安全策略的路徑和先前插入的安全策略的路徑一致,那么這兩條安全策略很可能存在沖突。如果這兩條安全策略的路徑不一致,那么它們完全不相關(guān),也不存在沖突??墒褂脿顟B(tài)圖表示沖突檢測的過程,如圖2所示。
圖2 域內(nèi)策略沖突檢測過程
開始時,假設(shè)兩條安全策略沒有任何關(guān)系。首先比較協(xié)議策略項,有4種結(jié)果,分別為相等、子集、超集和不相等.所以,從初始狀態(tài)0分別進(jìn)入狀態(tài)1、2、3和10。其次,比較src策略項。src的比較同樣有4種結(jié)果,分別為相等、子集、超集和不相等,狀態(tài)進(jìn)入4、5、6、7和10。再次,比較dst策略項,狀態(tài)分別進(jìn)入7、8、9和10。最后,比較動作策略項,狀態(tài)進(jìn)入終態(tài)10、11、12、13和14。
對于安全策略Rx和Ry,Rx在Ry的后面,和Ry之間的沖突類型主要基于以下的比較結(jié)果:
(1)如果Rx中的每個策略項都是Ry相應(yīng)的Rx策略項的子集或者相等(狀態(tài)8),當(dāng)它們的動作相同時,Rx是Ry的冗余(狀態(tài)12);當(dāng)它們的動作不同時,Rx被Ry覆蓋(狀態(tài)11)。冗余的序列有0-1-4-8-12、0-1-5-8-12和0-2-5-8-12,覆蓋的序列有0-1-4-8-11、0-1-5-8-11和0-2-5-8-11。
(2)如果Rx中的每個策略項都是Ry相應(yīng)的策略項的超集或者相等(狀態(tài)9),當(dāng)它們的動作相同時,Ry是Rx的冗余(狀態(tài)12);當(dāng)它們的動作不同時,Rx是Ry的泛化(狀態(tài)13)。冗余的序列有0-1-4-6-9-12、0-1-6-9-12和0-3-6-9-12。泛化的序列有0-1-4-6-9-13、0-l-6-9-13和0-3-6-9-13。
(3)如果Rx有些策略項是Ry對應(yīng)的策略項的子集或者相等,而其他的策略項是Ry對應(yīng)的策略項的超集(狀態(tài)7),那么Rx和Ry存在關(guān)聯(lián)(狀態(tài)17)。這樣的序列有0-1-5-7-14、0-1-6-7-14、0-2-5-7-14、0-2-6-7-14、0-3-6-7-14和0-3-7-14。
(4)如果Rx中的一些策略項與Ry中對應(yīng)的策略項既不相等也不存在子集或者超集關(guān)系,那么Rx和Ry是不相關(guān)的(狀態(tài)10)。這樣的序列有0-10、0-1-10、0-2-10、0-3-10、0-1-4-10、0-l-5-10、0-l-6-10、0-2-5-10、0-2-7-10、0-3-6-10和0-3-7-10。
如圖3所示,假設(shè)數(shù)據(jù)從安全域Dx流向安全域Dy,在這兩個安全域間,部署了多個訪問控制類安全設(shè)備。沿著數(shù)據(jù)流向,稱前面的安全設(shè)備為上游安全設(shè)備,后面的為下游安全設(shè)備,緊臨安全域Dx的安全設(shè)備為最上游安全設(shè)備,緊臨安全域Dy的安全設(shè)備為最下游安全設(shè)備。從圖3可以看出,當(dāng)數(shù)據(jù)從安全域Dx流向安全域Dy時,滿足以下條件之一時,沖突就會發(fā)生:
(1)最下游安全設(shè)備允許了被任何上游安全設(shè)備阻止的數(shù)據(jù);
(2)最上游安全設(shè)備允許了被任何下游安全設(shè)備阻止的數(shù)據(jù);
(3)下游安全設(shè)備拒絕了已經(jīng)被上游安全設(shè)備阻止的數(shù)據(jù)。
圖3 安全設(shè)備隔開的安全域Dx和Dy
圖3中,假設(shè)Ru為最上游安全設(shè)備Secx的策略,Rd為最下游安全設(shè)備Secy的策略,并且假設(shè)個安全設(shè)備內(nèi)部已經(jīng)不存在策略沖突和冗余。通過比較安全域間安全策略的關(guān)系以及安全策略的動作,我們定義安全策略間存在以下幾種沖突:
覆蓋沖突:如果上游安全設(shè)備阻止了下游安全設(shè)備允許的數(shù)據(jù),則發(fā)生了覆蓋沖突。如果滿足以下條件之一,則稱Ru被Rd覆蓋:Rd精確匹配Ru,且Ru動作為阻止,Rd動作為允許;Ru包含匹配Rd,且Ru動作為阻止,Rd動作為允許;Rd包含匹配Ru,且Ru動作為阻止,Rd動作為允許;
假性沖突:如果上游安全設(shè)備允許了下游安全設(shè)備阻止的數(shù)據(jù),則發(fā)生了假性沖突。如果滿足以下條件之一,則稱Ru間Rd存在假性沖突:Rd精確匹配Ru,且Ru動作為允許,Rd動作為阻止;Rd包含匹配Ru,且Ru動作為允許,Rd動作為阻止;Ru包含匹配Rd,且Ru動作為允許,Rd動作為阻止;
冗余沖突:如果下游安全設(shè)備阻止了被上游安全設(shè)備阻止的數(shù)據(jù),則發(fā)生了冗余沖突。如果滿足以下條件之一,則稱Ru間Rd存在冗余沖突:Rd精確匹配Ru,且Ru動作為阻止,Rd動作為阻止;Ru包含匹配Rd,且Ru動作為阻止,Rd動作為阻止。
關(guān)聯(lián)沖突:關(guān)聯(lián)沖突往往由上游安全設(shè)備和下游安全設(shè)備的兩條關(guān)聯(lián)規(guī)則引起。如果滿足以下條件之一,則稱Ru間Rd存在關(guān)聯(lián)沖突:Ru與Rd關(guān)聯(lián),且Ru動作為允許,Rd動作為阻止;Ru與Rd關(guān)聯(lián),且Ru動作為阻止,Rd動作為允許。
下面說明如何進(jìn)行策略間的沖突檢測。使用狀態(tài)圖來表示沖突檢測的過程,如圖4所示。
開始時,假設(shè)Ru和Rd安全策略沒有任何關(guān)系。按照協(xié)議、策略源、策略目的的順序依次比較Ru和Rd的各個策略項,經(jīng)過上述比較,可以確定兩條策略間的關(guān)系和存在的沖突類型。例如,如果Rd包含匹配Ru(狀態(tài)10),且Rd的動作為允許,則Rd被Ru部分覆蓋(狀態(tài)11),或當(dāng)Rd的動作為阻止時,Ru和R存在假性沖突(狀態(tài)12)。
防火墻安全策略沖突檢測,直接影響分布式網(wǎng)絡(luò)的運行效率和安全管理效率。本文在研究防火墻安全策略之間關(guān)系和沖突類型的形式化定義基礎(chǔ)上,提出了一種防火墻安全策略沖突檢測的方法,能夠較好地解決防火墻安全策略的沖突檢測問題。后續(xù)的工作主要有兩方面,一是沖突檢測算法的進(jìn)一步優(yōu)化實現(xiàn)及性能提升,二是研究防火墻安全策略沖突的消除方法。
圖4 域間策略沖突檢測過程
[1] 王世偉.論信息安全、網(wǎng)絡(luò)安全、網(wǎng)絡(luò)空間安全[J].中國圖書館學(xué)報,2015(02):72-84.WANG Shi-wei.On Information Security,Network Security and Cyberspace Security[J].Journal of Library Science in China,2015(02):72-84.
[2] 李祥軍,孟洛明,焦利.網(wǎng)管系統(tǒng)策略沖突解決的結(jié)果中存在的問題及檢測與解決方法[J].計算機研究與發(fā)展,2006,43(07):1297-1303.LI Xiang-jun,MENG Luo-ming,JIAO Li.Problems in Results of Policy Conflict Resolutions and Detection and Resolution Methods in Network Management Systems[J].Journal of Computer Research and Developm ent,2006,43(07):1297-1303.
[3] Dunlop N,Indulska J,Raymond K A.Dynamic Conflict Detection for Large Evolving Enterprises[C].Proceedings of the Sixth International Conference on Enterprise Distributed Object Computing,2002.
[4] Dulay N,Lupu E,Sloman M,et al.A Policy Deployment Model for the Ponder Language[C].IEEE IFIP International Symposium on Integrated Network Management,2001.
[5] Damianou N,Dulay N,Lupu E C,et al.The Ponder Policy Specification Language[C].The Workshop on Policies for Distributed Systems and Networks,2001.
[6] Lupu E,Sloman M.Conflicts in Policy-based Distributed Systems Management[J].IEEE Transactions on Software Engineering-Special Issue on Inconsistency Management,1999,25(06):852-869.