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