服务器被入侵后,怎么确认已经清理干净

2026-10-28 · 技术

杀掉进程、删掉可疑文件,并不代表事件结束。攻击者常把后门写进定时任务、系统服务与启动脚本。本文列出五处必查位置、文件删不掉的原因,以及完整收尾顺序。

处理入侵事件时最常见的错误,是"看起来恢复正常了"就收工。攻击者拿到权限后做的第一件事通常不是搞破坏,而是留后门,并且会留在多个位置。 近期多个安全通报提到的僵尸网络家族就有这类能力:除了发起流量攻击,它还具备正向和反向 Shell,会把受感染设备当作后续攻击的立足点。这类程序重启后会自动回来,清理必须按位置逐个排查。 第一处是定时任务。检查 /etc/crontab、/etc/cron.d/ 以及 /var/spool/cron/ 下各用户的任务文件。时间往往设在凌晨,命令用编码或管道直接执行,看着像正常运维脚本。 第二处是系统服务。检查 /etc/systemd/system/ 下最近新增的 .service 文件及其启用链接。服务名常伪装成 systemd-networkd、dbus-helper 这类官方风格的名字,要看 ExecStart 指向的路径是否合理。 第三处是启动脚本。/etc/rc.local、/etc/profile 以及各用户的 .bashrc,都可能被追加一行命令,只要有人登录就会触发。 第四处是账号与密钥。/etc/passwd 里 UID 为 0 的非 root 账号、~/.ssh/authorized_keys 里陌生的公钥,都要核对。很多入侵者会加一把自己的公钥,之后就不用密码了。 第五处是容器。docker ps -a 看有没有不认识的容器在跑,尤其注意以特权模式启动、或挂载了宿主机根目录的那些。 排查有两个坑。一是文件删不掉,报权限错误,多半是被 chattr +i 锁了,用 lsattr 查看、chattr -i 解锁后再删。二是进程名伪装,内核线程在常规输出里没有可执行路径,看到 [kworker/u2:0] 这类名字却能指向真实文件的,基本可以确定是伪装的。 收尾顺序比排查更关键。先隔离机器、保留日志再动手;被拿到 root 权限的机器建议直接重装,修补比重装不可靠;重装后轮换全部凭证,包括 SSH 密钥、数据库密码、面板账号与云平台密钥;再补齐入侵入口的漏洞;恢复数据后进入观察期,盯异常出网连接。 加速IDC 的高防服务器提供流量清洗与基础防护,配合定期快照,可以在重装系统后较快恢复业务,缩短应急窗口。