我怎样才能防止 Apache DoS 洪水?

我怎样才能防止 Apache DoS 洪水?

我配置了一个运行 Apache 的服务器,几天前我在日志中注意到有机器人在对网站进行无休止的查询。日志显示这些机器人每秒运行大约 60 个查询,持续大约 20 分钟,这些查询来自同一个 IP 地址。我该如何限制查询,处理此类机器人的适当方法是什么?

提前致谢。

答案1

考虑安装一个速率限制软件,它不仅可以帮助您防御合法机器人。您可以使用mod_evasiveApache,也可以安装 Nginx 作为前端并使用其HttpLimitZoneModule内置的。

答案2

我强烈推荐这个工具失败2banhttp://www.fail2ban.org/);我们在自己的服务器上使用它,它对于限制 Apache 以外的 DoS 洪水攻击非常有用。

fail2ban 会主动监控各种日志以了解不同的模式(我们将其设置为仅监控 Apache 命中情况),如果它确定某个特定 IP 在一定时间内的命中次数过多,则会禁止该 IP 运行一段时间(我们使用 20 分钟的禁止窗口)

fail2ban 为大多数发行版预先构建了软件包,或者您可以获取源代码;由于是 Python,您甚至不需要编译它!:D

答案3

一个简单的解决方案是编辑 robots.txt 文件并添加以下行:

用户代理:*
抓取延迟:60

将抓取延迟更改为请求之间的秒数。“好”机器人应该听从这个,并在请求之间等待。然而,“坏”机器人不会听从任何 robots.txt 规则。

答案4

robots.txt 并将机器人重定向到静态网站。通常,让机器人(搜索引擎)抓取(索引)您的网站是一件好事。不过,建议的方法可以帮助您控制它们如何索引它。

相关内容