08-04-2023, 02:35 PM
在本页中,我们介绍了目前缓解 DoS 攻击的几种方法。然而,目前还没有针对这一问题的单一通用解决方案。防御遭受攻击的站点需要创造力和定制方法。以下是一些提示:
配置参数
自提案 305实施以来,torrc在引入点添加了一些选项来帮助减轻 DoS 攻击:
有关其工作原理的更多信息,请查看tor(1)联机帮助页和Onion Services v3 规范[EST_INTRO_DOS_EXT]部分。
以下配置选项可用于限制汇聚电路中的连接:
洋葱平衡
Onionbalance允许洋葱服务运营商通过允许多台机器处理洋葱服务请求来实现高可用性。您可以使用 Onionbalance 进行水平缩放。你规模越大,攻击者就越难压倒你。Onionbalance 可用于v3 洋葱服务。
客户端授权或多个洋葱地址来划分用户
如果您有信任的用户,请向他们提供专用的洋葱服务和客户端授权凭据,以便其始终可用。对于不信任的用户,将其拆分为多个地址。也就是说,拥有太多洋葱地址实际上对您的安全不利(因为使用了许多保护节点),因此请尽可能尝试使用客户端授权。
验证码和 cookie
如果您需要进一步限制用户速率,请将您的基础设施分为几层,并将验证码放在前端附近。这样,攻击者必须先解决验证码,然后才能更深入地攻击您的基础设施。
验证码是缓解 DDoS 攻击的一种方法。当请求来自客户端时,检查客户端是否包含正确的安全 cookie,否则重定向到验证码页面。客户端输入验证码字母。Nginx 将此输入字母发送到 recaptcha 服务器进行验证。
来自 recaptcha 服务器的正确答案以“true...”开头,否则以“false...”开头。为正确验证的客户端添加安全cookie,将客户端重定向到他想要查看的页面。
可以使用 Nginx 和 OpenResty 直接在您的网络服务器上实现验证码,并使用Lua 生成和验证验证码图像。此实现并不容易配置。
另一种方法可能是仅实施测试 cookie 挑战。在您的网络服务器上检查客户端是否可以设置有效的 cookie,恶意客户端通常没有此功能。在 Nginx 中,Cloudflare 提供了一个与 cookie 交互的库。
其他方法包括确保连接到 .onion 的客户端具有有效的 User-Agent 标头,并且 Referer 标头未设置为可与攻击关联的值。
网络服务器速率限制
如果攻击者使用执行过多查询的激进电路让您不知所措,请尝试检测过度使用并使用HiddenServiceExportCircuitIDtorrc 选项杀死它们。您可以使用自己的启发式方法或使用 Web 服务器的速率限制模块。
上述提示应该可以帮助您在动荡的时期保持生存。与此同时,我们正在研究更先进的防御措施,以便洋葱操作员需要更少的手动配置和修补。
配置参数
自提案 305实施以来,torrc在引入点添加了一些选项来帮助减轻 DoS 攻击:
- HiddenServiceEnableIntroDoSDefense:启用内点级别的DoS防御。启用此功能后,速率和突发参数将被发送到引入点,然后引入点将使用它们对该服务的引入请求应用速率限制。
- HiddenServiceEnableIntroDoSBurstPerSec:引入点每秒允许的客户端引入突发数。如果此选项为 0,则被视为无限,因此如果设置了 HiddenServiceEnableIntroDoSDefense,则它会有效地禁用防御。
- HiddenServiceEnableIntroDoSRatePerSec:引入点每秒允许的客户端引入速率。如果此选项为 0,则被视为无限,因此如果设置了 HiddenServiceEnableIntroDoSDefense,则它会有效地禁用防御。
有关其工作原理的更多信息,请查看tor(1)联机帮助页和Onion Services v3 规范[EST_INTRO_DOS_EXT]部分。
以下配置选项可用于限制汇聚电路中的连接:
- HiddenServiceMaxStreams:每个集合点电路的最大并发流(连接)数。允许的最大值为 65535。(将其设置为 0 将允许无限数量的并发流。)
- HiddenServiceMaxStreamsCloseCircuit:如果设置为 1,则超过 HiddenServiceMaxStreams 将导致有问题的集合点电路被拆除,而不是超过限制的流创建请求被静默忽略。
洋葱平衡
Onionbalance允许洋葱服务运营商通过允许多台机器处理洋葱服务请求来实现高可用性。您可以使用 Onionbalance 进行水平缩放。你规模越大,攻击者就越难压倒你。Onionbalance 可用于v3 洋葱服务。
客户端授权或多个洋葱地址来划分用户
如果您有信任的用户,请向他们提供专用的洋葱服务和客户端授权凭据,以便其始终可用。对于不信任的用户,将其拆分为多个地址。也就是说,拥有太多洋葱地址实际上对您的安全不利(因为使用了许多保护节点),因此请尽可能尝试使用客户端授权。
验证码和 cookie
如果您需要进一步限制用户速率,请将您的基础设施分为几层,并将验证码放在前端附近。这样,攻击者必须先解决验证码,然后才能更深入地攻击您的基础设施。
验证码是缓解 DDoS 攻击的一种方法。当请求来自客户端时,检查客户端是否包含正确的安全 cookie,否则重定向到验证码页面。客户端输入验证码字母。Nginx 将此输入字母发送到 recaptcha 服务器进行验证。
来自 recaptcha 服务器的正确答案以“true...”开头,否则以“false...”开头。为正确验证的客户端添加安全cookie,将客户端重定向到他想要查看的页面。
可以使用 Nginx 和 OpenResty 直接在您的网络服务器上实现验证码,并使用Lua 生成和验证验证码图像。此实现并不容易配置。
另一种方法可能是仅实施测试 cookie 挑战。在您的网络服务器上检查客户端是否可以设置有效的 cookie,恶意客户端通常没有此功能。在 Nginx 中,Cloudflare 提供了一个与 cookie 交互的库。
其他方法包括确保连接到 .onion 的客户端具有有效的 User-Agent 标头,并且 Referer 标头未设置为可与攻击关联的值。
网络服务器速率限制
如果攻击者使用执行过多查询的激进电路让您不知所措,请尝试检测过度使用并使用HiddenServiceExportCircuitIDtorrc 选项杀死它们。您可以使用自己的启发式方法或使用 Web 服务器的速率限制模块。
上述提示应该可以帮助您在动荡的时期保持生存。与此同时,我们正在研究更先进的防御措施,以便洋葱操作员需要更少的手动配置和修补。