
核心要点(TL;DR)
- 先断网隔离再排查,避免攻击者察觉后删除痕迹或触发破坏。
- 异常进程优先看CPU占用、可执行文件路径与父进程是否可疑。
- 持久化后门重点查crontab、systemd服务、SSH公钥与启动脚本。
- 清理后必须改密码、换密钥、补漏洞,否则很快被二次入侵。
凌晨收到告警:云主机CPU跑满、SSH登录变慢、网站偶尔跳转到陌生页面。多数运维的第一反应是重启,但重启往往只是让攻击者暂时缩回壳里——真正的入口和后门还在。本文按「隔离取证 → 异常进程 → 网络连接 → 持久化后门 → 清理加固」的顺序,给出可以直接复制执行的命令和检查清单,帮你在最短时间内完成云主机被入侵后的排查与后门清理。
第一步:隔离现场,先别急着删东西
确认被入侵后,第一动作是切断攻击者的控制通道,而不是清理文件。
- 在云控制台安全组中,仅保留你的管理IP访问22端口,其余入站规则全部关闭;
- 对系统盘做一次快照,保留镜像证据;
- 记录当前时间,后续所有日志排查以此为基准。
# 记录当前登录用户与来源
w
last -n 20
# 查看近期登录失败与成功记录
grep -i "accepted\|failed" /var/log/secure | tail -50如果发现陌生IP的成功登录记录,说明入口大概率是SSH弱口令或密钥泄露,后续清理必须改密码、换密钥。
第二步:定位异常进程
木马和挖矿程序通常有明显的资源特征,但高明的攻击者会把进程名伪装成kworker、sshd。判断依据不是名字,而是路径和父进程。
# 按CPU排序看前20个进程
top -b -n 1 | head -30
# 查看进程真实可执行文件路径
ls -l /proc/<PID>/exe
# 查看进程启动命令与工作目录
cat /proc/<PID>/cmdline | tr '' ' '
ls -l /proc/<PID>/cwd重点标记三类进程:可执行文件位于/tmp、/dev/shm、/var/tmp的;父进程是nginx、php-fpm、java却执行shell的;名字像系统进程但路径不在/usr/bin或/usr/sbin的。
第三步:核对网络连接与对外通道
异常进程几乎都会外联C2服务器或矿池,网络连接是最直接的证据。
ss -antp | grep ESTAB
lsof -i -n -P | grep -v LISTEN把可疑IP与进程PID对应起来,再用lsof -p <PID>查看它打开的文件。若连接目标是境外IP、非常见端口(如3333、5555、14444),基本可判定为挖矿或远控。此时先kill -9 <PID>止血,但不要删除文件,留着分析。
第四步:排查持久化后门
杀掉进程只是治标,攻击者一定留了自启方式。按下面清单逐项核对:
| 位置 | 检查命令 | 可疑特征 |
|---|---|---|
| 定时任务 | crontab -l、cat /etc/crontab、ls /etc/cron.* | curl/wget下载执行、base64编码 |
| systemd服务 | systemctl list-unit-files --state=enabled | 陌生服务名、ExecStart指向/tmp |
| SSH公钥 | cat ~/.ssh/authorized_keys | 非本人添加的公钥 |
| 启动脚本 | cat /etc/rc.local、/etc/profile | 末尾追加的可疑命令 |
| Web目录 | find /var/www -name "*.php" -mtime -7 | 近期新增的webshell |
此外检查/etc/passwd是否有UID为0的新账户,以及/root/.bash_history是否被清空或指向/dev/null。
第五步:清理顺序与加固清单
清理要按「断自启 → 杀进程 → 删文件 → 补漏洞」的顺序,否则删了文件还会被定时任务重新拉起。
- 删除恶意crontab条目与systemd单元,执行
systemctl daemon-reload; - 清除
authorized_keys中的陌生公钥,修改所有账户密码; - 删除webshell与恶意二进制,用
rpm -Va或debsums校验系统文件完整性; - 升级Redis、Web框架等存在未授权或RCE漏洞的组件,关闭不必要的公网端口。
加固阶段建议开启主机层防护,例如AegisX的入侵检测与文件完整性监控能力,可对异常进程、可疑外联和关键目录变更实时告警,把「事后排查」变成「事中阻断」。若业务允许,最彻底的做法是重装系统并从可信备份恢复数据。
行动建议:今天就把上面的检查命令整理成脚本,每周跑一次;同时确认云主机安全组最小化开放、SSH禁用密码登录。入侵排查拼的是速度和证据完整度,提前准备清单,比事后慌乱有效得多。
常见问题(FAQ)
云主机被入侵了,第一步应该做什么?
先隔离再排查。立即在安全组中关闭除管理IP外的所有入站端口,必要时关机做快照保留证据。不要急着删文件或重启,攻击者留下的进程、定时任务和登录记录都是定位入口的关键线索,破坏现场会导致无法判断入侵途径。
怎么判断一个进程是不是木马?
看三点:可执行文件路径是否在/tmp、/dev/shm等异常目录,父进程是否可疑(如由web服务拉起),以及是否有对外连接。用ls -l /proc/PID/exe查看真实路径,用ss -antp核对连接,文件名伪装成kworker、sshd但路径不对的基本可判定为恶意。
入侵者一般通过什么方式留后门?
常见有四类:crontab定时任务拉起重启,systemd服务或rc.local开机自启,SSH的authorized_keys写入公钥,以及Web目录里的webshell。排查时这四处必须逐一核对,尤其是非root用户目录下的隐藏定时任务。
清理完就安全了吗?
不安全。清理只解决表象,必须同步修改所有账户密码、更换SSH密钥、升级存在漏洞的组件(如Redis未授权、Web框架RCE),并检查是否有新增账户。建议直接重装系统并从备份恢复数据,比逐项清理更彻底。
没有安全经验,能自己处理吗?
可以按清单执行基础排查,但涉及数据泄露或业务中断时建议找专业应急。若自行处理,务必先做整机快照,所有操作记录留档,清理后持续观察一周的进程与登录日志,确认没有复发。