服务器被挖矿了怎么办?3步清理+预防

服务器被挖矿了怎么办?3步清理+预防

你打开监控,CPU曲线从早上的5%突然跳到100%,持续了一整天。登录服务器,top一看,一个名叫[kworker]httpd的进程占满了CPU。你不记得自己跑过这样的任务。再仔细看,进程的执行文件在/tmp目录下,文件名是一串随机字符。

你的服务器被挖矿了。

攻击者不知道从哪里溜了进来,在你的服务器上装了个挖矿程序,用你的电、你的CPU,帮他挖加密货币。你的网站变慢,电费账单涨了,而他拿走了收益。更糟的是,他可能还留了后门,随时再回来。

今天聊3步:怎么发现、怎么清理、怎么防止再进来。


先看一个数据

根据某安全厂商的报告,2024年挖矿病毒占服务器入侵事件的60%以上。攻击者不挑食,个人博客、创业公司、高校服务器,都是目标。

被挖矿的服务器,通常CPU持续100%,平均每天的额外电费虽然不多,但性能损失和潜在的后续隐患可能很大。更麻烦的是,挖矿程序往往会禁用安全工具、修改系统配置,为后续更严重的攻击(如勒索病毒)铺路。


第一步:发现挖矿

挖矿病毒有几个典型特征:

  • CPU持续100%:挖矿需要大量算力
  • 进程名伪装:喜欢叫[kworker](方括号是内核进程的伪装)、httpdnginxsshd,或者一串随机字符
  • 执行文件在临时目录/tmp/var/tmp/dev/shm
  • 连接外部矿池:网络连接指向常见矿池端口(4444、5555、7777、8080)
  • 定时任务:黑客为了让病毒重启后还能跑,会在crontab里加一行定时下载脚本

快速定位命令

bash

# 看CPU最高的进程
top -c

# 找到PID后,查看进程的执行文件位置
ls -l /proc/PID/exe

# 查看进程的网络连接
netstat -tunp | grep PID

如果执行文件在/tmp下,或者显示(deleted),基本就是挖矿。再看网络连接,如果连到陌生IP(尤其是境外IP),确认无疑。


第二步:清理挖矿

1. 杀掉进程

bash

kill -9 PID

如果杀不掉,进程会不断重启,说明有守护进程或定时任务在护着它。

2. 删除恶意文件

bash

rm -f /tmp/恶意文件名

3. 清理定时任务

bash

crontab -l   # 查看当前用户的定时任务
crontab -e   # 编辑,删掉可疑行

还要检查系统级定时任务:

bash

cat /etc/crontab
ls /etc/cron.d/
ls /etc/cron.hourly/

4. 检查开机启动项

bash

systemctl list-unit-files | grep enabled

如果发现有陌生服务,systemctl disable 并 systemctl stop

5. 检查SSH公钥

黑客可能把自己的公钥加进去,方便下次进来。

bash

cat ~/.ssh/authorized_keys

不认识的就删掉。

6. 查看最近修改的文件

bash

find / -type f -mtime -1 2>/dev/null | grep -v -E "(/proc|/sys|/dev)"

看看过去24小时哪些文件被改了,有没有可疑的脚本或二进制文件。

如果清理完后CPU恢复正常,基本没问题了。如果不确定有没有清理干净,备份数据,重装系统。


第三步:预防再被挖

挖矿病毒能进来,说明你的服务器有漏洞。清理完不补洞,明天还会中。

1. 改密码
所有密码:root、数据库、网站后台、FTP。不要重复使用。

2. 禁用root远程登录 + 改用密钥认证

bash

# 编辑 /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no

3. 安装fail2ban
防止暴力破解。配置方法参考之前相关文章。

4. 定期更新系统

bash

apt update && apt upgrade -y   # Ubuntu/Debian
yum update -y                  # CentOS/RHEL

至少每周跑一次,或者开启自动安全更新。

5. 监控告警
设置CPU使用率告警,超过80%就发通知。Netdata、云监控都可以。第一时间发现,第一时间处理。

6. 限制crontab使用
只有root能编辑crontab,普通用户不能。修改/etc/cron.allow


攻击者是怎么进来的?

了解入口,才能针对性防守:

  • 弱密码:最简单也最常见的入口,root密码123456
  • Redis未授权访问:Redis没设密码,暴露在公网
  • Docker未授权访问:2375端口暴露
  • Jenkins、Tomcat等管理后台弱密码
  • 旧版本漏洞:Struts2、Log4j等

检查这些服务,该设密码的设密码,该加防火墙规则的限制访问来源。


真实案例

一个创业公司的测试服务器被挖矿,CPU 100%跑了一周才发现。攻击者是从Redis进去的——Redis没设密码,暴露在公网。清理挖矿后,他们给Redis加了密码,还限制了只允许内网访问,再也没出过事。

运维说:“要不是这次,我都不知道Redis还能被用来挖矿。”


最后一句

被挖矿不可怕,可怕的是不知道被挖,更可怕的是清理完没有补漏洞。

今天去检查你的服务器:top看一眼CPU,crontab -l看一眼定时任务,cat /root/.ssh/authorized_keys看一眼公钥。10分钟做完,比中招后再清理省事得多。

如果你发现自己的服务器在替别人挖矿,别慌。按这三步走,清理干净,堵上漏洞,下次他就进不来了。

知识库

服务器重启的5个正确姿势(别直接reboot)

2026-5-22 18:19:05

知识库

网站备案全攻略:从购买到通过(附各省要求)

2026-5-25 17:43:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