我的一个 BGP 传输客户要求我提供一种解决方案,让他在遭受 DDoS 攻击时更容易黑掉我们网络中的流量。通常,BGP 黑洞是通过对目标进行黑洞来完成的,但是,我的客户正在寻找基于源地址的黑洞解决方案,因此攻击目标不会脱机。
基于目标地址构建黑洞解决方案并不难:只需让客户通过单独的 BGP 会话将目标宣布为更具体的路由,或者让他将其标记为特定社区,然后使用路由策略设置下一跳到某个丢弃接口。
构建一个黑洞解决方案,其中攻击源(不在客户的 IP 空间内)被黑洞化似乎有点困难。如果我使用与过滤目的地相同的解决方案,我的问题是我只想丢弃来自特定来源到该特定客户的流量,因此将丢弃路由插入我的路由表不再可接受,因为它会影响其他客户好。所以我需要一些方法来创建一个只适用于这个特定客户的过滤器。
我想到的第一个解决方案是使用 BGPFlowspec。不幸的是,这对这个特定客户不起作用,因为他的设备不支持它。
因此,我一直在寻找一种基于某些路由属性创建动态防火墙过滤器的方法,很可能是我们的客户或我们在通过专用 BGP 黑洞会话接收特定路由时设置的社区。然后可以将此过滤器应用于客户的接口以阻止不需要的流量。不幸的是,我还没有找到一种简单的方法来以这种方式创建防火墙过滤器(或前缀列表)。
我确实找到了http://thomas.mangin.com/posts/bgp-firewall.html,它“滥用”了 SCU/DCU 以或多或少地实现我正在寻找的东西,但这听起来确实有点像黑客.
我能想到的其他解决方案之一是在我们的路由上创建一些静态过滤器并构建一个接口,允许我们的客户修改此过滤器使用的前缀列表。但是,每次客户想要添加黑洞时都在我的路由器上推送配置更改并不是我真正想要的。一些使用 BGP 的解决方案将是首选。
在我们这边,路由是在 Juniper 上完成的,对于一个解决方案,我更喜欢可以在各种平台上使用的东西,所以它基本上应该只是我们通过单独的会话使用 BGP 或通过特定社区标记路由。这样我也可以将它用于其他客户。
如果有人对此有很好的解决方案(SCU/DCU 除外),我真的很感兴趣。