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 需要三步:
- 获取 RPKI 数据:连接到信任锚(如 RIPE NCC 的 RPKI 服务)
- 配置路由器:启用 RPKI 验证功能
- 应用策略:将 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 四道防线如何协同工作?
下面这张图展示了这四种策略的协同关系:
你看,这四道防线是层层递进的。路由过滤和前缀列表解决“能不能收”的问题,AS_PATH 过滤解决“从哪来”的问题,而 RPKI 解决“谁有权宣告”的问题。
避坑指南:我曾经见过有人只部署了 RPKI,却忽略了基础的路由过滤。结果 RPKI 服务器宕机后,所有路由都被当成 NotFound 放行了。记住:RPKI 是锦上添花,不是雪中送炭。基础过滤永远不能丢。
好了,这一章的内容就到这里。BGP 安全不是一蹴而就的事,需要你一步步搭建防线。下一章咱们聊聊更高级的 BGP 安全技术——BGP Flowspec 和 BGPsec。