「BGP」- 安全

  CREATED BY JENKINSBOT

问题描述

常见 BGP 攻击主要有两种:
1)建立非法 BGP 邻居关系,通告非法路由条目,干扰正常路由表。
2)发送大量非法BGP报文,路由器收到后上送CPU,导致CPU利用率升高

解决方案

为了保证 BGP Peer 间的交互安全,BGP 使用两个方法:
1)对端认证;
2)GTSM(Generalized TTL Security Mechanism,通用 TTL 安全保护机制)

对端认证

BGP 使用 TCP 作为传输协议,只要TCP数据包的源地址、目的地址、源端口、目的端口和TCP序号是正确的,BGP就会认为这个数据包有效,但数据包的大部分参数对于攻击者来说是不难获得的。

为了保证 BGP 免受攻击,可以在 BGP Peer 间使用认证来降低被攻击的可能性。
BGP Authentication 分为 MD5-AuthKeychain-Auth,对 BGP Peer 关系进行认证能够预防非法 BGP 邻居建立:
1)MD5 算法配置简单,配置后生成单一密码,需要人为干预才可以更换密码;
2)Keychain 具有一组密码,可以根据配置自动切换,但是配置过程较为复杂,适用于对安全性能要求比较高的网络;
3)注意,两种认证互斥;

MD5-Auth

BGP使用TCP作为传输层协议,为提高BGP的安全性,可以在建立TCP连接时进行MD5认证。BGP的MD5认证只是为TCP连接设置MD5认证密码,由TCP完成认证。

Keychain-Auth

Keychain 是一系列 key-id 的集合
而 key-id 唯一标识认证信息
认证信息包括认证密码和认证算法。

BGP Peer 两端必须都配置针对使用 TCP 连接的应用程序的 Keychain认证,且配置的 Keychain 必须使用相同的加密算法和密码,才能正常建立TCP连接,交互BGP消息。

配置命令

# 配置BGP对等体在建立TCP连接时对BGP消息进行MD5认证。
[Huawei-bgp] peer { group-name | ipv4-address | ipv6-address } password { cipher cipher-password | simple simple-password }

# 配置BGP对等体在建立TCP连接时的Keychain认证。
[Huawei-bgp] peer { group-name | ipv4-address | ipv6-address } keychain keychain-name

GTSM

设备收到大量非法BGP报文后,发现是发送给本机的报文,会直接上送控制层面处理。这时将会因为控制层面处理大量攻击报文,导致设备CPU占用率高,系统异常繁忙。
BGP 的 GTSM 功能检测 IP.Header.TTL 值是否在一个预先设置好的特定范围内,并对不符合TTL值范围的报文进行丢弃,这样就避免了网络攻击者模拟“合法”BGP报文攻击设备。

在 R2 中,部署 GTSM 特性,设置收到 BGP 报文的最小 TTL 为 255(非法 BGP 报文剩余 TTL < 255,则报文被丢弃)
当攻击者模拟合法的 BGP 报文时,对 R2 不断的发送非法报文进行攻击时,TTL 值必然小于 255;

配置命令

# 在BGP对等体(组)上应用GTSM功能。
# GTSM的配置是对称的,需要在BGP对等体间同时使能GTSM。
# hops:指定需要检测的 TTL 跳数值。整数形式,1~255,缺省 255。如果配置为 hops,则被检测的报文的TTL值有效范围为[255–hops+1, 255]
[Huawei-bgp] peer { group-name | ipv4-address | ipv6-address } valid-ttl-hops [ hops ]

#(可选)设置未匹配GTSM策略的报文的缺省动作。
# 缺省情况下,未匹配GTSM策略的报文可以通过过滤。
# drop:未匹配GTSM策略的报文不能通过过滤,报文被丢弃。
# pass:未匹配GTSM策略的报文可以通过过滤。
[Huawei] gtsm default-action { drop | pass }

#(可选)打开单板的LOG信息开关,在单板GTSM丢弃报文时记录LOG信息。。
# 缺省情况,在单板GTSM丢弃报文时不记录LOG信息。
# 对于丢弃的报文,可以通过该命令打开LOG信息开关,控制是否对报文被丢弃的情况记录日志,以方便故障的定位。
# all:所有单板。
[Huawei] gtsm log drop-packet all

# 查看GTSM配置
<Huawei> display bgp peer 10.1.3.3 verbose
...
GTSM has been enabled, valid-ttl-hops: 2
...