我们目前正在 Apache Debian 服务器上运行 PHP API(所有 URL 都被重写为 index.php 以进行路由处理)。
编辑:(我想我可能在错误的 StackExchange 上找到了这个问题,所以我很抱歉,我是从另一个问题中想到这里的。)
过去几周,“网络攻击”的数量有所增加。
例如,这包含在两到三分钟内对以下端点发出的 1000 多个请求的会话:
/old/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
/plus/e7xue.php
/wp-includes/fonts/wp-login.php
/?XDEBUG_SESSION_START=phpstorm
/cgi-bin/mainfunction.cgi
- 400 多个随机 .php 文件,有效载荷为
<?=die(@md5(Apri1));?>
- ..
我已经启用了 Apachemod_evasive
模块,但是这会导致很多误报,因为(我认为的原因是)正常的 API 路由被重写到 index.php 文件,而规避模块将其标记为“相同的网站/页面”请求(?)。
安全方面,我并不“那么”担心,我们所有的服务都是最新的,运行最新的补丁,API 有一个安全墙,...但由于路由处理,所有这些请求都会“启动”API,从而给服务器带来不必要的负载/压力。
我搜索过论坛和类似的东西,但我真的找不到“解决方案”。 (或者它与 Wordpress 的插件等有关)
现在来谈谈实际问题: 怎样才能有效地解决这个问题?
我考虑在 API 中加入自定义处理,检查对“未映射端点(导致 404)”的请求,记录 IP 地址,如果请求数量超过阈值,则将该 IP 地址添加到 .htaccess 以使用“拒绝来自”来阻止它(因为我不想启用 PHP 命令执行来将 IP 地址添加到例如iptables
)。但这似乎效率低下,所有这些都可以在更高层处理吗?
我知道网络攻击每天都在发生,你无法真正阻止它,但我只是想将此类请求的数量保持在最低限度,因为作为“服务器管理员”,这些请求让我感到压力很大。