返回首页

Linux 服务器挖矿病毒排查与清除实战指南

📅 创建于 2026-06-16 🔄 更新于 2026-06-16 📝 647 字

Linux 服务器挖矿病毒排查与清除实战指南

来源:刘军军 | 发布日期:2026-06-13

挖矿病毒是 Linux 服务器最常见的入侵类型之一,特征为 CPU 飙高、进程异常、对外连接矿池。本文通过一次 kinsing 挖矿木马 的真实生产事件,完整复现从发现、分析、清除到加固的全流程。

一、发现异常

告警触发

收到 Prometheus 告警:CPU 使用率持续超 95%。登录服务器查看:

# 查看系统负载和异常进程
top

典型异常特征:

现象 判断
多个同名未知进程(如 kinsing)占用 99% CPU 可疑进程,可能是挖矿病毒
系统负载高达 30+ 资源被恶意消耗
Swap 几乎耗尽 内存资源紧张
进程名匹配已知挖矿木马(kinsing、xmrig 等) ✅ 确认挖矿病毒

保护现场

在清除之前,先保存证据:

# 进程与资源快照
ps aux > /tmp/ps_before.txt
top -bn1 > /tmp/top_before.txt

# 网络连接快照
netstat -antp > /tmp/netstat_before.txt
ss -antp > /tmp/ss_before.txt

# 系统日志
cp /var/log/messages /tmp/messages_backup
cp /var/log/secure /tmp/secure_backup
cp /var/log/cron /tmp/cron_backup

二、深入分析

进程分析

ps aux | grep kinsing
ls -la /tmp/kinsing          # 启动路径
file /tmp/kinsing            # ELF 可执行文件
md5sum /tmp/kinsing          # 记录文件哈希

网络连接

查看进程建立的对外连接,确认连接矿池:

netstat -antp | grep kinsing
# 例:连接 DigitalOcean(45.33.32.156)、Cloudflare(104.238.153.171)

进程树与启动方式

pstree -p | grep kinsing
ps -ef | grep kinsing | head -1
# 父进程为 init(PID 1) → 通过系统服务或定时任务启动

检查持久化机制

挖矿病毒通常会在多处建立持久化:

# 定时任务
crontab -l
ls -la /etc/cron.d/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.weekly/
cat /etc/cron.d/kinsing

# 系统服务
ls -la /etc/systemd/system/ | grep kinsing
cat /etc/systemd/system/kinsing.service
systemctl list-unit-files | grep kinsing

# SSH 后门
cat /root/.ssh/authorized_keys
# 检查未知公钥
grep "Failed password" /var/log/secure | tail -20
grep "Accepted password" /var/log/secure | tail -5

入侵时间线推演

通过日志还原攻击过程:

grep -E "Mar 15 07:3[0-9]" /var/log/messages

典型攻击链:

  1. 07:30 — 攻击者暴力破解 SSH 密码
  2. 07:35 — 破解成功,获得 root 权限
  3. 07:36 — 创建定时任务和 systemd 服务
  4. 07:36 — 下载并执行挖矿程序
  5. 07:45 — 系统负载急剧上升
  6. 09:15 — 监控告警触发

三、清除步骤

1. 隔离网络

ifdown ens33                    # 立即断网
iptables -A OUTPUT -j DROP      # 或 iptables 阻断出站

2. 终止进程

killall -SIGTERM kinsing        # 先尝试正常终止
killall -9 kinsing              # 无效则强制终止
ps aux | grep kinsing || echo "进程已清除"

3. 删除恶意文件与持久化

# 删除程序本体
rm -f /tmp/kinsing

# 删除所有定时任务
rm -f /etc/cron.d/kinsing /etc/cron.daily/kinsing
rm -f /etc/cron.hourly/kinsing /etc/cron.weekly/kinsing
crontab -r                      # 删除用户定时任务

# 删除系统服务
rm -f /etc/systemd/system/kinsing.service
systemctl daemon-reload

# 清理 SSH 后门
cp /root/.ssh/authorized_keys /root/.ssh/authorized_keys.bak
# 只保留合法密钥

4. 修改密码与恢复网络

passwd root                     # 修改 root 密码(12位+强密码)
systemctl restart sshd
iptables -F OUTPUT              # 恢复出站规则
ifup ens33                      # 恢复网络

四、系统加固

SSH 安全

cat >> /etc/ssh/sshd_config << 'EOF'
PasswordAuthentication no       # 禁止密码登录
PermitRootLogin no              # 禁止 root 远程登录
AllowUsers ops admin            # 限制登录用户
Port 2222                       # 修改 SSH 端口
MaxAuthTries 3                  # 限制认证次数
PubkeyAuthentication yes
EOF
systemctl restart sshd

防火墙

systemctl enable --now firewalld
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

安装 fail2ban

dnf install -y fail2ban
cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
EOF
systemctl enable --now fail2ban

五、根因分析模板

原因 说明
弱密码 root 密码为默认值,极易被暴力破解
SSH 端口开放 22 端口对公网开放,无访问限制
未启用密钥认证 仅依赖密码认证
无入侵检测 未部署 fail2ban 等防护措施

六、命令速查

应急响应

命令 作用
top 查看 CPU 和进程状态
ps aux 查看所有进程
netstat -antp 查看网络连接
ifdown eth0 断开网络
killall -9 <进程名> 强制终止进程

取证分析

命令 作用
file <文件> 查看文件类型
md5sum <文件> 计算文件哈希
pstree -p 查看进程树
crontab -l 查看定时任务
grep "Accepted password" /var/log/secure 查看成功登录记录

七、预防措施

  1. 密码管理 — 使用 12 位以上强密码,定期更换,禁止默认密码
  2. SSH 加固 — 禁用密码登录 + 密钥认证 + 禁止 root 远程登录 + 修改端口
  3. 防火墙 — 仅开放必要端口,配置出站规则,限制 SSH 来源 IP
  4. 监控告警 — CPU 使用率告警(阈值 >80%)、异常进程检测、网络流量异常告警
  5. 定期审计 — 检查定时任务、系统服务、SSH 密钥、系统补丁

关联页面

页面关联点
linux-intrusion-detection-guideLinux 入侵检测与应急响应
server-security-hardening-checklist服务器安全加固清单
ssh-brute-force-protection-guideSSH 暴力破解防御指南
cpu-spike-troubleshooting-guideCPU 飙高排查方法论
linux-hacked-server-emergency-responseLinux 服务器入侵应急响应完整清单与实战指南。覆盖从发现被黑到恢复全流程:断网隔离、取证快照、后
cpu-100-full-chain-diagnosisCPU 100% 全链路故障排查