服务器被黑往往有迹可循 —— 比如陌生 IP 登录、莫名占用 CPU 的进程、未知监听端口…… 但多数人因不懂 “快速自查方法”,等到数据泄露或服务崩溃才发现异常。以下用 3 分钟、4 个关键操作,帮你快速判断服务器是否被入侵,核心解析last -n 10和netstat -tuln两大命令,新手也能看懂。
自查前提:3 个 “被黑预警信号”
- 服务器突然卡顿 / CPU 使用率飙升(可能是挖矿程序在运行);
- SSH 登录变慢 / 偶尔失败(可能有黑客暴力破解或后门占用连接);
- 发现陌生文件 / 目录(如/tmp下的minerd、bash后门);
- 业务数据莫名丢失 / 被篡改(已属于明显入侵,需优先止损)。
第一步:查 “谁登录过服务器”——last -n 10(1 分钟)
命令作用
执行命令
# 查看最近10条登录记录,包含登录用户、IP、时间、会话状态
last -n 10
输出解析 + 异常判断
root pts/0 192.168.1.100 Wed Oct 9 14:30 still logged in admin pts/1 10.0.0.5 Wed Oct 9 11:15 - 11:40 (00:25) root pts/2 192.168.1.100 Tue Oct 8 20:00 - 20:30 (00:30) reboot system boot 3.10.0-1160.el7.x Tue Oct 8 19:58 - 15:00 (0+19:02) root pts/0 192.168.1.100 Mon Oct 7 18:30 - 19:00 (00:30)
重点查 3 个 “入侵痕迹”
- 陌生用户名:比如出现test、hack、miner等你没创建的账户(黑客可能添加后门用户);
- 陌生登录 IP:比如你的运维 IP 是192.168.1.100,但记录里出现203.0.113.5(陌生公网 IP),尤其是root用户从陌生 IP 登录;
- 异常会话状态:比如root用户的记录显示still logged in,但你明明没登录(可能是黑客留的后门会话,用ps aux | grep pts/0可查对应进程)。
发现异常后怎么做?
- 立即踢掉陌生会话:pkill -t pts/0(将pts/0换成异常终端,如pts/2);
- 封禁陌生 IP:iptables -A INPUT -s 203.0.113.5 -j DROP(替换为陌生 IP,禁止其再次访问);
- 重置关键账户密码:passwd root、passwd admin(防止黑客用破解的密码再次登录)。
第二步:查 “服务器开了哪些可疑端口”——netstat -tuln(1 分钟)
命令作用
- t:只看 TCP 协议连接(黑客后门、挖矿程序常用 TCP 通信);
- u:同时看 UDP 协议连接;
- l:只看 “正在监听” 的端口(未监听的端口不会被外部访问,无需关注);
- n:用 “数字显示端口号”(避免显示端口别名,比如 80 显示为 http,更直观)。
执行命令
# 查看所有正在监听的TCP/UDP端口,数字显示
netstat -tuln
# 或用ss命令(更高效):
ss -tuln
输出解析 + 异常判断
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:5353 0.0.0.0:*
- Proto:协议(TCP/UDP,重点看 TCP,UDP 多为 DNS 等正常服务);
- Local Address:本地监听地址 + 端口,格式IP:端口:
-
- 0.0.0.0:22:表示 “所有网卡的 22 端口都在监听”(正常,SSH 默认端口);
-
- 127.0.0.1:3306:表示 “仅本地能访问 3306 端口”(MySQL 正常配置,避免外部直接访问);
- State:状态(LISTEN 表示 “正在监听”,正常服务状态)。
重点查 2 个 “入侵痕迹”
- 未知监听端口:比如出现0.0.0.0:3333、0.0.0.0:6666、0.0.0.0:9999(这些是黑客常用的后门端口,比如3333可能是nc后门,6666可能是挖矿程序端口);
- 异常监听地址:比如 MySQL 端口3306的Local Address显示0.0.0.0:3306(本该只监听 127.0.0.1,现在全网可访问,可能被黑客修改配置,准备窃取数据库)。
发现异常后怎么做?
- 定位端口对应的进程:netstat -tulnp | grep 3333(将 3333 换成异常端口,-p显示进程 PID 和名称);
- 杀死异常进程:kill -9 1234(将 1234 换成异常进程 PID);
- 关闭无用端口:用防火墙封禁,firewall-cmd –remove-port=3333/tcp –permanent(或iptables -A INPUT -p tcp –dport 3333 -j DROP),然后重载规则firewall-cmd –reload。
第三步:查 “有没有陌生进程”——ps aux | grep -v “grep”(30 秒)
命令作用
执行命令 + 异常判断
# 查看所有进程,按CPU使用率排序(按P键切换排序)
ps aux --sort=-%cpu
- 陌生进程名:比如minerd、xmr-stak(挖矿程序)、reverse-shell(反向后门)、unknown(未知进程);
- 异常 CPU / 内存占用:比如某进程 CPU 占用 90% 以上,且不是你的业务服务(如 Nginx、MySQL),大概率是挖矿程序。
例子:发现挖矿进程怎么办?
kill -9 1234
rm -f /tmp/minerd
命令作用
执行命令 + 异常判断
# 查看所有可登录的用户(正常应为root、admin等你创建的账户)
cat /etc/passwd | grep -v "nologin" | grep -v "false"
正常输出(只有 2 个可登录用户):
root:x:0:0:root:/root:/bin/bash
admin:x:1000:1000:admin:/home/admin:/bin/bash
异常迹象:出现陌生用户,比如hack:x:1001:1001::/home/hack:/bin/bash(UID=1001,有 /home 目录和 bash 终端,可正常登录)。
发现异常后怎么做?
- 删除后门用户:userdel -r hack(-r同时删除用户家目录,避免残留文件);
- 锁定可疑账户(若暂时不能删除):passwd -l hack。
3 分钟自查流程总结(按优先级排序)
- 执行last -n 10 → 查陌生登录 IP / 用户(1 分钟);
- 执行netstat -tuln → 查可疑监听端口(1 分钟);
- 执行ps aux –sort=-%cpu → 查高占用陌生进程(30 秒);
- 执行cat /etc/passwd | grep -v “nologin” → 查后门用户(30 秒)。
若发现入侵,立即做 3 件事止损
- 断开网络:若服务器有物理机,直接拔网线;云服务器在控制台关闭公网 IP(避免黑客继续传恶意文件);
- 备份日志:将/var/log/secure(登录日志)、/var/log/messages(系统日志)复制到本地,用于后续溯源;
- 重装系统(若严重入侵):若发现大量后门文件、数据库被篡改,建议重装系统(避免残留后门),重装后先加固安全(参考之前的《Linux 安全自查表》)再恢复数据。