服务器被挂马后,如何防止再次被入侵?
服务器被挂马后,大多数人的第一反应是赶紧删掉恶意文件,但过几天又中招了。防止再次入侵的关键不是单纯杀毒,而是堵住入侵者进来的路。
本文从实战角度拆解5个步骤,每个步骤都附带具体命令或面板操作,照着做就能让服务器重新回到安全状态。
第一步:立即隔离,切断扩散路径
发现服务器被挂马,先别急着扫描,第一步一定是隔离。
- 快照或备份系统盘:如果数据不重要,直接重装系统是最省事的方案。如果需要保留数据,先做快照(阿里云、腾讯云控制台都有快照按钮),避免后续操作失误导致数据丢失。
- 断开外网连接:在云控制台临时关闭公网IP,或者使用防火墙临时禁止所有入站流量:
iptables -P INPUT DROP
ip6tables -P INPUT DROP
执行后你的SSH也会断掉,所以最好通过控制台VNC连接操作。
- 备份关键文件:重点备份
/etc/下的配置、网站源码、数据库导出,用以下命令把文件打包后下载到本地:
tar -czf backup.tar.gz /var/www /etc /var/lib/mysql
scp backup.tar.gz your_local_ip:/path/
第二步:全面清除后门,不留死角
隔离后开始查杀。
注意:不要只依赖杀毒软件,手检更彻底。
- 查看异常进程:运行
ps aux或top,注意CPU和内存异常高的进程。用lsof -p PID查看该进程打开的文件。 - 检查网络连接:
netstat -anp | grep ESTABLISHED看是否有不明外连。 - 检查计划任务:
crontab -l和cat /var/spool/cron/*,删除可疑的定时脚本。 - 检查开机启动项:
systemctl list-unit-files --type=service | grep enabled,对应查看/etc/init.d/、/etc/rc.local等文件。 - 使用专业工具扫描:安装 ClamAV 或 rkhunter:
yum install clamav -y && freshclam && clamscan -r / --remove
如果使用宝塔面板,可以在软件商店安装“木马查杀”插件,一键扫描。
第三步:修复漏洞,加固配置
后门清除了,但入门口还在,必须堵上。
- 修改所有密码:服务器root、MySQL、FTP、WordPress后台密码全部改成随机强密码(字母+数字+特殊符号,至少16位)。
- 禁用SSH密码登录,改用密钥:编辑
/etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin prohibit-password
PubkeyAuthentication yes
重启服务 systemctl restart sshd。
注意:先确认你的密钥已经添加到 ~/.ssh/authorized_keys,否则会把自己锁在外面。
- 限制常用服务端口:修改SSH默认端口(比如2222),关闭不用的端口(telnet、FTP等)。在宝塔面板安全菜单中设置防火墙规则。
- 更新所有软件包:
yum update -y或apt update && apt upgrade -y,尤其修复已知漏洞的包(如 OpenSSH、Apache、Nginx )。 - 配置Web目录权限:网站源码目录所有者为非www用户,只给755权限,上传目录单独设置禁止执行PHP。Nginx中加
location ~ \.php$ { deny all; }。
第四步:安装监控与文件完整性工具
加固后要建立持续监控,防止再次被入侵而不自知。
- Fail2ban:防止暴力破解SSH。安装后配置
/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
宝塔面板可以直接在“安全”-“SSH安全”中开启暴力破解防御。
- AIDE 或 Tripwire:定期检查文件完整性,发现可疑改动时告警。安装后初始化数据库,然后每天一次增量检查:
aide --init
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
aide --check
- 云监控:使用阿里云安骑士(免费版)或腾讯云主机安全,开启文件完整性校验和异常进程告警。
第五步:日常安全巡检与日志审计
最后一步是养成习惯,每周花5分钟做一次简单巡检。
- 查看关键日志:
journalctl -xe | grep 'Failed password'
tail -f /var/log/secure
- 使用 Logwatch:安装后每天自动发邮件报告:
yum install logwatch,配置发送地址。 - 定期检查计划任务:每周手动跑一次
crontab -l和ls -la /var/spool/cron/。 - 效果验证:用在线网站如 SiteGuarding 或本地运行
chkrootkit扫描确认无后门;尝试从外网SSH多次输错密码,看是否被 Fail2ban 封禁。
避坑指南(高频问题)
- “重装系统就一劳永逸了?”:不对。如果不修改密码和加固配置,新系统还会被相同手段入侵。重装后务必执行第三步。
- “只杀毒不检查计划任务”:很多后门会写隐藏计划任务,杀毒软件扫描不到。建议手动检查
crontab -l和各用户的cron目录。 - “开了宝塔防护插件就安全了”:宝塔防护插件只是辅助,需要搭配系统层面的加固。比如危险端口、弱密码仍需手动处理。
- “忘记备份导致数据丢失”:被挂马后千万不要直接重装,先快照再查杀,避免误删正常文件。
如果你正在处理服务器被挂马后如何防止再次被入侵的问题,建议按以上步骤完整执行一遍。
遇到异常时先回看避坑部分,再结合在线搜索定位具体报错。
安全不是一次性的操作,而是持续的习惯。