BGP 中使用了哪些安全机制,为什么会失败?

信息安全 网络 tcp
2021-08-17 05:38:36

我刚刚读到有关Indosat 试图错误地接管 Internet 的信息我在一个与波兰信息安全相关的网站上读到,他们公布的大多数路线都未能传播,但其中一些到达了整个互联网。这让我想知道 - 什么安全机制保护 BGP 协议,为什么它们在这几条特定路由上失败,从而伤害了 Akamai 和其他公司?

4个回答

关于 BGP 的一句话

BGP是使互联网工作的路由协议。当前版本是BGP v4,自 1995 年以来一直在使用。互联网服务提供商 (ISP) 控制着一个或多个网络,他们使用 BGP 通过交换路由信息(互联网路由)向对等方通告他们的网络他们控制的网络。这些网络是称为自治系统 (AS) 的独立路由域每个 AS 都有一个唯一标识符(AS 编号,或 ASN),今天分配了大约 40,000 个 ASN。这些 AS 之间的路由过程称为域间路由,而 BGP 是用于实现此目的的协议。

每个 BGP 路由器都包含一个路由信息库 (RIB),用于存储路由信息。当路由器决定更新其 RIB 时,它随后会将此信息传播到它所连接的所有其他相邻 BGP 路由器,方法是说“嘿,我可以通过 AS 编号 X、Y 路由到网络 1.2.3.0/12, Z ”。他们将依次决定是否更新自己的表并进一步传播信息。

请注意,BGP 中没有自动对等点发现,而是必须手动配置对等点以交换路由信息。

BGP 暴露于攻击

BGP 协议本身并没有提供很多安全机制。

BGP 设计不包括针对可能导致路由行为中断的来自对等方或外部人员的攻击或故意错误的特定保护。此类攻击的示例包括:

  • BGP-VULN (RFC4272 )中所述,BGP内部没有任何机制可以防止修改、删除、伪造或重放数据的攻击,其中任何一种都有可能破坏整个网络路由行为。BGP作为一种TCP/IP协议,会受到所有的TCP/IP攻击,例如IP欺骗、会话窃取等。任何外来者都可以在BGP对等体之间的通信中注入可信的BGP消息,从而注入虚假的路由信息​​;
  • 当路由器发布新的路由信息​​时,BGP 并不保证它使用已分配的 AS 号,这意味着 BGP 路由器可以发布任何 AS 号的路由;
  • 一个 AS 可以从未被分配或属于另一个 AS 的地址空间通告前缀。这称为前缀劫持,它可用于执行中间人攻击,最初由 Alex Pilosov 和 Anton "Tony" Kapela在 DefCon 16 上演示
  • BGP 不提供正确路由信息的共享全局视图,这将使检测无效或恶意路由变得更加容易。

简而言之,BGP 极易受到虚假路由通告的影响,目前没有计划补救这种情况。

BGP 安全保护

所以从安全的角度来看,它看起来很糟糕。但另一方面,BGP 也有一些积极的安全方面:

  • BGP 对等关联往往是长期和静态的。这意味着可以有效地监控对等点和路由广告之间的关联,并允许各个利益相关者在互联网劫持的情况下做出快速反应。有很多提供BGP监控的服务(一些免费的开源商业产品);
  • BGP 路由器可以实现路由过滤,允许执行入站公告选择,尽管没有大规模部署的标准,这取决于每个 ISP 决定是否以及如何实现它;
  • BGP 实施 TCP MD5 签名选项(MAC,如 RFC 2385中定义)以保护 BGP 会话免受 TCP 重置 (RST) Dos 攻击。目前大多数路由器制造商(例如 Cisco)和开源操作系统(例如FreeBSD)都支持它。但这种保护只覆盖有限的攻击数量,并且依赖于弱技术;
  • 缺乏繁琐的安全保护措施还可以快速应对 DDoS 和恶意软件通过沉洞和黑洞路由传播。

未来的改进

标准机构和研究界最近的努力试图为 BGP 安全性提供新的架构。这包括:

  • 使用公钥基础设施在对等点之间共享公钥,并允许路由器在全球范围内建立 BGP 公告的完整性,并证明实体有权发布特定资源;
  • 使用IPsec保护 BGP 会话和对等方之间传递的消息;
  • 建立一个独立的机构来验证域间路由信息。BGP 路由器将使用此第三方机构来验证它们收到的公告。

需要对 BGP 进行重大更新来修复这些问题,并提供足够的保护来抵御复杂的 BGP 攻击。RFC 4278对 BGP 安全机制的成熟度研究,认为这种方案在这种情况下的边际收益很低,不值得进行过渡。


您可能会感兴趣的其他资源:

实现 TCP 身份验证选项 TCP-AOTCP 身份验证选项 RFC

BGP TTL 安全的目的是什么?

BGP 窥镜:根据他们的网站:

