2、BGP安全威胁:BGP劫持、BGP路径篡改、BGP路由泄露
聊BGP安全,咱们得先直面一个残酷的现实:BGP协议在设计之初,压根就没考虑过安全。它基于信任模型,说白了就是“你说你是什么,我就信你是什么”。这在互联网早期还行,大家都很单纯。但现在?嗯,这简直是把大门敞开,等着人来搞破坏。
我个人习惯把BGP的安全威胁归纳为三大类:劫持、篡改、泄露。这三兄弟虽然表现不同,但根源都差不多——缺乏对路由起源和路径的验证机制。今天咱们就一个一个掰开揉碎了讲。
2.1 BGP劫持:最粗暴的“偷梁换柱”
BGP劫持,说白了就是攻击者冒充某个IP地址段的合法拥有者,向邻居宣告“这个IP段归我了”。
它是怎么发生的?
- 攻击者在自己的AS中,注入一条更具体的路由(比如/24代替/23),或者一条优先级更高的路由。
- 由于BGP选路原则中,最具体匹配和最短AS_PATH往往占优,流量就会乖乖流向攻击者。
核心危害:流量被截获,数据被窃听、篡改,甚至直接丢弃。用户访问你的网站,实际连到了攻击者的服务器上。
我在项目中遇到过一起典型的劫持事件。某云服务商的一个/24段突然在海外多个节点“消失”了。排查后发现,是一家小型ISP错误地宣告了更具体的/25路由。虽然对方说是“配置失误”,但流量确实被劫持了整整4个小时。你想想看,如果是金融交易或者加密货币转账,后果不堪设想。
2.2 BGP路径篡改:更隐蔽的“中间人”
路径篡改比劫持更“高级”一些。攻击者不直接抢你的IP段,而是伪造或修改AS_PATH属性,让流量绕道经过他的网络。
常见手法:
- AS_PATH prepending 滥用:正常情况是加长路径来影响选路,但攻击者可以故意缩短路径,或者插入自己的AS号,让流量“自愿”经过他的网络。
- 伪造邻居关系:攻击者宣告一条路径,声称自己与目标AS有直接连接(实际上没有),从而吸引流量。
避坑指南:我曾经见过一个案例,攻击者通过伪造AS_PATH,让某大型CDN的流量绕道经过一个东欧的小型IXP。流量延迟增加了300ms,但用户和CDN厂商都浑然不觉。直到运维人员发现BGP表中出现了一条“不可能”的路径,才揪出问题。所以,定期审计BGP表中的AS_PATH,是基本功。
路径篡改的可怕之处在于,它不改变路由的“归属”,只改变“路径”。受害者可能根本不知道自己的流量被“加料”了。
2.3 BGP路由泄露:无心之失,致命后果
路由泄露,很多时候不是恶意攻击,而是配置错误。但它的破坏力,丝毫不亚于前两者。
典型场景:
- 一个多宿主的企业,错误地将从ISP-A学到的路由,又宣告给了ISP-B。
- ISP-B以为这是“更优路径”,于是全网广播,导致大量流量被吸引到这家企业的出口路由器上。
- 企业的出口带宽瞬间被打满,网络瘫痪。
| 威胁类型 | 攻击意图 | 典型后果 | 检测难度 |
|---|---|---|---|
| BGP劫持 | 恶意 | 流量被截获、服务中断 | 中等(可通过RPKI检测) |
| BGP路径篡改 | 恶意 | 流量被监听、延迟增加 | 高(需要AS_PATH分析) |
| BGP路由泄露 | 通常无意 | 网络拥塞、全局路由表污染 | 低(但影响范围极大) |
我的经验:处理路由泄露,最头疼的不是技术,而是“责任认定”。泄露方往往不承认,或者说是“上游的问题”。所以,我建议在BGP社区中建立明确的过滤策略,比如使用前缀列表和AS_PATH 访问列表,从源头拒绝“越界”的路由。
2.4 核心逻辑:一张图看懂三大威胁
为了让你更直观地理解这三者的区别,我画了一张图。它展示了正常流量路径,以及被劫持、篡改、泄露后的流量走向。
嗯,这张图应该能帮你快速建立起直观印象。记住,无论是哪种威胁,最终都会落到“信任”这两个字上。BGP信任了不该信任的路由,就会出问题。
所以,防御的核心思路也很明确:不要信任任何未经验证的路由信息。具体怎么做?我们后面章节会详细讲RPKI、BGPsec、以及各种过滤策略。但今天,你至少得记住这三兄弟长什么样。