2. BGP安全威胁分析:BGP劫持、路由泄露、BGP会话攻击、前缀劫持案例

聊BGP安全,咱们得先直面一个问题:BGP这玩意儿,天生就不安全

为什么这么说?你想想看,BGP设计于上世纪80年代,那时候互联网还是个学术圈的小众玩具,大家彼此信任。谁也没想到几十年后,它会成为全球互联网的“脊柱”,更没人想到会有那么多人盯着它搞破坏。

我入行那会儿,带我的老工程师就跟我说过一句话:“BGP靠的是信任,但信任在安全面前一文不值。” 后来我踩过的坑,验证了这句话。


2.1 BGP劫持:最臭名昭著的攻击

BGP劫持,说白了就是攻击者故意宣告一个不属于自己的IP前缀,把本该流向别人的流量引到自己这里来。

为什么会这样?因为BGP没有内置的验证机制。路由器收到一条路由更新,默认就信了。它不会去问:“嘿,你真的是这个前缀的主人吗?”

核心原理:

  • 攻击者控制一台路由器,向邻居宣告一个更具体的路由(比如 /24 代替 /16)
  • 或者宣告一个相同前缀但AS路径更短的路由
  • BGP选路原则中,最具体优先最短AS路径优先,这两条被利用了

我记得有一次,一个客户的流量莫名其妙绕到了欧洲。查了半天,发现是某个ISP错误地宣告了他们的前缀。虽然不是恶意攻击,但效果一模一样——业务中断了整整4个小时。

避坑指南:我曾经遇到过一个小运营商,因为配置失误把/16宣告成了/8,结果差点把整个区域的流量都吸过去。还好发现得早,不然就是一场灾难。

2.2 路由泄露:比劫持更隐蔽的威胁

路由泄露和劫持有点像,但性质不同。劫持是故意的,泄露往往是无意的——但后果同样严重。

路由泄露是指一个AS把从某个邻居学到的路由,错误地传播给了另一个不该知道这些路由的邻居。这违反了BGP的“社区规则”。

我见过最典型的场景是这样的:

  • 一个企业网络同时连接了两个上游ISP
  • 它本应只把默认路由传给内部,结果不小心把从ISP-A学到的完整路由表传给了ISP-B
  • ISP-B以为可以通过这个企业网络到达那些前缀,于是把流量都发了过去
  • 结果呢?企业的小水管瞬间被撑爆,ISP-B的客户也受影响

我的经验:路由泄露的检测比劫持更难。劫持往往有明显的流量异常,泄露则可能表现为“间歇性丢包”或“延迟升高”。我建议你在关键链路上部署BGP监控工具,比如BGPalerter或OpenBMP,能帮你快速定位问题。

2.3 BGP会话攻击:从握手开始就不安全

BGP会话本身也容易受到攻击。咱们来看看几个常见的攻击面:

攻击类型 描述 影响
TCP RST攻击 伪造TCP重置包,中断BGP会话 路由表震荡,网络不稳定
BGP消息伪造 伪造UPDATE或KEEPALIVE消息 注入虚假路由或导致会话中断
DoS攻击 大量无效BGP连接耗尽路由器资源 路由器CPU过载,正常BGP会话受影响
MD5密码破解 暴力破解BGP MD5认证密码 会话被劫持或中断

嗯,这里要注意一点:BGP会话基于TCP,而TCP本身就有很多已知漏洞。比如TCP RST攻击,只要攻击者能猜对TCP序列号,就能轻松中断你的BGP会话。

我个人习惯是:所有EBGP会话必须启用MD5认证。虽然MD5不是最安全的,但它至少能挡住90%的脚本小子。对于关键链路,我建议用TCP-AO(TCP Authentication Option),这是MD5的升级版,安全性高得多。

配置示例:在Cisco IOS上启用BGP MD5认证

router bgp 65001
 neighbor 10.0.0.1 password MySecurePass123
 neighbor 10.0.0.1 fall-over bfd

别忘了加上BFD(双向转发检测),这样一旦会话出问题,能秒级切换。

2.4 前缀劫持案例:从历史中学习

光讲理论没意思,咱们来看几个真实案例。这些案例我都研究过,每次看都觉得后背发凉。

案例一:YouTube被巴基斯坦劫持(2008年)

这是最经典的BGP劫持案例之一。巴基斯坦电信(PTCL)本来只想屏蔽国内对YouTube的访问,结果他们错误地把YouTube的/22前缀宣告给了上游。这一宣告迅速传播到了全球,导致YouTube瘫痪了将近两个小时。

你想想看,一个国家的内部屏蔽策略,差点让全球最大的视频网站下线。这就是BGP没有验证机制的后果。

案例二:MyEtherWallet DNS劫持(2018年)

这个案例更狠。攻击者通过BGP劫持了AWS的DNS服务器前缀,把MyEtherWallet的DNS查询指向了恶意服务器。用户访问的是假网站,输入的私钥直接被窃取。据估计,损失超过17万美元。

说白了,BGP劫持不只是影响网络连通性,它还能被用来做精准的中间人攻击。加密货币用户是这类攻击的高危目标。

案例三:中国电信路由泄露(2018年)

这个案例我印象特别深。中国电信的一个客户错误地宣告了超过3.7万个前缀,导致全球大量流量被重定向到中国电信的网络。虽然这不是恶意攻击,但暴露了一个问题:一个配置失误就能影响全球互联网

我的建议:每次看到这类案例,我都会问自己一个问题——如果我的网络被劫持了,我能多快发现?多快恢复?我建议你定期做BGP劫持演练,模拟攻击场景,测试你的应急响应能力。

2.5 知识体系总览

为了让你更直观地理解BGP安全威胁的全貌,我画了一张图。这张图把本章的核心知识点串在了一起:

BGP安全威胁知识体系 BGP安全威胁 BGP劫持 路由泄露 BGP会话攻击 前缀劫持案例 前缀宣告伪造 AS路径篡改 错误传播路由 违反社区规则 TCP RST攻击 DoS攻击 YouTube被劫持(2008) MyEtherWallet劫持(2018) 中国电信路由泄露(2018) 核心问题:BGP缺乏内置验证机制

这张图把BGP安全威胁分成了四大类。你看,不管是劫持、泄露还是会话攻击,最终都指向同一个核心问题——BGP缺乏内置验证机制。这也是为什么我们需要RPKI、BGPsec这些技术来补课。


好了,这一章的内容就到这里。BGP安全威胁不是纸上谈兵,每一个威胁背后都有真实案例和血的教训。下一章咱们会深入聊聊如何用RPKI来防御前缀劫持,那是我个人觉得最有效的方案之一。