如何在短时间内自动和临时阻止在服务器上造成过多点击的 IP 地址?

Pro*_*irl 22 scripting linux php lamp ip-blocking

我的一个 LAMP 服务器最近被某种寻找漏洞利用的脚本机器人关闭了。从它的外观来看,它每秒发出如此多的请求,它使服务器上的 RAM 过载并使我的整个站点停机一个小时。那个“攻击”都来自一个单一的 IP 地址。

那么如何在短时间内自动暂时阻止一个 IP 地址在我的 LAMP 服务器上造成过多点击?什么是这项工作的最佳工具,我应该在操作系统级别还是通过 PHP 解决这个问题?

Hop*_*00b 26

Fail2Ban。Linux 平台上此问题的黄金标准/默认解决方案。


Luk*_*uke 6

您应该避免尝试使用 PHP 执行此操作。当 PHP 介入时,已经太晚了 - 内存已经分配。

您可以在任何层禁止 IP 地址,但使用最少资源的最低级别是您要走的路由。这通常是防火墙。至少,iptables(linux防火墙)是你想要使用的。其他人提到了一些工具,例如 Fail2Ban,可以为您自动执行此操作。外部防火墙会更好。

除了尝试禁止违规 IP 地址外,您还应该尝试更好地利用您的资源。如果请求占用的资源较少,则攻击需要更长的时间才能生效。

Apache 也使用大量内存。如果您使用的是 mod_php,情况会更糟,因为 PHP 已加载到每个 Apache 子进程中。这意味着即使没有使用 PHP,对静态内容 (css/js/images) 的请求也会加载 PHP。您可以通过使用 FastCGI 来解决此问题。mod_fcgid 是一个不错的选择。

还有其他资源效率更高的 Web 服务器。Nginx 是我的最爱。还有 Lighttpd。很多人喜欢 Litespeed(替代 Apache)。

如果您想坚持使用 Apache,请考虑尽可能地调整它。考虑禁用 .htaccess。这是一个很好的解释为什么