BGP路由劫持如何用RPKI保护

wen 网络安全 1

本文目录导读:

BGP路由劫持如何用RPKI保护

  1. 1. RPKI的核心组件
  2. 2. 防护流程
  3. 3. 实际防护效果
  4. 4. 部署挑战与应对
  5. 5. 典型部署场景
  6. 总结

BGP(边界网关协议)路由劫持是一种常见的网络攻击,攻击者通过伪造或篡改BGP路由公告,将流量引导至恶意目的地,RPKI(资源公钥基础设施)通过加密验证IP地址和AS(自治系统)之间的授权关系,有效防止此类劫持,以下是RPKI保护BGP路由劫持的核心机制和步骤:


RPKI的核心组件

  • 资源证书(ROA,Route Origin Authorization)
    IP地址持有者(如ISP或企业)通过RPKI签发ROA,明确声明“某IP前缀仅允许特定AS(或AS集合)发布”。
    • 示例:0.2.0/24 的ROA声明:仅AS 64496可发布该前缀。
  • 验证基础设施
    全球RPKI仓库(如RIR维护的数据库)存储ROA,路由器通过RPKI-RTR协议(RFC 6810)从缓存服务器获取验证数据。

防护流程

步骤1:签发ROA

  • IP地址持有人(如LIR、ISP)通过所在RIR(如ARIN、RIPE NCC)的RPKI工具创建ROA,指定:
    • IP前缀(如 0.113.0/24
    • 授权AS号(如 AS64496
    • 最长前缀长度(如 /24,防止子网劫持)

步骤2:路由器启用RPKI验证

  • 配置BGP路由器通过RPKI-RTR协议连接验证缓存(如Cloudflare的rpki-validator或自建服务)。
  • 路由器对收到的BGP路由进行RPKI状态分类:
    • Valid(有效):路由与ROA完全匹配(前缀、AS、长度均合规)→ 接受。
    • Invalid(无效):路由与ROA冲突(如AS不符或更具体前缀未授权)→ 丢弃或设置低优先级。
    • NotFound(未找到):无匹配ROA → 按原有策略处理(如接受但标记为不可信)。

步骤3:路由决策

  • 启用RPKI的BGP路由器会自动拒绝Invalid路由,阻断劫持路径。
    • 攻击者伪造AS 64500发布 0.113.0/24,但ROA仅授权AS 64496 → 该路由被标记Invalid → 丢弃。

实际防护效果

  • 阻止精确劫持
    ROA明确限制AS和前缀长度,即使攻击者伪造更具体的子网(如 /25),若未授权也判定为Invalid。
  • 降低误判风险
    RPKI只是验证“谁有权发布”,不检查路由合法性(如内容是否真实),但结合BGPsec(数字签名)可进一步验证路径完整性。

部署挑战与应对

  • ROA覆盖率不足
    全球只有约40%的IP前缀有ROA(2024年数据),未覆盖的前缀仍可能被劫持。
    对策:优先为关键IP段(如CDN、银行)签发ROA,并推动社区签署。

  • RPKI配置错误
    误签ROA(如错误AS号)可能导致合法路由被标记Invalid。
    对策:使用实验工具(如RIPE的bgpalerter)测试ROA,并设置“宽松模式”(将Invalid路由降级而非丢弃)。

  • 缓存同步延迟
    RPKI数据更新可能滞后(最长24小时),劫持者可能利用“窗口期”。
    对策:结合BGP Flowspec实时过滤,或使用流量黑洞(Blackhole)应急。


典型部署场景

  • 企业自有IP段
    向RIR签发ROA,配置边界路由器RPKI验证,自动丢弃非授权路由。
  • 云服务商或CDN
    为所有公告的IP前缀签发ROA,并设置Invalid路由强制丢弃,减少DDoS攻击盲区。

RPKI通过ROA提供“谁有权声明IP”的加密证据,直接阻断虚假AS发布的劫持路由,虽然无法解决所有BGP安全问题(如路径篡改),但结合BGPsec、流量监控(如BGPmon)和社区协作,可显著提升互联网路由的信任基础,部署时需注意ROA覆盖率、配置验证和应急响应机制。

抱歉,评论功能暂时关闭!