如何应对搜索引擎遭受的 DDoS 攻击?

如何应对搜索引擎遭受的 DDoS 攻击?

我们正在运行一个搜索引擎,发现过去几天来自数千个 IP 地址的大量虚假搜索查询。查询文本或 IP 范围没有真正的规律。似乎有一个机器人网络试图破坏我们的搜索引擎。目前,我们每秒看到大约 30 个虚假查询,并且这个数字还在增加。

我们尝试设置 cloudflare,但并没有太大帮助。我们可以尝试使用 Captchas 来屏蔽不良流量,但这可能会降低我们真实用户的可用性。

有人知道我们该如何处理这个问题吗?我们在 AWS 上使用 Route53 运行。

答案1

这是一个棘手的问题,因为他们本质上是在使用您网站的合法功能。

您有几个基本选择:

  • 做更多工作来尝试识别攻击并阻止它们。在这种情况下,我必须做的第一件事就是制作一些工具,以便您可以看到正在发生的事情并寻找模式。我能够相当轻松地做到这一点,只需使用一些 awk 脚本并对各个字段进行计数以寻找共同点。请求是否具有相同的用户代理?也许是引荐来源?也许是搜索字符串长度?所有 IP 都来自一个国家吗?也许他们使用 URL 的方式有点奇怪,比如附加一个“?” - 任何你可以抓住的东西都可以识别流量。这部分通常是猫捉老鼠的游戏,取决于你能或愿意在自己这边做多少观察,以及攻击者有多勤奋。

  • 您还可以禁用网站的该功能并保留其余功能。也就是说,最实用的方法是将您的搜索引擎替换为静态的“暂时不可用,我们正在进行一些更改”消息,直到攻击结束。

  • 您还可以优化搜索引擎,使其在负载下运行得更好。根据您使用的引擎,有些搜索引擎效率较低(例如 Drupal)。经过适当优化,您可能能够处理流量。在计算数字之前,不要低估由于代码效率低下而导致的 CPU、内存等损失。

如果搜索引擎是您业务的核心,并且有聪明人真正在追求它,那么您就需要尽可能地对其进行优化,并扩展您的基础设施来处理负载。

答案2

您需要以一种可以过滤掉不良流量的方式来改变您的功能,这将导致“军备竞赛” - 但您始终处于您在改变而他们在响应的位置 - 如果您总是提前准备下一步,您就可以在他们的新版本可用时有效地中和它。

如果你继续这样做,他们可能很快就会放弃或者改变攻击媒介。

例如:

  • 在搜索表单中添加一个隐藏字段(只是一个常量值),如果该字段缺失,则拒绝请求。

  • 当他们更新他们的机器人以包含该字段时,将其值更改为 IP 特定值(只需 IP 地址即可)

  • 当他们再次更新时,将值更改为 IP 地址 + 密钥的哈希值

  • 下一次更新将添加一些需要简单 javascript 的内容(例如,给客户端两个数字并要求计算这些数字的总和)。

  • 下一次更新将从 cookie 中获取 javascript 参数。

  • 等等,等等,等等。

关键在于,每次他们更新攻击方式时,你都准备好了解决方案并强迫他们再次更新,希望他们最终能在某个时候放弃并寻找更容易的目标。

答案3

仅当特定 IP 在 x 时间范围内发出超过 x 个请求后,您才可以引入验证码。

相关内容