2. BGP安全威胁分析:路由劫持、前缀劫持、路径篡改、BGP会话攻击
聊BGP安全,咱们得先认清一个现实:BGP这协议,打从娘胎里就没考虑过安全。它基于信任模型——说白了,邻居说什么,我就信什么。这在早期互联网那种小圈子环境里没问题,但现在?嗯,简直就是给攻击者留了后门。
我个人习惯把BGP安全威胁分成四大类。你把这四类搞明白了,监控方案才有针对性。咱们一个一个来看。
2.1 路由劫持(Route Hijacking)
路由劫持,这是最经典、也最粗暴的攻击方式。攻击者伪造一个AS号,对外宣告本不属于自己的IP前缀。结果就是,去往那个前缀的流量,全被拐到了攻击者手里。
我遇到过的一个真实案例:某云厂商的一个/24段被劫持了将近40分钟。攻击者来自东欧,直接宣告了更精确的/25前缀。BGP选路原则里,精确匹配优先,所以全球流量瞬间改道。等我们反应过来,数据已经不知道被嗅探了多少。
路由劫持的典型特征:
- 攻击者宣告的AS Path通常很短(伪造的嘛)
- 前缀可能比原始宣告更精确(/24变成/25)
- 流量路径突然发生非预期的变化
2.2 前缀劫持(Prefix Hijacking)
前缀劫持和路由劫持有点像,但侧重点不同。路由劫持是「抢别人的路」,前缀劫持是「冒充别人的身份」。攻击者宣告一个你拥有的前缀,但用的是他自己的AS号。这样一来,部分流量会流向攻击者,部分还会流向你——取决于BGP选路的具体情况。
你想想看,这种攻击最可怕的地方在哪?它不是完全中断你的服务,而是「分流」。你很难第一时间发现,因为你的网络还在正常跑。直到用户投诉说「怎么有时候打得开,有时候打不开」,你才意识到出事了。
2.3 路径篡改(Path Manipulation)
路径篡改,这招更阴险。攻击者不抢你的前缀,而是修改AS Path属性。比如,他可以在自己宣告的路由里,故意加长AS Path长度,或者插入不存在的AS号。目的是什么?让流量绕道,经过他的网络。
还有一种常见手法:AS Path Prepending。正常网络用这个来做流量工程,攻击者用它来「制造」一条看似更优的路径。我记得有一次排查跨国延迟问题,发现流量莫名其妙绕了半个地球。最后查出来,是中间某个AS在路径里插入了几个虚假的AS号,导致选路被误导。
| 攻击类型 | 修改的属性 | 攻击效果 |
|---|---|---|
| AS Path注入 | AS_SEQUENCE | 改变选路优先级 |
| AS Path截断 | 删除中间AS | 制造虚假的短路径 |
| AS Path循环 | 插入重复AS | 导致路由环路 |
2.4 BGP会话攻击(BGP Session Attack)
这类攻击的目标不是路由表,而是BGP会话本身。攻击者通过TCP RST攻击、伪造BGP OPEN消息、或者利用TTL漏洞,直接切断或劫持BGP对等体之间的连接。
为什么会这样?因为BGP跑在TCP上,而TCP本身的安全防护很弱。攻击者只要能猜到源端口和序列号,就能发送一个伪造的RST包,把会话干掉。会话一断,所有从那个邻居学来的路由全部失效——这就是所谓的「BGP会话重置攻击」。
BGP会话攻击的常见手段:
- TCP RST攻击: 伪造RST包,强制断开会话
- BGP OPEN消息伪造: 冒充合法邻居建立会话
- TTL劫持: 利用TTL值判断的漏洞,从远端发起攻击
- 会话洪泛: 大量建立虚假BGP会话,耗尽路由器资源
2.5 四种威胁的关系与监控思路
这四种威胁不是孤立的。路由劫持和前缀劫持往往伴随着路径篡改,而BGP会话攻击又可能是其他攻击的前奏。攻击者经常组合使用,让你防不胜防。
下面这张图,是我自己总结的威胁关系与监控切入点。你看一眼就明白了:
从这张图你能看出来,监控的核心思路就是:盯住BGP Update消息。每一次路由变更,都会产生Update。你只要把Update里的AS Path、前缀、Origin等信息和基线对比,异常就藏不住。
好了,四种威胁分析完了。下一节咱们会聊具体的监控指标和告警阈值怎么设。但在此之前,我建议你先回去看看自己的BGP对等体——MD5认证开了吗?TTL安全设了吗?如果没做,嗯,你懂的。