司震宇
(東北農(nóng)業(yè)大學(xué)網(wǎng)絡(luò)信息中心,哈爾濱 150030)
隨著信息技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)安全等問題日益關(guān)注,現(xiàn)有網(wǎng)絡(luò)安全產(chǎn)品不能夠充分滿足用戶對網(wǎng)絡(luò)安全的需求,主要表現(xiàn)在:①已有網(wǎng)絡(luò)安全產(chǎn)品不能充分滿足用戶需要,產(chǎn)品升級需很高費用;②傳統(tǒng)網(wǎng)絡(luò)安全產(chǎn)品只針對特定的網(wǎng)絡(luò)安全事件做出相應(yīng)的決策,對于突發(fā)的網(wǎng)絡(luò)安全事件不能做出反應(yīng);③傳統(tǒng)的網(wǎng)絡(luò)安全產(chǎn)品只注重對已有網(wǎng)絡(luò)安全問題的防御和打擊,不能及時反應(yīng)網(wǎng)絡(luò)安全狀態(tài),對網(wǎng)絡(luò)的當(dāng)前安全狀態(tài)不能夠進(jìn)行實時監(jiān)控。網(wǎng)絡(luò)安全態(tài)勢評估技術(shù)能夠綜合各方面的安全因素,從整體上動態(tài)反映網(wǎng)絡(luò)安全狀況,并對安全狀況的發(fā)展趨勢進(jìn)行預(yù)測和預(yù)警,為增強網(wǎng)絡(luò)安全性提供可靠的參照依據(jù)[1]。網(wǎng)絡(luò)安全態(tài)勢感知是在傳統(tǒng)網(wǎng)絡(luò)安全產(chǎn)品不能夠充分滿足網(wǎng)絡(luò)安全需要情況下提出,網(wǎng)絡(luò)態(tài)勢感知系統(tǒng)缺少一種有效、直觀的顯示方式把當(dāng)前的網(wǎng)絡(luò)態(tài)勢信息報告給網(wǎng)絡(luò)管理者[2]。網(wǎng)絡(luò)拓?fù)洳粌H能夠反映受控網(wǎng)絡(luò)的連接,而且能夠加以利用使其為網(wǎng)絡(luò)態(tài)勢感知提供實時、準(zhǔn)確的監(jiān)控平臺。以網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)為基礎(chǔ),通過網(wǎng)絡(luò)拓?fù)淇梢暬枋鼍W(wǎng)絡(luò)態(tài)勢信息能夠便于管理員了解網(wǎng)絡(luò)態(tài)勢,及時發(fā)現(xiàn)網(wǎng)絡(luò)異常行為。網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)技術(shù)是網(wǎng)絡(luò)安全態(tài)勢感知系統(tǒng)的關(guān)鍵技術(shù),是網(wǎng)絡(luò)態(tài)勢信息得以充分展現(xiàn)的基礎(chǔ)[3-4]。
國外的一些研究機構(gòu)主要采用基于Traceroute命令的拓?fù)浞椒?,該網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法對Internet的要求低,不需獲得網(wǎng)絡(luò)特殊權(quán)限。本文綜合分析目前較為流行的幾種網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)方法的優(yōu)缺點,提出一種由2種拓?fù)浞椒ㄏ嘟Y(jié)合的方式進(jìn)行網(wǎng)絡(luò)層拓?fù)?,主要使用基于SNMP的網(wǎng)絡(luò)層拓?fù)浞椒?,輔助基于OSPF的網(wǎng)絡(luò)層拓?fù)浞椒ǎ摲椒軓浹a基于SNMP的拓?fù)浞椒ú荒茉L問未開啟SNMP協(xié)議路由器的缺限,具有重要的理論意義。
網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)技術(shù)主要采用網(wǎng)絡(luò)層拓?fù)浞椒ǐ@得路由器及其相互連接的信息和子網(wǎng)信息。網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)技術(shù)是配置管理核心、故障和性能管理基礎(chǔ),也是衡量一個商業(yè)網(wǎng)絡(luò)管理系統(tǒng)成敗的重要尺度。因此拓?fù)浒l(fā)現(xiàn)算法的設(shè)計在整個網(wǎng)管系統(tǒng)的研發(fā)中起重要作用[5-6]。
網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)常用的協(xié)議主要有:SNMP協(xié)議、ICMP協(xié)議、OSPF協(xié)議和ARP協(xié)議。
拓?fù)浒l(fā)現(xiàn)采用廣度優(yōu)先遍歷對網(wǎng)絡(luò)層設(shè)備進(jìn)行搜索,以網(wǎng)絡(luò)中某一個路由器P0為起點,采用SNMP及其他輔助協(xié)議搜索與P0相鄰的路由器P1,P2,P3…Pi,接著再依次訪問與P1,P2,P3…Pi分別相鄰的所有節(jié)點,依次類推。
網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)有很多種方法,每種方法都有其優(yōu)缺點及其適應(yīng)的網(wǎng)絡(luò)環(huán)境,需要對其優(yōu)缺點及其適應(yīng)的網(wǎng)絡(luò)環(huán)境進(jìn)行分析,選出適用于網(wǎng)絡(luò)安全態(tài)勢感知的拓?fù)浒l(fā)現(xiàn)方法[12-13]。
1.2.1 基于SNMP協(xié)議的網(wǎng)絡(luò)層拓?fù)浞椒?/p>
基于SNMP的網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)方法目標(biāo)明確,拓?fù)浒l(fā)現(xiàn)效率高、速度快,對網(wǎng)絡(luò)帶來的負(fù)載小,系統(tǒng)開銷低。能夠通過SNMP協(xié)議直接從路由器路由表中獲取下一跳路由器地址信息,容易獲得比較完整的拓?fù)浣Y(jié)構(gòu)。網(wǎng)絡(luò)安全態(tài)勢感知同樣使用SNMP協(xié)議進(jìn)行網(wǎng)絡(luò)監(jiān)測。但缺點有:①對路由器的要求高,要求目標(biāo)網(wǎng)絡(luò)中的路由器必須開啟SNMP協(xié)議,對與未開啟SNMP協(xié)議的設(shè)備無法獲取到拓?fù)浒l(fā)現(xiàn)所需要的信息;②通過SNMP協(xié)議訪問設(shè)備MIB庫時,必須知道設(shè)備MIB庫的community值,否則無法訪問設(shè)備MIB庫;③ipRoute Table表是以IP地址作為表項的索引,路由器每個端口都有一個IP地址,同一路由器多個端口ipRoute Table表的冗余信息多。
1.2.2 基于OSPF協(xié)議的網(wǎng)絡(luò)層拓?fù)浞椒?/p>
優(yōu)先開放最短路徑協(xié)議OSPF(Open shortest path first,開放式最短路徑優(yōu)先)是一種基于優(yōu)先開放最短路徑鏈路狀態(tài)選擇算法的路由協(xié)議。使用OSPF的路由器之間通過交換信息來共享整個網(wǎng)絡(luò)的鏈路狀態(tài)。OSPF協(xié)議以其高效的路由收斂速率和較低的網(wǎng)絡(luò)資源占用率等優(yōu)點適用于大規(guī)模網(wǎng)絡(luò)環(huán)境的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)。但是該方法依賴路由器采用的路由協(xié)議,對于未使用OSPF協(xié)議的路由器不能夠獲取到其與其他路由器的連接狀態(tài)。
1.2.3 基于ICMP協(xié)議的網(wǎng)絡(luò)層拓?fù)浞椒?/p>
基于ICMP協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法主要分為兩類,基于Ping命令的拓?fù)浞椒ê突赥raceroute命令的拓?fù)浞椒ā;赑ing命令的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法主要針對于鏈路層進(jìn)行拓?fù)洌蚰繕?biāo)主機進(jìn)行Ping測試,如果主機可達(dá)便返回相應(yīng)報文?;赥raceroute命令的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法用于網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn),這種方法通過向目標(biāo)地址發(fā)送TTL值從1遞增的UDP報文來探測該路徑上的路由器.當(dāng)TTL值經(jīng)過一個路由時其TTL減1,當(dāng)TTL為0時,該路由器將向源地址返回一個超時差錯報文,通過這種方式可以得到網(wǎng)絡(luò)中存在的路由器信息。
基于Traceroute命令的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法具有很好的適用性,對目標(biāo)網(wǎng)絡(luò)及路由器沒有要求,但是這種方法具有缺限:①效率不高,與基于SNMP的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法相比,速度和準(zhǔn)確度遠(yuǎn)遠(yuǎn)不夠;②具有盲目性,拓?fù)浒l(fā)現(xiàn)只能通過向目標(biāo)地址發(fā)送報文來探測該條路徑上的路由器信息,不能夠全面、準(zhǔn)確地獲取到網(wǎng)絡(luò)的拓?fù)湫畔ⅰ?/p>
為了克服以上幾種方法的缺點,本文提出了一種融合兩種拓?fù)浞椒ㄏ嘟Y(jié)合的方式進(jìn)行網(wǎng)絡(luò)層拓?fù)?。主要使用基于SNMP的網(wǎng)絡(luò)層拓?fù)浞椒ǎ⑹褂没贠SPF的網(wǎng)絡(luò)層拓?fù)浞椒ㄗ鳛檩o助。這樣能夠彌補基于SNMP的拓?fù)浞椒ú荒茉L問未開啟SNMP協(xié)議路由器的缺點。
算法流程如下:
①初始化路由器列表ipRouteTable,將拓?fù)涑跏悸酚善餍畔⒓尤氲搅斜怼?/p>
②判斷ipRouteTable是否為空,為空執(zhí)行8),不為空則執(zhí)行3)。
③取出ipRouteTable中的一個路由器信息,存入Router_tmp。
④判斷Router_tmp是否支持SNMP協(xié)議,支持執(zhí)行5),不支持則執(zhí)行6)。
⑤使用基于SNMP協(xié)議的網(wǎng)絡(luò)層拓?fù)浞椒ǐ@取與該路由直連的路由信息,并將其存入ipRoute Table和XML文件Router-SNMP中,同時將路由器連接關(guān)系二元組存入到Link-R。
⑥使用基于OSPF協(xié)議的網(wǎng)絡(luò)層拓?fù)浞椒ǐ@取與該路由直連的路由信息,并將其存入ipRoute Table和XML文件Router-OSPF中,同時將路由器連接關(guān)系二元組存入到Link-R。
⑦繼續(xù)執(zhí)行步驟2)。
⑧將Router-SNMP和Router-OSPF中的信息存入到Routers。
基于SNMP協(xié)議的網(wǎng)絡(luò)層拓?fù)浞椒ǜ倪M(jìn)主要算法如下:
①對子網(wǎng)隊列、路由器隊列及連接隊列進(jìn)行初始化。
②將缺省網(wǎng)關(guān)IP地址加入路由器ipRouteTable隊列中。
③在對應(yīng)的拓?fù)湫畔煳募蟹謩e記錄路由器隊列及連接隊列信息、子網(wǎng)隊列記錄。
下面對路由表ipRouteTable結(jié)構(gòu)進(jìn)行分析,ipRouteTable列表見表1。
表1 ipRouteTable列表Table1 ipRouteTable
ipRouteDest是ipRouteTable路由信息的索引。ipRouteDest表示該條路由信息的目的地址,ipRoute Mask表示子網(wǎng)掩碼,我們能夠通過ipRouteDest和ipRouteMask得到該條路由信息對應(yīng)子網(wǎng)的信息。將從IP數(shù)據(jù)包中的目的地地與子網(wǎng)掩碼ipRoute Mask逐位進(jìn)行與運算,如果結(jié)果等于網(wǎng)絡(luò)地址ipRouteDest,則說明該IP數(shù)據(jù)包能夠在本路由器中找到對應(yīng)的路由,最終按照本條路由信息對IP數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)。
ipRouteIndex表示路由端口的索引值,該索引值與ifTable表中的接口索引值對應(yīng),IP數(shù)據(jù)包通過該接口轉(zhuǎn)發(fā)給下一個路由,由其進(jìn)行轉(zhuǎn)發(fā)或接收。拓?fù)浒l(fā)現(xiàn)過程中,對路由器端口表信息進(jìn)行分析,能夠獲得下一級網(wǎng)絡(luò)的網(wǎng)絡(luò)類型信息。ipRouteType表示路由類型:當(dāng)ipRouteType為indirect時,表示間接路由,意味著到達(dá)目標(biāo)地址還需要經(jīng)過其他的路由器。
當(dāng)ipRouteType為direct時,表示直接路由,意味目標(biāo)地址與該路由器直連,那么ipRouteDest表示目標(biāo)子網(wǎng)的網(wǎng)絡(luò)地址,而ipRouteNextHop表示了要到達(dá)該子網(wǎng)需通過的路由器端口地址。ipRouteProto表示本條路由是通過什么協(xié)議建立。路由項可通過OSPF或者RIP建立,也可管理員手動添加(local)。通過分析路由表ipRouteTable中的信息,可以得到路由器之間的連接關(guān)系,同時也能得到與路由器直連的子網(wǎng)信息。通過讀取ipRouteTable表中的ipRouteNextHop字段,能夠得到與該路由器相連的路由器信息。同時通過ipRouteDest和ipRouteMask,也能夠判斷ipRoute NextHop是否在ipRouteDest標(biāo)識的子網(wǎng)中。
每臺OSPF路由器通過相互之間發(fā)送鏈路狀態(tài)通告[17](Link-State Advertisement,LSA)來傳遞鏈路信息。鏈路狀態(tài)通告描述了與路由器相連鏈路狀態(tài)信息,可以通過獲取這樣的鏈路狀態(tài)信息來獲得網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。所以,可以通過獲取并分析LSA的方法進(jìn)行網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)。由于LSA封裝在LSU報文中,所以通過分析LSU報文便可以得到需要的網(wǎng)絡(luò)拓?fù)湫畔ⅰ?/p>
對從Router LSA和Network LSA中分析得出的關(guān)于傳輸網(wǎng)transit類型的連接關(guān)系信息進(jìn)行整合。找到Router LSA和Network LSA中DR接口IP地址相同的項,從Network LSA中找到與Router LSA路由器ID匹配的傳輸網(wǎng)地址。該算法的偽代碼如下:
網(wǎng)絡(luò)層拓?fù)洳杉K主要實網(wǎng)絡(luò)層拓?fù)洳⑼負(fù)錅y量獲得的拓?fù)湫畔⒋鎯Φ骄W(wǎng)絡(luò)拓?fù)湫畔熘?。該模塊采用基于SNMP協(xié)議和基于OSPF協(xié)議兩種不同的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法進(jìn)行網(wǎng)絡(luò)拓?fù)?,以基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法為基礎(chǔ),以基于OSPF的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法為輔助彌補基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法的不足。最后,將拓?fù)錅y量獲得的拓?fù)湫畔⒋鎯Φ骄W(wǎng)絡(luò)拓?fù)湫畔熘?。網(wǎng)絡(luò)層拓?fù)洳杉K工作流程如圖1所示。
根據(jù)拓?fù)淦瘘c信息初始化ipRouteTable隊列;其次,讀取ipRouteTable中存儲的路由器配置信息,判斷該路由器是對SNMP協(xié)議的支持情況。對支持SNMP協(xié)議的路由器使用SNMP拓?fù)淠K進(jìn)行拓?fù)湫畔⒉杉?,對不支持SNMP協(xié)議的路由器使用OSPF拓?fù)淠K進(jìn)行拓?fù)湫畔⒉杉?,并將采集到的路由器信息存入到ipRouteTable中。繼續(xù)遍歷ipRouteTable隊列,直到ipRouteTable為空為止。
圖1 網(wǎng)絡(luò)層拓?fù)洳杉K工作流程Fig.1 Work flow chart of the network layer topology acquisition module
本試驗的目的是驗證經(jīng)改進(jìn)后的網(wǎng)絡(luò)層拓?fù)渌惴▽W(wǎng)絡(luò)環(huán)境適應(yīng)性,測試環(huán)境是在實驗室中搭建,由6臺路由器{R1、R2、R3、R4、R5、R6}和一個節(jié)點主機構(gòu)成,如圖2所示。
試驗配置如下:
R1-使用OSPF路由協(xié)議,并開啟SNMP服務(wù);
R2-不使用OSPF路由協(xié)議,只開啟SNMP服務(wù);
R3-使用OSPF路由協(xié)議,并開啟SNMP服務(wù);
R4-使用OSPF路由協(xié)議,并開啟SNMP服務(wù);
R5-使用OSPF路由協(xié)議,未開啟SNMP服務(wù);
R6-使用OSPF路由協(xié)議,并開啟SNMP服務(wù)。
試驗設(shè)計如下:分別在節(jié)點主機開啟基于SNMP的網(wǎng)絡(luò)層拓?fù)浞椒ā⒒贠SPF的網(wǎng)絡(luò)層拓?fù)浞椒ê蚐NMP和OSPF結(jié)合的網(wǎng)絡(luò)層拓?fù)浞椒y試程序,進(jìn)行網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)。
通過3種網(wǎng)絡(luò)層拓?fù)浞椒ǐ@得的拓?fù)湫畔⑷鐖D3、4所示。
圖2 網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)方法實驗環(huán)境Fig.2 Network layer topology discovery experimental environment
通過試驗數(shù)據(jù)可以看出,在本試驗環(huán)境下基于SNMP的網(wǎng)絡(luò)層拓?fù)浞椒ǐ@取到了6條路由器信息,基于OSPF的網(wǎng)絡(luò)層拓?fù)浞椒ǐ@取到2條路由器信息,SNMP、OSPF相結(jié)合的網(wǎng)絡(luò)層拓?fù)涓倪M(jìn)方法獲取到7條拓?fù)湫畔ⅰ?/p>
但是,試驗環(huán)境中有6臺路由器,而SNMP、OSPF相結(jié)合的網(wǎng)絡(luò)層拓?fù)涓倪M(jìn)方法獲取到了7條路由器信息。從實驗環(huán)境示意圖中可以發(fā)現(xiàn),125.223.50.2和125.223.60.2兩個IP地址屬于同一臺路由器,是同一臺路由器的不同端口地址,這就是文中所說同名IP問題,需要通過拓?fù)湫畔⒎治瞿K的處理才能夠解決。所以,基于SNMP的網(wǎng)絡(luò)層拓?fù)浞椒ǐ@取到了5條路由器信息,基于OSPF的網(wǎng)絡(luò)層拓?fù)浞椒ǐ@取到2條路由器信息,SNMP、OSPF相結(jié)合的網(wǎng)絡(luò)層拓?fù)涓倪M(jìn)方法獲取到6條拓?fù)湫畔?。所以,在本實驗環(huán)境下,SNMP、OSPF相結(jié)合的網(wǎng)絡(luò)層拓?fù)涓倪M(jìn)方法具有更大的網(wǎng)路拓?fù)浞秶哂懈玫木W(wǎng)絡(luò)環(huán)境適應(yīng)性。
圖3 基于SNMP協(xié)議的網(wǎng)絡(luò)層拓?fù)浞椒ǐ@得的網(wǎng)絡(luò)層拓?fù)湫畔ig.3 SNMP-based network layer topology of the network layer topology information
圖4 基于OSPF協(xié)議的網(wǎng)絡(luò)層拓?fù)浞椒ǐ@得的網(wǎng)絡(luò)層拓?fù)湫畔ig.4 OSFP-based network layer topology of the network layer topology information
本文分析和比較現(xiàn)有的網(wǎng)絡(luò)安全態(tài)勢評估的研究現(xiàn)狀,通過對現(xiàn)有的網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)方法進(jìn)行總結(jié),提出一種融合多種網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)技術(shù)的網(wǎng)絡(luò)安全態(tài)勢感知方法,有效彌補單種網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法的不足。經(jīng)過試驗驗證,該方法具有可行性,為進(jìn)一步開展網(wǎng)絡(luò)安全態(tài)勢感知等相關(guān)研究奠定基礎(chǔ)。
[1]韋勇,連一峰.基于日志審計與性能修正算法的網(wǎng)絡(luò)安全態(tài)勢評估模型[J].計算機學(xué)報,2009,32(4):763-772.
[2]賀英杰,王慧強,周仁杰.面向網(wǎng)絡(luò)態(tài)勢感知的實時網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)[J].計算機工程,2009,35(24):127-129.
[3]劉玉華,余勝生,周敬利,等.基于AFT的鏈路層自動拓?fù)浒l(fā)現(xiàn)算法[J].小型微型計算機系統(tǒng),2004,25(12):2211-2214.
[4]Donnet B,Friedman T.Internet topology discovery:A survey[J]IEEE Communications Surveys and Tutorials,2007(9):115-119.
[5]劉海華,倪少權(quán),王萍萍,等.一種基于SNMP的網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)算法[J].計算機安全,2007(9):52-53.
[6]莊鎖法,龔儉.網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)綜述[J].計算機技術(shù)與發(fā)展,2007,17(10):80-91.
[7]施鋒,吳秋峰.網(wǎng)絡(luò)多層拓?fù)浒l(fā)現(xiàn)算法的分析[J].網(wǎng)絡(luò)信息技術(shù),2004,23(3):30-32.
[8]李明江.SNMP簡單網(wǎng)絡(luò)管理協(xié)議[M].電子工業(yè)出版社,2007.
[9]張干.基于OSPF路由協(xié)議的實時網(wǎng)絡(luò)拓?fù)渌阉鞯难芯颗c實現(xiàn)[D].北京:北京郵電大學(xué),2006:31-39.
[10]凌軍,曹陽,李莉,等.基于ARP和SNMP的網(wǎng)絡(luò)拓?fù)渥詣影l(fā)現(xiàn)算法[J].武漢大學(xué)學(xué)報:理學(xué)版,2001(2):67-70.
[11]何鵬,邱建林.幾種網(wǎng)絡(luò)拓?fù)渌勋@方法的分析研究[J].微機發(fā)展,2005,15(7):17-23.
[12]閆興篡,殷建平,蔡志平.網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法綜述[J].計算機工程與應(yīng)用,2007,43(14):131-135.
[13]倪勇,史懷洲,朱培棟.基于OSPF鏈路狀態(tài)數(shù)據(jù)庫構(gòu)建網(wǎng)絡(luò)拓?fù)鋄J].計算機技術(shù)與發(fā)展,2009,19(3):1-4.