在部署路由協(xié)議的過程中,可能會出現(xiàn)一些惡意攻擊者,其會偽裝成網(wǎng)路中的合法用戶,并開啟使用相關(guān)路由協(xié)議的路由器,之后和網(wǎng)絡(luò)建立關(guān)聯(lián)(例如連接到某條網(wǎng)線上等),向網(wǎng)絡(luò)傳送一些錯誤的路由信息來破壞正常的路由表。為了防止出現(xiàn)這種情況,可以在網(wǎng)絡(luò)中路由協(xié)議之間的認(rèn)證機制,從而有效防止錯誤路由來破壞正常的路由表,并忽略一些惡意的路由更新。
對于EIGRP協(xié)議,只能使用安全的MD5認(rèn)證機制。此外,在EIGRP協(xié)議中對于MD5認(rèn)證功能進行了優(yōu)化,在其中添加了一個KEY值(密鑰)。
例如當(dāng)路由器R1向路由器R2發(fā)送一段路由信息或EIGRP數(shù)據(jù)包,R1需要對該數(shù)據(jù)進行認(rèn)證的計算,同時R2在接收后會對其進行校驗。具體過程是R1會使用一個Key密鑰對EIGRP數(shù)據(jù)包進行哈希計算,得到一個驗證碼,該驗證碼不僅包含EIGRP數(shù)據(jù)包的哈希值,還結(jié)合了一個Key值。注意,在該認(rèn)證碼中是不包含Key的密鑰信息的。該驗證碼和路由器信息被整合在一起發(fā)送給R2,其一為EIGRP的數(shù)據(jù)包,其二為認(rèn)證信息。R2不能將EIGRP數(shù)據(jù)包直接接收并放入拓?fù)浔?,而必須判斷其是否合法,其一為是否為可信的源發(fā)送過來的,其二其內(nèi)容是否完整,在傳遞過程中是否被篡改過。
R2會結(jié)合自己所掌握的Key密鑰,通過MD5的哈希函數(shù)對該EIGRP數(shù)據(jù)包進行計算,得到對應(yīng)校驗信息。注意,MD5認(rèn)證機制對于路由信息是不加密的,其僅僅讓接收方來判斷其是否可靠。對于EIGRP認(rèn)證的Key來說,如果兩臺路由器的Key是一致的,兩者就可以通過MD5認(rèn)證機制來認(rèn)證所有的EIGRP數(shù)據(jù)包,同時保持兩者是可信任的。
對于EIGRP的MD5認(rèn)證機制來說,Key會攜帶在路由更新的Md5哈希值中,用來進行相應(yīng)計算,并將生成的驗證碼傳遞出去。例如對于R1和R2來說,需要在同一個時間段內(nèi)使用同一個Key進行認(rèn)證。因此在進行配置時首先在路由器上配置Key,這就需要在路由器上創(chuàng)建一個Key Chain(鑰匙鏈),在一個Key Chain下可以定義多個Key,首先需要定義第一個Key,對于Key來說存在多個參數(shù),比較重要是Key String(即Key的密鑰串),兩臺路由器會直接比對該Key String,若匹配則驗證通過。
對 于“Send Lifttime和“Accept Lifetime”參數(shù)來說,分別用于接收數(shù)據(jù)進行校驗(即確定合適的時間范圍將Key附加在路由信息尾部),什么時候用來發(fā)送驗證數(shù)據(jù)。這兩個參數(shù)就涉及到Key的生效時間問題。在默認(rèn)情況下,可以永遠(yuǎn)進行發(fā)送和校驗。Key使用ID號進行標(biāo)識,其順序從1開始累加。路由器會使用Key Chain中尋找第一個可用的激活的Key來驗證計算需要發(fā)送的路由信息,在路由器接收路由信息并對其進行校驗時,會檢測自身所有Key,確定一個匹配的Key進行校驗操作。
注意,在R1發(fā)送的驗證碼中不包含Key的任何密鑰信息,即R1使用某個Key密鑰對EIGRP數(shù)據(jù)包進行了MD5哈希計算,得到128位的驗證碼,該驗證碼是不包含密鑰的,也無法對其進行逆向解析得到密鑰,當(dāng)將其發(fā)送給R2時,會攜帶一個Key的ID號,告訴R2其使用的Key Chain中的哪個Key密鑰,在R2對其進行校驗時,會自動從自身的Key Chain中取出正確的Key密碼進行校驗??梢钥闯觯瑢嶋H傳遞的是Key的ID號,因此無需擔(dān)心Key密鑰的泄漏問題。
在配置EIGRP的認(rèn)證機制前需要檢測并確認(rèn)EIGRP的其他配置是否正常。然后定義認(rèn)證類型,接下來需要考慮使用Key的數(shù)量,對于安全性要求較高的網(wǎng)絡(luò)來說需要使用更多的Key來實現(xiàn)認(rèn)證要求。
例如對于本例中的R1和R2來說,其連接兩個不同的網(wǎng)段。對于前者來說,其Fa 0/0接連接的網(wǎng) 址 為172.16.1.1./24,S0/0/1接口的地址為192.168.1.101/24,對 于 后者來說,其Fa 0/0接連接的網(wǎng)址為172.16.2.2./24,S0/0/1接口的地址為192.168.1.102/24。在路由器上執(zhí)行“show ip route”命令來查看網(wǎng)絡(luò)配置信息。在R1和R2分別執(zhí)行“Ping 192.168.1.102” 和“Ping 192.168.1.101”,來檢測連通性。執(zhí)行“configure t”命令,在R1中進入全局配置模式。執(zhí)行“route eigrp 100”命令配置基本的EIGRP,其自治號為100。執(zhí)行“no auto-summary”命令關(guān)閉自動匯總功能。執(zhí)行“network 172.16.1.0 0.0.0.0”,“network 192.168.1.0”命令將兩個直連網(wǎng)段發(fā)布進去。在R2上執(zhí)行對應(yīng)的配置。這樣兩臺路由器就會建立鄰居關(guān)系。執(zhí)行“end”,“show ip eigrp”命令可查看鄰居關(guān)系信息。
在配置EIGRP認(rèn)證協(xié)議時,需要在對應(yīng)的接口下進行配置,即對鄰居關(guān)系進行認(rèn)證的接口,并將Key Chain綁定到該接口上。對于R1和R2來說,可以在兩者的S0/0/1接口上進行認(rèn)證配置。對于兩者的Fa 0/0接口來說,并沒有連任何鄰居,對其開啟安全認(rèn)證是沒有意義的,可以將其配置為被動端口,禁止其向外發(fā)送EIGRP數(shù)據(jù)包。在兩臺路由器上需要創(chuàng)建Key Chain,其名稱并不會跟隨校驗信息進行傳送,所以其名稱可以任意設(shè)定。通過在Key Chain中配置所需的Key密鑰,并根據(jù)需要設(shè)置其生存時間。
要開啟了配置EIGRP的認(rèn)證,需要在建立鄰居關(guān)系的接口上執(zhí)行相關(guān)的指令。例如在R1的全局模式下執(zhí)行“interface Serial0/0/1” 命 令, 進入 該 接 口。 執(zhí) 行“ip authentication mode eigrp 100 md5”命令,開啟MD5認(rèn)證模式,此處AS自治號為100。對于R2執(zhí)行的是同樣的命令。一旦開啟了MD5認(rèn)證,如不配置Key chain鄰居關(guān)系將無法建立。之后需創(chuàng)建Key chain,在R1上執(zhí)行“key chain chain01”,“key 1”,“key-string password1”,“key 2”,“keystring password2”命 令,創(chuàng)建名為“chain01”的Key chain,在其中創(chuàng)建兩個Key,密鑰分別為“password1”和“password2”。
對應(yīng)的,在R2上執(zhí)行相應(yīng)的命令,來創(chuàng)建對應(yīng)的Key chain和具體的密鑰。兩者的Key的名稱和密鑰必須一致,Key chian的名稱可以不同。對于不同的Key,可以指定其生存時間。例如執(zhí)行“show clock”命令,查看當(dāng)前時間??梢愿鶕?jù)需要執(zhí)行“clock set”命令,來修改時間信息。在上述R1上可以將指令修改為 “key chain chain01”,“key 1”,“key-string password1”,“acceptlifetime 09:00:00 Jan 1 2017 infinite”,“sendlifetime 09:00:00 Jan 1 2017 09:00:00 Jan 31 2017”,“key 2”,“key-string password1”,“acceptlifetime 09:00:00 Jan 26 2017 infinite”,“sendlifetime 09:00:00 Jan 25 2017 infinite”,這 樣,對于Key1來說,其可以在2017年1月1日的9點到永久時間之內(nèi)接收認(rèn)證信息,可以在2017年1月1日9點到2017年1月31日9點之間發(fā)送R2發(fā)來的認(rèn)證信息。
對應(yīng)的,在R2上可以設(shè)置對應(yīng)Key的生存時間參數(shù)。接下來需要將Key chain綁定到接口,在R1上執(zhí)行“interface Serial 0/0/1”,“ip authentication keychain eigrp 100 chain01”命令,完成綁定操作。對應(yīng)的在R2上執(zhí)行“interface S e r i a l 0/0/1”,“i p authentication key-chain eigrp 100 chain02”命令,完成綁定操作。這樣,EIGRP的認(rèn)證就配置完成了。在R1或R2上執(zhí)行“show key chain”命令,來檢查EIGRP的認(rèn)證配置信息。注意,在Key 的“Accept lifetime”和“Send lifetime”欄的右側(cè)如果沒顯示“Valid noe”項,表示其可以進行接收和發(fā)送,否則表示其在當(dāng)前時間處于不可用狀態(tài)。
執(zhí) 行“show ip eigrp interfaces detail”命令可查看是否開啟了Md5認(rèn)證及Key chain信息。執(zhí)行“debug eigrp packet”命令,了解其在傳遞EIGRP數(shù)據(jù)包的信息。在“received packet with MD5 authentication key id =X”欄中顯示在接收認(rèn)證信息是使用的Key的ID號,可以看到R1與R2使用相同的Key進行校驗。如果兩臺路由器的Key不匹配,會產(chǎn)生諸如“pkt key id=x,authentication mismathch”等內(nèi)容,說明由于Key不匹配而忽略了在對對方的EIGRP數(shù)據(jù)包。顯示“invalid authentication”說明認(rèn)證產(chǎn)生了錯誤。執(zhí)行“show ip eigrp neighbors”命令,可以看到兩者的鄰居關(guān)系消失了,這就需要檢查兩者的Key chain配置信息是否存在問題。