超级节点 一个针对 EOSIO 区块生产员的 DDOS 攻击的缓解方案

strahe · May 08, 2018 · Last by dnbstarz replied at August 21, 2018 · 6857 hits
本帖已被设为精华帖!

本文内容由 EOS42 提供, 原文链接: https://blog.eos42.io/ddos-mitigation/

本文的目的是为了指导区块生产员如何能保护 EOS 网络免受 DDOS 攻击。

并也提供了一些有关云供应商提供的 DDOS 保护服务之测试结果。

未来我们将会继续发布更多能缓解 DDOS 攻击的测试和结果。

以下的服务被应用到测试中:

  • 一个区块生产员节点,入站端口为 8888,9876。
  • 使用针对端口 1234 的 SSPD 攻击来执行 DDOS 攻击。
  • 一个 DDOS 僵尸网络 - 没有提供额外信息

向已封闭端口进行攻击的原因是为了表明在端口在未打开的情况下之脆弱性。 SSDP 攻击发生在网络层,这意味着你的防火墙必须拥有着能够处理所有数据包的能力。

关闭端口(ports)未必能够保护你能免受 DDOS 攻击。

当你从互联网上关闭一个端口时,所有定向于该端口的流量必须被防火墙清除,再此同时将需要一点 CPU 时间来删除每个请求。那就想像一下,如果你的防火墙正在被多个不同 IP 的数据包攻击,并且它们是以 50 Gbps 的速度来访问端口 1234 的。即使此端口是已关闭的,防火墙也几乎不可能可以处理这么大流量。

什么是 SSDP DDOS 攻击?

SSDP 全称为 Simple Service Discovery Protocol(普通服务发现协议),这是一种用于探索网络服务的网络协议。它主要用于连接互联网的 Wifi 路由器,网络摄像头以及许多其他的 IOT 设备。SSDP 允许电子设备能够利用从 UDP 端口 1900 上通过的【通用即插即用(UPNP)】消息来轻松地将连接到其他设备。大多数现代电子设备会提供有关初始设置的简要说明,但是一旦设置好,这些 UPNP 端口就会向全网公开。

一个 SSDP 攻击将会从多个设备向这些有漏洞的物联网设备请求一个【UPNP 发现数据包】,这是为了欺骗 IP 数据包来获取受害者的 IP,然后所有的 UPNP 回应数据包都将会被发送到受害者的 IP。

。SSPD 是一种加大功率的攻击如果您向一个这样的设备请求 UPNP,它将会回应他全部现有的服务。这一个 UPNP 数据包请求将会被分成多个回应数据包,并且都将会被发送回受害设备的 IP。

DDOS攻击场景 图片由https://www.corero.com/提供

1. DDOS 攻击测试 - 针对于一个应用【Azure DDOS 服务】的节点

说明:此测试是针对于一个在 Azure 的标准规格 DDOS 防卫服务上运行的节点,这是他们 提供的最高保护级别。

