
核心要点(TL;DR)
服务器CPU莫名飙到100%,风扇狂转,业务响应变慢——这很可能是挖矿木马在作祟。挖矿入侵不仅消耗资源,还常伴随数据窃取和后门植入。本文面向运维和站长,提供一套可落地的应急响应流程,涵盖恶意进程定位、持久化清理、封禁加固与复盘,帮你快速止损并根除威胁。
一、先隔离再排查:控制影响范围
发现异常后,第一时间隔离主机,避免攻击者察觉后删除证据或横向移动。若业务允许,直接断网;若需保留远程访问,通过防火墙限制仅允许管理IP访问SSH端口。
# 使用iptables临时限制SSH访问(替换为你的管理IP)
iptables -A INPUT -p tcp --dport 22 -s 你的管理IP -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP同时,对关键日志和可疑文件进行备份,便于后续溯源。建议使用tar打包/var/log、/tmp、/dev/shm等目录。
二、定位挖矿进程:从CPU占用入手
登录服务器,执行top按CPU排序,观察占用最高的进程。挖矿进程常伪装成kworker、sysupdate等,但路径异常。用以下命令快速定位:
ps aux --sort=-%cpu | head -20
ls -l /proc/PID/exe # 查看进程实际执行文件路径
lsof -p PID # 查看进程打开的文件和网络连接若发现进程连接矿池地址(如pool.minexmr.com),基本可确认。注意隐藏进程:对比ps与/proc目录下的PID,缺失的可能是被rootkit隐藏。使用unhide或rkhunter辅助检测。
三、清除持久化:切断自动重启
挖矿进程常通过多种机制持久化,必须逐一排查清除:
- 定时任务:检查
crontab -l、/etc/crontab、/etc/cron.*/及用户目录下的cron文件。 - systemd服务:
systemctl list-units --type=service查看可疑服务,检查/etc/systemd/system/下的unit文件。 - 启动脚本:
/etc/rc.local、/etc/init.d/、/etc/profile.d/。 - SSH后门:检查
~/.ssh/authorized_keys是否有陌生公钥。 - 动态链接库劫持:
cat /etc/ld.so.preload若存在非空内容,可能是恶意库。
清除时先停止进程,再删除文件,最后移除持久化配置。建议使用chattr +i锁定关键目录防止篡改。
四、封禁与加固:阻断再次入侵
根据日志定位攻击源IP,在防火墙或云安全组中封禁。常见入口包括SSH弱口令、Redis未授权访问、Web漏洞。加固措施:
- 修改所有账户密码,禁用密码登录,改用密钥认证。
- 限制SSH访问源IP,修改默认端口。
- 更新系统及中间件补丁,关闭不必要的服务。
- 部署主机入侵检测系统(HIDS),如AegisX可实时监控异常进程和网络连接,提供告警与阻断能力。
| 检查项 | 命令/位置 | 预期结果 |
|---|---|---|
| SSH配置 | /etc/ssh/sshd_config | PermitRootLogin no, PasswordAuthentication no |
| 防火墙规则 | iptables -L -n | 仅开放必要端口 |
| 可疑用户 | cat /etc/passwd | 无异常UID为0的用户 |
五、复盘总结:完善监控与流程
事件处理后,需复盘入侵原因、响应时效和损失。更新监控策略:对CPU异常、异常外连、关键文件变更设置告警。定期进行安全扫描和漏洞修复。建议将本次IOC(入侵指标)录入威胁情报平台,并检查同网段其他主机是否受影响。
最后,建立应急响应预案,明确隔离、排查、清除、恢复各环节责任人,定期演练。只有将安全防护常态化,才能有效降低再次被入侵的风险。
常见问题(FAQ)
服务器CPU占用突然100%,怎么快速确认是不是挖矿?
首先登录服务器执行top命令,观察占用CPU最高的进程名和路径。挖矿进程常伪装成kworker、sysupdate等系统进程,但实际路径在/tmp、/var/tmp或/dev/shm等目录。可用ps aux --sort=-%cpu | head -20查看详情,再用lsof -p PID检查进程打开的文件和网络连接,若发现连接矿池地址即可确认。
挖矿进程杀了又自动重启,怎么办?
这说明存在持久化机制或守护进程。需要检查cron定时任务(crontab -l和/etc/cron*)、systemd服务(systemctl list-units --type=service)、启动脚本(/etc/rc.local、/etc/init.d/)以及SSH authorized_keys。同时用ps -ef --forest查看进程树,找到父进程一并清除。建议使用chkrootkit或rkhunter扫描rootkit。
清除挖矿后如何防止再次被入侵?
必须修复入侵入口,常见入口包括SSH弱口令、未授权访问的Redis/MongoDB、Web应用漏洞(如Struts2、Log4j)。应修改所有账户密码,禁用密码登录改用密钥,限制SSH访问IP,更新系统补丁,并部署WAF或HIDS。AegisX可提供主机入侵检测与实时告警,帮助及时发现异常进程和网络连接。
挖矿入侵后需要重装系统吗?
取决于入侵程度。如果攻击者已获取root权限并植入rootkit,建议备份数据后重装系统,因为无法保证彻底清除。若仅发现挖矿进程且持久化点已清理,可继续使用但需持续监控。重装前务必保留日志和样本用于溯源,并确保备份数据不包含恶意文件。
如何查找挖矿入侵的源头IP?
检查网络连接:netstat -antp或ss -antp查看与矿池的通信IP。分析登录日志:last、lastb、/var/log/secure查找异常登录。检查Web日志:/var/log/nginx/access.log中寻找漏洞利用痕迹。结合威胁情报平台查询IP信誉,确认攻击源后可在防火墙或云安全组中封禁。