如何在Apache2服务器中拉黑占用CPU的Matomo归档命令?
解决Matomo CLI命令占用CPU的问题
首先明确:你之前添加的Apache Rewrite规则完全无效,因为问题中的PHP命令是通过命令行(CLI)直接执行的,根本不走Apache的HTTP请求处理流程,Rewrite规则只对HTTP请求生效。
下面是几种可行的解决方法:
方法一:通过Matomo后台配置限制归档触发
这条命令是触发Matomo的年度归档任务(CoreAdminHome.archiveReports),可以直接在Matomo后台限制归档的触发方式:
- 登录Matomo后台,进入「设置」→「系统」→「归档设置」
- 开启「仅允许通过cron执行归档」选项,这样就能禁止通过API或climulti请求触发归档(注意:开启前要确保你已经配置了定时cron任务来自动执行归档)
- 额外:可以在Matomo的「权限管理」中,限制超级用户的API调用权限,禁止调用
CoreAdminHome.archiveReports方法。
方法二:系统级限制该CLI命令执行
如果是有人恶意在服务器上执行这条命令,可以通过系统权限或脚本拦截:
- 限制console脚本的执行权限:
修改Matomo的console脚本权限,只允许指定用户(比如运行cron任务的用户)执行,其他用户无法调用:chown cron_user:cron_group /PATH_TO_MATOMO/console chmod 700 /PATH_TO_MATOMO/console - 用脚本拦截特定参数的PHP调用:
写一个简单的bash脚本,替换系统的PHP命令,拦截包含特定参数的请求:- 先备份原PHP命令:
mv /usr/bin/php8.1 /usr/bin/php8.1.real - 创建自定义脚本
/usr/bin/php8.1:#!/bin/bash # 检查是否包含禁止的命令参数 if [[ "$*" == *"climulti:request"* && "$*" == *"CoreAdminHome.archiveReports"* ]]; then exit 1 fi # 正常执行原PHP命令 /usr/bin/php8.1.real "$@" - 给脚本添加可执行权限:
chmod +x /usr/bin/php8.1
- 先备份原PHP命令:
方法三:排查并拦截远程触发源
如果这条CLI命令是通过远程HTTP请求触发的(比如服务器存在可被滥用的脚本):
- 查看Apache的访问日志,找到触发该命令的请求来源IP
- 用iptables拉黑该IP:
iptables -A INPUT -s 恶意IP -j DROP - 同时检查服务器上的PHP脚本,修复可能存在的命令执行漏洞,避免被再次滥用。
内容的提问来源于stack exchange,提问作者Naser Aslam
相关产品推荐
相关产品推荐

