Linux 服务器被 xmrig 挖矿病毒入侵?超详细清除 + 安全加固指南(亲测有效)
特别福利:火山引擎新用户云服务器特惠通道
一、问题背景:xmrig 是什么?为什么会被入侵?
1.1 xmrig 的本质
xmrig 是合法的 Monero(门罗币)挖矿工具,但常被黑客恶意利用:通过弱口令、未修补漏洞、恶意脚本等入侵服务器,将其变为「肉鸡」,偷偷占用 CPU / 内存挖矿,导致服务器性能暴跌、电费暴涨,甚至被封禁。
1.2 典型感染症状
当服务器出现以下情况,大概率已被 xmrig 入侵:
CPU / 内存异常占用:top/htop 查看,CPU 持续 100%(多核全满),内存占用飙升;
陌生进程:ps aux 发现 xmrig/minerd/kdevtmpfsi/monero 等挖矿进程;
异常端口:netstat -tulpn 出现陌生端口(如 3333、4444、8080,挖矿常用);
自启动项异常:crontab/systemd 有定时执行挖矿脚本的任务;
系统文件异常:/tmp//var/tmp//root 下有陌生可执行文件(如run.sh/xmrig.bin)。
二、详细清除步骤(Step by Step)
⚠️ 重要提示:清除前请备份重要数据!避免误删系统文件。
Step 1:终止挖矿进程
查看挖矿进程:
ps aux | grep -E ‘xmrig|minerd|kdevtmpfsi|monero’
输出示例(含 PID:1234、5678):
root 1234 99.0 2.0 102400 20480 pts/0 R+ 10:00 0:30 xmrig
root 5678 98.0 1.5 81920 15360 pts/1 R+ 10:01 0:25 minerd
强制终止进程:
kill -9 1234 5678 # 替换为实际PID
验证终止:
ps aux | grep -E ‘xmrig|minerd’
若仅显示grep自身进程,则成功终止。
Step 2:清除自启动项(关键!避免重启复活)
挖矿病毒会通过crontab、systemd、开机脚本实现自启动,必须彻底清除:
2.1 检查并删除 Crontab 定时任务
Crontab 是最常见的自启动方式(每分钟执行挖矿脚本):
查看所有用户的Crontab(含root)
for user in $(cat /etc/passwd | cut -d: -f1); do crontab -u $user -l 2>/dev/null; done
异常任务示例:
-
-
-
-
- /tmp/run.sh # 每分钟执行挖矿脚本
-
-
-
删除方法:
编辑当前用户Crontab(root下执行)
crontab -e
删掉异常行,保存退出(按ESC→:wq)
2.2 检查并禁用 Systemd 服务
部分病毒会注册为 Systemd 服务:
查看挖矿相关服务
systemctl list-unit-files --type=service | grep -E ‘xmrig|minerd’
停止并删除服务:
停止服务
systemctl stop xmrig.service
禁用自启动
systemctl disable xmrig.service
删除服务文件(注意路径,部分在/usr/lib/systemd/system)
rm -rf /etc/systemd/system/xmrig.service
重载Systemd
systemctl daemon-reload
2.3 检查开机启动脚本
rc.local:
cat /etc/rc.local # 看是否有陌生执行命令
init.d 脚本(Debian/Ubuntu):
ls /etc/init.d/ | grep -E ‘xmrig|minerd’
rm -rf /etc/init.d/恶意脚本名
update-rc.d 恶意脚本名 remove # 移除开机启动
Step 3:删除挖矿相关文件
病毒会将挖矿程序藏在临时目录或家目录,需彻底删除:
搜索挖矿文件(排除/proc、/sys等系统目录)
find / -name “xmrig” -o -name “minerd” -o -name “kdevtmpfsi” -o -name “monero” -o -name “*.sh” | grep -v “proc” | grep -v “sys”
常见藏文件目录:
/tmp//var/tmp(临时目录,易被忽略)
/root//home/用户名
/opt//usr/local
删除方法:
rm -rf /tmp/xmrig /tmp/run.sh /root/minerd # 替换为实际找到的文件
Step 4:清除恶意用户 / 权限
部分病毒会创建陌生用户并赋予 sudo 权限:
查看所有用户
cat /etc/passwd
删除陌生用户(-r删除家目录)
userdel -r 恶意用户名
检查sudoers(避免陌生用户提权)
cat /etc/sudoers | grep -v “root” # 看是否有异常权限
Step 5:修复系统漏洞(根源!避免再次感染)
若漏洞未修,下次还会被入侵,必须做:
5.1 升级系统和软件
Debian/Ubuntu:
apt update && apt upgrade -y
CentOS/RHEL:
yum update -y # 或 dnf update -y
⚠️ 生产环境注意:升级前备份数据,避免服务异常!
5.2 强化 SSH 安全(最常见入侵入口)
禁用密码登录,用密钥对:
本地生成密钥:ssh-keygen -t ed25519(按提示操作)
传公钥到服务器:ssh-copy-id -p 22222 用户名@服务器IP
修改/etc/ssh/sshd_config:
PasswordAuthentication no # 禁用密码
PubkeyAuthentication yes # 启用密钥
PermitRootLogin no # 禁用root直接登录
Port 22222 # 改默认端口(避免22被扫)
重启 SSH:systemctl restart sshd
安装 fail2ban 防暴力破解:
Debian/Ubuntu
apt install fail2ban -y
systemctl enable --now fail2ban
5.3 配置防火墙(仅开放必要端口)
ufw(Debian/Ubuntu):
ufw allow 22222/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw enable # 启用防火墙
firewalld(CentOS):
firewall-cmd --permanent --add-port=22222/tcp
firewall-cmd --reload
Step 6:验证清除是否成功
重启服务器:reboot(必须重启,确保自启动项生效)
重启后检查:
进程:ps aux | grep -E ‘xmrig|minerd’(无异常)
CPU:top(占用正常,无满负荷)
端口:netstat -tulpn(无陌生端口)
Crontab:再次检查所有用户的定时任务
三、常见问题解决
- 进程杀不死?
找父进程:ps -ef | grep 进程名,查看PPID(父 PID),先杀父进程:kill -9 父PID
可能是rootkit:用rkhunter/chkrootkit检查(需安装):
apt install rkhunter -y && rkhunter --check
- 重启后又出现挖矿进程?
自启动项未清干净:重新检查crontab/systemd/rc.local
系统文件被篡改:用md5sum验证关键文件(如/bin/bash),或重装系统(彻底解决)
四、后续安全注意事项(必看!)
清除只是第一步,加固才是根本:
定期监控:用zabbix/prometheus+grafana监控 CPU、内存、端口,异常告警;
禁止 web 服务执行恶意脚本:
PHP 禁用exec/system等危险函数;
Nginx 禁止上传目录解析 PHP(location ~ ^/upload/.*.php$ { deny all; });
不用 root 运行应用:应用用普通用户启动,必要权限再赋予;
定期备份:重要数据备份到本地 + 异地,防止被加密(部分病毒会勒索);
禁用不必要的服务:如telnet/ftp(用sftp替代)。
五、总结
清除 xmrig 的核心逻辑是:
断进程 → 清自启动 → 删文件 → 堵漏洞 → 加固安全
仅删进程没用!必须彻底清除自启动项 + 修复漏洞,否则会反复感染。
如果有其他问题,欢迎留言交流!








