我的企业核心路由器已连接到ISP(单宿主)。该路由器已经在BGP更新中将特定的公共IP前缀交换给了ISP。现在,让我们说有一个AS距离几跳远,它用DDoS攻击淹没了我的本地AS。该自治系统中有多个网络以我的本地自治系统中的Web服务器为目标。
我们如何通过使用BGP在路由器上阻止此流量?
感谢您的回应! :)
#1 楼
使用BGP可以做两件事:RTBH-远程触发的黑洞
第一种选择是根本的选择:IP受到攻击的黑洞(阻止流量)。缺点:目标IP不再可用。好处:您的网络其余部分保持正常运行。 Packetlife对它如何工作以及如何做有很好的解释。第二个选项建立在第一个选项的基础上:
基于源的RTBH
RTBH也可以(在某些配置中)用于阻止来自特定IP的流量(在真正的DDoS中,这并没有太大帮助)。流量将来自数千个IP)。同样,Packetlife也有一个解释。
您可以从RADB这样的路由数据库中获取AS的所有前缀,并使用基于源的RTBH阻止它们。但是,流量仍然会在边界上打到您的网络。网络已经存在,因此您不必处理它。
评论
Packetlife所描述的方法很有用,但在上行链路被攻击流量饱和的情况下将无用。我写了一个关于使用上游黑洞社区解决此问题的答案。
–艾略特B.
2014年9月11日下午0:32
这是我的最后一句话:“当您使用“简单” RTBH时,优点是您可以将这些RTBH路由发送到您的上游ISP(如果他们支持),后者便可以阻止其网络中的流量,因此您无需处理。”
–塞巴斯蒂安·维辛格
2014年9月11日在11:23
我看到了,但是我想详细介绍由客户触发的黑洞方法,并指出“ [无须处理]”意味着黑洞否则将无效。并不打算敲您的答案,只是提供更多信息:)
–艾略特B.
2014-09-11 18:49
#2 楼
@Sebastian通过Packetlife描述的RTBH方法很有用,但是该方法仅在上行链路没有被攻击流量饱和时才有效。如果您的上行链路已饱和,则必须在攻击流量到达您的网络之前的某个时间点实施黑洞。您可以使用上游黑洞社区来做到这一点。
飓风电气提供了有关BGP社区客户触发的黑洞的简单解释/示例:
攻击开始
客户标识受攻击的ip或ip范围
客户静态将ip或ip范围路由到Null0并添加
公告的相应前缀,并带有一个路由映射,该路由映射将其标记为6939:666。思科配置示例(其中XXXX是被攻击的ip):
conf t
ip route X.X.X.X 255.255.255.255 Null0
router bgp YourAS
network X.X.X.X mask 255.255.255.255 route-map blackhole
route-map blackhole permit 10
set community 6939:666
end
请注意,
6939:666
是飓风电气特有的黑洞社区。您可以修改此值以与上游提供程序的blackhole社区相对应。当然,有多种方法可以配置它。在我的Brocade设备上,我使用以下配置:
router bgp
!
redistribute static route-map blackhole
!
!
route-map blackhole permit 5
match tag 66
set community 55555:666
55555:666
是上游提供商的黑洞社区。然后可以使用简单的命令应用上游黑洞:ip route 123.123.123.123 255.255.255.255 null0 tag 66
#3 楼
从BGP的角度来看,您无能为力。您可以停止发布前缀,但由于没有人可以访问您的服务,因此您即将完成DoS攻击。如果您有多个前缀,则可以重新编号,但攻击可能会转移到新的前缀前缀也是如此。
您需要做的是在上游工作。他们有擦洗服务吗?如果他们拥有Arbor Peakflow之类的系统,则可以在流量进入网络之前清除流量并对其进行清理。这样的服务通常非常昂贵。比本地设备的流量大得多。
#4 楼
我在CloudFlare工作,我想分享一些我在来这里的最近几个月中在缓解DDOS攻击方面获得的一些知识。首先;许多人诉诸网络级别的措施来减轻应用程序层DDOS攻击。在转向BGP Blackholing之前,请考虑是否可以处理速率限制或应用程序层保护。那说;现在发出非常大容量的DDOS攻击非常便宜(考虑到周围有多少个Open DNS递归,以及它们如何放大攻击)。
如Elliot在他的回答中所述,使用BGP社区来黑洞通信如果您的网络较小,可以很好地工作;这种机制记录在RFC 3882中。但是,像我们一样,如果您希望代替黑洞来吸收攻击流量(即,您希望收集DDOS攻击数据),请当心附带损害,中间网络提供商最终会变得拥挤。您可以通过直接与发起攻击的网络的ISP对等来减轻附带损害。这样,您拥有了从攻击者到目的地的最短路径。此外,您还可以实施Anycast网络设计,这将有效地意味着一个IP地址访问多个数据中心(取决于哪个数据中心是最接近的)。
显然,并非每个公司都拥有可以进行Anycast和凝视这就是为什么企业越来越多地转向云服务以在流量到达其数据中心之前消除其流量的原因。自然,CloudFlare就是这样一种服务。
#5 楼
如果您收集的所有证据都是来自一个特定AS的源IP地址的大量数据包,则您可能会得出错误的结论。反射/放大攻击涉及发送大量欺骗受害人源IP地址的数据包。如果实际上这是正在发生的事情,并且您的网络中有可以放大攻击的服务器,则您指控攻击的网络实际上是受害者,并且您正在帮助攻击者。
在这种情况下,解决方案不是应用任何类型的流量工程,而是配置服务器以使其不能在放大攻击中使用。如何做到这一点并不是一个真正的网络工程问题。
所有包都可能源自一个AS。通过与有问题的AS的合作,您可以确认数据包确实来自其AS。但是,通过这种级别的合作,您也可以从源头上阻止攻击。
如果我们假设您已经通过某种方法获得了确认,则我并没有考虑过确认数据包确实来自您所认为的AS,并且您无法从源头上将其阻止,而是想通过BGP来阻止它,那么我已经读到了实现这一点的某种风险方法。这个想法是您在要声明的路由之前添加一条AS路径。在此前缀的AS路径中,包括这些数据包的源的AS号。
当公告到达有问题的AS中的BGP路由器时,它们将检测到环路并丢弃公告。同时,世界其他地方不会看到循环并接受该公告。
那是理论。它实际上是否将在实践中起作用取决于几个不同的因素。例如,这取决于实际使用数据包所来自的AS号,这可能与宣布这些IP地址的AS号不同。 (这种差异可能是合法的,也可能是由于欺骗造成的。)
这还取决于上游用户是否发现AS路径可疑而不对其进行过滤。此外,距离您较远的网络也可能会放弃您的路由,例如,如果他们也对违规的AS有不好的经验,并决定从那里删除所有路由。
这是否值得您打电话风险。
(如果我可以再次找到的话,我会链接到这种方法的来源。)
评论
那是非常危险的事情。您正在欺骗自己不拥有的另一个AS。同样,如果其他人从该AS丢弃了路由,他们也将丢弃您的路由。
–塞巴斯蒂安·维辛格
2014年9月9日在8:44
@Sebastian是的,这种风险也存在。但是,如果替代方案是由于流量泛滥而无法访问的网络,则可能值得承担这一风险。
–卡巴斯德
2014年9月9日在9:21
听起来这是一个非常糟糕的主意,我之前从未听说过。当有一个僵尸网络节点时,它会中断整个ASN的连接,例如,这不是您想要的。大型云提供商。而且,它会随着DDoS的扩展而严重扩展,DDoS的攻击使成千上万的僵尸网络节点正在攻击您网络中的某些内容。
– Teun Vink♦
2014年9月9日9:33
@TeunVink绝对不适用于典型的DDoS攻击。但是OP并没有询问典型的DDoS攻击。他正在询问所有流量都源自一个AS的攻击。如果另一种选择是破坏与整个Internet的连接的攻击,则断开与一个AS的连接是可以接受的。
–卡巴斯德
2014年9月9日9:43
#6 楼
您可以从本地网络对它们的AS进行黑洞处理,因此BGP路由器会为它们声明的任何前缀创建空路由。对他们来说,这是他们的目标,同时您仍然可以与其他人正常交换数据。您的本地入口过滤将自动丢弃来自该AS的传入数据包。
相反:
它们可以在路由器上创建黑洞路由,因此请确保制定适当的规则以保持最重要的路由完整
评论
对整个AS进行黑洞处理意味着您最终要自己进行DOS。该AS中没有其他人可以联系到您。您的客户也可能在该AS中。
–罗恩·托恩(Ron Trunk)
2014年9月8日下午16:13
我在这里假设一个敌对的AS,也就是说,如果您完全封锁它们,就会失去价值。我将一些“防弹托管”服务归为此类。
–西蒙·里希特(Simon Richter)
2014年9月8日在16:25
大多数ASN并不完全敌对或友好,只是包含一些作为僵尸网络一部分的主机。此外,这种方法不会阻止上游链接被淹没,因此它不会帮助您停止基于卷的DDoS攻击。
– Teun Vink♦
2014年9月9日上午9:31
评论
您如何确定此流量的来源?如果您仅查看源IP地址,则可能会被欺骗。如果发生反射攻击,则将看到单个AS中所有欺骗源地址的大量数据包。有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以发布并接受自己的答案。