1.1 概述
BGP认证分为MD5认证和Keychain认证,对BGP对等体关系进行认证是提高安全性的有效手段。MD5认证只能为TCP连接设置认证密码,而Keychain认证除了可以为TCP连接设置认证密码外,还可以对BGP协议报文进行认证。
本期文章结合实际案例总结分享BGP认证。
1.2 BGP组网案例-BGP认证
1.2.1 组网拓扑图及地址规划
组网拓扑图和地址规划如下图所示。 备注:模拟器采用HCL 5.5.0
1.2.2 组网设备基础配置
组网设备基础配置主要涉及设备命名、接口IP地址相关配置。
#SW_1设备基础配置
[H3C]sysname SW_1
[SW_1]interface LoopBack0
[SW_1-LoopBack0] ip address 10.10.0.1 255.255.255.255
[SW_1]interface GigabitEthernet1/0/2
[SW_1-GigabitEthernet1/0/2] port link-mode route
[SW_1-GigabitEthernet1/0/2] ip address 10.10.12.1 255.255.255.252
[SW_1-GigabitEthernet1/0/2]quit
[SW_1]
#SW_2设备基础配置
[H3C]sysname SW_2
[SW_2]interface LoopBack0
[SW_2-LoopBack0] ip address 10.10.0.2 255.255.255.255
[SW_2-LoopBack0]quit
[SW_2]interface GigabitEthernet1/0/2
[SW_2-GigabitEthernet1/0/2] port link-mode route
[SW_2-GigabitEthernet1/0/2] ip address 10.10.12.2 255.255.255.252
[SW_2-GigabitEthernet1/0/2]quit
1.2.3 组网设备BGP配置
#SW_1设备BGP配置
[SW_1]bgp 10
[SW_1-bgp-default] router-id 10.10.0.1
[SW_1-bgp-default] peer 10.10.12.2 as-number 10
[SW_1-bgp-default] #
[SW_1-bgp-default] address-family ipv4 unicast
[SW_1-bgp-default-ipv4]network 10.10.0.1 255.255.255.255
[SW_1-bgp-default-ipv4]peer 10.10.12.2 enable
[SW_1-bgp-default-ipv4]quit
[SW_1-bgp-default]quit
[SW_1]#
#SW_2设备BGP配置
[SW_2]bgp 10
[SW_2-bgp-default] router-id 10.10.0.2
[SW_2-bgp-default] peer 10.10.12.1 as-number 10
[SW_2-bgp-default] #
[SW_2-bgp-default] address-family ipv4 unicast
[SW_2-bgp-default-ipv4]peer 10.10.12.1 enable
[SW_2-bgp-default-ipv4]network 10.10.0.2 255.255.255.255
[SW_2-bgp-default-ipv4]quit
[SW_2-bgp-default]quit
[SW_2]#
1.3 BGP-MD5认证
#SW_1设备BGP-MD5认证配置
[SW_1]bgp 10
[SW_1-bgp-default]peer 10.10.12.2 password simple admin
[SW_1-bgp-default]quit
[SW_1]#
#SW_2设备BGP-MD5认证配置
[SW_2]bgp 10
[SW_2-bgp-default]peer 10.10.12.1 password simple admin
[SW_2-bgp-default]quit
[SW_2]#
在SW_1设备的接口G1/0/2抓取SW_1设备向SW_2设备发送的BGP更新报文如下图所示。
从下图可知;TCP选项值存在“TCP Option - TCP MD5 signature”及相应的“MD5 digest”。
1.4 BGP-Keychain认证
1.4.1 Keychain配置
Keychain配置注意事项
同一个keychain内的各个key使用send-lifetime utc指定的生命周期不可重叠,以确保在同一时刻,应用程序只使用一个key对发送的报文进行校验。
认证双方在同一时间内所使用的key的认证算法和认证密钥必须一致。
#SW_1设备Keychain配置
#配置名称为admin_SW_1的keychain,并指定其工作于绝对时间模式。
[SW_1]keychain admin_SW_1 mode absolute
#配置TCP增强认证选项中的类型值
#缺省情况下,TCP增强认证选项中的类型值为254
#当使用TCP作为传输层协议与友商设备互通时,本端和对端的类型值必须一致。如果不一致,则需要在本端配置本命令
[SW_1-keychain-admin_SW_1] tcp-kind 101
#配置TCP认证算法对应的算法ID
#缺省情况下,MD5认证算法的算法ID是3,HMAC-MD5认证算法的算法ID是5
#当使用TCP作为传输层协议与友商设备互通时,本端和对端的类型值必须一致。如果不一致,则需要在本端配置本命令
[SW_1-keychain-admin_SW_1] tcp-algorithm-id hmac-sha-256 6
# 在keychain admin_SW_1中创建key 1和key 2,并配置其认证算法、认证密钥和生命周期。
[SW_1-keychain-admin_SW_1] key 1
#配置认证密钥
[SW_1-keychain-admin_SW_1-key-1]key-string plain admin
#配置认证算法
[SW_1-keychain-admin_SW_1-key-1]authentication-algorithm md5
#配置用来校验发送报文时key的UTC模式的生命周期
[SW_1-keychain-admin_SW_1-key-1]send-lifetime utc 16:00:00 2023/01/13 to 16:00:00 2023/01/15
#配置用来校验接收报文时key的UTC模式的生命周期
[SW_1-keychain-admin_SW_1-key-1]accept-lifetime utc 16:00:00 2023/01/13 to 16:00:00 2023/01/15
[SW_1-keychain-admin_SW_1-key-1] key 2
[SW_1-keychain-admin_SW_1-key-2] key-string plain admin
[SW_1-keychain-admin_SW_1-key-2] authentication-algorithm hmac-sha-256
[SW_1-keychain-admin_SW_1-key-2] send-lifetime utc 16:00:00 2023/01/15 to 16:00:00 2023/01/16
[SW_1-keychain-admin_SW_1-key-2] accept-lifetime utc 16:00:00 2023/01/15 to 16:00:00 2023/01/16
[SW_1-keychain-admin_SW_1-key-2]quit
[SW_1-keychain-admin_SW_1]quit
[SW_1]#
#SW_2设备Keychain配置
[SW_2]keychain admin_SW_2 mode absolute
[SW_2-keychain-admin_SW_2] tcp-kind 101
[SW_2-keychain-admin_SW_2] tcp-algorithm-id hmac-sha-256 6
[SW_2-keychain-admin_SW_2] key 1
[SW_2-keychain-admin_SW_2-key-1] key-string plain admin
[SW_2-keychain-admin_SW_2-key-1] authentication-algorithm md5
[SW_2-keychain-admin_SW_2-key-1] send-lifetime utc 16:00:00 2023/01/13 to 16:00:00 2023/01/15
[SW_2-keychain-admin_SW_2-key-1] accept-lifetime utc 16:00:00 2023/01/13 to 16:00:00 2023/01/15
[SW_2-keychain-admin_SW_2-key-1] key 2
[SW_2-keychain-admin_SW_2-key-2] key-string plain admin
[SW_2-keychain-admin_SW_2-key-2] authentication-algorithm hmac-sha-256
[SW_2-keychain-admin_SW_2-key-2] send-lifetime utc 16:00:00 2023/01/15 to 16:00:00 2023/01/16
[SW_2-keychain-admin_SW_2-key-2] accept-lifetime utc 16:00:00 2023/01/15 to 16:00:00 2023/01/16
[SW_2-keychain-admin_SW_2-key-2]quit
[SW_2-keychain-admin_SW_2]quit
[SW_2]#
1.4.2 BGP-keychain认证配置
[SW_1]bgp 10
[SW_1-bgp-default] peer 10.10.12.2 keychain admin_SW_1
[SW_1-bgp-default]quit
[SW_1]#
#
[SW_2]bgp 10
[SW_2-bgp-default] peer 10.10.12.1 keychain admin_SW_2
[SW_2-bgp-default]quit
[SW_2]#
1.4.3 查看设备keychain运行状态
通过命令“display keychain”可查看keychain运行状态;
查看SW_1设备的keychain信息,发现TCP kind value:101、HMAC-SHA-256:6和key 2为有效key,如下图所示;
查看SW_2设备的keychain信息,发现TCP kind value:101、HMAC-SHA-256:6和key 2为有效key,如下图所示;
1.4.4 抓包验证keychain
在SW_1设备的接口G1/0/2抓取SW_1设备向SW_2设备发送的BGP更新报文如下图所示。
从下图可知;TCP选项值存在“Kind:Unknown(101)”及相应的“Payload”;
1.5 总结
MD5算法配置简单,配置后生成单一密码,需要人为干预才可以更换密码。
keychain是加密规则(key)的集合,用来为应用程序提供动态认证功能。keychain在不中断业务的前提下,通过定期更改用于认证的密钥和算法来提升网络数据传输的安全性。
一个keychain中的不同key可配置各自的认证密钥、认证算法和生命周期。key由认证密钥、认证算法和生命周期三部分组成。一个keychain中不同key的认证密钥、认证算法和生命周期可以不同。当系统时间处于key的生命周期内时,应用程序可以利用它对发送和接收的报文进行校验。当keychain内各个key的生命周期具有连续性时,随着系统时间的推移,各个key能够依次生效,从而实现动态地更改应用程序使用的认证算法和认证密钥。
keychain支持绝对时间模式,该模式的keychain中,key的生命周期是UTC(Coordinated Universal Time,国际协调时间)绝对时间,不受系统的时区和夏令时的影响。