基于动态路由属性创建 JunOS 防火墙过​​滤器

网络工程 路由 bgp 防火墙 瞻博网络
2021-07-05 01:53:52

我的一个 BGP 传输客户要求我提供一种解决方案,让他在遭受 DDoS 攻击时更容易黑掉我们网络中的流量。通常,BGP 黑洞是通过对目标进行黑洞来完成的,但是,我的客户正在寻找基于源地址的黑洞解决方案,因此攻击目标不会脱机。

基于目标地址构建黑洞解决方案并不难:只需让客户通过单独的 BGP 会话将目标宣布为更具体的路由,或者让他将其标记为特定社区,然后使用路由策略设置下一跳到某个丢弃接口。

构建一个黑洞解决方案,其中攻击源(不在客户的 IP 空间内)被黑洞化似乎有点困难。如果我使用与过滤目的地相同的解决方案,我的问题是我只想丢弃来自特定来源到该特定客户的流量,因此将丢弃路由插入我的路由表不再可接受,因为它会影响其他客户好。所以我需要一些方法来创建一个只适用于这个特定客户的过滤器。

我想到的第一个解决方案是使用 BGPFlowspec。不幸的是,这对这个特定客户不起作用,因为他的设备不支持它。

因此,我一直在寻找一种基于某些路由属性创建动态防火墙过滤器的方法,很可能是我们的客户或我们在通过专用 BGP 黑洞会话接收特定路由时设置的社区。然后可以将此过滤器应用于客户的接口以阻止不需要的流量。不幸的是,我还没有找到一种简单的方法来以这种方式创建防火墙过滤器(或前缀列表)。

我确实找到了http://thomas.mangin.com/posts/bgp-firewall.html,它“滥用”了 SCU/DCU 以或多或少地实现我正在寻找的东西,但这听起来确实有点像黑客.

我能想到的其他解决方案之一是在我们的路由上创建一些静态过滤器并构建一个接口,允许我们的客户修改此过滤器使用的前缀列表。但是,每次客户想要添加黑洞时都在我的路由器上推送配置更改并不是我真正想要的。一些使用 BGP 的解决方案将是首选。

在我们这边,路由是在 Juniper 上完成的,对于一个解决方案,我更喜欢可以在各种平台上使用的东西,所以它基本上应该只是我们通过单独的会话使用 BGP 或通过特定社区标记路由。这样我也可以将它用于其他客户。

如果有人对此有很好的解决方案(SCU/DCU 除外),我真的很感兴趣。

3个回答

GRNET(希腊研究和教育网络)开发了一个 Web 应用程序,供客户使用 Flowspec 完成此操作。Web 门户有一个 BGP Flowspec 后端,可将 flowspec 注入您的网络。高度可配置并在 500-1,000 Gbps 泛欧 GEANT 骨干网中使用:https : //www.noc.grnet.gr/en/fod

(最后)回答我自己的问题:

我想用当前支持的 JunOS 版本来实现这一点,这是不可能的。是的,正如其他答案和评论中提到的,还有其他方法可以达到目标,但我的具体问题是能够使用 BGP 会话发出黑洞信号。

防火墙规则的动态创建不仅是重定向流量,还允许跨数据中心、跨公司和内部网的流量地理分布,使用 ip 抽象定义防火墙策略,在动态路由上使用一些标签来填充防火墙对象,然后允许控制流量。几年前,我使用瞻博网络搜索过类似的解决方案,但没有任何反馈。Junos 上有一些脚本可能对这个主题有所帮助,但对象填充并未完全响应路由交换事件而完成。也无法标记直接路由以根据需要对它们进行分类:

  • 如果在一个数据中心上有后端网络,则可以直接在接口上使用“后端标签”进行标记
  • 在动态路由上,这个“后端标签”可以被翻译成一个社区(例如 BGP SoO)并用它来通告
  • 远程数据中心将接收通告的网络并填充可以直接访问其他后端的地址对象组。

FlowSpec 可能会有所帮助,而作为 PE 可以直接连接到 mpls 核心的防火墙也会有所帮助。有人知道这样的解决方案吗?