BGP认证功能

目录

原理概述:

实验目的:

实验内容:

实验拓扑:

1.基本配置:

2.配置BGP路由协议

3.配置基于单一秘钥的BGP认证功能

4.配置基于Keychain的BGP认证

原理概述:

BGP 是一种运行在 AS 之间的动态路由协议,具备强大的路径选择能力,这也使得 BGP 协议能够管理超大型网络。对于超大型网络来说,路由的稳定性和安全性尤为重要,因为它直接影响到超大型网络的稳定性和安全性。我们知道,路由协议的报文一般都是明文发送的,如果网络攻击者伪造路由更新报文,或者篡改路由更新报文,就会造成严重的网络安全问题。因此,在实际部署各种路由协议时,通常会配置认证功能, BGP 更是如此。所谓认证,就是指路由器对路由信息来源的可靠性及路由信息本身的完整性进行检测的机制。
 BGp 支持简单的密码认证方式,也支持安全性更高的MD5认证方式。如果是MD5认证方式,路由器会根据 BGP 报文的某些字段和密钥计算出一个128比特的散列值,然后将 BGP 报文连同散列值发送给邻居。邻居路由器收到之后,会在本地基于接收到的 BGP 报文和相同的密钥再进行一次 Hash 运算。如果计算出的散列值与接收到的散列值相同,则认证通过,邻居关系能够正常建立;如果不同,则认证不通过,邻居关系就不会建立,且所收到的 BGP 报文会被丢弃。

实验目的:

掌握基于单一秘钥的BGP认证功能的配置;

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

实验内容:

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

实验拓扑:

1.基本配置:

根据拓扑图完成相应的基础配置,并用ping命令检测R1与R2之间的连通性

其余网段的连通性在此省略。 

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
[r1-bgp]q

 

[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与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与R2的邻居状态变成了 Connect,说明R1与R2的邻居关系未能正常建立。

查看R2的BGP邻居关系。

可以看到,R2与R3的邻居状态为 Established ,与R1的邻居状态为 Connect ,说明R2与R3建立了正常的邻居关系,但与R1未能建立起正常的邻居关系。
出现上述情况的原因是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
[V200R003C00]
#
bgp 100
 router-id 1.1.1.1
 peer 10.0.12.2 as-number 100 
 peer 10.0.12.2 password simple Huawei 
 #
 ipv4-family unicast
  undo synchronization
  peer 10.0.12.2 enable
#
return

[r2-bgp]display this
[V200R003C00]
#
bgp 100
 router-id 2.2.2.2
 peer 10.0.12.1 as-number 100 
 peer 10.0.12.1 password simple Huawei123 
 peer 10.0.23.3 as-number 200 
 peer 10.0.23.3 password simple Huawei 
 #
 ipv4-family unicast
  undo synchronization
  peer 10.0.12.1 enable
  peer 10.0.23.3 enable
#
return

[r3-bgp]display this
[V200R003C00]
#
bgp 200
 router-id 3.3.3.3
 peer 10.0.23.2 as-number 100 
 peer 10.0.23.2 password cipher %$%$as|T-2Tp(W/>/6H[k/h8i#X9%$%$ 
 #
 ipv4-family unicast
  undo synchronization
  peer 10.0.23.2 enable
#
return

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

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

[r2]BGP 100
[r2-bgp]peer 10.0.12.1 password simple Huawei

配置BGP认证功能时,通常会使用cipher方式,使得存储于配置文件中的密钥不会以明文方式显示,密码的安全性更高。

4.配置基于Keychain的BGP认证

      上面的实验中,BGP进行认证时使用的是一个固定的密钥,当需要变换密钥来增强安全性时,操作将非常繁琐,并且还会造成BGP连接的中断。为此,我们可以使用基于Keychain的认证方式来实现密钥的周期性更换,并且对众多的密钥进行集中管理。  

       在 Keychain 方式下定义密钥的存活期分为 Absolute 与 Periodic 两种模式。 Absolute 模式下,密钥 Key 的有效时间为一个绝对时间段; Periodic 模式下,一个 Key 的有效时间为周期性的一段时间,分为 Daily 、 Monthly 、 Weekly 和 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 - ID 1对发送的 BGP 报文做 Hash 运算,每天08:00到18:00使用 Key - ID 1对接收到的 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-bgp]undo peer 10.0.12.1 password
[r2-bgp]peer 10.0.12.1 keychain key

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

可以看到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 Information:
 ---------------------
 Keychain Name             : key
   Timer Mode              : Daily periodic
   Receive Tolerance(min)  : 0 
   TCP Kind                : 254 
   TCP Algorithm IDs       :
     HMAC-MD5              : 5
     HMAC-SHA1-12          : 2
     HMAC-SHA1-20          : 6
     MD5                   : 3
     SHA1                  : 4
 Number of Key IDs         : 1
 Active Send Key ID        : 1
 Active Receive Key IDs    : 01
 Default send Key ID       : Not configured


 Key ID Information:
 -------------------
 Key ID                    : 1
   Key string              : %$%$dUN$VVMuxBNtpo))T:j%iF-l%$%$ (cipher)
   Algorithm               : MD5
   SEND TIMER              :
     Start time            : 08:00
     End time              : 18:00
     Status                : Active
   RECEIVE TIMER           :
     Start time            : 08:00
     End time              : 18:00
     Status                : Active

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

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

[r1-keychain]receive-tolerance infinite 

Infinite 表示容忍所有的时间延迟;也可以用某一具体的时间代替,单位是 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 连接也是不会中断的。

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值