宝塔面板挂马了怎么清理
学完这篇,你能在没有专业安全团队的情况下,按顺序把一台被挂马的宝塔服务器从"能上网但处处是洞"清理回可用的干净状态。
第一步:先别急着重装,确认马在哪
访问你的网站首页,右键"查看网页源代码",在源码里搜 eval、base64_decode、iframe,如果出现你不认识的外部域名脚本,基本可以确定网页被挂了。
接下来要分清是网站目录被挂马,还是宝塔面板本身被入侵——这两件事的处理方式完全不同。
SSH 登录服务器,执行:
find /www/wwwroot -name "*.php" -mtime -30 -ls
输出里有你不认识的文件,逐个 cat 看内容。
注意:面板被入侵的典型特征是
/www/server/panel下出现陌生文件、/www/server/cron/里有不认识的计划任务。先执行ls -la /www/server/cron/看一眼。
第二步:备份现场再动手
别直接删。先整站打包留证,万一清理错了还能回滚:
mkdir -p /root/backup_$(date +%F)
tar -zcf /root/backup_$(date +%F)/wwwroot.tar.gz /www/wwwroot
数据库单独导出:宝塔面板 → 左侧「数据库」→ 找到对应库 → 点「备份」。
注意:备份文件要立刻下载到本地或挪到别的机器,别留在被入侵的服务器上,否则等于给攻击者留着。
第三步:清理网站木马
用宝塔面板自带的搜索:**左侧「文件」→ 进入 /www/wwwroot → 右上角放大镜图标 → 输入 eval( → 范围选「当前目录」**。
命令行批量查也可以:
grep -rn --include="*.php" -E "eval\(|assert\(|base64_decode\(" /www/wwwroot | head -50
对照结果逐个确认——正常的框架代码也会用 eval,别误删。真正的一句话木马通常长这样:<?php @eval($_POST['xxx']);?>。
清理时优先删除整个被污染的文件,再从官方渠道下载同版本覆盖,不要只删掉那一行,攻击者常常在多处埋点。
第四步:排查后门
last -n 30 # SSH 登录记录
cat /root/.ssh/authorized_keys # 有没有陌生公钥
crontab -l # 当前用户计划任务
cat /etc/crontab
ls -la /tmp /dev/shm # 常见木马落地目录
authorized_keys 里出现你不认识的 ssh-rsa 开头内容,直接删掉——这是最危险的免密后门。
面板里也要查:左侧「计划任务」、「网站 → FTP」、「数据库」,把不认识的条目全部删除。
第五步:升级面板并改掉所有密码
进入宝塔面板 → 首页右上角「更新」,或 面板设置 → 检查更新,升到最新版。旧版宝塔的已知漏洞是被打的重灾区。
然后一次性改完:
- 面板密码(面板设置 → 修改密码),并开启面板 SSL 和二次验证
- 面板默认端口 8888 改成随机端口
- SSH 端口、root 密码
- 所有网站后台管理员密码、数据库密码、FTP 密码
注意:改密码的顺序是先改 SSH 和面板,再改网站和数据库,否则中途可能被攻击者用旧凭据再打一次。
第六步:堵住入口
编辑 /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
保存后执行 systemctl restart sshd,之后改用密钥登录。
宝塔面板 → 左侧「安全」→「系统防火墙」,只放行 80、443 和你的 SSH 端口,其余全部关掉。
网站目录权限设成 www:www,目录 755、文件 644:
chown -R www:www /www/wwwroot/你的站点
注意:
/www/wwwroot下任何目录都不要设 777,这是被挂马的头号原因。
第七步:验证
重新访问网站,查看源码确认恶意脚本消失。观察 24 小时,如果又冒出来,说明清理不彻底——这时候重装系统 + 从干净备份恢复通常比反复排查更快。
小结
- 先分清是网站挂马还是面板入侵,两者处理路径不同
- 动手前必须备份,且备份文件不能留在原服务器
- 木马要整文件替换,不能只删一行代码
authorized_keys、crontab、/tmp是最容易被忽略的三个后门位置- 升级面板、改全部密码、关掉多余端口,缺一不可
- 反复复发就重装系统,别硬扛
原文链接:https://www.gj0.com/thread-618.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。