BGP 窥镜服务器是 Internet 上的服务器,可以远程访问以查看路由信息。从本质上讲,该服务器充当了一个有限的只读门户,可连接到运行“窥镜”服务器的任何组织的路由器。通常,可公开访问的窥镜服务器由 ISP 或 NOC 运行。

我认为文章“ A Survey of BGP Security Issues and Solutions ”对回答您的问题非常有用。

BGP 尤其容易受到与路由相关的攻击,尤其是当 ISP 错误配置其路由通告时。值得注意的非恶意事件包括巴基斯坦电信封锁 YouTube、马来西亚 ISP 封锁雅虎或土耳其 ISP 接管互联网等。此类事件可能会破坏整个互联网,并可能被攻击者用来造成伤害。

因此,安全人员非常了解 BGP 的漏洞并正在研究解决方案。例如,根据调查,美国政府将 BGP 安全性列为国家网络空间安全战略的一部分。此外,互联网工程任务组 (IETF) 正在制定新的草案以保护 BGP。

在 BGP 中,路由器(或 BGP 扬声器)在新路由可用时发送路由通告,在路由不再存在时发送撤回消息。每个自治系统 (AS) 在将路由通告到下一个 AS 之前,将其 AS 编号添加到 AS 路径的开头。换句话说,BGP 是一种路径矢量协议,它通告到达某些目的地的可能路由。

为了决定转发路径,每个 IP 路由器将优先考虑与目标 IP 地址匹配的最长(且更具体)的前缀。例如,211.120.132.0/22 的路由通告比 211.120.0.0/12 更具体。因此,如果出于某种原因我希望流量通过我的路由器,那么我可以发布数百条更具体的路由。过滤此类可疑 BGP 公告是防止此类路由攻击的一种简单方法。ISP 可能会针对客户不拥有的前缀过滤来自客户的路由,限制每个相邻路由器可以宣布或发布的前缀数量等。但仅过滤是不够的,因为并非所有 ISP 都会应用“最佳常见做法”来过滤路由。因此,您仍然可以收到来自其他 ISP 的虚假路由,这些 ISP 在不知不觉中转发了它们。

安全 BGP (S-BGP) 是当前路由问题的显着解决方案之一,但由于其繁重的密码计算开销和互联网注册机构的合作,它并未广泛部署。在 S-BGP 中,PKI 和证书用于验证指定前缀和路径信息的所有权。这基本上可以防止 ISP 欺骗它不拥有的路由通告。因此,应该给予更多的激励来推动S-BGP在互联网上的部署。

我只关注路由相关的攻击。但是,在调查中还可以发现其他针对机密性、消息完整性或 DoS 的攻击。

BGP 存在两个潜在的安全问题:您可能正在与错误的设备通话,或者正确的设备可能会说错话。

将 BGP 与错误的设备通信可能就像有人将电缆重新路由到您的 BGP 邻居到另一个路由器,然后让该路由器冒充您的 BGP 邻居一样。更普通的风险包括 TCP 重置攻击。TCP 会话可以无限期地保持活动状态,也可以长时间处于空闲状态。所以当系统 A 和 B 有一个 TCP 会话并且系统 A 重新启动时,A 会在重新启动后收到来自 B 的 TCP 数据包,这远非不可想象。显然,A 不再有活动的 TCP 会话。因此它向 B 发送一个“TCP 重置”数据包,提示 B 终止会话。

由于 TCP 没有强大的安全功能,第三方可以向 A 发送一个看似来自 B 的欺骗性 TCP 重置。然后 A 将拆除其 TCP 会话,从而中断在该 TCP 会话上运行的 BGP 会话,从而中断两者之间的流量。 A 和 B 直到可以建立新的会话。攻击者需要发送具有正确 IP 地址、端口号和 TCP 序列号的数据包。IP 地址通常不难找到,其中一个端口号是 179(BGP 端口号)。因此,攻击者只需发送包含所有可能剩余端口和序列号的数据包,在一分钟左右的时间内,它们就会找到正确的组合,您就可以告别该 BGP 会话。

有三种安全机制可以防止这种情况发生:BGP TCP MD5 密码、BGPsec和通用 TTL 安全机制 (GTSM)。

BGP TCP MD5 密码系统在 1998 年发布的RFC 2385中进行了描述。它只有六页,是一个非常短的 RFC,所以如果您以前从未阅读过 RFC,那么 2385 是一个不错的起点。

几天前问了一个非常相似的问题BGP 过滤如何防止路由劫持?

根据我的研究,似乎防止此类“攻击”的唯一方法是过滤来自 Indosat 的 PoV 的出站路由和来自世界其他地方的 PoV 的入站路由。

Indosat 将有一个合法路由列表,这些路由被接受出站,而其他路由被拒绝。然后 Indosat 应该就当前的合法路由联系其他提供商,以便他们可以应用入站过滤器,只允许那些路由并拒绝其他路由。

但我不知道过滤是如何在幕后工作的,这是我问题的范围。