服务器被植入后门,如何加固防止再次入侵?
当你发现服务器被植入后门时,第一反应不应该是重装系统。
很多后门只是临时脚本或恶意进程,只要按顺序清理并关闭漏洞,就能避免再次中招。
下面是从排查到加固的完整流程,所有命令都可以在SSH终端里直接执行。
第一步:准备工具与确认当前状态
在动手前,先准备一个干净的环境。
打开终端(Windows用Putty或PowerShell,Mac/Linux直接用终端),用SSH连接服务器,并切换为root用户:
ssh 用户名@服务器IP
sudo -i
然后立即修改root密码,防止攻击者在你操作时再次连入:
passwd
接下来记下当前登录时间、在线用户和网络连接,方便后续对比:
w
last
netstat -antp | grep ESTABLISHED
最好截图或复制到本地,万一清错了还能回溯。
第二步:彻底清除后门进程与文件
先排查占用CPU或内存异常高的进程:
top
看到可疑的进程名(例如随机字符串、xmrig、kswapd0变体等),记录PID。
然后用lsof查看该进程打开了哪些文件:
lsof -p PID
确认后先杀掉进程,再删除对应文件:
kill -9 PID
rm -rf 文件路径
接着全盘扫描常见后门目录——重点是 /tmp、/var/tmp、/dev/shm,以及用户家目录下的隐藏文件夹:
find /tmp /var/tmp /dev/shm /home -name "*" -type f -mmin -1440 2>/dev/null | grep -v "^\.\.\."
删除所有非你自己创建的、大小异常的脚本或二进制文件。
但要注意,不要误删系统日志(如/var/log下的),只删可疑的.sh、.py或无名文件。
第三步:系统层加固——堵住后门入口
大多数后门是通过弱口令、未补漏洞或开放的不安全服务进来的。
这几步必须做:
- 禁用root远程密码登录,改用密钥对:编辑
/etc/ssh/sshd_config,找到PermitRootLogin,改成prohibit-password或no;再确认PasswordAuthentication no。保存后重启SSH服务:
systemctl restart sshd
- 关闭不需要的服务:用
ss -tlnp查看所有监听端口,除了22(SSH)、80/443(Web)等必要服务,其余一律禁用并停止:
systemctl stop 服务名
systemctl disable 服务名
- 加固防火墙:只开放必要端口。使用iptables或ufw,下面以ufw为例:
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
- 更新所有软件包,修复已知漏洞:
apt update && apt upgrade -y # Ubuntu/Debian
yum update -y # CentOS/RHEL
第四步:应用层防护与常见后门避坑
很多后门藏在Web目录、计划任务或SSH密钥中。
检查以下位置:
- 查看定时任务:
crontab -l以及/etc/crontab、/etc/cron.d/*,删除可疑条目。 - 检查SSH授权密钥:
cat ~/.ssh/authorized_keys,删除不认识的内容。 - 扫描Web目录:如果运行网站,用
find /var/www/html -name "*.php" -mmin -1440检查近期修改的文件,特别留意免杀一句话木马。
避坑提醒:不要直接删除/etc/passwd或/bin/bash等系统文件;
不要运行来源不明的“一键清理脚本”;
操作前最好做个快照(云服务器控制台可创建)。
第五步:验证加固效果与持续监控
重启服务器让所有配置生效,然后重新登录。
检查是否还有异常进程、端口和服务:
ps auxf
ss -tlnp
systemctl list-units --type=service --state=running
用在线端口扫描工具(如YourServerIP:80)测试公网端口是否只开放了必要的几个。
最后安装一个简单的入侵检测工具,比如 rkhunter:
apt install rkhunter -y
rkhunter --check --skip-keypress
每周运行一次,并结合logwatch分析日志。
如果再次发现异常,回看本文最开始的排查步骤,并考虑升级系统或更换密钥。
如果你正在处理服务器被植入后门的场景,建议先按本文步骤完整执行一遍,再根据自己环境微调。
遇到异常时优先回看避坑说明,不要凭感觉乱删系统文件。
安全加固不是一次性工作,每月检查一次定时任务和开放端口,能降低90%的入侵风险。