3、BGP安全运维策略:路由过滤、前缀列表、AS_PATH过滤、RPKI部署

BGP 安全,说白了就是管好你的嘴巴——不该说的别说,不该听的别听。

我做了十几年网络运维,见过太多因为 BGP 配置不当导致的“全网瘫痪”事故。有一次,一个同事误把 /8 的默认路由通过 EBGP 泄露给了上游,结果对方整个 AS 的流量都往我们这边引,差点把出口带宽打满。嗯,从那以后,我对 BGP 安全策略就格外上心。

今天咱们聊聊四个核心手段:路由过滤前缀列表AS_PATH 过滤RPKI 部署。它们就像四道防线,层层递进。

3.1 路由过滤:第一道防线

路由过滤是最基础的手段。你想想看,如果你不告诉路由器哪些路由能收、哪些能发,它就会照单全收。这在互联网上是非常危险的。

我个人习惯,在每一条 EBGP 会话上,都配上入方向和出方向的过滤策略。入方向过滤,防止别人把垃圾路由灌进来;出方向过滤,防止自己把内部路由泄露出去。

核心原则:只允许你明确知道的前缀通过,拒绝一切未知。

举个例子,你只应该接收上游 ISP 分配给它的客户前缀,而不是整个互联网的路由表(除非你真的是做转接的)。

3.2 前缀列表:精确到位的“手术刀”

前缀列表(Prefix List)比传统的 ACL 更灵活。它不仅能匹配 IP 地址,还能匹配掩码长度范围。

我曾经遇到过一个案例:客户只允许接收 /24 到 /28 之间的前缀,但 ACL 写起来非常麻烦。用前缀列表,一行就搞定。

配置示例:

ip prefix-list FILTER_IN seq 5 permit 10.0.0.0/8 ge 24 le 28
ip prefix-list FILTER_IN seq 10 deny 0.0.0.0/0 le 32

这段配置的意思是:只允许 10.0.0.0/8 这个范围内,掩码长度在 24 到 28 之间的前缀。其他所有路由,全部拒绝。

小技巧:前缀列表默认是 deny all。所以最后一定要加一条 deny 0.0.0.0/0 le 32 来兜底,或者显式地 permit 你需要的路由。

3.3 AS_PATH 过滤:防止路由劫持的利器

AS_PATH 过滤,说白了就是检查路由的“旅行记录”。每个 BGP 路由都带着一串 AS 号,告诉你它经过了哪些地方。

为什么要过滤 AS_PATH?

  • 防止私有 AS 号泄露到公网
  • 防止你的 AS 号被他人冒用
  • 控制路由的路径长度

我记得有一次,一个客户发现自己的 /24 前缀在互联网上被劫持了。追查下来,是某个上游 ISP 错误地宣告了该前缀,并且 AS_PATH 里出现了不该出现的 AS 号。如果我们当时在入方向做了 AS_PATH 过滤,就能直接拒绝掉。

配置示例:

ip as-path access-list 10 permit ^65000_
route-map FILTER_AS_PATH permit 10
 match as-path 10

这段配置只允许 AS_PATH 以 65000 开头的路由。其他的一律拒绝。

注意:AS_PATH 过滤不能完全防止路由劫持。因为攻击者可以伪造 AS_PATH。但它能挡住大部分“粗心”的误操作。

3.4 RPKI:从源头解决信任问题

RPKI(资源公钥基础设施)是近年来最热门的 BGP 安全技术。它解决了“谁有权宣告某个前缀”的问题。

简单来说,RPKI 就像互联网路由的“身份证系统”。每个 AS 号的所有者,可以通过 RPKI 来声明:“这个前缀只能由我来宣告,或者只能由我授权的 AS 来宣告。”

RPKI 有三种验证结果:

状态 含义 建议操作
Valid 路由宣告合法 正常接收
Invalid 路由宣告非法 拒绝接收
NotFound 未找到对应记录 按本地策略处理

部署 RPKI 需要三步:

  1. 获取 RPKI 数据:连接到信任锚(如 RIPE NCC 的 RPKI 服务)
  2. 配置路由器:启用 RPKI 验证功能
  3. 应用策略:将 RPKI 验证结果应用到 BGP 策略中

配置示例(Cisco IOS-XR):

rpki server 192.0.2.1
 transport tcp port 323
 refresh-time 600
rpki validation
!
route-policy RPKI_CHECK
  if validation-state is invalid then
    drop
  else
    pass
  endif
end-policy

这段配置的意思是:连接 RPKI 服务器,每 600 秒刷新一次数据。然后在路由策略中,如果 RPKI 验证结果是 Invalid,就直接丢弃。

我的建议:RPKI 不是银弹。它需要全行业共同部署才能发挥最大效果。但哪怕只有你一个人部署,也能保护自己不被“误伤”。

3.5 四道防线如何协同工作?

下面这张图展示了这四种策略的协同关系:

BGP安全运维四道防线 第一道:路由过滤 基础入/出方向控制 第二道:前缀列表 精确匹配掩码范围 第三道:AS_PATH过滤 检查路由旅行记录 第四道:RPKI部署(源头信任验证) 验证路由宣告是否合法,从根源解决信任问题 协同工作流程 1. 路由过滤:先拒绝明显不合法的路由(如私有地址、默认路由) 2. 前缀列表:进一步精确匹配允许的前缀和掩码范围 3. AS_PATH过滤:检查路由的AS路径是否可信 4. RPKI:最终验证路由宣告的合法性,确保万无一失

你看,这四道防线是层层递进的。路由过滤和前缀列表解决“能不能收”的问题,AS_PATH 过滤解决“从哪来”的问题,而 RPKI 解决“谁有权宣告”的问题。

避坑指南:我曾经见过有人只部署了 RPKI,却忽略了基础的路由过滤。结果 RPKI 服务器宕机后,所有路由都被当成 NotFound 放行了。记住:RPKI 是锦上添花,不是雪中送炭。基础过滤永远不能丢。

好了,这一章的内容就到这里。BGP 安全不是一蹴而就的事,需要你一步步搭建防线。下一章咱们聊聊更高级的 BGP 安全技术——BGP Flowspec 和 BGPsec。


专注资料整理