DDOS 防卫方式:Azure 规格(https://docs.microsoft.com/en-us/azure/virtual-network/ddos-protection-overview

DDOS 类型:速率为 50Gbps 的 SSPD

云提供商:微软 Azure

BP 节点类型:云

下图:从下面的结果可以看出,IP 地址在被攻击期间没有太多反应。

Azure DDOS 显示节点在攻击的高峰期收到了大约 6.25 GB / s(50 Gbp / s)的流量,节点只能抵挡住 5.18 GB / s(41.44 Gbp / s)的流量。

总结:Azure 能够做到一些保护,但它不能阻止一套完整的攻击,并且这套保护服务漏出了一个足够能将你 IP 地址以及在此 IP 上运行的服务丢失的数据包的数量。当受到攻击时,此节点无法正常地同步。

总体结果:抵抗失败

2. DDOS 攻击测试 - 针对于一个应用【Google 云】并采用 Google 提供的【标准 DDOS 防卫】的节点

说明:此测试是针对于一个在 Google 的标准规格 DDOS 防卫服务上运行的节点,这是他们提供的最高保护级别。

DDOS 防卫方式:谷歌云标准

DDOS 类型:速率为 50Gbps 的 SSPD

云提供商:Google

BP 节点的类型:云

* 此不是一个针对于 Google Shield 的测试。

总结:Google Cloud 做到了一些保护,但总的来说,节点无法正确地与区块链同步。在这其中实在是存在着太多的延迟以及丢失的数据包了,这也导致了节点无法正确同步。

总体结果:抵抗失败

3. DDOS 攻击测试 - 针对于一个应用【AWS 标准 DDOS 防卫盾】的节点

说明:此测试是针对于一个在 AWS 的标准规格 DDOS 防卫服务上运行的节点(免费的服务),这是他们提供的保护级别中最低的一级。

DDOS 防卫方式:AWS 标准 DDOS 防卫盾(https://aws.amazon.com/shield/tiers/

DDOS 类型:速率为 50Gbps 的 SSPD

云提供商:AWS(亚马孙)

BP 节点的类型:云

结论:AWS 提供了一些保护,但整体来说节点仍然会崩溃并且无法与区块链同步。同样先前一样,因为存在着太多的延迟以及丢失的数据包,导致了节点无法正确同步。

总体结果:抵抗失败

4. DDOS 攻击测试 - 针对于一个应用【Google Load Balancing 服务】(网络负载平衡器) 的节点

说明:在这测试其中,使用了一个向外部公开 IP 地址的 Google 网络负载均衡器,它将 TCP 端口 8888 和 9876 上的流量负载平衡到两个运行在内部 IP 上的 EOS 节点。

DDOS 防卫方式:Google 网络负载均衡器

DDOS 类型:速率为 50Gbps 的 SSPD

云提供商:Google

BP 节点的类型:云

结论:Google 负载均衡器承受了所有 DDoS 数据包,并没有影响任何传入流量。所有节点都能正确地与网络同步。

总结:抵抗成功

5. Incapsula DDOS 防卫 –( 正在测试中,即将推出。)

缓解 DDOS 攻击之策略

以下是一些关于如何保护自己免受 DDoS 攻击的指南。

• 将节点进行监视,并计划一个【故障转移方案】最可靠与便利的方法是主动地对节点和网络进行监视,以便在受到攻击时你能随时将生产员密钥迁移到运行在其他 IP 或网络的节点上。

• 不要创建 DNS 记录 不要为你的区块生产员创建 DNS 记录。利用蛮力来扫描连接着一个域名地址记录是一个非常基本的手段。因为攻击者可能会提前收集相关的数据,请更改你之前在测试网中使用过的所有 IP。

• 使用【Google 负载平衡服务】目前,根据 EOS42 的对各种云服务的研究,Google 负载平衡服务可提供足够的 DDoS 保护。

• 不要在互联网上允许任何指向到你区块生成器的【传入连接】以禁止【传入连接】的手段,亦指你区块生成器的 IP 是隐藏的。除非攻击者了解你的 IP 地址,否则他就不能执行攻击。

• 对于那些采用裸金属设备的用户们 – 请购买一个【TCP / UDP DDOS 代理保护服务】或使用【Google 负载平衡器】通过这种类的服务,你可以将所有流量转发给区块生成器,并将防火墙配置为仅接受来自 DDOS 代理 IP 的流量。你的外部 IP 仍将暴露,不过因为所以的传入连接都将是通过 DDOS 代理服务而流入的,所以这个方案提供了一个额外的安全层,

请注意,上述的方法都不是完美的解决方案,因为对 DDOS 攻击的预防是一个非常困难的任务。

一些额外关于防火墙的设置

• 连接限制:设定有限的新连接请求,首选现有连接。 • 年龄过滤:空闲的连接将从 IP 列表上删除掉。 • 源码率过滤:当与 DDoS 攻击关联的 IP 地址数量是有限的时候,不符合标准的外部 IP 地址将会可以轻易地被识别。 • 动态过滤:创建一个短期过滤规则,并在一时间段后将其删除。

终极 DDOS 防卫 - BGP 重路由

如果你有幸拥有一个 C 类子网和可以处理 BGP 路由的设备,你可以和一个 DDOS 擦洗服务合作。

在这种情况下,如果发生 DDoS 攻击,你将会把你的 BGP 路径重新发布并通过第三方机构把流量转发到你的 IP 地址,这将把所有的 DDOS 数据包擦洗掉(scrubbing),并且只有干净的数据包会传回你的网络。

不幸的是,由于 C 类子网的高成本以及相关需求规格,目前来说这个方案对我们大多数人来说都是遥不可及的。

总体结论

我希望这篇文章能够在社区对于如何防范 DDOS 攻击的方面做到一点启发。

从现在起到 6 月 2 日,EOS42 将对社区提供免费的 DDOS 防御测试。如果你想测试节点,请通过电子邮件charles@eos42.io或电报 Telegram @ankh2054联系我。

所有测试的结果都将会是保密的。

作者:Charles Holtzkampf

(此文章原意以英文为准。- https://blog.eos42.io/ddos-mitigation/

EOS42 电报群: https://t.me/EOS42

EOS42 微博: https://weibo.com/eos42

strahe 将本帖设为了精华贴 08 May 05:05

感谢,很有用

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up