BGP是一种运行在AS之间的动态路由协议,具备强大的路径选择能力,这也使得BGP协议能够管理超大型网络。
BGP支持简单的密码认证方式,也支持安全性更高的MD5认证方式。如果是MD5认证方式,路由器会根据BGP报文的某些字段和密钥计算出一个128比特的散列值,然后将BGP报文连同散列值发送给邻居。邻居路由器收到之后,会在本地基于接收到的BGP报文和相同的密钥再进行一次Hash运算。如果计算出的散列值与接收到的散列值相同,则认证通过,邻居关系能够正常建立;如果不同,则认证不通过,邻居关系就不会建立,且收到的BGP报文会被丢弃。
掌握基于单一密钥的BGP认证功能的配置和基于Keychanin的认证功能的配置。
实验拓扑本实验使用了3台路由器,R1和R2属于ISP-A的网络,AS编号为100,R3属于1SP-B的网络,AS编号为200。R1与R2建立IBGP邻居关系,R2与R3建立EBGP邻居关系。为了保证BGP邻居之间发送的BGP路由信息的完整性,决定在BGP邻居之间配置认证功能。
一:进行基础的ip接口配置,并使用命令ping测试直连网段的连通性。
二:配置BGP路由协议
R1,R2和R3之间的Router-ID分别为为1.1.1.1,2.2.2.2,3.3.3.3,R1和R2属于AS100,R3属于AS200,使用直连物理接口的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 100
[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,说明邻居关系已经正常建立。
三:配置基于单一密钥的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邻居关系
可以看邻居关系为Connect,说明R1和R2之间没有正常建立。
R2使用命令查看BGP邻居关系
R1和R2邻居关系为Connect,说明R1和R2之间没有正常建立邻居关系。R2和R3之间的邻居关系Estabished,说明R2和R3之间正常建立邻居关系。
R2和R1之间,R2使用密钥为huawei123,R1使用密钥为huawei。两着密钥不一致,无法建立邻居关系。
R2和R3之间,R2使用simple方式,R3使用cipher方式,但是两者间的邻居关系为Estabished,说明不影响R2和R3的邻居关系的建立。在设备储存密钥时,simple方式是使用明文显示,cipher方式后密钥将会被加密。
R1,R2,R3分别使用命令查看BGP认证信息
可以看出来R2上的认证信息以明文形式显示出来,R3上配置的认证密钥是以密文显示的,并且R2上的密钥和R1上的密钥不同
R2将错误密钥进行更改peer 10.0.12.1 password simple huawei
R2再次使用命令查看
R1和R之间的邻居状态为Estabished,说明邻居关系建立成功。
四:配置Keychain的BGP认证
上面使实验BGP进行验证使用的密钥是一个固定的密钥,当使用密钥来增强安全性时,操作十分繁琐,容易造成BGP连接中断。因此我们可以使用Keychain认证方式来实现BGP认证方式来实现密钥的周期性更换。Keychain的方式还可以定义密钥的存活期。
在Keychain方式下定义密钥的存活期分为Absolute与Periodic两种模式。Absolute模式下,密钥Key的有效时间为一个绝对时间段;Periodic模式下,一个Key的有效时间为周期性的一段时间,分为Daily、Monthly、Weekly和Yearly等。以Daily为例,一个Key的有效时间为每一天的某一特定时间段。一个Keychain中可以有多个Key,最多可支持64个Key-D。
R1和R2上配置基于Keychain的BGP认证,Key-D为1,Key-String为huawei,选用Periodic Daily模式,每天08:00到18:00使用Key-D1对发送的BGP报文做Hash运算,每天08:00到18:00使用Key-D1对接收到的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 m5
[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的状态为Established,则邻居关系建立成功
在进行Keychain的BGP认证配置时,应保证Keychain f的名称、Key-D、Algorithm和Key-String保持一致,任意一个参数不匹配都会导致认证失败。当一个Key的某个属性不完整或系统时间不在定义的时间段内,Key会处于Inactive状态,不会被用来进行认证。
R1使用命令查看Keychain信息
从中可以看出Keychain的名称为Key,密钥的数量为1。为了保证时间的一致性,使用命令来配置接受容忍时间,避免时间不同布或者Key-ID的变更过程中存在的时间延迟而导致BGP报文认证失败的情况。
[R1]keychain key mode periodic daily
[R1-keychain]receive-tolerance infinite
infinite表示容忍所有时间延迟,单位是min,最大值为14400min。为了避免在某一时刻没有活跃的Key-ID而导致BGP没有认证交换的情况,可以使用命令default send-key-id指定一个缺省的发送Key-ID。一个Keychain中最多只能有一个Key-ID配置为缺省的发送Key-ID。