一、BGP的安全特性
- MD5、Keychain
- GTSM
- 限制从对等体接受路由数量
- AS_Path长度保护
二、MD5、Keychain认证
- BGP认证分为MD5认证和Keychain认证,对BGP对等体关系进行认证是提高安全性的有效手段。MD5认证只能为TCP连接设置认证密码,而Keychain认证除了可以为TCP连接设置认证密码外,还可以对BGP协议报文进行认证。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
3、执行命令peer { ipv4-address | group-name | ipv6-address } password { cipher cipher-password | simple simple-password },配置MD5认证密码,BGP建立TCP连接时进行MD5认证。
拓扑图:
操作1:在R5和R6上配置MD5认证,先配置R5指向R6一遍,在R7上观察BGP的邻居建立状态。
[~AR5]bgp 300 [~AR5-bgp]peer 10.1.7.7 password cipher huawei
观察1:在R7上古观察BGP邻居状态。此时邻居状态正常,我们用refresh请求对等体重新发送路由信息,此时观察R7与R6的BGP邻居状态
<AR7>refresh bgp all import
操作2:在R7上配置BGP指向邻居R5的MD5认证
[~AR7]bgp 300 [~AR7-bgp]peer 10.1.5.5 password cipher huawei [*AR7-bgp]commit
观察2:在R7上观察BGP邻居状态,此时建立成功
观察3:在R7的Ethe1/0/0接口抓包查看MD5认证信息,是放在了TCP上面,还是BGP报文里面
三、GTSM
- BGP GTSM检测IP报文头中的TTL(time-to-live)值是否在一个预先设置好的特定范围内,并对不符合TTL值范围的报文进行允许通过或丢弃的操作,从而实现了保护IP层以上业务,增强系统安全性的目的。
- 例如将IBGP对等体的报文的TTL的范围设为254至255。当攻击者模拟合法的BGP协议报文,对设备不断的发送报文进行攻击时,TTL值必然小于254。如果没有使能BGP GTSM功能,设备收到这些报文后,发现是发送给本机的报文,会直接上送控制层面处理。这时将会因为控制层面处理大量攻击报文,导致设备CPU占用率高,系统异常繁忙。如果使能BGP GTSM功能,系统会对所有BGP报文的TTL值进行检查,丢弃TTL值小于254的攻击报文,从而避免了因网络攻击报文导致CPU占用率高的问题。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
3、执行命令peer { group-name | ipv4-address | ipv6-address } valid-ttl-hops [ hops ],配置BGP GTSM功能。缺省情况下,BGP对等体(组)上未配置GTSM功能。
4、(可选)在系统视图下执行命令gtsm default-action { drop | pass },设置未匹配GTSM策略的报文的缺省动作。缺省情况下,未匹配GTSM策略的报文可以通过过滤。
5、(可选)在系统视图下执行命令gtsm log drop-packet all,打开单板的LOG信息的开关,在单板GTSM丢弃报文时记录LOG信息。通过记录丢弃报文的日志信息,可以方便故障的定位。
注意:GTSM和peer ebgp-max-hop功能均与BGP报文的TTL值相关,只能对同一对等体或对等体组使能两种功能中的一种。
四、限制从对等体接受路由数量
- BGP路由表路由数量通常都很大,为了防止从对等体接收到大量路由而导致消耗过多系统资源,可以使用该命令来为一个BGP路由器设置允许从其对等体收到的最大路由数量。这样就在分配列表、过滤列表和路由映射的基础上,对接收对等体发送的路由又增加了一个控制机制。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
3、peer route-limit命令用来设置允许从对等体收到的路由数量。
undo peer route-limit命令用来恢复缺省配置。
缺省情况下,从对等体接收路由没有数量限制。
4、命令格式
peer { group-name | ipv4-address | ipv6-address } route-limit limit [ percentage ] [ alert-only | idle-forever | idle-timeout minutes ]
undo peer { group-name | ipv4-address | ipv6-address } route-limit
5、参数形式
6、注意:不配置以上参数的时候,路由器超限产生告警并记录日志,邻居断开,30秒后自动重新尝试建立邻居关系。
7、实验
- 拓扑图
- 操作1:在R2的BGP中引入IGP协议OSPF,配置略,在R4上查看通过R2学习到的BGP路由数量,通过观察发现R4通过IBGP邻居R2学习到了5条BGP路由
- 操作2:配置限制从对等体接收到的路由数量,在R4中限制从IBGP对等体R2学习到的BGP路由数量,限制为3条
[~AR4-bgp]peer 10.1.2.2 route-limit 3 [*AR4-bgp]commit
- 观察1:在次查看BGP邻居关系及接受到的路由数量,此时发现R4与R2的邻居关系已经是Idle了,这是因为默认情况没有配置参数,路由器超限产生告警并记录日志,邻居断开,30秒后自动重新尝试建立邻居关系。
- 操作3:配置参数,指定对路由超限仅限于产生告警,不再接收超限后的路由。
[~AR4-bgp]peer 10.1.2.2 route-limit 3 alert-only [*AR4-bgp]commit
- 观察2:在次在R4上查看BGP邻居关系及接受到的路由数量,此时邻居关系正常,只接收3条,超过3条不在接收
五、AS_Path长度保护
- 该命令只是在重构AS_Path或聚合生成新路由时,对AS_Path中的AS号最大个数予以限制。注意事项配置as-path-limit命令后,路由器BGP设备在接收路由时会检查AS_Path属性中的AS号是否超限,如果超限则丢弃路由。因此AS_Path属性中AS号的最大个数被限制得过小,会造成路由的丢失。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
2、as-path-limit命令用来设置AS_Path属性中AS号的最大个数。
4、undo as-path-limit命令用来恢复AS_Path属性中AS号的最大个数的缺省值。
缺省情况下,没有设置AS_Path属性中AS号的最大个数,但是属性实际携带AS号的最大个数受BGP报文长度限制。
5、命令格式
as-path-limit [ as-path-limit-num ]
undo as-path-limit
6、参数说明
as-path-limit-num 指定AS_Path属性中AS号的最大个数。整数形式,取值范围是1~2000。
六、路由衰减(EBGP)
- 当BGP应用于复杂的网络环境时,路由振荡十分频繁。为了防止频繁的路由振荡带来的不利影响,BGP使用路由衰减来抑制不稳定的路由。
- 路由振荡指路由表中添加一条路由后,该路由又被撤销的过程。当发生路由振荡时,设备就会向邻居发布路由更新,收到更新报文的设备需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。
- 路由衰减使用惩罚值(Penalty value)来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。如图1所示,路由每发生一次振荡,BGP便会给此路由增加1000的惩罚值,其余时间惩罚值会慢慢下降。当惩罚值超过抑制阈值(suppress value)时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(half-life)。当惩罚值降到再使用阈值(reuse value)时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。从路由被抑制到路由恢复可用的时间称为抑制时间(suppress time)。
- 路由衰减只对EBGP路由起作用,对IBGP路由不起作用。这是因为IBGP路由可能含有本AS的路由,而IGP网络要求AS内部路由表尽可能一致。如果路由衰减对IBGP路由起作用,那么当不同设备的衰减参数不一致时,将会导致路由表不一致。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
3、执行命令ipv4-family [unicast] 进入IPv4单播地址簇视图。
4、指向命令dampening [ half-life-reach reuse suppress ceiling | route-policy route-policy-name ] * 配置BGP路由衰减参数
5、执行命令undo dampening命令用来取消BGP路由衰减。
缺省情况下,没有配置BGP路由衰减。
- 参数说明
- 注意事项
- 配置BGP路由振荡抑制时,需注意如下事项:
1、所指定的reuse、suppress、ceiling三个阈值是依次增大的,即必须满足:reuse<suppress<ceiling。
2、根据公式MaxSuppressTime=half-life-reach×60×(ln(ceiling/reuse)/ln(2)),如果MaxSuppressTime小于1就不能抑制。所以要保证MaxSuppressTime大于等于1,即必须满足:ceiling/reuse足够大。
3、在引用route-policy之前,建议先创建对应的route-policy。缺省情况下,此命令不能引用不存在的route-policy。如果在系统视图下配置了route-policy nonexistent-config-check disable命令,当此命令引用了不存在的route-policy时,则路由优先匹配该命令指定的抑制参数,如果未配置指定的抑制参数,匹配缺省的抑制参数。
date: 2022-12-02 16:35:40.404
updated: 2022-12-03 11:08:51.503
url: /archives/bgp-de-kuo-zhan-te-xing—an-quan-te-xing
categories:
- BGP
tags: BGP
一、BGP的安全特性
- MD5、Keychain
- GTSM
- 限制从对等体接受路由数量
- AS_Path长度保护
二、MD5、Keychain认证
- BGP认证分为MD5认证和Keychain认证,对BGP对等体关系进行认证是提高安全性的有效手段。MD5认证只能为TCP连接设置认证密码,而Keychain认证除了可以为TCP连接设置认证密码外,还可以对BGP协议报文进行认证。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
3、执行命令peer { ipv4-address | group-name | ipv6-address } password { cipher cipher-password | simple simple-password },配置MD5认证密码,BGP建立TCP连接时进行MD5认证。
拓扑图:
操作1:在R5和R6上配置MD5认证,先配置R5指向R6一遍,在R7上观察BGP的邻居建立状态。
[~AR5]bgp 300 [~AR5-bgp]peer 10.1.7.7 password cipher huawei
观察1:在R7上古观察BGP邻居状态。此时邻居状态正常,我们用refresh请求对等体重新发送路由信息,此时观察R7与R6的BGP邻居状态
<AR7>refresh bgp all import
操作2:在R7上配置BGP指向邻居R5的MD5认证
[~AR7]bgp 300 [~AR7-bgp]peer 10.1.5.5 password cipher huawei [*AR7-bgp]commit
观察2:在R7上观察BGP邻居状态,此时建立成功
观察3:在R7的Ethe1/0/0接口抓包查看MD5认证信息,是放在了TCP上面,还是BGP报文里面
三、GTSM
- BGP GTSM检测IP报文头中的TTL(time-to-live)值是否在一个预先设置好的特定范围内,并对不符合TTL值范围的报文进行允许通过或丢弃的操作,从而实现了保护IP层以上业务,增强系统安全性的目的。
- 例如将IBGP对等体的报文的TTL的范围设为254至255。当攻击者模拟合法的BGP协议报文,对设备不断的发送报文进行攻击时,TTL值必然小于254。如果没有使能BGP GTSM功能,设备收到这些报文后,发现是发送给本机的报文,会直接上送控制层面处理。这时将会因为控制层面处理大量攻击报文,导致设备CPU占用率高,系统异常繁忙。如果使能BGP GTSM功能,系统会对所有BGP报文的TTL值进行检查,丢弃TTL值小于254的攻击报文,从而避免了因网络攻击报文导致CPU占用率高的问题。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
3、执行命令peer { group-name | ipv4-address | ipv6-address } valid-ttl-hops [ hops ],配置BGP GTSM功能。缺省情况下,BGP对等体(组)上未配置GTSM功能。
4、(可选)在系统视图下执行命令gtsm default-action { drop | pass },设置未匹配GTSM策略的报文的缺省动作。缺省情况下,未匹配GTSM策略的报文可以通过过滤。
5、(可选)在系统视图下执行命令gtsm log drop-packet all,打开单板的LOG信息的开关,在单板GTSM丢弃报文时记录LOG信息。通过记录丢弃报文的日志信息,可以方便故障的定位。
注意:GTSM和peer ebgp-max-hop功能均与BGP报文的TTL值相关,只能对同一对等体或对等体组使能两种功能中的一种。
四、限制从对等体接受路由数量
- BGP路由表路由数量通常都很大,为了防止从对等体接收到大量路由而导致消耗过多系统资源,可以使用该命令来为一个BGP路由器设置允许从其对等体收到的最大路由数量。这样就在分配列表、过滤列表和路由映射的基础上,对接收对等体发送的路由又增加了一个控制机制。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
3、peer route-limit命令用来设置允许从对等体收到的路由数量。
undo peer route-limit命令用来恢复缺省配置。
缺省情况下,从对等体接收路由没有数量限制。
4、命令格式
peer { group-name | ipv4-address | ipv6-address } route-limit limit [ percentage ] [ alert-only | idle-forever | idle-timeout minutes ]
undo peer { group-name | ipv4-address | ipv6-address } route-limit
5、参数形式
6、注意:不配置以上参数的时候,路由器超限产生告警并记录日志,邻居断开,30秒后自动重新尝试建立邻居关系。
7、实验
- 拓扑图
- 操作1:在R2的BGP中引入IGP协议OSPF,配置略,在R4上查看通过R2学习到的BGP路由数量,通过观察发现R4通过IBGP邻居R2学习到了5条BGP路由
- 操作2:配置限制从对等体接收到的路由数量,在R4中限制从IBGP对等体R2学习到的BGP路由数量,限制为3条
[~AR4-bgp]peer 10.1.2.2 route-limit 3 [*AR4-bgp]commit
- 观察1:在次查看BGP邻居关系及接受到的路由数量,此时发现R4与R2的邻居关系已经是Idle了,这是因为默认情况没有配置参数,路由器超限产生告警并记录日志,邻居断开,30秒后自动重新尝试建立邻居关系。
- 操作3:配置参数,指定对路由超限仅限于产生告警,不再接收超限后的路由。
[~AR4-bgp]peer 10.1.2.2 route-limit 3 alert-only [*AR4-bgp]commit
- 观察2:在次在R4上查看BGP邻居关系及接受到的路由数量,此时邻居关系正常,只接收3条,超过3条不在接收
五、AS_Path长度保护
- 该命令只是在重构AS_Path或聚合生成新路由时,对AS_Path中的AS号最大个数予以限制。注意事项配置as-path-limit命令后,路由器BGP设备在接收路由时会检查AS_Path属性中的AS号是否超限,如果超限则丢弃路由。因此AS_Path属性中AS号的最大个数被限制得过小,会造成路由的丢失。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
2、as-path-limit命令用来设置AS_Path属性中AS号的最大个数。
4、undo as-path-limit命令用来恢复AS_Path属性中AS号的最大个数的缺省值。
缺省情况下,没有设置AS_Path属性中AS号的最大个数,但是属性实际携带AS号的最大个数受BGP报文长度限制。
5、命令格式
as-path-limit [ as-path-limit-num ]
undo as-path-limit
6、参数说明
as-path-limit-num 指定AS_Path属性中AS号的最大个数。整数形式,取值范围是1~2000。
六、路由衰减(EBGP)
- 当BGP应用于复杂的网络环境时,路由振荡十分频繁。为了防止频繁的路由振荡带来的不利影响,BGP使用路由衰减来抑制不稳定的路由。
- 路由振荡指路由表中添加一条路由后,该路由又被撤销的过程。当发生路由振荡时,设备就会向邻居发布路由更新,收到更新报文的设备需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。
- 路由衰减使用惩罚值(Penalty value)来衡量一条路由的稳定性,惩罚值越高说明路由越不稳定。如图1所示,路由每发生一次振荡,BGP便会给此路由增加1000的惩罚值,其余时间惩罚值会慢慢下降。当惩罚值超过抑制阈值(suppress value)时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(half-life)。当惩罚值降到再使用阈值(reuse value)时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。从路由被抑制到路由恢复可用的时间称为抑制时间(suppress time)。
- 路由衰减只对EBGP路由起作用,对IBGP路由不起作用。这是因为IBGP路由可能含有本AS的路由,而IGP网络要求AS内部路由表尽可能一致。如果路由衰减对IBGP路由起作用,那么当不同设备的衰减参数不一致时,将会导致路由表不一致。
1、执行命令system-view,进入系统视图。
2、执行命令bgp { as-number-plain | as-number-dot },进入BGP视图。
3、执行命令ipv4-family [unicast] 进入IPv4单播地址簇视图。
4、指向命令dampening [ half-life-reach reuse suppress ceiling | route-policy route-policy-name ] * 配置BGP路由衰减参数
5、执行命令undo dampening命令用来取消BGP路由衰减。
缺省情况下,没有配置BGP路由衰减。
- 参数说明
- 注意事项
- 配置BGP路由振荡抑制时,需注意如下事项:
1、所指定的reuse、suppress、ceiling三个阈值是依次增大的,即必须满足:reuse<suppress<ceiling。
2、根据公式MaxSuppressTime=half-life-reach×60×(ln(ceiling/reuse)/ln(2)),如果MaxSuppressTime小于1就不能抑制。所以要保证MaxSuppressTime大于等于1,即必须满足:ceiling/reuse足够大。
3、在引用route-policy之前,建议先创建对应的route-policy。缺省情况下,此命令不能引用不存在的route-policy。如果在系统视图下配置了route-policy nonexistent-config-check disable命令,当此命令引用了不存在的route-policy时,则路由优先匹配该命令指定的抑制参数,如果未配置指定的抑制参数,匹配缺省的抑制参数。
评论区