网站在Cloudways上跑得好好的,某天有客户说:“你们网站在手机上打开,会跳到一个乱七八糟的广告页。”
这是WordPress网站中病毒最典型的症状。原因大多是某个插件或主题有漏洞,或者管理员密码被猜中,攻击者往服务器上传了恶意文件。
Cloudways的服务器本身有基础的安全防护,但网站里的代码(WordPress、主题、插件)是你自己负责的,网站被黑,需要自己动手清理。
本文讲这几件事:
- 怎么确认网站被黑了;
- 清理之前先做什么;
- 方法一:用Cloudways的恶意软件防护插件;
- 方法二:手动重装WordPress核心文件;
- 清理之后必须改的密码和检查项;
- 怎么防止再被黑;
- 找Cloudways客服能帮什么。
本文按WordPress和Cloudways官方文档、同行的实际处理经验整理。每个人的网站被感染的方式不同,清理没有唯一标准答案;如果网站是商城或者有重要数据,建议清理前先咨询专业人员。
不限主机的通用处理流程(扫描工具、Google复查、日文关键词劫持等),见《WordPress网站被黑、中毒了怎么办?》。
怎么确认网站被黑了?
常见的症状:
- 手机访问跳转到广告页,电脑访问正常。攻击者常常只对手机或搜索引擎来的访客跳转,站长自己在电脑上看不出来;
- 后台多了不认识的管理员账号,或者装了不认识的插件;
- Google搜索结果里,网站标题变成了乱码、博彩、药品之类的内容;
- 浏览器或Google提示“此网站可能有危险”;
- 服务器CPU、流量突然飙高,被用来发垃圾邮件、挖矿或者攻击别人;
- WordPress的文件被改过,比如
index.php最上面多了一段看不懂的加密代码,或者wp-includes、wp-content里出现了名字奇怪的文件。
自查的方法:
- 用手机的流量(不是Wi-Fi)打开网站,从搜索结果点进去,不要直接输网址;
- 登录WordPress后台,检查「用户」里有没有陌生的管理员,「插件」里有没有不认识的插件;
- 登录Search Console,看有没有“安全问题”的提示;
- 在Cloudways的「Monitoring」里看CPU、流量曲线,有没有无缘无故的飙升,监控的看法见《Cloudways服务器配置怎么选?》。
清理之前,先做这几件事
1. 先给中毒的网站做一份备份,留着备用。
听起来矛盾,但清理操作可能会删错东西,保留一份现场,出错了还能退回来。在Cloudways里手动备份一次即可,操作见《Cloudways怎么备份和恢复网站?》。这份备份只用来留底,不要拿它去还原。
2. 找出是什么时候中的毒。
看一下文件的修改时间、第一次有访客反馈的时间。后面如果打算还原备份,要选被感染之前的那一份。
Cloudways默认的备份只保留1周,网站被黑往往过了好几天才发现,那时候1周内的备份可能全都是带毒的。所以备份保留时间建议设成2周,见备份教程。
3. 如果是商城或有订单的网站,先暂停对外服务。
可以先开维护模式,避免访客继续被跳转,或者在中毒状态下提交订单。
方法一:用Cloudways的恶意软件防护插件
Cloudways有一个叫Malware Protection的功能,基于Imunify360,会自动识别并清理网站文件和数据库里的恶意代码,包括实时扫描、定时扫描和自动清理。
价格方面,Cloudways Flexible里它是按网站收费的付费插件(Add-on),默认关闭:
| 开通的网站数量 | 每个网站每月 |
|---|---|
| 1~5个 | $4 |
| 6~15个 | $3 |
| 15个以上 | $2 |
Cloudways Autonomous的网站不需要单独买,官方说明里写的是新建的Autonomous网站默认开启,包含在套餐里。Flexible的其他价格见《Cloudways多少钱?》。
怎么开通
- 在「Servers」里进入网站所在的服务器,点击网站图标,进入要保护的网站;
- 在左侧菜单里点击「Application Security」→「Malware Protection」(图中1);
- 页面顶部如果显示“Your application is prone to malware attacks”,说明还没开通;如果网站已经被感染,这里会显示“infected”;
- 点击「Enable Protection」(图中2)订阅。

