BGP安全特性
MD5认证
Keychain认证
GTSM
限制从对等体接受的路由数量
AS_Path长度保护
RPKI
MD5认证
为BGP的所有类型报文的数据进行MD5加密,也可以对用来建立邻居关系的TCP三次握手报文进行加密
通信双方都要配置
配置
peer {group-name | peer-address} password {cipher | simple} password
group-name 对等体的名称
peer-address 对等体的IP地址
两端都配置完后,在发送的过程中,统统进行MD5加密,且在包头中添加了MD5 Signature字段
Keychain认证
若只使用MD5认证将面临诸多问题:MD5抗碰撞性弱,目前已经不安全、若一个完整的通信过程中只使用一个密钥,那么一旦这个密钥被窃/破解,整个通信过程中的信息都会变得不安全
Keychain认证模式
Keychain可以在不中断业务的情况下,切换使用不同的密钥与加密方式,来证通信的安全
原理
Keychain类似于一个密钥串,其允许用户定义一组密钥,形成一个密钥串,同时每个密钥可以使用不同的加密算法。通过对密钥串中每个密钥生效时间段的规定,来确保在不中断业务的情况下,自动切换密钥与加密算法
key-id
其密钥串中每一个密钥+加密算法+生效时间(通过设置不同key-id的接收与发送时间来实现动态变更认证信息)对应一个key-id
生命周期
若keychain中每个key的生命周期(生效时间)具有连续性,那么随着时间推移,各个key依次生效,实现切换在一次通信过程中切换不同密钥与加密算法从而保证即使有一个密钥泄露依旧可以保证后续路由信息等安全目的
接收容忍时间
当一端key-id发生改变(切换)时,理论上对端也应该立刻改变,但由于时间不同步的原因,对端使用的key-id可能未立刻发生改变,会有时延。所以对于接收方,需要设置一个过渡时间,当key-id变化时一段时间不传输报文(防止因双方key-id不同导致丢包的现象),这个时间段就成为接受容忍时间
注意
1:使用keychain两端的加密算法与密钥必须相同
2:同一个keychain内的各个key的生效时间段(生命周期)不可重叠(即同一时间段不能对应多个key-id),确保在同一时刻,只使用一个key对发送的报文进行校验。
GTSM——Generalized TTL Security Mechanism
为了防止恶意用户接入BGP网,并发送大量合法报文消耗路由器CPU资源而导致过载等严重的问题,启用GTSM技术(通用TTL安全机制)
GTSM通过限制报文IP包头中的TTL值来避免类似于拒绝服务类型的攻击
GTSM具体防御手段
管理者通过配置TTL的范围来限制到达路由器数据包经历的跳数(TTL最大为255,每经一个路由器减1),从而防止恶意用户向BGP核心网中发送大量合法报文消耗路由器资源。
对于直连的EBGP邻居
不同AS间传递时默认将TTL值设为1,应用GTSM后其默认值变为255(因为TTL值最大为255),这样EBGP发送端会将其TTL置为255后发给EBGP接收端,接收端只有在检测到TTL值为255的情况下,才会接收该报文(若攻击者连在了EBGP发送端路由器上,向EBGP接收端路由器发送大量合法的BGP报文,由于报文要经过发送端路由器才可以到达接收端路由器,所以TTL值最高也只能是254,不满足255,被丢弃)
对于存在多跳的IBGP邻居/特殊情况下的EBGP邻居
多跳一般发生于:IBGP邻居间、利用环回口配置的EBGP邻居
由于多跳的情况(即路由不止传给一个peer,而是传给多个peer的情况),在IBGP邻居中,一条路由信息通常会传给多个IBGP邻居,这时限制TTL值会影响通信,所以应当限制TTL值的范围(例如249~255)
配置
peer valid-ttl-hops num
num:用于配置hops值的大小
开启GTSM后,被检测报文限制TTL值的范围为 {255-hops+1,255}
例:peer valid-ttl-hops 1 ——> TTL范围 {255-1+1,255} 也就相当于 255
限制路由数量
peer route-limit 设置允许从对等体收到的路由数量
peer {group-name | ipv4-address | ipv6-address} route-limit limit [ percentage ] [ alert-only | idle-forever | idle-timeout times]
limit:指定对等体允许的最大路由数量。整数形式,取值范围 1~2000000(200w)
percantage:指定路由器开始生成警告消息时的路由数量百分比。缺省值为75(1~100)
alert-only:对路由超限仅限于产生警告,不再接收超限后的路由
idle-forever:路由超限断连,且不自动重新建立连接直到 reset bgp
idle-timeouttimes:路由超限断连后,自动重新建立连接的超时定时器。整数形式,取值范围1~1200,单位:分钟。在定时器超时前,可执行 reset bgp重新建立连接
不配置以上参数时,路由超限产生警告并记入日志,断开邻居,30s后自动重新连接建立邻居关系
AS_Path长度保护
as-path-limit 命令用来自设置AS_Path属性中AS号的最大个数
缺省情况下,AS_Path属性中AS号的最大限制值是2000
as-path-limit [ as-path-limit-num ]
配置as-path-limit命令后,接收路由时会检查AS_Path属性中的AS号是否超限。如果超限则丢弃路由。
PRKI——Resource Public Key Infrastructure
资源公共密钥基础架构(Resource Public Key Infrastructure,RPKI)将IP地址与其拥有者的公钥绑定在一起。RPKI实现了路由器的源路由验证(Route Origin Validation,ROV),以阻止例如IP前缀注入之类的严重攻击
RPKI主要用来解决路由传递过程中攻击者通过发布更精确的路由导致数据传输过程中 流量被窃取的问题
原理
ROA
RPKI存储着源路由授权(Route Origin Authorization,ROA):将IP地址块与允许在BGP中宣告它的AS绑定签名的记录。
验证过程
ROA(一般将保存在RPKI服务器中,在需要认证时同步到本地进行验证)可以被BGP路由器用于源路由验证(Route Origin Validation,ROV):验证并丢弃来自未授权AS的“无效的”BGP路由宣告。
关于BGP IP前缀类的攻击最常见的为 BGP hijack,具体攻击方式将会在下一次介绍