📜  什么是 BGP 中毒?

📅  最后修改于: 2022-05-13 01:56:13.233000             🧑  作者: Mango

什么是 BGP 中毒?

边界网关协议 (BGP) 是一种 IETF 标准,它指的是一种网关协议,该协议通过在边缘路由器之间交换路由及其可达性信息以及通过在自治系统(如网络)之间交换路由信息来控制数据包如何从一个网络路由到另一个网络交互并相互依赖,他们需要一种相互通信的方式,BGP 可以帮助实现这一点。 BGP 是最具可扩展性的路由协议之一,它扩展了承载 Internet 可达性信息的最初目的,现在可以承载 VPN、IPv6、组播和其他各种类型数据的路由。

所有 BGP 路由器都有一个路由表,其中包含自治系统之间的最佳路由,并且它总是采用从一个自治系统到另一个自治系统的最直接和最短的路径,以便以尽可能少的网络跳数到达其目标地址。

BGP 中毒是一种通过广播谨慎创建的 BGP 消息来发现不通过定义的自治系统的其他可能 BGP 路由的方法。它影响BGP中的自治系统环路威慑机制。

BGP中毒的工作原理:

自治系统在 BGP 语句中预先设置不应跨越的其他自治系统。由于 BGP 的环路威慑机制,这些自治系统在收到错误创建的公告后,会拒绝自治系统路径并从其邻居中取消其路由。例如,要发现在自治系统 O 拥有的前缀 p 方向上不跨越自治系统 P 的路径,现在自治系统 O 可以声明一条包含 P 的自治路由,例如 (OPO | p) .当该声明到达自治系统 P 时,自治系统 P 丢弃该路由并从邻居中拉出其路由,因为该声明通过预先添加其自治系统编号来传播,这导致自治系统路由中的循环。因此,任何通往前缀 p 的路径都不会通过自治系统 P,因为它是中毒的。

一次毒化多个自治系统是可能的。最简单的方法之一是现在我们计划在声明的自治系统路径中包含所有自治系统,例如 (OP 1 , P 2 , P 3 , ... P n O) 其中 P 1 , P 2 , P 3 , ... P n是要毒化的自治系统。话虽如此,当需要毒化的自治系统数量很大时,由于 BGP 路由器会删除自治系统路径较长的 BGP 消息,因此无法使用此方法。另一种方法是使用自治系统集,即自治系统编号的无序集,以包含自治系统路径中的所有自治系统中毒,例如,(O {P 1 , P 2 , P 3 , ... P n } O),其中 {P 1 , P 2 , P 3 , ... P n } 是一个自治系统集,其中自治系统中毒。使用这种方法,可以发送 BGP 公告,但只能以 3 的长度毒化任意数量的自治系统,这种方法也称为自治系统集填充。但是,这种方法也有其自身的一系列问题,例如在自治路径中设置大型自治系统的 BGP 消息被 BGP 路由器过滤掉。为了增加将被毒化的自治系统的数量,需要在自治系统路径中使用多个自治系统集。

BGP中毒的工作原理

BGP中毒的工作原理

从上图中可以看出,监视器 M 观察到的路径是(SXNV | p),在自治系统 V 声明的前缀 p 的方向上。要发现自治系统 S 在 p 方向上的其他路由,我们通过声明 (VXV | p) 来毒化自治系统 X。现在,环路威慑机制将激活并撤回从自治系统 X 到自治系统 V 的路径,使自治系统 S 选择一条不同的路由到前缀 p,即 (SYNV | p)。

预防措施:

  • IP 前缀过滤。
  • 它们应该包含相互商定的路由安全规范。
  • 应限制前缀的数量。
  • 应实施身份验证检查点。
  • 应该使用自动响应工具。

BGP 中毒示例:

例如,几年前,一家提供商宣布了一些属于 AWS 的 Amazon Route 53 DNS 服务的 IP 前缀。因此,试图登录加密货币网站的用户被重定向到该网站的虚假版本,该网站由恶意行为者控制。因此,这些恶意行为者能够窃取大约 160,000 美元的以太坊。

结论:

BGP 中毒使我们能够在前缀方向上找到不同的路由,这可以帮助我们找到自治系统的第二跳邻居。从这些新发现的路线中,我们还可以发现自治系统邻居的新第二跳。这就是我们主要使用 BGP 中毒来寻找第二跳邻居的原因。