俞 海
(绍兴文理学院 计算机科学与工程系,浙江 绍兴 312000)
边界网关协议(Border Gateway Protocol,BGP)是互联网事实上的域间路由标准协议。然而,由于BGP协议存在安全缺陷,很容易受到前缀劫持、路径伪造和路由泄露等异常路由通告攻击,从而破坏互联网的网络可达性。近年来出现的多起BGP前缀劫持事件,如YouTube劫持事件、AS7007事件和AS3561事件更是造成了大规模的网络故障[1]。因此,安全BGP对于整个互联网的可靠稳定运行具有重要意义[2]。BGP相关内容在计算机网络理论和实践课程教学中逐渐增加[3-6],但是BGP安全的实验内容较少,多以BGP安全事件案例的形式展示给学生,原因在于BGP安全实验往往涉及较多路由器,一般高校无法承受实验的高成本,而有些BGP仿真软件适用于研究目的,对于一般高校特别是应用型高校的学生而言,则过于繁琐复杂[7]。
本文通过GNS3仿真软件设计了BGP前缀劫持场景仿真实验,验证了BGP前缀劫持实验结果,该设计方案使学生更好地理解BGP前缀劫持的原理及配置过程,为应用型高校的计算机网络安全实践教学提供借鉴经验。
攻击者可以通过伪造网络层可达信息NLRI(Network Layer Reachability Information)和AS_PATH路径来达到实施前缀劫持的目的[8]。
恶意的AS伪造NLRI信息,向外通告一个非法的前缀,如图1(a)所示,AS1是前缀204.204.10.0/24的合法拥有者,它向外通告到达该段网址的路由,在图1(b)中,AS5恶意伪造NLRI也向外通告到达204.204.10.0/24的路由,根据BGP选取最短AS_PATH路径的原则,AS4将优先选取经AS5到204.204.10.0/24的路径。
图1(a) AS1正常通告合法的前缀信息
图1(b) AS5通告伪造的前缀信息
如图2所示,如果攻击者AS5不但伪造NLRI中的前缀,而且修改成一个更长的前缀长度204.204.10.0/30,那么依据BGP的最长匹配原则,所有其他的AS将选择该伪造路径。
图2 AS5通告伪造的前缀及长度信息
如图3所示,AS5伪造前缀204.204.10.0/24,并将AS_PATH修改为{5 1},此时AS4将收到两条到达204.204.10.0/24的AS_PATH路径{3 2 1)和{5 1},依据BGP最短路径原则优先选择经AS5到达204.204.10.0/24。这样,AS4中目的地为204.204.10.0/24的流量原本应该路由到AS1中,却被劫持到了AS5中。
图3 AS5通告伪造的前缀及AS_PATH信息
以BGP伪造前缀长度为例,设计并实现BGP前缀劫持的场景仿真实验。
理解外部网关协议BGP前缀劫持的基本原理,掌握利用GNS3仿真软件进行BGP前缀长度劫持的配置方法。
首先规划3个AS自治系统区域,编号分别为:AS100、AS101、AS102,自治系统AS100包括2台路由器(R1、R3)和1台host虚拟机PC1,自治系统AS101包括2台路由器(R2、R4)和1台host虚拟机PC2,自治系统AS102包括2台路由器(R5、R6)和1台host虚拟机PC3,其中路由器R1、路由器R2、路由器R5作为边界网关路由器连接AS100、AS101、AS102这3个自治系统区域,在GNS3[9]仿真软件中搭建如图4所示的网络结构,其中路由器R1~R6的型号均为c3640,加载的IOS文件为:c3640-jsx-mz.124-25d.bin。
自治系统AS100与自治系统AS101作为正常通信的区域,自治系统AS102用来劫持从自治系统AS100发往自治系统AS101的网络数据。
实验设备IP地址的规划如表1所示。
图4 BGP前缀长度劫持实验拓扑图
表1 各设备端口IP地址分配表
设备名称端口IP地址子网掩码路由器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
首先配置自治系统区域AS100和自治系统区域AS101内的路由器R1、路由器R2、路由器R3和路由器R4,使2个自治系统区域AS100和自治系统区域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内的网络172.16.200.0注入BGP网络路由
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 //配置被劫持的前缀
经过以上配置步骤,从自治系统区域AS100的路由器R3 ping自治系统区域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
从自治系统区域AS100的路由器R3使用traceroute 204.204.10.254路由跟踪命令查看到达自治系统区域AS101的路由器R4的e1/0端口204.204.10.254的路径情况显示如图5所示,从自治系统区域AS100的路由器R3经过路径:路由器R1(10.2.2.1 )→路由器R2(172.16.200.2)→路由器R4(10.1.1.2[AS101])到达AS101的路由器R4的e1/0端口204.204.10.254,表明自治系统区域AS100和自治系统区域AS101通过外部网关协议BGP可以正常通信。
图5 traceroute命令查看路径
此时通过命令show ip bgp查看自治系统AS100的发言人(路由器R1)的BGP信息表,去往204.204.10.0网络的下一跳Next Hop为172.16.200.2,即自治系统AS101的发言人(路由器R2)的端口s0/0,如图6所示。
图6 AS100的发言人(路由器R1)的BGP信息
接下来对自治系统区域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,从自治系统区域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
表明从自治系统区域AS100的路由器R3经过路径:路由器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,路径跟踪结果如图7所示,验证了从自治系统AS100路由器R3发往自治系统AS101路由器R4的网络数据被自治系统AS102的路由器R6劫持。
图7 BGP前缀劫持后traceroute命令查看路径
此时通过命令show ip bgp查看自治系统AS100的发言人(路由器R1)的BGP信息表,去往204.204.10.0网络的优化下一跳Next Hop为172.16.201.2,即自治系统AS102的发言人(路由器R5)的端口s0/0,而不再是自治系统AS101的发言人(路由器R2)的端口s0/0,如图8所示,这正是自治系统AS100路由器R3发往自治系统AS101路由器R4的网络数据被自治系统AS102的路由器R6劫持的原因。
图8 BGP前缀劫持后AS100的发言人(路由器R1)的BGP信息
通过GNS3仿真软件设计了BGP前缀长度劫持的场景仿真实验,并验证实验结果。该设计方案使学生更好地理解BGP前缀劫持的原理及配置过程,为应用型高校的计算机网络安全实践教学提供借鉴经验。