有恶意用户针对我的网站,发送大量 POST 请求。我有自动化系统来阻止滥用 IP,但问题是我通过数据库在 PHP 代码中阻止他们。因此,他们发出的每个帖子请求都会进行数据库调用。这造成了压力。我也以冷却的形式进行此检查。
由于我使用的是 Cloudflare,所以我无法自动将滥用的 IP 添加到 iptables 或类似的东西中,而且 apache 也无法获取真实的 IP。
处理此问题的最佳方法是什么?我一直阻止他使用的 VPN 的 IP 范围,但是一旦被阻止,正在使用的 IP 就会切换。
答案1
通过安装mod_cloudflare,您可以查看访问者的实际IP。
https://support.cloudflare.com/hc/en-us/articles/200170836-如何将原始访客 IP 恢复到 Apache-Web-Servers-
如何将原始访问者 IP 恢复到 Apache Web 服务器?
要将原始访问者 IP 地址恢复到 Apache httpd Web 服务器上运行的日志文件和 Web 应用程序,您需要安装 mod_cloudflare。要安装 mod_cloudflare,请按照我们的下载页面上描述的安装步骤进行操作。
之后,您可以在任何请求到达任何 PHP 脚本之前通过 htaccess 在 Apache 级别阻止恶意 IP。
更新:
Cloudflare 下载页面为常见的 Linux 发行版提供了现成的软件包。如果您的发行版不受支持,您可以按照此处所述为您的 Apache 编译模块: https://www.cloudflare.com/resources-downloads#mod_cloudflare
选项 4:手动安装:Debian / Ubuntu
mod_cloudflare 有一些软件依赖项需要先安装:
apt-get install libtool apache2-dev
注意:如果您发现无法安装 apache2-dev,那么您应该安装:
apt-get install libtool apache2-threaded-dev
接下来,您应该将 mod_cloudflare 源下载到您的服务器:
wget https://www.cloudflare.com/static/misc/mod_cloudflare/mod_cloudflare.c
最后,安装模块。根据您的系统,要运行的命令可能是 apxs 或 apxs2。因此,请运行以下两个命令之一。如果在运行其中一个命令时出现“未找到命令”,请尝试另一个命令:
apxs -a -i -c mod_cloudflare.c
apxs2 -a -i -c mod_cloudflare.c