對于OSPF動態(tài)路由協(xié)議來說,通過認(rèn)證機(jī)制,可以幫助其檢查收到的所有相關(guān)數(shù)據(jù)包是否是完整的和可靠的。
在通常情況下,存在明文認(rèn)證和MD5認(rèn)證兩種認(rèn)證方式,前者可以在路由信息后面附上一段明文密碼,接收方可以據(jù)此進(jìn)行比對,如果比對成功說明該數(shù)據(jù)包是可信的。該認(rèn)證方式其實(shí)并不安全,一般不建議使用。后者可以通過哈希函數(shù),對每一個(gè)數(shù)據(jù)包進(jìn)行數(shù)字簽名。當(dāng)一個(gè)OSPF數(shù)據(jù)包在發(fā)送給對方的時(shí)候,需要對其進(jìn)行認(rèn)證信息的添加操作。即將其和一個(gè)KEY結(jié)合起來進(jìn)行MD5的哈希函數(shù)運(yùn)算,得到一段128位的校驗(yàn)信息。
之后將其和路由信息一起傳送給對方,當(dāng)對方接收到數(shù)據(jù)包之后,會將路由信息和認(rèn)證信息進(jìn)行剝離,將路由信息和自己存儲的KEY進(jìn)行MD5哈希計(jì)算,如果計(jì)算結(jié)果和接收到的認(rèn)證信息相同,說明數(shù)據(jù)包在傳遞過程中沒有被篡改,而且雙方擁有的KEY相同,說明OSPF數(shù)據(jù)包來源是可靠的。同明文認(rèn)證相比,MD5認(rèn)證的安全性更高,所以建議使用改種認(rèn)證方式,對OSPF數(shù)據(jù)包進(jìn)行檢查。注意一旦開啟認(rèn)證機(jī)制,其會對OSPF的所有類型的數(shù)據(jù)包進(jìn)行校驗(yàn)。因此,這就要求所有參與鄰居關(guān)系的路由器擁有相同的KEY。
對于明文認(rèn)證來說,配置起來很簡單,在接口模式下使用“ip ospf authentication xxx”命令創(chuàng)建一個(gè)KEY,這里的“xxx”表示密碼,注意大小寫敏感。在接口上開啟OSPF認(rèn)證,存在兩種方式。例如對于Aera 0來說,存在R1和R2兩臺路由器,兩者通過S0/0/1接口連接,因?yàn)猷従雨P(guān)系已經(jīng)建立,所以可以使用“ip ospf authentication”命令開啟認(rèn)證。也可以在路由協(xié)議模式下,使用“aera 0 authentication”命 令,將Aera 0區(qū)域中的所有路由器都開啟認(rèn)證。在一個(gè)復(fù)雜的網(wǎng)絡(luò)環(huán)境中,如果需要很多接口都可以認(rèn)證的話,使用該方法新的比較簡單,但是其缺點(diǎn)是精確性較差,不能精確的指定某個(gè)端口開啟或者關(guān)閉認(rèn)證功能。
對于MD5認(rèn)證來說,具體的步驟與上述大體相同。即首先在相關(guān)路由器的目標(biāo)接口下配置KEY,命令格式為“ip ospf message-digestkey x md5 xxx”,其中的“x”為 Key的 ID號,“xxx” 為Key的內(nèi)容。對于ID號來說,鄰居雙方必須保持一致。用戶可以根據(jù)需要?jiǎng)?chuàng)建多個(gè)KEY,但是在使用時(shí)和EIGRP認(rèn)證存在差異。對于EIGRP協(xié)議的MD5認(rèn)證來說,當(dāng)存在多個(gè)ID號(例如1、2、3等)時(shí),其永遠(yuǎn)會使用ID號1的Key,只有該ID不生效的時(shí)候,才會使用到ID為2的KEY。
但是OSPF與之截然不同,在沒有檢測到對方使用哪個(gè)Key的情況下,本地路由器會將所有的Key全部發(fā)送出去。也即對于一個(gè)OSPF的Hello包來說,本地路由器會將其復(fù)制為多份,分別使用不同ID的Key對其進(jìn)行校驗(yàn),并將其全部發(fā)送出去,對方只要有一個(gè)Key能夠與之匹配即可。例如,如果在輸入Key時(shí),首先設(shè)置了Key1和Key3,然后設(shè)置Key3的話,那么Key2會優(yōu)先使用。如果檢測到對方也使用了Key2,那么Key1和Key3就不會使用了。這樣做的好處在于在更改Key的過程中,可以防止鄰居關(guān)系會斷掉。
當(dāng)創(chuàng)建了Key之后,就需要開啟MD5認(rèn)證了。我們可以在接口模式下使用“ip ospf authentication message-digest”的命令開啟認(rèn)證,也可以執(zhí)行“area 0 authenticaton messagedigest”的命令,并在指定的區(qū)域(例如區(qū)域0)中開啟認(rèn)證。
實(shí)際上,同EIGRP協(xié)議的認(rèn)證模式相比,OSPF安全認(rèn)證方式要復(fù)雜的多。從大的范圍來看,OSPF認(rèn)證分為明文認(rèn)證和MD5認(rèn)證。從OSPF協(xié)議自身來說,又可以分為接口認(rèn)證、區(qū)域認(rèn)證和虛鏈路認(rèn)證。這些認(rèn)證方式均支持前面談到的明文和MD5認(rèn)證,不管哪一種認(rèn)證方式,都必須考慮設(shè)置和啟用密鑰的方法。
這里以具體的實(shí)驗(yàn)來說明如何實(shí)現(xiàn)不同類型的認(rèn)證方式。例如在Aera 0中存在R1和R2兩臺路由器,R1的e0/0接口和R2的e/0接口連接。R2為ABR邊界路由器,R2和R3位于Aera1 區(qū)域,R2的e0/1接口和R3的e0/0接 口 連 接,R3為 ABR邊界路由器,R3和R4位于Aera 2區(qū)域,R3的e0/1接口和R4的e0/0接口連接。很顯然這是一個(gè)不規(guī)則的區(qū)域,因?yàn)閰^(qū)域2是連接在區(qū)域1上的,并沒有個(gè)區(qū)域0直接連接。
在R1控制臺上執(zhí)行“config t” 命 令,進(jìn)入全局配置模式。執(zhí)行“int ethernet 0/0”,“ip ospf authentication-key password”命 令,在R1的e0/0接口下設(shè)置OSPF明文認(rèn)證密碼。這里密鑰為“password”,當(dāng)然也可以根據(jù)實(shí)際需要設(shè)置更加復(fù)雜的密碼。執(zhí)行“do ospf ip os nei”命令,查看R1的鄰居關(guān)系信息,可以看到其鄰居關(guān)系處于正常狀態(tài)。執(zhí)行“ip ospf authentication”命令,在該接口下啟用明文認(rèn)證功能,再次查看鄰居關(guān)系,發(fā)現(xiàn)鄰居關(guān)系已經(jīng)消失了。在其鄰居R2上執(zhí)行“config t”,“int ethernet 0/0”,“ip ospf authenticationkey password”,“exit”,“ip ospf authentication”命令,同樣在R2的e0/0接口上配置鑰匙并啟用OSPF明文認(rèn)證,在R1上查看鄰居信息,發(fā)現(xiàn)恢復(fù)了與R2鄰居關(guān)系。
當(dāng)然,OSPF會在鄰居之間每隔40秒發(fā)送Hello包,當(dāng)達(dá)到該時(shí)間后,才會判斷鄰居關(guān)系是否正常。但明文認(rèn)證安全性較低,為了安全起見需要在接口下使用MD5認(rèn)證方式。方法是在R1的上述接口下執(zhí)行“ip ospf message-digest-key 1 md5 password”命令,設(shè)置ID為1的MD5密鑰。執(zhí)行“ip ospf authentication message-digest”命令,在端口下激活MD5認(rèn)證功能。對應(yīng)的,在R2上執(zhí)行同樣的操作,為其配置端口模式下的MD5認(rèn)證功能。這樣,兩者就可以安全可靠的發(fā)送OSPF數(shù)據(jù)包了。
如果想針對某個(gè)區(qū)域(例如針對區(qū)域1)實(shí)現(xiàn)認(rèn)證功能,同樣需要在對應(yīng)接口上啟用密鑰,這里主要針對MD5認(rèn)證方式進(jìn)行操作。例如對于區(qū)域1來說,存在R2和R3兩臺路由器。在R2上 執(zhí) 行“config t”,“int ethernet 0/1”,“ip ospf message-digest-key 1 md5 password”“exit”命令,為R2的e/1接口設(shè)置密鑰。注意,設(shè)置密鑰需要在接口下操作,但是啟用認(rèn)證功能需要在OSPF進(jìn)程模式下進(jìn)行。執(zhí)行“router os 1”命令,進(jìn)入OSPF進(jìn)程配置模式,執(zhí)行“area 1 authentication message-digest”命令,針對區(qū)域1啟用MD5認(rèn)證功能。對應(yīng)的,在R3上執(zhí)行“config t”,“int ethernet 0/0”,“ip ospf message-digest-key 1 md5 password”“exit”,“router os 1”,“area 1 authentication messagedigest”命令,配置并啟用基于區(qū)域的MD5認(rèn)證模式。
因?yàn)樯鲜鰧?shí)驗(yàn)網(wǎng)絡(luò)環(huán)境是不規(guī)則的OSPF區(qū)域,為了保證網(wǎng)路個(gè)正常運(yùn)作,需要在R2和R3之間創(chuàng)建虛鏈路,讓區(qū)域2可以和區(qū)域0建立相互傳送路由信息。如果想對該虛鏈路配置和啟用MD5認(rèn)證,首先在R2上執(zhí)行“router os 1”命令,進(jìn)入OSPF進(jìn)程配置模式。執(zhí)行“area 1 virtual-link 33.1.1.1 message-digestkey 1 md5 password”命令,針對該虛鏈路設(shè)置MD5密鑰。這里的“33.1.1.1”為R3的Router-ID。
執(zhí)行“area 1 virtuallink 33.1.1.1 authenti cation message-digest”命令,針對該虛鏈路啟用MD5認(rèn)證。對應(yīng)的,在R3執(zhí)行“router os 1”,“area 1 virtual-link 22.1.1.1 message-digest-key 1 md5 password”,“area 1 virtual-link 22.1.1.1 authentication messagedigest”命令,針對該虛鏈路調(diào)用該鑰匙啟用MD5認(rèn)證,這 里 的“22.1.1.1”為 R2的Router-ID。執(zhí)行“do sh run | se ospf”命令來查看上述命令信息。這樣,在指定的虛鏈路上就可以安全可靠的傳送OSPF數(shù)據(jù)包了。
接下來針對虛鏈路驗(yàn)證進(jìn)一步進(jìn)行分析測試,先在R2和R3之間取消虛鏈路MD5認(rèn)證,之后在區(qū)域0中啟用區(qū)域認(rèn)證模式,執(zhí)行“router os 1”,“area 0 authentication messagedigest”命令啟用MD5驗(yàn)證。因?yàn)樯鲜龌诮涌诘牟僮饕呀?jīng)在區(qū)域0中配置了MD5密鑰,所以這里直接啟用該密鑰即可。在R2上執(zhí)行同樣的操作,來激活MD5認(rèn)證模式。當(dāng)區(qū)域0激活了MD5認(rèn)證模式后,對R2和R3之間的虛鏈路是否會造成影響 呢? 在 R1、R2、R3和 R4上分別執(zhí)行“clear ip os process”命 令,在“Reset ALL OSPF Processes?”欄中輸入“y”,重啟理OSPF進(jìn)程重新建立鄰居信息。
之后在R2上執(zhí)行“sh ip os neighb6or”命令,可以看到上述虛鏈路信息已經(jīng)消失了。這就說明了一個(gè)問題,當(dāng)區(qū)域0啟用了認(rèn)證之后,對應(yīng)的虛鏈路也必須啟用驗(yàn)證模式,否則無法傳送路由信息。按照上述方法,對R2和R3之間的虛鏈路配置可啟用MD5驗(yàn)證,其鄰居關(guān)系就會順利恢復(fù)。如果不對該虛鏈路進(jìn)行認(rèn)證,也可以采取變通的方式加以解決,即所有與該虛鏈路有關(guān)的路由器必須做基于區(qū)域0的認(rèn)證。在本例中,可以在R2和R3上啟用基于區(qū)域0的認(rèn)證。R3雖然沒有和區(qū)域0直接連接,但是存在虛鏈路打通R3和區(qū)域0的連接。根據(jù)以上分析不難看出,虛鏈路實(shí)際上是屬于區(qū)域0的。
對于接口來說,不管是設(shè)置密鑰還是啟用密鑰,都是在接口模式下操作,接口只跟相應(yīng)接口所在的鏈路有關(guān)。對于區(qū)域認(rèn)證,是在接口模式下設(shè)置密碼,在OSPF進(jìn)程模式下啟用密鑰,區(qū)域認(rèn)證是所有在相應(yīng)區(qū)域里面的接口認(rèn)證。對于虛鏈路來說,配置和啟用MD5密鑰均在OSPF進(jìn)程模式下進(jìn)行。注意,OSPF的多種認(rèn)證類型可以同時(shí)存在,例如在區(qū)域0中使用了接口驗(yàn)證后,也可以同時(shí)啟用區(qū)域驗(yàn)證。
對于虛鏈路認(rèn)證來說,其本質(zhì)是基于端口的驗(yàn)證,因?yàn)樵诒纠刑撴溌吩趨^(qū)域0和區(qū)域2之間打通了一條虛擬通道,因此其是特殊類型的接口認(rèn)證方式。在OSPF中配置虛鏈路的方法很簡單,例如在本例中只需在R2的OSPF進(jìn)程模式下執(zhí)行“area 1 virtuallink 33.1.1.1”,在 R3 上執(zhí)行“area 1 virtual-link 22.1.1.1”命令,虛鏈路就建立起來了。虛鏈路隸屬于區(qū)域0,因此區(qū)域0做驗(yàn)證后,虛鏈路必須做認(rèn)證或者有關(guān)虛鏈路的路由器必須做區(qū)域0的認(rèn)證。虛鏈路做認(rèn)證,區(qū)域0則不需要做認(rèn)證。