俞 海
(紹興文理學(xué)院 計算機科學(xué)與工程系,浙江 紹興 312000)
邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol,BGP)是互聯(lián)網(wǎng)事實上的域間路由標(biāo)準(zhǔn)協(xié)議。然而,由于BGP協(xié)議存在安全缺陷,很容易受到前綴劫持、路徑偽造和路由泄露等異常路由通告攻擊,從而破壞互聯(lián)網(wǎng)的網(wǎng)絡(luò)可達性。近年來出現(xiàn)的多起B(yǎng)GP前綴劫持事件,如YouTube劫持事件、AS7007事件和AS3561事件更是造成了大規(guī)模的網(wǎng)絡(luò)故障[1]。因此,安全BGP對于整個互聯(lián)網(wǎng)的可靠穩(wěn)定運行具有重要意義[2]。BGP相關(guān)內(nèi)容在計算機網(wǎng)絡(luò)理論和實踐課程教學(xué)中逐漸增加[3-6],但是BGP安全的實驗內(nèi)容較少,多以BGP安全事件案例的形式展示給學(xué)生,原因在于BGP安全實驗往往涉及較多路由器,一般高校無法承受實驗的高成本,而有些BGP仿真軟件適用于研究目的,對于一般高校特別是應(yīng)用型高校的學(xué)生而言,則過于繁瑣復(fù)雜[7]。
本文通過GNS3仿真軟件設(shè)計了BGP前綴劫持場景仿真實驗,驗證了BGP前綴劫持實驗結(jié)果,該設(shè)計方案使學(xué)生更好地理解BGP前綴劫持的原理及配置過程,為應(yīng)用型高校的計算機網(wǎng)絡(luò)安全實踐教學(xué)提供借鑒經(jīng)驗。
攻擊者可以通過偽造網(wǎng)絡(luò)層可達信息NLRI(Network Layer Reachability Information)和AS_PATH路徑來達到實施前綴劫持的目的[8]。
惡意的AS偽造NLRI信息,向外通告一個非法的前綴,如圖1(a)所示,AS1是前綴204.204.10.0/24的合法擁有者,它向外通告到達該段網(wǎng)址的路由,在圖1(b)中,AS5惡意偽造NLRI也向外通告到達204.204.10.0/24的路由,根據(jù)BGP選取最短AS_PATH路徑的原則,AS4將優(yōu)先選取經(jīng)AS5到204.204.10.0/24的路徑。
圖1(a) AS1正常通告合法的前綴信息
圖1(b) AS5通告?zhèn)卧斓那熬Y信息
如圖2所示,如果攻擊者AS5不但偽造NLRI中的前綴,而且修改成一個更長的前綴長度204.204.10.0/30,那么依據(jù)BGP的最長匹配原則,所有其他的AS將選擇該偽造路徑。
圖2 AS5通告?zhèn)卧斓那熬Y及長度信息
如圖3所示,AS5偽造前綴204.204.10.0/24,并將AS_PATH修改為{5 1},此時AS4將收到兩條到達204.204.10.0/24的AS_PATH路徑{3 2 1)和{5 1},依據(jù)BGP最短路徑原則優(yōu)先選擇經(jīng)AS5到達204.204.10.0/24。這樣,AS4中目的地為204.204.10.0/24的流量原本應(yīng)該路由到AS1中,卻被劫持到了AS5中。
圖3 AS5通告?zhèn)卧斓那熬Y及AS_PATH信息
以BGP偽造前綴長度為例,設(shè)計并實現(xiàn)BGP前綴劫持的場景仿真實驗。
理解外部網(wǎng)關(guān)協(xié)議BGP前綴劫持的基本原理,掌握利用GNS3仿真軟件進行BGP前綴長度劫持的配置方法。
首先規(guī)劃3個AS自治系統(tǒng)區(qū)域,編號分別為:AS100、AS101、AS102,自治系統(tǒng)AS100包括2臺路由器(R1、R3)和1臺host虛擬機PC1,自治系統(tǒng)AS101包括2臺路由器(R2、R4)和1臺host虛擬機PC2,自治系統(tǒng)AS102包括2臺路由器(R5、R6)和1臺host虛擬機PC3,其中路由器R1、路由器R2、路由器R5作為邊界網(wǎng)關(guān)路由器連接AS100、AS101、AS102這3個自治系統(tǒng)區(qū)域,在GNS3[9]仿真軟件中搭建如圖4所示的網(wǎng)絡(luò)結(jié)構(gòu),其中路由器R1~R6的型號均為c3640,加載的IOS文件為:c3640-jsx-mz.124-25d.bin。
自治系統(tǒng)AS100與自治系統(tǒng)AS101作為正常通信的區(qū)域,自治系統(tǒng)AS102用來劫持從自治系統(tǒng)AS100發(fā)往自治系統(tǒng)AS101的網(wǎng)絡(luò)數(shù)據(jù)。
實驗設(shè)備IP地址的規(guī)劃如表1所示。
圖4 BGP前綴長度劫持實驗拓撲圖
表1 各設(shè)備端口IP地址分配表
設(shè)備名稱端口IP地址子網(wǎng)掩碼路由器R1s0/0172.16.200.1255.255.255.252s0/110.2.2.1255.255.255.252s0/2172.16.201.1255.255.255.252路由器R2s0/0172.16.200.2255.255.255.252s0/110.1.1.1255.255.255.252s0/2172.16.202.1255.255.255.252路由器R3s0/110.2.2.2255.255.255.252e1/0203.203.10.254255.255.255.0路由器R4s0/110.1.1.2255.255.255.252e1/0204.204.10.254255.255.255.0路由器R5s0/0172.16.201.2255.255.255.252s0/1172.16.202.2255.255.255.252s0/210.3.3.1255.255.255.252路由器R6s0/010.3.3.2255.255.255.252e1/0204.204.10.254255.255.255.0
首先配置自治系統(tǒng)區(qū)域AS100和自治系統(tǒng)區(qū)域AS101內(nèi)的路由器R1、路由器R2、路由器R3和路由器R4,使2個自治系統(tǒng)區(qū)域AS100和自治系統(tǒng)區(qū)域AS101可以正常通信,主要配置步驟如下:
1.路由器R1的配置
R1(config)#interface s0/0
R1(config-if)#ip address 172.16.200.1 255.255.255.252
R1(config-if)#no shutdown
R1(config)#interface s0/1
R1(config-if)#ip address 10.2.2.1 255.255.255.252
R1(config-if)#no shutdown
R1(config)#interface s0/2
R1(config-if)#ip address 172.16.201.1 255.255.255.252
R1(config-if)#no shutdown
R1(config)#router bgp 100 //啟動BGP進程
R1(config-router)#network 172.16.200.0 mask 255.255.255.252
//將本AS內(nèi)的網(wǎng)絡(luò)172.16.200.0注入BGP網(wǎng)絡(luò)路由
R1(config-router)#network 10.2.2.0 mask 255.255.255.252
R1(config-router)#network 172.16.201.0 mask 255.255.255.252
R1(config-router)#neighbor 10.2.2.2 remote-as 100 //指定鄰居
R1(config-router)#neighbor 172.16.200.2 remote-as 101
R1(config-router)#neighbor 172.16.201.2 remote-as 102
2.路由器R2的配置
R2(config)#interface s0/0
R2(config-if)#ip address 172.16.200.2 255.255.255.252
R2(config-if)#no shutdown
R2(config)#interface s0/1
R2(config-if)#ip address 10.1.1.1 255.255.255.252
R2(config-if)#no shutdown
R2(config)#interface s0/2
R2(config-if)#ip address 172.16.202.1 255.255.255.252
R2(config-if)#no shutdown
R2(config)#router bgp 101
R2(config-router)#network 172.16.200.0 mask 255.255.255.252
R2(config-router)#network 10.1.1.0 mask 255.255.255.252
R2(config-router)#network 172.16.201.0 mask 255.255.255.252
R2(config-router)#neighbor 10.1.1.2 remote-as 101
R2(config-router)#neighbor 172.16.200.1 remote-as 100
R2(config-router)#neighbor 172.16.202.2 remote-as 102
3.路由器R3的配置
R3(config)#interface s0/1
R3(config-if)#ip address 10.2.2.2 255.255.255.252
R3(config-if)#no shutdown
R3(config)#interface e1/0
R3(config-if)#ip address 203.203.10.254 255.255.255.0
R3(config-if)#no shutdown
R3(config)#router bgp 100
R3(config-router)#network 10.2.2.0 mask 255.255.255.252
R3(config-router)#network 203.203.10.0 mask 255.255.255.0
R3(config-router)#neighbor 10.2.2.1 remote-as 100
4.路由器R4的配置
R4(config)#interface s0/1
R4(config-if)#ip address 10.1.1.2 255.255.255.252
R4(config-if)#no shutdown
R4(config)#interface s1/0
R4(config-if)#ip address 204.204.10.254 255.255.255.0 //被劫持掩碼配置
R4(config-if)#no shutdown
R4(config)#router bgp 101
R4(config-router)#network 10.1.1.0 mask 255.255.255.252
R4(config-router)#network 204.204.10.0 mask 255.255.255.0 //配置被劫持的前綴
經(jīng)過以上配置步驟,從自治系統(tǒng)區(qū)域AS100的路由器R3 ping自治系統(tǒng)區(qū)域AS101的路由器R4的e1/0端口204.204.10.254顯示:
Sending5,100-byte ICMP Echos to 204.204.10.254,timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5),round-trip min/avg/max=1128/1112/1300ms
從自治系統(tǒng)區(qū)域AS100的路由器R3使用traceroute 204.204.10.254路由跟蹤命令查看到達自治系統(tǒng)區(qū)域AS101的路由器R4的e1/0端口204.204.10.254的路徑情況顯示如圖5所示,從自治系統(tǒng)區(qū)域AS100的路由器R3經(jīng)過路徑:路由器R1(10.2.2.1 )→路由器R2(172.16.200.2)→路由器R4(10.1.1.2[AS101])到達AS101的路由器R4的e1/0端口204.204.10.254,表明自治系統(tǒng)區(qū)域AS100和自治系統(tǒng)區(qū)域AS101通過外部網(wǎng)關(guān)協(xié)議BGP可以正常通信。
圖5 traceroute命令查看路徑
此時通過命令show ip bgp查看自治系統(tǒng)AS100的發(fā)言人(路由器R1)的BGP信息表,去往204.204.10.0網(wǎng)絡(luò)的下一跳Next Hop為172.16.200.2,即自治系統(tǒng)AS101的發(fā)言人(路由器R2)的端口s0/0,如圖6所示。
圖6 AS100的發(fā)言人(路由器R1)的BGP信息
接下來對自治系統(tǒng)區(qū)域AS102的路由器R5和R6進行配置,主要配置步驟如下:
5.路由器R5的配置
R5(config)#interface s0/0
R5(config-if)#ip address 172.16.201.2 255.255.255.252
R5(config-if)#no shutdown
R5(config)#interface s0/1
R5(config-if)#ip address 172.16.202.2 255.255.255.252
R5(config-if)#no shutdown
R5(config)#interface s0/2
R5(config-if)#ip address 10.3.3.1 255.255.255.252
R5(config-if)#no shutdown
R5(config)#router bgp 102
R5(config-router)#network 172.16.201.0 mask 255.255.255.252
R5(config-router)#network 172.16.202.0 mask 255.255.255.252
R5(config-router)#network 10.3.3.0 mask 255.255.255.252
R5(config-router)#neighbor 10.3.3.2 remote-as 102
R5(config-router)#neighbor 172.16.201.1 remote-as 100
R5(config-router)#neighbor 172.16.202.1 remote-as 101
R5(config-router)#network 204.204.10.0 mask 255.255.255.252 //配置更長的前綴長度
6.路由器R6的配置
R6(config)#interface s0/0
R6(config-if)#ip address 10.3.3.2 255.255.255.252
R6(config-if)#no shutdown
R6(config)#interface e1/0
R6(config-if)#ip address 204.204.10.254 255.255.255.252 //長掩碼劫持配置
R6(config-if)#no shutdown
R6(config)#router bgp 102
R6(config-router)#network 10.3.3.0 mask 255.255.255.252
R6(config-router)#network 204.204.10.0 mask 255.255.255.252 //配置更長的前綴長度
R6(config-router)#neighbor 10.3.3.1 remote-as 102
由于AS102中BGP宣告的路由掩碼204.204.10.0/30長于AS101中BGP宣告的路由掩碼204.204.10.0/24,從自治系統(tǒng)區(qū)域AS100的路由器R3使用traceroute 204.204.10.254路由跟蹤命令查看到204.204.10.254的路徑情況顯示為:
Tracing the route to 204.204.10.254
1 10.2.2.1 388 msec 528 msec 396 msec
2 172.16.201.2 616 msec 856 msec 792 msec
3 10.3.3.2[AS 102] 1020 msec 1128 msec 980 msec
表明從自治系統(tǒng)區(qū)域AS100的路由器R3經(jīng)過路徑:路由器R1(10.2.2.1)→路由器R5(172.16.201.2)→路由器R6(10.3.3.2[AS 102])到達AS 102的路由器R6的e1/0端口204.204.10.254/30,而沒有去往AS101中的路由器R4的e1/0端口204.204.10.254/24,路徑跟蹤結(jié)果如圖7所示,驗證了從自治系統(tǒng)AS100路由器R3發(fā)往自治系統(tǒng)AS101路由器R4的網(wǎng)絡(luò)數(shù)據(jù)被自治系統(tǒng)AS102的路由器R6劫持。
圖7 BGP前綴劫持后traceroute命令查看路徑
此時通過命令show ip bgp查看自治系統(tǒng)AS100的發(fā)言人(路由器R1)的BGP信息表,去往204.204.10.0網(wǎng)絡(luò)的優(yōu)化下一跳Next Hop為172.16.201.2,即自治系統(tǒng)AS102的發(fā)言人(路由器R5)的端口s0/0,而不再是自治系統(tǒng)AS101的發(fā)言人(路由器R2)的端口s0/0,如圖8所示,這正是自治系統(tǒng)AS100路由器R3發(fā)往自治系統(tǒng)AS101路由器R4的網(wǎng)絡(luò)數(shù)據(jù)被自治系統(tǒng)AS102的路由器R6劫持的原因。
圖8 BGP前綴劫持后AS100的發(fā)言人(路由器R1)的BGP信息
通過GNS3仿真軟件設(shè)計了BGP前綴長度劫持的場景仿真實驗,并驗證實驗結(jié)果。該設(shè)計方案使學(xué)生更好地理解BGP前綴劫持的原理及配置過程,為應(yīng)用型高校的計算機網(wǎng)絡(luò)安全實踐教學(xué)提供借鑒經(jīng)驗。