BGP安全性
常见BGP攻击主要有两种:
- 建立非法BGP邻居关系,通告非法路由条目,干扰正常路由表。
- 发送大量非法BGP报文,路由器收到后上送CPU(主要为协议报文),导致CPU利用率升高
BGP使用认证和GTSM(Generalized TTL Security Mechanism,通用TTL安全保护机制)两个方法保证BGP对等体间的交互安全。
认证和加密的区别?完整性,来源的可靠性,放重发,私密性(加密)。认证过程中若数据没有进行加密,可直接看到报文中所携带的信息
抓包示例
BGP认证
BGP认证分为MD5认证和Keychain认证,对BGP对等体关系进行认证可以预防非法BGP邻居建立。
MD5认证
BGP使用TCP作为传输层协议,为提高BGP的安全性,可以在建立TCP连接时进行MD5认证。BGP的MD5认证只是为TCP连接设置MD5认证密码,由TCP完成认证。
配置
peer peer-id password cipher huawei@1234 //各端都需要配置
Keychain认证
- Keychain是一系列key-id的集合,key-id唯一标识认证信息,认证信息包括认证密码和认证算法。
- BGP对等体两端必须都配置针对使用TCP连接的应用程序的Keychain认证,且配置的Keychain必须使用相同的加密算法和密码,才能正常建立TCP连接,交互BGP消息。
BGP报文本身不具备认证功能,借助TCP来完成认证;同样的BGP的LSA报文同样具有认证,因为其是基于TCP来传输的。
BGP使用TCP作为传输协议,只要TCP数据包的源地址、目的地址、源端口、目的端口和TCP序号是正确的,BGP就会认为这个数据包有效,但数据包的大部分参数对于攻击者来说是不难获得的。为了保证BGP免受攻击,可以在BGP邻居之间使用MD5认证或者Keychain认证来降低被攻击的可能性。
- MD5算法配置简单,配置后生成单一密码,需要人为干预才可以更换密码。
- Keychain具有一组密码,可以根据配置自动切换,但是配置过程较为复杂,适用于对安全性能要求比较高的网络。
注意:BGP的MD5认证与BGP的Keychain认证互斥。
BGP的GTSM
BGP的GTSM功能检测IP报文头中的TTL(Time-to-Live)值是否在一个预先设置好的特定范围内,并对不符合TTL值范围的报文进行丢弃,这样就避免了网络攻击者模拟“合法”BGP报文攻击设备。
- 当攻击者模拟合法的BGP报文,对R2不断地发送非法报文进行攻击时,TTL值必然小于255。
- 如果R2使能BGP的GTSM功能,将IBGP对等体报文的TTL的有效范围设为[255,255],系统会对所有BGP报文的TTL值进行检查,丢弃TTL值小于255的攻击报文,从而避免了因网络攻击报文导致CPU占用率高的问题。
•命令:[Huawei-bgp] peer { group-name | ipv4-address | ipv6-address } valid-**ttl-hops** [ hops ]
▫hops**:指定需要检测的TTL跳数值。整数形式,取值范围是1~255,缺省值是255。如果配置为hops,则被检测的报文的TTL值有效范围为[255–hops+1, 255]。
[Huawei] gtsm default-action { drop | pass }
▫drop**:**未匹配GTSM策略的报文不能通过过滤,报文被丢弃。
▫pass**:**未匹配GTSM策略的报文可以通过过滤。
2.(可选)设置未匹配GTSM策略的报文的缺省动作。
缺省情况下,在单板GTSM丢弃报文时不记录LOG信息。
对于丢弃的报文,可以通过该命令打开LOG信息开关,控制是否对报文被丢弃的情况记录日志,以方便故障的定位
打开单板的LOG信息开关,在单板GTSM丢弃报文时记录LOG信息
[Huawei] gtsm log drop-packet all