BGP的安全风险分析及对策
摘要 本文较为全面地分析了BGP在安全性上的缺陷以及这些威胁所带来的风险,并介绍了目前业内针对BGP安全性问题所做的一些改进工作,最后立足于实际情况提出了在现有条件下增强BGP安全性的若干操作性建议。
关键词 BGP 安全 风险
BGP(Board Gateway Protocol 边界网关协议)[1]是互联网各个AS(Autonomous System自治系统)之间用来交换路由信息的协议,也是目前事实上的标准。通过BGP,AS中的路由器可以学习到互联网上各个AS的互联情况,从而构建整个互联网的地图。因此,BGP是整个互联网正常运转的重要基础设施,一旦BGP出现故障,轻则影响网络性能,重则将导致整个互联网瘫痪。本文对BGP所面临的安全风险进行了较为全面的阐述,并分析了目前针对BGP安全性问题的一些研究成果,最后提出了若干建议。
1 BGP简介
互联网有许多个AS组成,AS是指由同一个管理机构管理并使用一致路由策略的网元设备的集合。每个AS内部使用域内路由协议(如RIP,OSPF等)来交换路由信息,从而使AS内部的各个路由器都学习到本AS内的路由。另外,各个AS的路由器通过域间路由协议(如BGP)交换路由信息来产生并不断维护一张互联网各个网段的地图,通过这张地图才能维持互联网的联通性。
BGP动态维护一张BGP路由表,该表中保存了到达互联网上其他网段的下一跳地址和需要通过路径(AS-path)。BGP建立在TCP基础之上,采用179作为端口号,使用TCP连接和重传机制。BGP有 OPEN、KEEPALIVE、UPDATE、NOTIFICATION四种报文,两个路由器先通过BGP的OPEN消息建立邻接关系,并定时发送KEEPALIVE报文来保持邻接关系,当有路由更新时通过UPADATE报文发送给对端,发生错误时通过NOTIFICATION通知对方。BGP定义若干属性来描述路由信息,其他路由器可以根据这些信息作出最优的路由决策,BGP的路由属性如下表所示:
BGP具有简单灵活,可靠稳定和易于扩展的优点,因此被广泛的采用,成为互联网上事实上的标准,目前各个AS之间均是通过BGP来进行域间路由交换的。
2 BGP面临风险
最初互联网设计是在一个封闭的系统内运行,默认通信的各方互相信任,在协议的设计上没有过多考虑安全性,BGP同样存在这个问题。当互联网规模较小时,BGP安全性漏洞未得到足够的关注,但随着互联网的规模快速膨胀,通过BGP交换的域间路由信息急速增长,BGP安全性的弱点也日益得到重视和研究。BGP面临的风险主要体现在以下几个方面:
(1)TCP/IP协议漏洞:BGP运行在TCP之上,没有设计专门的加密和认证机制,所有针对TCP/IP漏洞的攻击都可以对BGP的运行造成危害。这些攻击利用TCP/IP的漏洞可以破坏路由器建立正常BGP连接,或者插入伪造的BGP路由更新报文,从而影响路由器无法正常更新路由或者学到错误的路由,进而对整个网络的连通性和稳定性造成损害。针对TCP/IP的攻击主要有以下几种:TCP SYN攻击;TCP SYN ACK攻击;TCP ACK攻击;TCP RST/FIN/FIN-ACK攻击;DoS/DDoS攻击等,关于这些攻击对BGP带来的风险相见文献[2]。
(2)BGP通信机制漏洞:BGP本身的运行机制也存在很多漏洞,外部攻击者如果恶意修改消息内容和发送消息的顺序,也会导致BGP对等体之间无法通过BGP来正常交换路由信息。BGP本身漏洞存在于以下几个部分:消息头;OPEN消息;KEEPALIVE消息;UPDATE消息;NOTIFICATION消息,详细的攻击方法和危害在文献[2]中有详细分析和描述。
(3)BGP信息验证漏洞:BGP没有相应的机制来保证路由器发布的路由信息是真实的,如果一个路由器向他的邻居宣告虚假的、错误的或者不是最优的路由,现有的BGP机制并不能验证路由器发布路由信息的真实性和有效性。
从恶意攻击来源来说,BGP攻击分为内部攻击和外部攻击,内部攻击是合法的BGP对等体利用漏洞发起的攻击,外部攻击是来自未知源的攻击。从攻击方式来说也可分为两类,一是通过BGP发布错误路由信息,属于内容欺诈,二是破坏BGP通信机制,导致无法通过BGP交换路由信息,这两类威胁都可以导致整个互联网路由系统的错误甚至崩溃,下面描述一下BGP错误所可能带来的危害:
(1)网络拥塞:大量互联网流量被错误路由转发到一些网络,导致这些网络拥塞,路由器只能丢弃报文。
(2)孤岛:某些网络由于错误路由被认为是不可到达的,但实际上是联通的。
(3)循环:报文在循环的路径上转发,最终由于TTL耗尽被丢弃。
(4)窃听和篡改:某些数据流量被虚假路由转发经过特定网络,有机会被恶意窃听和篡改。
(5)延迟:报文经过错误的路径到达目的地,增加网络延迟。
(6)抖动:重复地或经常冗余地公告和撤销路由,使路由器不得不反复计算去往目的网络的最佳路径,进而影响整个网络的稳定性。
(7)消耗资源:BGP运行出现故障时,可能会导致网络上出现大量的BGP更新报文, 占用带宽和路由器资源。
以上这些事件一旦发生都会严重影响互联网的运行情况,而且在现实中发生过多次因为BGP错误配置或者恶意攻击导致的网络故障,因此必须研究相应的技术手段来改进BGP的安全性。
3 BGP风险对策
针对BGP这些安全隐患,各个研究机构、设备厂商都做了大量的研究工作,提出了很多种改进方案来增强BGP的安全性,主要的工作有以下几种:
(1)通过TCP MD5[3]签名来增强安全性,这种方法是对TCP协议进行扩展,通信双方事先协商一个密钥,发送方对TCP包中指定信息和密钥计算MD5摘要值并发送给接收方。接收方计算接收到的TCP包中指定信息和密钥计算MD5摘要值并与接收的摘要值对比。