2. BGP安全威胁分析:路由劫持、前缀劫持、路径篡改、BGP会话攻击

聊BGP安全,咱们得先认清一个现实:BGP这协议,打从娘胎里就没考虑过安全。它基于信任模型——说白了,邻居说什么,我就信什么。这在早期互联网那种小圈子环境里没问题,但现在?嗯,简直就是给攻击者留了后门。

我个人习惯把BGP安全威胁分成四大类。你把这四类搞明白了,监控方案才有针对性。咱们一个一个来看。

2.1 路由劫持(Route Hijacking)

路由劫持,这是最经典、也最粗暴的攻击方式。攻击者伪造一个AS号,对外宣告本不属于自己的IP前缀。结果就是,去往那个前缀的流量,全被拐到了攻击者手里。

我遇到过的一个真实案例:某云厂商的一个/24段被劫持了将近40分钟。攻击者来自东欧,直接宣告了更精确的/25前缀。BGP选路原则里,精确匹配优先,所以全球流量瞬间改道。等我们反应过来,数据已经不知道被嗅探了多少。

核心原理: BGP不验证前缀的归属权。只要你的邻居接受了你的路由,它就会继续传播。

路由劫持的典型特征:

  • 攻击者宣告的AS Path通常很短(伪造的嘛)
  • 前缀可能比原始宣告更精确(/24变成/25)
  • 流量路径突然发生非预期的变化

2.2 前缀劫持(Prefix Hijacking)

前缀劫持和路由劫持有点像,但侧重点不同。路由劫持是「抢别人的路」,前缀劫持是「冒充别人的身份」。攻击者宣告一个你拥有的前缀,但用的是他自己的AS号。这样一来,部分流量会流向攻击者,部分还会流向你——取决于BGP选路的具体情况。

你想想看,这种攻击最可怕的地方在哪?它不是完全中断你的服务,而是「分流」。你很难第一时间发现,因为你的网络还在正常跑。直到用户投诉说「怎么有时候打得开,有时候打不开」,你才意识到出事了。

避坑指南: 我曾经吃过这个亏。后来我养成了一个习惯——在关键前缀上部署ROA(Route Origin Authorization)记录。虽然不能完全杜绝,但至少能让RPKI验证通过的邻居拒绝非法宣告。

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。从那以后,我所有对等体都强制开启了MD5认证和TTL安全检查。

BGP会话攻击的常见手段:

  • TCP RST攻击: 伪造RST包,强制断开会话
  • BGP OPEN消息伪造: 冒充合法邻居建立会话
  • TTL劫持: 利用TTL值判断的漏洞,从远端发起攻击
  • 会话洪泛: 大量建立虚假BGP会话,耗尽路由器资源

2.5 四种威胁的关系与监控思路

这四种威胁不是孤立的。路由劫持和前缀劫持往往伴随着路径篡改,而BGP会话攻击又可能是其他攻击的前奏。攻击者经常组合使用,让你防不胜防。

下面这张图,是我自己总结的威胁关系与监控切入点。你看一眼就明白了:

BGP安全威胁关系与监控切入点 路由劫持 Route Hijacking 前缀劫持 Prefix Hijacking 路径篡改 Path Manipulation BGP会话攻击 Session Attack 常伴随 可能触发 前置条件 组合攻击 监控切入点 BGP Update监控 | RPKI/ROA验证 | AS Path分析 | 会话状态检测 前缀宣告变化 | 路径长度异常 | 会话重置频率

从这张图你能看出来,监控的核心思路就是:盯住BGP Update消息。每一次路由变更,都会产生Update。你只要把Update里的AS Path、前缀、Origin等信息和基线对比,异常就藏不住。

我的经验: 别指望单点监控能搞定所有威胁。我建议你至少部署三层:第一层,本地路由器上的BGP日志和SNMP告警;第二层,集中式的BGP监控平台(比如BGPmon或自研的);第三层,外部的BGP路由视图(比如RouteViews或RIPE RIS)。三层联动,才能覆盖大部分攻击场景。

好了,四种威胁分析完了。下一节咱们会聊具体的监控指标和告警阈值怎么设。但在此之前,我建议你先回去看看自己的BGP对等体——MD5认证开了吗?TTL安全设了吗?如果没做,嗯,你懂的。


公众号:蓝海资料掘金营,微信deep3321