订阅成功后,页面会弹出提示,实时保护随即开启,并且自动开始第一次扫描,页面上会显示扫描进度。扫描期间发现的恶意代码,会被自动清理。

看扫描结果
扫描完成后,页面会提示“Your Malware Scan is completed successfully”。发现的恶意内容在「Malicious」页签的列表里,每一行显示:
- Status(状态):Cleaned表示文件里的恶意代码已经被清除;Removed表示高危文件已经被删除;Quarantined表示文件被隔离,可以在操作列里还原;In Progress表示正在深度清理;
- Type(类型):file是网站文件,db是数据库;
- Malicious:恶意文件的路径;
- Reason:恶意代码的特征名;
- Actions(操作):眼睛图标可以查看被注入的代码,另一个图标可以还原被清理的文件。

没有发现恶意内容时,这个页签显示“All clear!”。想随时再扫一次,点击「Start Scan」。

另外两个页签:
- Scan History:所有扫描的记录,包括扫描时间、文件还是数据库、扫描的对象数量、结果(“No Malware Found”或者发现的威胁数量);
- Proactive Defense:实时拦截的记录,包括时间、描述、脚本路径、来源主机和IP地址。


用它要注意的几点
- 按网站收费,开通后每月都会扣费。不需要了要手动关闭,账单里的插件项见《Cloudways账单怎么看?》;
- 自动清理可能误判。有用户反馈过刚开通就把正常文件当成恶意文件,导致网站出现“严重错误”。所以开通前先备份,清理之后马上检查网站能不能正常打开,有问题就在操作列里把被清理的文件还原;
- 它不能替你改密码、删陌生账号。清理完文件,后面的步骤还是要自己做;
- 如果网站已经被黑,开通之后要等第一次扫描跑完,再去核对网站,不要中途就判断结果。
方法二:手动重装WordPress核心文件
不开付费插件,也可以自己清理。思路很简单:WordPress核心文件、主题、插件都是开源的,可以重新下载一份干净的覆盖掉;真正要保留的只有wp-content/uploads里的图片和wp-config.php。
奶爸建站笔记分享过一个Cloudways上的实例:网站的index.php被加了一段加密代码,指向wp-includes里一个名字奇怪的隐藏文件。处理办法就是备份留底,删掉除wp-content/uploads以外的所有文件,重新下载WordPress,再重新安装主题和插件。
步骤:
第一步:用SFTP或SSH登录
连接方法见《Cloudways后台常用设置:SFTP/SSH连接、PHP参数修改、Staging测试站》。
第二步:用WP-CLI校验文件
通过SSH登录之后,进入网站目录(public_html),用WordPress自带的命令行工具WP-CLI校验:
wp core verify-checksums
wp plugin verify-checksums --all
第一条会列出和WordPress官方不一致的核心文件,第二条检查插件。出现File should not exist或者Checksum does not match的文件,都是可疑文件。
第三步:覆盖核心文件和插件
核心文件可以直接重新下载覆盖,不会动wp-content和wp-config.php:
wp core download --force --skip-content
插件按名称重新安装,例如:
wp plugin install 插件名 --force
主题同理。来路不明的、已经不更新的插件和主题,这时候别重装了,直接删掉。
第四步:检查wp-content里的可疑文件
核心文件重装之后,病毒常常还留在这些地方:
wp-content/uploads里的.php文件。上传目录里本来只有图片、PDF这类文件,不应该有.php;wp-content/plugins里不认识的插件文件夹;wp-content/mu-plugins,这里的文件会被WordPress自动加载,是攻击者喜欢藏东西的位置;wp-config.php和.htaccess,打开看一下有没有看不懂的加密代码或跳转规则。
第五步:检查数据库
有的病毒会往数据库里写东西,最常见的是新增管理员,以及在文章内容、主题设置里插入跳转代码。在WordPress后台的「用户」里删掉陌生账号;文章内容里有没有<script>可疑代码,可以用搜索替换类的插件检查。数据库管理工具在应用的「Access Details」里点击「Launch Database Manager」进入。
遇到权限不够怎么办?
Cloudways是托管服务器,给用户的权限不是最高的。奶爸遇到的情况是,病毒文件用SFTP或SSH都删不掉,需要联系Cloudways客服帮忙删除。可以这样跟客服说:
My WordPress site was hacked. I found malicious files in the directory
public_html/wp-includes/ that I cannot delete via SFTP/SSH due to
permissions. Could you please help me delete these files?
Application: xxx. Server IP: xxx.
客服怎么提问、能管什么,见《Cloudways怎么联系客服?》。
方法三:还原到被感染之前的备份
如果你确定某一天的备份是干净的,也可以直接还原到那一天,步骤见备份教程。要注意:
- 还原后,那天之后的新文章、新订单、新评论都会丢失,有订单的网站不建议这样做;
- 还原回来的备份里,如果漏洞本身还在(比如那个有漏洞的插件),会再次被黑。所以还原之后马上更新所有插件、主题和WordPress。
清理之后必须改的密码
病毒清理干净不等于安全了,因为攻击者很可能已经拿到了你的密码。以下全部要改:
- 所有WordPress管理员密码,包括陌生账号以外的正常账号;
- 网站的SFTP/SSH密码,在应用的「Access Details」里;
- 数据库密码,改了之后
wp-config.php里也要同步; - Cloudways账号密码,建议同时开启两步验证;
- 网站用到的邮箱密码、SMTP密码;
wp-config.php里的安全密钥(salts)。重新生成一套,所有已登录的用户都会被强制退出,可以把攻击者留下的登录状态也清掉。
改密码的位置要注意:在Cloudways面板里改了WordPress管理员密码之后,如果又在WordPress后台改了,面板里记录的密码就不是最新的了,自己要记录好。
怎么防止再被黑?
大多数网站被黑,原因是插件有漏洞、密码太简单。日常做好这些:
- 及时更新:WordPress核心、主题、插件,有安全更新就更新;
- 删掉不用的插件和主题,只是停用也不行,要删除。已经几年不更新的插件,换掉;
- 不要用盗版的主题和插件,这是最常见的病毒来源;
- 用强密码,管理员账号不要叫
admin; - 限制登录尝试次数,可以用安全类插件,也可以放在Cloudflare前面,见《Cloudways怎么用免费Cloudflare?》;
- 开启自动备份,保留时间设成至少2周;
- XML-RPC接口:不需要用手机App或Jetpack远程管理的话,保持禁用。同行反馈Cloudways新建的网站默认已经禁用,可以在应用的「Application Settings」里确认;
- 考虑开通恶意软件防护,预算够的话,它能在文件被改的第一时间发现,比事后清理省事;
- 文件权限:不要随意把文件夹权限改成777。
常见问题
Google提示网站有危险,清理完怎么解除?
清理干净之后,登录Search Console,在「安全问题」里提交复查请求,一般几天内处理。
网站被黑,Cloudways会赔偿吗?
不要指望。Cloudways负责的是服务器和平台,网站里的代码和安全由用户自己负责,具体条款以Cloudways的服务协议为准。
被黑会产生额外费用吗?
服务器被用来发垃圾邮件、挖矿或者被攻击时,流量和CPU会飙高,超出套餐的流量要按量付费,见账单教程。所以发现异常要尽早处理。
怎么确定病毒清理干净了?
三个办法:一是用手机流量再测一次;二是wp core verify-checksums和wp plugin verify-checksums --all没有再报可疑文件;三是观察几天,看CPU曲线是否恢复正常、Search Console有没有新的提示。
清理太麻烦,直接重建网站行不行?
可以。新开一个网站,重新安装WordPress、主题和插件,再把wp-content/uploads里的图片和数据库里的文章内容导出导入过来。注意导入的内容里不能再带着可疑的代码。
总结
Cloudways网站中病毒,服务器是安全的,问题出在网站里的代码:先做一份中毒状态的备份留底,再选择清理方式。
- 想省事:开通恶意软件防护插件,每个网站每月$4起;
- 想自己来:用WP-CLI校验并覆盖核心文件和插件,检查
uploads、mu-plugins、wp-config.php和数据库里的可疑内容; - 权限不够的文件:联系客服删除。
清理完之后,要改掉所有密码,更新所有插件,删掉不用的插件和主题,并把备份保留时间设成至少2周。
更多Cloudways的使用教程,可以查看《Cloudways主机教程汇总》。



