BGP认证

/ 实验介绍: /

原理概述

BGP是一种运行在AS之间的动态路由协议,具备强大的路径选择能力,这也使得BGP协议能够管理超大型网络。对于超大型网络来说,路由的稳定性和安全性尤为重要,因为它直接影响到超大型网络的稳定性和安全性。我们知道,路由协议的报文一般都是明文发送的,如果网络攻击者伪造路由更新报文,或者篡改路由更新报文,就会造成严重的网络安全问题。因此,在实际部署各种路由协议时,通常会配置认证功能,BGP更是如此。所谓认证,就是指路由器对路由信息来源的可靠性及路由信息本身的完整性进行检测的机制。

BGP支持简单的密码认证方式,也支持安全性更高的MD5认证方式。如果是MD5认证方式,路由器会根据BGP报文的某些字段和密钥计算出一个128比特的散列值,然后将 BGP报文连同散列值发送给邻居。邻居路由

器收到之后,会在本地基于接收到的BGP报文和相同的密钥再进行一次Hash运算。如果计算出的散列值与接收到的散列值相同,则认证通过,邻居关系能够正常建立;如果不同,则认证不通过,邻居关系就不会建立,且所收到的BGP报文会被丢弃。

实验目的 /

  • 掌握基于单一密钥的BGP 认证功能的配置

  • 掌握基于Keychain 的BGP 认证功能的配置

/ 实验介绍 /

实验拓扑如图所示,实验编址如表所示。本实验使用了3台路由器,R1和R2属于ISP-A的网络,AS编号为100,R3属于ISP-B的网络,AS编号为200。R1与R2建立IBGP邻居关系,R2与R3建立EBGP邻居关系。为了保证BGP邻居之间发送的BGP路由信息的完整性,决定在BGP邻居之间配置认证功能。

实验拓扑 /

实验编址 /

实验配置 /

1、基本配置


[R1]int loop 0
[R1-LoopBack0]ip add 10.0.1.1 32
[R1-LoopBack0]int g0/0/0
[R1-GigabitEthernet0/0/0]ip add 10.0.12.1 24
[R2]int loop 0
[R2-LoopBack0]ip add 10.0.2.2 32
[R2-LoopBack0]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 10.0.12.2 24
[R2-GigabitEthernet0/0/0]int g0/0/1
[R2-GigabitEthernet0/0/1]ip add 10.0.23.2 24
[R2-GigabitEthernet0/0/1]q
[R3]int loop 0
[R3-LoopBack0]ip add 10.0.3.3 32
[R3-LoopBack0]int g0/0/0
[R3-GigabitEthernet0/0/0]ip add 10.0.23.3 24
[R3-GigabitEthernet0/0/0]q

2、配置BGP路由协议

R1、R2和R3 的Router-ID分别为1.1.1.1、2.2.2.2和3.3.3.3,R1与R2属于AS 100,R3属于AS 200,使用直连的物理接口的IP地址来建立BGP邻居关系。


[R1]bgp 100
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 10.0.12.2 as-number 100
[R2]bgp 100
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 10.0.12.1 as-number 100
[R2-bgp]peer 10.0.23.3 as-number 200
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 10.0.23.2 as-number 100

上述配置完成后,在R2上查看BGP邻居关系:


[R2]display bgp peer

可以看到,R2与R1和R3之间的邻居状态均为Established,说明邻居关系已正常建立。

3、配置基于单一密钥的BGP认证功能

经过上述步骤,BGP邻居关系已经建立,路由器之间可以传递BGP路由信息了。但是,因为没有配置BGP的认证功能,所以网络会存在很大的安全风险。

接下来,分别在R1、R2、R3上配置BGP认证功能。


[R1]bgp 100
[R1-bgp]peer 10.0.12.2 password simple Huawei
[R2]bgp 100
[R2-bgp]peer 10.0.12.1 password simple Huawei123
[R2-bgp]peer 10.0.23.3 password simple Huawei
[R3]bgp 200
[R3-bgp]peer 10.0.23.2 password cipher Huawei

配置完成后,查看R1的BGP邻居关系。


[R1]display bgp peer

可以看到,R2与R3的邻居状态为Established,与R1的邻居状态为说明R2与R3建立了正常的邻居关系,但与R1未能建立起正常的Connect,邻居关系。

出现上述情况的原因是R1使用的密钥Huawei与R2使用的密钥Huawei123不一致,无法进行正确的认证,所以建立不了邻居关系。在R2与R3之间,虽然R2使用的是Simple方式,R3使用的是Cipher方式,但这并不影响R2与R3之间的邻居关系的建立,这是由于Cipher与Simple两种方式

的区别仅仅在于:设备在存储密钥时,使用Cipher方式后的密钥将会被加密,而Simple方式是明文显示的,可以查看到真实的密钥信息。

在R1、R2、R3上的BGP 视图下使用display this 命令,查看当前的BGP 认证配置信息。


[R1-bgp]display this
[R2-bgp]display this
[R3-bgp]display this

可以看到,在R2上配置的认证密钥是明文显示的,在R3上配置的认证密钥是密文显示的,并且R2上配置的密钥和R1上的不一致。

在R2上将错误的密钥进行更正,然后再次查看R2的BGP邻居关系。

[R2]bgp 100
[R2-bgp]peer 10.0.12.1 password simple Huawei
[R2]display bgp peer

