Pro*_*irl 22 scripting linux php lamp ip-blocking
我的一个 LAMP 服务器最近被某种寻找漏洞利用的脚本机器人关闭了。从它的外观来看,它每秒发出如此多的请求,它使服务器上的 RAM 过载并使我的整个站点停机一个小时。那个“攻击”都来自一个单一的 IP 地址。
那么如何在短时间内自动暂时阻止一个 IP 地址在我的 LAMP 服务器上造成过多点击?什么是这项工作的最佳工具,我应该在操作系统级别还是通过 PHP 解决这个问题?
您应该避免尝试使用 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。这是一个很好的解释为什么。