服务器挂马清除与漏洞修补教程指南
服务器被挂马是运维中最头疼的问题之一,但别慌。
本文会从零开始,教你一步步完成服务器挂马清除与漏洞修补,全程可落地、可验证。
怎么判断服务器被挂马了?
先看几个典型症状:
- 网站访问异常,弹窗广告或跳转到其他页面
- 服务器 CPU、内存突然飙升,用
top命令能看到陌生进程占用高 - 日志文件异常增长,或者出现不认识的脚本文件
- 命令
netstat -antp | grep ESTABLISHED发现大量对外连接
如果出现以上任意一条,基本可以确认被挂马。
建议先备份网站文件(通过宝塔面板的“备份”功能或直接用tar命令),避免操作失误影响正常数据。
清除挂马:从进程、文件和计划任务入手
挂马通常会创建持续运行的进程或定时任务。
按顺序操作:
1. 查杀可疑进程
ps aux --sort=-%cpu | head -20
kill -9 1234 # 替换为实际PID
2. 删除挂马文件
挂马文件常藏在 /tmp、/var/tmp、网站目录的 upload 或 images 里。
find /tmp -type f -name "*.php" -mtime -7 # 查找最近7天修改的PHP文件
或者在宝塔面板“文件”管理里,直接搜索 eval(、base64_decode( 等特征字符串。
找到后先备份再删除。
3. 清理计划任务
黑客常利用 crontab 持久化。
crontab -l # 列出当前用户的任务
如果看到不明任务,直接编辑并删除:
crontab -e # 删除对应行,保存退出
在宝塔面板里,位置是“计划任务” -> 查看有没有异常脚本。
修补漏洞:从这几点入手
挂马清除后,不修补漏洞很快又会中招。
重点检查:
1. 弱口令和SSH密钥
cat /etc/ssh/sshd_config | grep PermitRootLogin
如果允许root密码登录,建议改为 PermitRootLogin no,然后用普通用户+密钥登录。
2. 软件更新
yum update -y # CentOS
apt update && apt upgrade -y # Ubuntu
特别关注 PHP、Nginx、MySQL 版本,后台可通过宝塔“软件商店”一键更新。
3. 关闭无用端口
netstat -tuln
只保留80、443、22(如有必要)等端口,其余用防火墙封掉:
firewall-cmd --permanent --remove-port=3306/tcp # 示例:关闭MySQL外网端口
firewall-cmd --reload
宝塔面板“安全”里可以可视化开关端口。
避坑提醒:这几个地方别手滑
- 不要直接 rm -rf /:很容易误删系统文件。确认文件归属后再删。
- 不要重启服务器:若进程已被杀死但文件未删干净,重启后计划任务可能再次拉起挂马。先删完文件清完任务再重启。
- 别忽略了备份:备份不只是防挂马,操作中途出错还能恢复。
- 注意区分挂马文件与正常文件:有些CMS(如WordPress)本身就有
eval或base64加密函数,但不一定是挂马。建议将可疑文件放到隔离目录观察。
验证是否彻底清除
- 观察系统负载:
top查看CPU、内存是否恢复正常。 - 检查进程与端口:
ps aux | grep -E 'suspicious|bot|miner'确认无异常进程;netstat -antp无陌生外连。 - 监控日志:
tail -f /var/log/messages,看是否有持续的错误或请求。 - 扫描网站文件:用在线或本地安全工具(如河马、D盾)重新扫描。
- 访问网站:用浏览器打开,确认无跳转或弹窗。
如果你正在处理服务器挂马清除与漏洞修补,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
记住,安全维护是长期的,定期更新、备份并检测才能防患未然。