那些年我交过的“学费”
先说说我自己的经历,2016年,我用苹果CMS建了一个电影站,流量刚起来,某天早上发现首页被篡改成了赌博广告,服务器CPU爆满,数据库里多了几十万个垃圾用户,查原因——后台管理员账号用的是默认的admin,密码123456,被人用弱口令扫了,更惨的是,模板里有个文件上传漏洞,黑客直接传了个webshell进去,整站被拖库,那次折腾了三天才恢复,流量全没了,还花了800块找运维清理后门。

苹果CMS安全设置全攻略,一个老站长的十年踩坑血泪史
第二年,我又踩坑了SQL注入,苹果CMS的某些老版本搜索功能没做参数过滤,黑客在URL后面加个' or 1=1--就能爆出后台密码,虽然我后来更新了版本,但那次被攻击后,我发现黑客已经在我服务器上放了挖矿程序,CPU长期100%,电费都多交了好几百。
这些教训让我明白:苹果CMS的安全不能靠“侥幸”,必须从根上死磕,下面我把这些年积累的硬核经验分享给你,照着做,至少能挡掉90%的常见攻击。
核心安全配置(照着抄就行)
目录权限:掐死上传漏洞的七寸
苹果CMS的upload目录和runtime目录是最常见的攻击点,黑客常通过模板漏洞或插件漏洞,把恶意文件传到upload/tpl或runtime/cache下,我的做法是:
- 修改
upload目录权限为755(可读可执行,但不可写),所有上传功能都走application/index/controller/Upload.php进行额外验证。 - 把
runtime目录权限设为700(仅所有者可读写),禁止web用户写入任何可执行文件。 - 最关键的:在Nginx或Apache中禁止
upload目录执行PHP脚本,Nginx配置如下:location ~* ^/upload/.*\.(php|php5|phtml)$ { deny all; }这招能直接封死通过上传漏洞拿shell的路径。
禁用危险函数:PHP配置的保命符
苹果CMS默认的php.ini里有些函数需要禁用,否则黑客可以利用system、exec等执行系统命令,我常用的配置(在php.ini或.htaccess里加):
disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,curl_exec,curl_multi_exec,mail,error_log
尤其注意curl_exec和mail,很多挖矿程序依赖它们,如果你需要正常功能(比如支付回调),可以单独放开白名单,但建议先全禁用,测试没问题了再慢慢开。
后台防护:别让“admin”成为你的噩梦
- 修改后台路径:默认
/admin改成随机字符串,比如/u9x7kp,这一步能拦住99%的扫描机器人。 - 登录验证码:必须开启!推荐用Google reCAPTCHA v3,免费且不干扰用户体验,如果不想用国外服务,可以用苹果CMS自带的图形验证码,但记得把验证码字体改掉(默认字体是公开的,容易被OCR破解)。
- IP白名单:如果你有固定IP,直接在后台或Nginx里限制只能从某些IP登录,没有固定IP的话,至少开启登录失败次数限制(苹果CMS后台有插件支持,或者自己写个脚本,连续5次失败自动封禁IP 24小时)。
数据库防注入:从源头掐断
苹果CMS的数据库查询大多是MVC模式,但一些第三方模板或插件可能会直接拼接SQL语句,我的防护经验:
- 升级到最新版(目前稳定版是V10,注意官方域名经常变,别下到带后门的盗版)。
- 在
application/database.php里把debug设为false,关闭错误信息输出,防止SQL错误信息泄露。 - 使用参数化查询:如果你自己开发插件,一定用
Db::name('table')->where('id', $id)->find()这种写法,别用->where('id='.$id)。 - 安装安全插件:推荐“苹果CMS安全防护插件”(官方应用市场有,免费),它强制对所有GET/POST参数进行过滤,并记录异常请求。
实战踩坑后总结的必装插件
防篡改文件监控插件
我用的是“FileGuard”,它能监控核心目录(如application、static、template)的文件变化,一旦有文件被修改或新增,立即发邮件报警,我设置每5分钟扫描一次,上次站被挂马,就是这个插件2分钟内发现的,直接回滚了备份。
后台登录双因子认证插件
推荐“TOTP Authenticator for AppleCMS”,配合手机上的Google Authenticator使用,启动后,即使有人拿到了你的密码,没有手机验证码也进不去,装一次,终身安心。
WAF防火墙插件
我装的是“AppleCMS WAF 2024版”(免费开源),它基于OpenResty+Lua,在Nginx层面拦截恶意请求,能识别SQL注入、XSS、路径遍历等攻击,而且不会影响前台访问速度,配置时记得把“白名单”加上你自己的IP,避免误封。
长期维护:千万别以为“装完就结束”
- 更新要快,但别盲从:苹果CMS官方会发布安全补丁,但有些补丁会影响现有功能,我的习惯是:先在测试站上跑一周,没问题再上生产,关注安全社区(比如安全客、FreeBuf)的漏洞通报,有时官方还没发补丁,社区已经有临时修复方案。
- 日志监控是最后防线:每天花5分钟看
runtime/log下的错误日志,重点关注[SQL]和[Error]开头的记录,我写了个脚本,用grep过滤关键词,然后推送到钉钉群,这样有异常能秒发现。 - 备份要“三地存储”:本地服务器每天自动备份数据库和全站文件,同时传到阿里云OSS和腾讯云COS各一份,硬盘总有坏的时候,别把鸡蛋放一个篮子里,恢复演练每季度做一次,确保备份能用。
- 别用盗版模板和插件:这是最大的坑!很多所谓的“破解版”模板里夹带私货,比如暗藏后门、定时向黑客服务器发送管理员密码,我见过有人为了省200块钱买盗版模板,结果整站被黑,域名被墙,损失上万元,尽量去官方应用市场或信誉好的开发者手里买源码,实在要省钱,自己基于默认模板改,安全可控。
最后说句掏心窝的话
苹果CMS是个好系统,但它的生态里鱼龙混杂,我见过太多站长,花了大把时间搞资源,最后因为安全问题一夜回到解放前,安全不是一次性投入,而是持续的习惯,按我说的配置一遍,半小时搞定,接下来每个月花10分钟检查更新和日志,你的站就能安安稳稳跑几年。
如果你现在正被安全问题搞得焦头烂额,别慌,先断网、整站备份、检查文件修改时间,然后一步一步按上面的方案来,肯定能救回来,实在搞不定,加我交流也行(个人主页有联系方式),但别轻易找那些所谓的“安全专家”,他们可能比黑客还黑。
祝你早日省下这笔“学费”,把精力花在内容运营上。
发表评论