Skip to content

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 接口。

遇到具体报错先看部署排障大全,装站流程见安装教程。