李航 單洪 陳志文
摘要:在大規(guī)模網(wǎng)絡(luò)環(huán)境中,核查大量異構(gòu)網(wǎng)絡(luò)設(shè)備配置的正確性與合規(guī)性一直是網(wǎng)絡(luò)系統(tǒng)維護人員的難點。提出了一種無代理的設(shè)備配置自動采集技術(shù),在采集的基礎(chǔ)上,方案采用ANTLR生成網(wǎng)絡(luò)設(shè)備配置的詞法、語法分析器,自動生成設(shè)備配置的抽象語法樹和樹的遍歷器,通過語法樹分析的監(jiān)聽器機制實現(xiàn)異構(gòu)網(wǎng)絡(luò)設(shè)備配置翻譯成統(tǒng)一描述結(jié)構(gòu)的配置信息,基于統(tǒng)一結(jié)構(gòu)的設(shè)備配置信息可以為配置核查算法屏蔽異構(gòu)設(shè)備的差異性。
關(guān)鍵詞:異構(gòu);網(wǎng)絡(luò);配置;核查;語法分析
中圖分類號:TP391? ? ? ? 文獻標(biāo)識碼:A
文章編號:1009-3044(2019)25-0025-02
Abstract: In large-scale networks, how to verify the correctness and compliance of a large number of heterogeneous configurations of network devices is difficult. An agentless device configuration acquisition technology is proposed. ANTLR is used to generate the lexical and syntax analysis module of network device configuration. The abstract syntax tree of the device configuration and the traversal module of the tree are automatically generated. The translation of the heterogeneous configuration is realized through syntax tree analysis. The configuration information of the unified structure is described, and the device configuration information based on the unified structure shields the difference of the heterogeneous device configuration verification algorithm.
Key words:Heterogeneous; network; configuration; verification; syntax analysis
1 引言
為了驗證信息系統(tǒng)中網(wǎng)絡(luò)設(shè)備的配置是否滿足安全管理要求,需要對網(wǎng)絡(luò)設(shè)備的配置進行核查[1]。核查[2],目的是及時發(fā)現(xiàn)不滿足安全要求的策略配置。配置核查的輸入是配置和配置安全基線,安全基線是指用戶依據(jù)安全防護目標(biāo)、法規(guī)遵從等設(shè)定的配置應(yīng)該滿足的最低安全標(biāo)準(zhǔn),不論配置狀態(tài)如何變化,都應(yīng)該滿足安全基線的要求[3]。在大規(guī)模網(wǎng)絡(luò)環(huán)境下,面對上萬行的異構(gòu)網(wǎng)絡(luò)設(shè)備配置,人工已經(jīng)難以進行有效的配置核查[4]- [5],因此需要采用信息化的技術(shù)手段實現(xiàn)配置的自動化核查。配置核查自動化的關(guān)鍵技術(shù)是網(wǎng)絡(luò)設(shè)備配置的自動采集以及將文本描述的配置翻譯成統(tǒng)一描述的結(jié)構(gòu)化配置項數(shù)據(jù)。
2 網(wǎng)絡(luò)設(shè)備配置采集技術(shù)
配置核查首先需要解決如何獲取設(shè)備配置信息的問題,多數(shù)交換機、路由器、防火墻支持ssh遠程執(zhí)行命令獲取全部配置信息,或通過snmp也可以獲取部分信息,一些設(shè)備無法通過通用ssh或snmp獲取配置信息,則需要獲得廠家的支持,通過廠家提供的專用接口獲取配置信息。本系統(tǒng)當(dāng)前主要針對支持ssh登錄的目標(biāo)設(shè)備。
基于ssh命令行接口的異構(gòu)設(shè)備配置采集只是執(zhí)行的命令不一樣,執(zhí)行配置采集的操作具有相同的模式“ssh登錄->執(zhí)行腳本驗證設(shè)備類型、版本->執(zhí)行配置采集腳本->獲取腳本回顯(原始配置)”,因此,可以通過維護設(shè)備類型識別知識和配置采集知識,使得系統(tǒng)通過配置而不是軟件更新就可以適應(yīng)不同版本設(shè)備的原始配置采集,用戶通過自定義設(shè)備類型識別知識和配置采集知識就可以不斷擴充支持的設(shè)備類型的配置采集?;谥R的配置自動化采集流程如圖1所示。
設(shè)備類型識別知識由規(guī)則集組成,規(guī)則的基本屬性包括:規(guī)則標(biāo)識、設(shè)備類型、操作系統(tǒng)名稱、操作系統(tǒng)版本、系統(tǒng)類型采集腳本、系統(tǒng)名稱匹配規(guī)則、系統(tǒng)版本匹配規(guī)則、更新時間、備注。
配置采集知識也是由規(guī)則集組成,規(guī)則的基本屬性包括:規(guī)則標(biāo)識、設(shè)備類型、操作系統(tǒng)名稱、適用版本、采集腳本、更新時間、備注。
3 網(wǎng)絡(luò)設(shè)備配置解析技術(shù)
配置自動化核查系統(tǒng)的一個主要技術(shù)難點是不同廠商、不同型號的設(shè)備配置語法語義經(jīng)常不統(tǒng)一,如果直接針對原始配置的文本進行核查算法設(shè)計,算法實現(xiàn)需要花費大量精力進行各種文本信息的處理,導(dǎo)致開發(fā)效率低下、容易出錯、兼容性差。由于網(wǎng)絡(luò)設(shè)備提供給用戶訪問的配置都是按照廠商定義的語法進行描述的文本,因此可以利用成熟的詞法、語法分析技術(shù),將配置的文本分析交給基于語法分析的配置解析與翻譯模塊,將配置翻譯成統(tǒng)一描述的結(jié)構(gòu)信息,基于結(jié)構(gòu)化的配置信息簡化配置核查算法的實現(xiàn),提高算法的設(shè)備兼容性和開發(fā)效率。
3.1 配置解析與翻譯技術(shù)方案
系統(tǒng)采用ANTLR(Another Tool for Language Recognition)實現(xiàn)配置的解析。ANTLR是一種開源的詞法、語法分析器自動生成工具,當(dāng)前主版本號是4。與同樣廣泛使用的Lex/Yacc(對應(yīng)GNU Linux的Flex/Bison)比較, ANTLR 4最大的優(yōu)點是能過自動生成抽象語法樹(AST,Abstract Syntax Tree)和樹的遍歷器,并且ANTLR 4在ANTLR 3的基礎(chǔ)上提供了監(jiān)聽器和訪問器兩種機制實現(xiàn)語法分析的應(yīng)用邏輯代碼與文法描述規(guī)則解耦,這些特點極大地提高了語言識別解析程序的開發(fā)效率[6]。
基于ANTLR 4的配置解析與翻譯的技術(shù)方案如圖2所示。采用ANTLR的監(jiān)聽器機制使得語法翻譯程序模塊的開發(fā)分解為一組松耦合的樹節(jié)點訪問事件的監(jiān)聽模塊,在遍歷到AST相應(yīng)的節(jié)點(非葉子節(jié)點)時自動觸發(fā)相應(yīng)的語法翻譯邏輯,極大地簡化了代碼的復(fù)雜性。
3.2 設(shè)備配置文法描述與語法翻譯模塊開發(fā)
(1)文法描述文件開發(fā)
文法包括詞法和語法,基于ANTLR的文法描述開發(fā)就是采用擴展BNF (Extended Backus-Naur-Format)表達式描述具體設(shè)備的配置定義的詞法、語法。分析處理人工編寫的語言需要判斷、處理文法錯誤,需要大量的詞法、語法規(guī)則對輸入進行約束。但是配置核查系統(tǒng)從具體設(shè)備上獲取的配置都是經(jīng)過目標(biāo)設(shè)備系統(tǒng)的語法分析器校驗過的,因此,我們可以假設(shè)獲取的配置都是符合目標(biāo)系統(tǒng)定義的詞法、語法規(guī)則的,基于這個假設(shè),極大地簡化了文法規(guī)則編寫,除了關(guān)鍵詞,大部分詞法都可以用字符串詞法替代,由于假設(shè)不存在詞法錯誤問題,語法翻譯模塊獲取字符串參數(shù)值可以直接按目標(biāo)數(shù)據(jù)類型直接翻譯。某型號防火墻配置的語法分析生成的AST的一個子集,用ANTLR的圖像化顯示工具如圖3所示。
(2) 語法翻譯模塊
開發(fā)好文法描述文件,利用ANTLR工具自動生成詞法分析器、語法分析器、語法樹監(jiān)聽器的代碼,生成的目標(biāo)代碼支持C++、C#、java、go等語言。以java為例,針對某防火墻配置語法開發(fā)的名為FW_HS4000.g4的文法描述文件,經(jīng)過ANTLR處理后,自動生成FW_HS4000Lexer.java(詞法分析器代碼)、FW_HS4000Parser.java(語法分析器代碼) 、FW_HS4000Listener.java(監(jiān)聽器接口定義代碼) 、 FW_HS4000BaseListener.java(監(jiān)聽器接口默認實現(xiàn)代碼)。Java 的class FW_HS4000BaseListener為語法樹的每個非葉子節(jié)點定義了默認的兩個事件處理函數(shù),函數(shù)名分別為進入節(jié)點的“enter+節(jié)點名稱”和退出節(jié)點的“exit+節(jié)點名稱”,每個節(jié)點名稱就是我們定義的語法規(guī)則名,可讀性強。語法翻譯模塊只需要簡單繼承默認實現(xiàn)的監(jiān)聽器,重寫事件處理函數(shù),按照統(tǒng)一定義的配置類別的結(jié)構(gòu)定義進行轉(zhuǎn)換即可。
4 結(jié)束語
由于不同人員知識水平有差異,把握核查標(biāo)準(zhǔn)尺度不統(tǒng)一,容易導(dǎo)致核查結(jié)果不一致,手動核查方式難以滿足對配置進行高效、客觀評價的需求,因此,有必要通過將核查知識轉(zhuǎn)化成可重復(fù)利用的知識,由軟件實現(xiàn)配置自動化核查。本文針對配置核查自動化面臨的異構(gòu)配置問題,提出了無代理的自動化采集技術(shù)和基于自動化語法分析的方法,實現(xiàn)配置解析與配置核查算法的解耦,提高了核查算法模塊的分析能力和設(shè)備兼容性。
參考文獻:
[1] 陳軍,饒婕,陳虹等.基于SCAP 的自動化安全基線核查研究[J].計算機時代,2016(4).
[2] 王嘯天.基于基線化管理的計算機配置核查系統(tǒng)的設(shè)計與實現(xiàn)[D].中國科學(xué)院大學(xué).
[3] Reijo M. Savola. Quality of security metrics and measurements. Computers & Security[J], 2013, 37: 78-90.
[4] W Stallings, L Brown, Computer Security: Principles and Practice, 3rd Edition[M].Prentice Hall, 2014.
[5] 唐煉,王小龍.基于模式匹配的無線網(wǎng)絡(luò)安全配置核查工具[J].計算機與現(xiàn)代化,2015(10).
[6] Terence Parr. ANTLR 4權(quán)威指南[M].張博,等.機械工業(yè)出版社,2017.
【通聯(lián)編輯:代影】