问题描述
常见 BGP 攻击主要有两种:
1)建立非法 BGP 邻居关系,通告非法路由条目,干扰正常路由表;
2)发送大量非法 BGP 报文,路由器收到后上送 CPU,导致 CPU 利用率升高;
解决方案
为了保证 BGP Peer 间的交互安全,BGP 使用两个方法:
1)对端认证(BGP Peer Authentication);
2)GTSM(Generalized TTL Security Mechanism,通用 TTL 安全保护机制)
对端认证(BGP Peer Authentication)
BGP 使用 TCP 作为传输协议,只要 TCP 数据包的源地址、目的地址、源端口、目的端口、TCP 序号是正确的,BGP 就会认为这个数据包有效,但数据包的大部分参数对于攻击者来说是不难获得的。
为了保证 BGP 免受攻击,可以在 BGP Peer 间使用认证来降低被攻击的可能性。
BGP Authentication 分为 MD5-Auth 和 Keychain-Auth,对 BGP Peer 关系进行认证能够预防非法 BGP 邻居建立:
1)MD5 算法配置简单,配置后生成单一密码,需要人为干预才可以更换密码;
2)Keychain 具有一组密码,可以根据配置自动切换,但是配置过程较为复杂,适用于对安全性能要求比较高的网络;
3)注意,两种认证互斥;
MD5-Auth(TCP Authentication)
BGP 使用 TCP 作为传输层协议,为提高 BGP 的安全性,可以在建立 TCP 连接时进行 MD5 认证。BGP 的 MD5 认证只是为 TCP 连接设置 MD5 认证密码,由 TCP 完成认证。
Keychain-Auth(TCP authentication)
Keychain 是一系列 key-id 的集合
而 key-id 唯一标识认证信息
认证信息包括认证密码和认证算法。
BGP Peer 两端必须都配置针对使用 TCP 连接的应用程序的 Keychain 认证,且配置的 Keychain 必须使用相同的加密算法和密码,才能正常建立 TCP 连接,交互 BGP 消息。
配置命令
# 配置 BGP 对等体在建立 TCP 连接时,对 BGP 消息进行 MD5 认证 [Huawei-bgp] peer { group | address } password { cipher pwd | simple pwd } # 配置 BGP 对等体在建立 TCP 连接时,的 Keychain 认证 [Huawei] keychain ... [Huawei-bgp] peer { group | address } keychain keychain-name
GTSM(通用 TTL 安全保护机制)
问题描述
设备收到大量非法 BGP 报文后,发现是发送给本机的报文,会直接上送控制层面处理。这时将会因为控制层面处理大量攻击报文,导致设备 CPU 占用率高,系统异常繁忙。
解决方案
BGP 的 GTSM 功能检测 IP.Header.TTL 值是否在预期的范围内,并对不符合 TTL 值范围的报文进行丢弃,这样就避免网络攻击者模拟“合法”BGP 报文攻击设备。
原理简述
当部署 GTSM 特性后,设备发送的 BGP 报文,其 TTL =255;
在 R2 中,针对每个 BGP Perr 部署 GTSM 特性:
1)R2 收到 R1 BGP 报文的最小 TTL 为 255(剩余 TTL < 255,则为非法 BGP 报文,并被丢弃);
2)当攻击者模拟合法的 BGP 报文时,当针对 R2 发送非法报文进行攻击时,经过多跳,TTL < 255;
配置命令
// ---------------------------------------------------------------------------- // 在 BGP 对等体(组)上应用 GTSM 功能。 # GTSM 的配置是对称的,需要在 BGP 对等体间同时使能 GTSM; # 如果配置为 hops,则被检测的报文的 TTL 值有效范围为 [255-hops+1, 255] # hops:指定需要检测的 TTL 跳数值。整数形式,1~255,缺省 255 [Huawei-bgp] peer { group | 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 ...