可以看到,密钥修正之后,R2与R1之间的邻居关系已经正常建立。配置BGP认证功能时,通常会使用Cipher方式,使得存储于配置文件中的密钥不会以明文方式显示,密钥的安全性更高。

4、配置基于Keychain的BGP认证

面的实验中,BGP进行证时使用的是一个固定的密钥,当需要变换密钥来增强安全性时,操作将非常繁琐,并且还会造成BGP连接的中断。为此,我们可以使用基于Keychain的认证方式来实现密钥的周期性更换,并且对众多的密钥进行集中管理。使用Keychain的方式可以定义密钥的存活期,但应保证设备的系统时间一致,避免认证失败。在实际场景中,设备通常会使用NTP(NetworkTimeProtocol)协议来保证时间的同步。

在Keychain方式下定义密钥的存活期分为Absolute与Periodic两种模式。Absolute模式下,密钥Key的有效时间为一个绝对时间段;Periodic模式下,一个Key的有效时间为周期性的一段时间,分为Daily、MonthlyWeekly和Yearly等。以Daily为例,一个Key的有效时间为每一天的某一特定时间段。一个Keychain中可以有多个Key,最多可支持64个Key-ID。Key 具有多个属性,包括Key-ID、认证算法、Key-String 以及 Send-Time 和Receive-Time,其中 Send-Time 和 Receive-Time 用来定义 Keychain中某个 Key-ID 的Active 时间段。如果系统时间不在 Send-Time 或者Receive-Time 时间内,则该 Key-ID不会被使用。

接下来,在 R1和 R2 上配置基于Keychain 的认证功能,Key-ID 为1,Key-String为huawei,选用Periodic Daily模式,每天08:00到18:00使用Key-ID1对发送的BGP报文做Hash运算,每天08:00到18:00使用Key-ID1对接收到的BGP 报文进行认证。


[R1]keychain key mode periodic daily
[R1-keychain]key-id 1
[R1-keychain-keyid-1]algorithm md5
[R1-keychain-keyid-1]key-string huawei
[R1-keychain-keyid-1]send-time daily 08:00 to 18:00
[R1-keychain-keyid-1]receive-time daily 08:00 to 18:00
[R1-keychain-keyid-1]bgp 100
[R1-bgp]undo peer 10.0.12.2 password
[R1-bgp]peer 10.0.12.2 keychain key
[R2]keychain key mode periodic daily
[R2-keychain]key-id 1
[R2-keychain-keyid-1]algorithm md5
[R2-keychain-keyid-1]key-string huawei
[R2-keychain-keyid-1]send-time daily 08:00 to 18:00
[R2-keychain-keyid-1]receive-time daily 08:00 to 18:00
[R2-keychain-keyid-1]bgp 100
[R2-bgpJundo peer 10.0.12.1 password
[R2-bgp]peer 10.0.12.1 keychain key

配置完成后,在R1上使用命令查看BGP邻居关系。


[R1]display bgp peer

可以看到,R1与R2的邻居关系已正常建立。在两台路由器上使用Keychain认证时,应保证Keychain的名称、Key-ID、Algorithm和Key-String保持一致,任意一个参数不匹配都会导致认证失败。当一个Key的某个属性不完整或系统时间不在定义的时间段内,

Key 会处于 Inactive 状态,不会被用来进行认证。另外,在一个 Keychain中,不同的Key-ID的 Send-Time 时间不能重叠,但Receive-Time时间可以重叠,保证在任何时间段内,BGP报文的发送方只使用一个Key-ID所对应的Key-String对发送的BGP报文进行Hash值计算,接收方对接收到的BGP报文将使用在Receive-Time为Active的且Key-ID相同的Key-String来进行认证。如果认证设备之间的系统时间不一致,但使用的Key-ID相同,并且在自身设备上是Active的,认证也是可以通过的。

在R1 上使用display keychain key 命令来查看Keychain 的信息。


<R1>display keychain key

显示信息表明,Keychain 的名称为 key,密钥的数量为 1。显示信息还包括了处于活动状态的Key-ID信息。

在没有NTP来保证时间同步的情况下,尽管管理员可以手动调整时间以尽量保证时间的一致性,但这样做的精度很差。在这种情况下,可以使用下面的命令来配置接收容忍时间,避免由于时间不同步或者Key-ID的变更过程中存在的时间延迟而导致BGP报文认证失败的情况。接收容忍时间

只对接收端的 Key 有效,其原理就是延长了Receive-Timer时间。R1-keychain]receive-tolerance infiniteInfinite表示容忍所有的时间延迟;也可以用某一具体的时间代替,单位是min,最大值是14400min。

为了避免在某一时刻没有活跃的Key-ID而导致BGP没有认证交互的情况,可以使用命令default send-key-id 指定一个缺省的发送Key-ID。一个Keychain 中最多只能有一个Key-ID配置为缺省的发送Key-ID。当一个 Keychain 中有多个 Key-ID 时,可以合理地给不同的 Key-ID设置不同的Send-Time和Receive-Time,实现密钥的无缝隙周期性更换,并且不会导致BGP邻居关系的中断。当然,如果密钥的更换存在时间缝隙但缝隙不超过 180s(一个 HoldTime周期),BGP连接也是不会中断的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值