MacCMS 安全加固
把 MacCMS 放到公网上,就等于把一个老框架的站点暴露给全世界。MacCMS V10 基于 ThinkPHP5,而 ThinkPHP5 历史上出过影响很大的漏洞,默认配置又比较宽松。自建站必须加固,否则很容易被扫描器挂马、植入广告、甚至拿到服务器权限。下面几件事装完就该做。
防住 ThinkPHP5 远程命令执行(RCE)
风险:ThinkPHP5 曾被爆出远程命令执行漏洞,攻击者构造一条特殊的 URL,就能让服务器执行任意命令。典型的攻击 payload 形如:
?s=/index/\think\app/invokefunction&function=call_user_func_array...这类请求如果打中没打补丁的站点,后果非常严重(相当于把服务器交出去)。
防护:
- 升级到打了补丁的版本:关注 magicblack/maccms10(备用 maccmsapp/maccms10)的发布,第一时间更新。这是最根本的办法。
- 加 WAF / 拦截规则:在 Nginx 或云防火墙里拦掉带
invokefunction、call_user_func_array、\think\这类特征的请求。 - 别在生产开调试:调试模式会把报错细节暴露给攻击者,等于帮他们探路(见下文)。
后台入口改名
风险:默认后台是 admin.php,谁都知道,等于把家门口挂了块牌子。
防护:进网站根目录,把 admin.php 改成别人猜不到的名字,比如 admin7854.php,之后用新地址进后台。改完记得同步改伪静态规则里 admin.php 那一行,否则后台会 404。
关闭调试模式
风险:开着调试(app_debug / app_trace)时,一旦报错就把文件路径、SQL、框架版本等细节直接显示出来,这些都是攻击者想要的信息。
防护:生产环境把调试和 Trace 关掉。配置在 application/config.php:
php
return [
'app_debug' => false,
'app_trace' => false,
// ...
];收紧目录与文件权限
风险:权限给太宽(比如全目录 777),一旦有文件被上传或篡改,影响范围会扩大。
防护:按最小权限来——
- 只有需要写入的目录可写:
runtime(缓存)、upload(附件)。 - 其余目录和文件给只读 / 最小权限,别一股脑 777。
- 安装完成后,锁住或删掉安装相关目录,避免被人触发重装(配合删
install.lock)。
及时升级打补丁
安全不是一次性的事。框架和 CMS 都会陆续修漏洞,装完就不管,迟早被老漏洞打中。
- 关注 magicblack/maccms10 的更新与安全公告。
- 升级前先备份数据库和配置文件。
- 升级后回归测试一遍前台、后台、采集和 API 接口。