服务器反复被植入后门,根源在于系统存在未修复的漏洞或管理疏漏,彻底清除需要“断源-清理-加固”三步走,只删文件不补洞,后门很快会卷土重来。
先搞清楚后门软件是怎么进来的
后门软件不会凭空出现,你经常在服务器上发现可疑进程、陌生账号或者定时任务,说明攻击者已经拿到过某种执行权限,常见入口有这么几类:
- 弱密码爆破:SSH、RDP、MySQL、Redis这些服务暴露在公网,密码复杂度不够,黑客用字典跑几天就能登进去。
- Web应用漏洞:用的是旧版ThinkPHP、WordPress插件、Java中间件,存在反序列化或文件上传漏洞,攻击者直接传个webshell。
- 第三方组件后门:从非官方渠道下载的源码包、NPM包、Docker镜像里被人塞了恶意代码。
- 运维习惯问题:root账号直接给开发用,防火墙放行不必要端口,内网横向渗透后留下持久化后门。
行业共识认为,超过一半的后门事件源自弱口令和未打补丁的系统漏洞,如果你连攻击入口都没找到,清理后门就是在治标不治本。
服务器被植入后门怎么处理?先定位再清除
处理后门不能急着重装系统,那样会丢失业务数据,而且攻击入口还在,按下面的顺序操作,每一步验证完再走下一步。
第一步:断网隔离,保留现场
先把服务器从公网断开,或者用安全组把入站流量全部拒绝,这一步是为了防止攻击者继续操作,也防止后门外传数据,同时保存当前进程列表、网络连接、计划任务、日志文件,这些是你排查的线索。
执行命令保存快照:
ps aux > /tmp/process_snapshot.txt netstat -antlp > /tmp/network_snapshot.txt crontab -l > /tmp/cron_snapshot.txt last -20 > /tmp/login_snapshot.txt
第二步:揪出可疑进程和网络连接
在断网状态下,仍有外连行为的进程几乎可以肯定是后门,重点看这些迹象:
- CPU或内存占用异常高的进程,名字伪装成
sysudt、kthreadd、php-fpm但路径在/tmp或/var/tmp下。 - 监听高端口或回连端口,比如
4444、5555、6666、8081。 - 父进程是
(init)但本身不是标准系统服务的进程。1
用top按CPU排序,再用ls -l /proc/PID/exe查看可执行文件路径,很多后门会运行在/tmp、/dev/shm、/var/run这些可写目录里,正常的系统程序绝不会从这些地方启动。
第三步:检查计划任务、启动项和SSH配置
后门要持久化,通常会写入这三个地方:
- crontab:
crontab -l和/etc/cron.目录下的文件,重点看有没有curl、wget下载命令或base64解码执行的条目。 - 自启动服务:
systemctl list-unit-files | grep enabled,留意新出现的服务名。 - SSH后门:
~/.ssh/authorized_keys里是否多了不认识的公钥;/etc/ld.so.preload文件是否存在且非空。
发现任何可疑文件,先复制备份,再删除,不要急着删除有些后门会做关联检测,你删掉主文件,它立刻通过备份恢复。
第四步:查Web目录和日志
如果你的服务器跑着Nginx或Apache,/var/www或网站根目录下很可能藏着webshell,用以下特征查找:
- 最近7天内被修改过的PHP、JSP、ASP文件:
find /www/wwwroot -name ".php" -mtime -7包含eval(、base64_decode(、assert(、shell_exec(的代码。 - 日志中大量POST到
.php文件的记录,尤其是wp-login.php、index.php后带乱码参数。
查到webshell后,打开源文件看头部注释和编码方式,确认是攻击者留下的还是正常业务代码,砍掉整个目录之前,先确认网站备份是最新的。
服务器后门清除工具哪个好?实战对比与手动排查
市面上有不少安全软件能扫描后门,但它们的侧重点不同,我用过的工具里,这几款比较有代表性:
| 工具名称 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| ClamAV | Linux常规病毒扫描 | 开源免费,支持命令行定时扫描 | 对webshell检出率偏低,误报较多 |
| chkrootkit | 检测rootkit后门 | 轻量,几条命令即可运行 | 对新型内核级后门检测能力有限 |
| 河马webshell查杀 | 专门查Webshell | 识别各类混淆PHP木马,国内团队维护 | 免费版有文件数量限制 |
| 云平台自带安全组件 | 云服务器控制台内 | 实时监控、自动隔离恶意文件 | 需要额外付费,价格因厂商而异 |
想咨询服务器安全加固价格的用户,往往卡在“用免费工具扫完还是被入侵”这一步,其实工具只是辅助,关键要明白:扫描器能发现已知特征的后门,但对于攻击者手工改造的变种,只有逐行审代码才能确认。
手动排查比工具更终极,我的建议是:
- 先用
ClamAV全盘扫描,清理已知病毒库匹配的文件。 - 再用
chkrootkit检查rootkit痕迹,重点看/proc和内核模块。 - 最后手动检查上面提到的计划任务、SSH密钥、Web文件时间线。
如果后门隐藏在内存中,重启服务器或替换内核模块才能清除,但重启前一定确认没有自动恢复机制,否则白忙。
网站服务器被后门攻击怎么办?预防比清理更重要
清理干净只是起点,接下来要做的加固工作才是真正告别后门的关键,这一节直接给可落地的步骤。
账号和认证加固
- 禁用root远程登录,改用一个普通用户加
sudo权限。 - SSH改用密钥登录,并在
/etc/ssh/sshd_config中设置PasswordAuthentication no。 - 所有业务账号密码长度不低于12位,包含大小写、数字、特殊字符,且不与公司其他系统重复。
- 开启fail2ban,连续输错密码5次的IP自动封禁24小时。
端口和服务最小化
- 用
ss -antpl列出当前监听端口,关闭不需要的服务:systemctl disable --now postfix、systemctl disable --now avahi-daemon等。 - 数据库(如MySQL、Redis)只监听内网IP
0.0.1或0.0.0/8,绝不对公网开放。 - 对外只保留
80(HTTP)、443(HTTPS)、22(SSH)这三个端口,其余用防火墙拦截。
文件与目录权限控制
- Web目录下的上传目录(
/uploads、/attachment)设置为只读,禁止执行PHP。 - 关键配置文件(
wp-config.php、.env)设为权限,只有属主可读写。600
- 每周用
find命令扫描最近修改的文件,并自动记录到日志。
补丁和备份策略
- 操作系统补丁:Ubuntu用
unattended-upgrades自动安装安全更新,CentOS用yum-cron。 - 应用组件:PHP、Nginx、Tomcat、WordPress坚持使用官方源,关闭自动更新以外的第三方源。
- 备份“3-2-1”原则:本地存3份,2种不同介质,1份异地(如对象存储),备份数据每日自动打包上传,保留最近30天。
安全监控和应急响应
- 在服务器上安装
auditd,监控可疑系统调用:auditctl -w /etc/passwd -p wa -k passwd_changes。 - 日志集中存到日志服务器或对象存储,防止攻击者清空
/var/log。 - 设定每周一次的自动巡检脚本,检查新增用户、新计划任务、SSH密钥变化。
一套基础的云服务器安全加固服务,价格根据防护等级从几百元到几千元不等,但相比业务被加密勒索或数据泄露的损失,这笔投入非常值得。
Q&A:后门清除常见疑问
后门文件删除后,为什么再次出现?
说明攻击入口没有堵上,后门可能通过系统漏洞、定时任务、内核模块或备用Webshell反复恢复,你需要回到第一步,彻底检查所有可执行入口,并修改所有密码、密钥,如果确认无法清理,建议备份数据后重装系统,并在重装后立即执行加固步骤。
清除后门时如何不影响线上业务?
先做完整快照,用负载均衡把流量切到备用节点,在备用节点上模拟清理流程,确认无误后,在业务低峰期对生产服务器执行清理,清理期间把Web服务器的错误日志级别调高,方便发现异常请求,如果你的服务器是单机架构,建议先调整DNS解析或防火墙,让外部用户短暂访问维护页,清理完再恢复。
有没有办法在不大动干戈的情况下实时拦截后门?
可以部署云安全组或主机入侵检测系统(HIDS),对新增文件、反弹shell、异常外联行为做实时告警,开源方案有Osquery和Wazuh,商业方案各有免费额度,部署后把告警推送推送到企业微信群或钉钉群,做到秒级感知,但实时拦截无法代替日常巡检,建议每周仍然手动检查一遍关键文件和时间线。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/611089.html





