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缺乏内置验证机制。这也是为什么我们需要RPKI、BGPsec这些技术来补课。
好了,这一章的内容就到这里。BGP安全威胁不是纸上谈兵,每一个威胁背后都有真实案例和血的教训。下一章咱们会深入聊聊如何用RPKI来防御前缀劫持,那是我个人觉得最有效的方案之一。