你的 Linux 服务器被黑了吗?(3 分钟快速自查)

服务器被黑往往有迹可循 —— 比如陌生 IP 登录、莫名占用 CPU 的进程、未知监听端口…… 但多数人因不懂 “快速自查方法”,等到数据泄露或服务崩溃才发现异常。以下用 3 分钟、4 个关键操作,帮你快速判断服务器是否被入侵,核心解析last -n 10和netstat -tuln两大命令,新手也能看懂。

自查前提:3 个 “被黑预警信号”

先确认是否有以下异常(出现任意 1 个,就需要立即自查):
  1. 服务器突然卡顿 / CPU 使用率飙升(可能是挖矿程序在运行);
  1. SSH 登录变慢 / 偶尔失败(可能有黑客暴力破解或后门占用连接);
  1. 发现陌生文件 / 目录(如/tmp下的minerd、bash后门);
  1. 业务数据莫名丢失 / 被篡改(已属于明显入侵,需优先止损)。

第一步:查 “谁登录过服务器”——last -n 10(1 分钟)

命令作用

last是 Linux 默认的 “登录记录查询工具”,-n 10表示 “只看最近 10 条登录记录”,能快速发现 “陌生 IP 登录、异常登录时间、未正常退出的会话”(黑客登录后常留后门会话)。

执行命令

# 查看最近10条登录记录,包含登录用户、IP、时间、会话状态

last -n 10

输出解析 + 异常判断

先看正常输出(以 CentOS 为例):
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)
输出列含义(从左到右):
1、用户名:登录的账户(如 root、admin,正常应为你已知的运维账户);
2、登录终端:pts/0(远程 SSH 登录)、tty1(本地终端登录,服务器机房操作才会有);
3、登录 IP:远程登录的 IP 地址(正常应为你的办公 IP、运维 IP);
4、登录时间 + 状态:still logged in(仍在线)、(00:25)(登录时长)、system boot(服务器重启记录)。

重点查 3 个 “入侵痕迹”

  1. 陌生用户名:比如出现test、hack、miner等你没创建的账户(黑客可能添加后门用户);
  1. 陌生登录 IP:比如你的运维 IP 是192.168.1.100,但记录里出现203.0.113.5(陌生公网 IP),尤其是root用户从陌生 IP 登录;
  1. 异常会话状态:比如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 分钟)

命令作用

netstat是 “网络连接查询工具”,-tuln组合参数表示:
  • t:只看 TCP 协议连接(黑客后门、挖矿程序常用 TCP 通信);
  • u:同时看 UDP 协议连接;
  • l:只看 “正在监听” 的端口(未监听的端口不会被外部访问,无需关注);
  • n:用 “数字显示端口号”(避免显示端口别名,比如 80 显示为 http,更直观)。
注意:若系统提示 “netstat: command not found”,先安装工具包:
RHEL/CentOS:yum install -y net-tools;Debian/Ubuntu:apt install -y net-tools。
也可用系统自带的ss -tuln(功能相同,无需安装)。

执行命令

# 查看所有正在监听的TCP/UDP端口,数字显示

netstat -tuln

# 或用ss命令(更高效):

ss -tuln

输出解析 + 异常判断

正常输出(以 Web 服务器为例,只开 22/80/443 端口):
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:*
输出列含义:
  1. Proto:协议(TCP/UDP,重点看 TCP,UDP 多为 DNS 等正常服务);
  1. Local Address:本地监听地址 + 端口,格式IP:端口:
    • 0.0.0.0:22:表示 “所有网卡的 22 端口都在监听”(正常,SSH 默认端口);
    • 127.0.0.1:3306:表示 “仅本地能访问 3306 端口”(MySQL 正常配置,避免外部直接访问);
  1. State:状态(LISTEN 表示 “正在监听”,正常服务状态)。

重点查 2 个 “入侵痕迹”

  1. 未知监听端口:比如出现0.0.0.0:3333、0.0.0.0:6666、0.0.0.0:9999(这些是黑客常用的后门端口,比如3333可能是nc后门,6666可能是挖矿程序端口);
  1. 异常监听地址:比如 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 秒)

命令作用

ps aux查看所有正在运行的进程,grep -v “grep”排除自身查询进程,能快速发现 “高 CPU / 内存占用的陌生进程”(比如挖矿程序minerd、后门程序bash -i)。

执行命令 + 异常判断

# 查看所有进程,按CPU使用率排序(按P键切换排序)

ps aux --sort=-%cpu
重点关注 2 类进程:
  1. 陌生进程名:比如minerd、xmr-stak(挖矿程序)、reverse-shell(反向后门)、unknown(未知进程);
  1. 异常 CPU / 内存占用:比如某进程 CPU 占用 90% 以上,且不是你的业务服务(如 Nginx、MySQL),大概率是挖矿程序。

例子:发现挖矿进程怎么办?

若看到进程root 1234 99.0 2.0 123456 20480 ? R 14:30 1:20 minerd,执行:
# 杀死挖矿进程
kill -9 1234
# 删除挖矿程序文件(先查路径:ls -l /proc/1234/exe,再删除)
rm -f /tmp/minerd
第四步:查 “有没有后门用户”——cat /etc/passwd | grep -v “nologin”(30 秒)

命令作用

/etc/passwd是 Linux 账户配置文件,grep -v “nologin”排除 “无法登录的系统账户”(如bin、daemon),只看 “可登录的用户”,能发现黑客添加的后门账户。

执行命令 + 异常判断

# 查看所有可登录的用户(正常应为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 分钟自查流程总结(按优先级排序)

  1. 执行last -n 10 → 查陌生登录 IP / 用户(1 分钟);
  1. 执行netstat -tuln → 查可疑监听端口(1 分钟);
  1. 执行ps aux –sort=-%cpu → 查高占用陌生进程(30 秒);
  1. 执行cat /etc/passwd | grep -v “nologin” → 查后门用户(30 秒)。

若发现入侵,立即做 3 件事止损

  1. 断开网络:若服务器有物理机,直接拔网线;云服务器在控制台关闭公网 IP(避免黑客继续传恶意文件);
  1. 备份日志:将/var/log/secure(登录日志)、/var/log/messages(系统日志)复制到本地,用于后续溯源;
  1. 重装系统(若严重入侵):若发现大量后门文件、数据库被篡改,建议重装系统(避免残留后门),重装后先加固安全(参考之前的《Linux 安全自查表》)再恢复数据。
通过这 4 步,3 分钟内就能初步判断服务器是否被入侵 —— 记住:服务器安全的核心是 “定期自查”,建议每周花 3 分钟执行一次,比等被黑后补救更高效!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 qiqicto@qq.com 举报,一经查实,本站将立刻删除。
赞 (0)
赵其鑫的头像赵其鑫管理团队

相关推荐

返回顶部