摘 要:OSPF(Open Shortest Path First,開放最短路徑優(yōu)先)是一種用于通信設(shè)備上基于SPF(Shortest Path First,最短路徑優(yōu)先)算法的典型的鏈路狀態(tài)路由協(xié)議,著重介紹了OSPF協(xié)議的報文收發(fā)類型以及認(rèn)證機(jī)制,并結(jié)合實際應(yīng)用,分析認(rèn)證的安全性以及如何進(jìn)行攻擊的防御。
關(guān)鍵詞:路由協(xié)議;IGP;安全
中圖分類號:TP393.08文獻(xiàn)標(biāo)識碼:A文章編號:1672-3198(2008)01-0266-01
OSPF(Open Shortest Path First,開放最短路徑優(yōu)先)是一種用于通信設(shè)備上基于SPF(Shortest Path First,最短路徑優(yōu)先)算法的典型的鏈路狀態(tài)路由協(xié)議,發(fā)送報文有如下五種類型分別是:第一,Hello數(shù)據(jù)包,運行OSPF協(xié)議的路由器每隔一定的時間發(fā)送一次Hello數(shù)據(jù)包,用以發(fā)現(xiàn)、保持鄰居(Neighbors)關(guān)系并可以選舉DR/BDR。第二,鏈路狀態(tài)數(shù)據(jù)庫描述數(shù)據(jù)包(DataBase Description,DBD)是在鏈路狀態(tài)數(shù)據(jù)庫交換期間產(chǎn)生,它的主要作用有三個:選舉交換鏈路狀態(tài)數(shù)據(jù)庫過程中的主/從關(guān)系、確定交換鏈路狀態(tài)數(shù)據(jù)庫過程中的初始序列號和交換所有的LSA數(shù)據(jù)包頭部。第三,鏈路狀態(tài)請求數(shù)據(jù)包(LSA-REQ)用于請求在DBD交換過程發(fā)現(xiàn)的本路由器中沒有的或已過時的LSA包細(xì)節(jié)。第四,鏈路狀態(tài)更新數(shù)據(jù)包(LSA-Update)用于將多個LSA泛洪,也用于對接收到的鏈路狀態(tài)更新進(jìn)行應(yīng)答。如果一個泛洪LSA沒有被確認(rèn),它將每隔一段時間(缺省是5秒)重傳一次。第五,鏈路狀態(tài)確認(rèn)數(shù)據(jù)包(LSA-Acknowledgement)用于對接收到的LSA進(jìn)行確認(rèn)。該數(shù)據(jù)包會以組播的形式發(fā)送。
最新的RFC2328規(guī)定OSPF協(xié)議的五種報文都有相同OSPF報文頭格式,其中AuType字段定義了認(rèn)證類型(目前提供的三種認(rèn)證類型分別為無認(rèn)證、簡單明文認(rèn)證、MD5認(rèn)證),并且在OSPF報文頭中包含8個字節(jié)的認(rèn)證信息,OSPF的校驗和不計算這8個字節(jié)的認(rèn)證信息。下面我們具體分析一下OSPF的兩種帶認(rèn)證的工作模式。
簡單明文認(rèn)證。認(rèn)證類型為1,在所有OSPF報文采用8個字節(jié)的明文認(rèn)證,不能超過該長度,在物理線路中傳輸時,該口令是可見的,只要監(jiān)聽到該報文,口令即泄漏,防攻擊能力脆弱,這種認(rèn)證方式的使用只有在條件限制,鄰居不支持加密認(rèn)證時才用。
MD5認(rèn)證。認(rèn)證類型為2,OSPF采用的一種加密的身份認(rèn)證機(jī)制。在OSPF報文頭中,用于身份驗證的域包括:key ID、MD5加密后認(rèn)證信息長度(規(guī)定16字節(jié))、加密序列號。實際16字節(jié)加密后的信息在整個IP報文的最后,CRC校驗碼之前。key ID標(biāo)識了共享密鑰的散列函數(shù),建立鄰居關(guān)系的兩個設(shè)備來說key ID必需相同。加密序列號是一個遞增整數(shù),遞增的幅度不固定,只要后一個協(xié)議包的序列號肯定不能比前一個小就行了,一般以設(shè)備啟動時間秒數(shù)為序列號值。16字節(jié)的加密信息產(chǎn)生過程如下:
第一步、在OSPF分組報文的最后(IP報文CRC之前)寫入16字節(jié)的共享密鑰。
第二步、MD5散列函數(shù)的構(gòu)造,將第一步生成的消息,將其規(guī)范為比512字節(jié)小8個字節(jié)的信息(如果不夠可以填充),然后添加八個字節(jié)(內(nèi)容為填充前實際報文長度),這樣第二步構(gòu)成的散列函數(shù)剛好是512字節(jié)的整數(shù)倍。
第三步、用MD5算法對第二步中的散列函數(shù)計算其散列值,產(chǎn)生16字節(jié)的消息摘要。
第四步、用第三步中產(chǎn)生的16字節(jié)散列值替換第一步已經(jīng)寫入到OSPF分組報文中的公共密鑰,完成加密過程。
從第一步到第四步過程中沒有計算該16字節(jié)信息的OSPF校驗和。
分析完認(rèn)證后,我們再分析一下認(rèn)證的安全性問題。
無認(rèn)證時,對通信設(shè)備的攻擊只要能“竊入”物理鏈路,即可以合法的身份進(jìn)行攻擊,篡改路由表,造成嚴(yán)重后果。
簡單明文認(rèn)證時,對通信設(shè)備的攻擊也只要能“竊入”物理鏈路,監(jiān)聽物理鏈路上的OSPF路由協(xié)議報文,直接獲取明文口令后,即可使用該口令以合法的身份進(jìn)行攻擊。
MD5認(rèn)證時,對通信設(shè)備的攻擊即使“竊入”物理鏈路,監(jiān)聽物理鏈路上的OSPF路由協(xié)議報文,比較難以進(jìn)行攻擊。由于MD5算法為單向加密算法,即任意兩段明文數(shù)據(jù),加密以后的密文不能是相同的,而且任意一段明文數(shù)據(jù),經(jīng)過加密以后,其結(jié)果必須永遠(yuǎn)是不變的,而且MD5采用128位加密方法,破譯MD5的加密報文的手段包括“暴力搜尋”沖突的函數(shù),“野蠻攻擊”用窮舉法從所有可能產(chǎn)生的結(jié)果中找到被MD5加密的原始明文,實行起來都相當(dāng)困難(一臺機(jī)器每秒嘗試10億條明文,那么要破譯出原始明文大概需要10的22次方年)。所以入侵者很難獲取MD5認(rèn)證口令或者說其獲取口令的代價值相當(dāng)?shù)母撸恍┲匾ㄐ殴?jié)點上,即使入侵者愿意花高昂的代價獲取到密碼還是有預(yù)防措施將非受信的入侵者拒之門外。入侵者試圖攻擊通信設(shè)備,其有兩種方法,一種是以新加入的鄰居的方式,一種是以仿真合法鄰接通信設(shè)備的方式。下面我們著重研究一下這幾種攻擊方式的處理措施。
對于第一種以新鄰居方式的攻擊手段,現(xiàn)在多數(shù)通信設(shè)備都已經(jīng)實現(xiàn)訪問控制,即該接口上僅允許接收源IP地址為合法鄰居的OSPF報文,來自入侵者企圖以該網(wǎng)段新鄰居的方式加入,沒有管理員配置,鄰居關(guān)系始終無法建立,無法入侵修改路由表。
對于第二種以仿真合法鄰接通信設(shè)備的方式攻擊,而且該入侵者還獲取了口令,這個入侵檢測和預(yù)防都復(fù)雜很多。不過我們可以根據(jù)鄰接OSPF配置特點,目的地址為保留組播地址,IP報文頭中TTL為1,入侵者發(fā)出來的報文必需向保留組播地址發(fā)送,所以被攻擊設(shè)備和被“仿真”的合法設(shè)備都能收到該報文,這時候被“仿真”設(shè)備能發(fā)現(xiàn)網(wǎng)絡(luò)上有人冒用自己名義,即可以采用告警更換密碼、檢查線路安全等方式杜絕攻擊。
其他常規(guī)的安全防護(hù)包括設(shè)備已經(jīng)通信介質(zhì)盡量保證物理安全,密碼設(shè)置一定的復(fù)雜度,定期更換密碼,密碼加密后保存到通信設(shè)備的存儲介質(zhì)上等一系列措施必不可少,還需要保障通信設(shè)備不會被遠(yuǎn)程入侵,簡單防御手段是關(guān)閉所有的遠(yuǎn)程訪問通道,只能通過串口通過口令校驗進(jìn)行訪問,即使允許遠(yuǎn)程訪問,也可以多加限制,如只允許哪些主機(jī)地址,通過口令進(jìn)行訪問,并且進(jìn)行登陸攻擊監(jiān)控,在指定的時間內(nèi),如果試圖登陸的最大次數(shù)超過所給定的次數(shù)的話,系統(tǒng)將拒絕所有的登陸嘗試。