Linux 服务器被入侵后,如何通过登录日志排查入侵源?【实战指南】

一旦服务器被黑客入侵,第一时间要做的就是排查登录历史、定位入侵来源、封堵安全隐患。本文将系统性地介绍如何通过 Linux 提供的日志工具,分析异常登录、追踪可疑 IP,并进行应急处置,适合一线运维人员、开发者参考。

1. 查看最近的登录记录(last 命令)
使用 last 命令可以快速查看系统的登录历史,了解有哪些用户何时、从哪里登录了系统。

复制代码
last -n 20 # 查看最近 20 条登录记录

last -f /var/log/wtmp # 指定登录日志文件(默认也是 wtmp)

重点观察:

  • 用户名(如:root、admin、陌生账号等)
  • 登录时间(是否是凌晨、非工作时间等异常时段)
  • 登录来源 IP
  • 登录方式(如 SSH pts/X)

示例输出:

复制代码
root pts/0 192.168.1.100 Thu Apr 11 10:15 still logged in

hacker pts/1 45.76.123.89 Thu Apr 11 09:55 - 10:05 (00:10)

如发现陌生账号或外部 IP 登录记录,极有可能是入侵痕迹。

2. 查看失败登录尝试(lastb 命令)
lastb 可以查看所有失败的登录尝试,通常暴力破解的痕迹会体现在这里。

复制代码
lastb | head -n 20   # 查看最近 20 次失败登录尝试

若某个 IP 连续多次尝试失败,可能在尝试暴力破解:

复制代码
banned ssh:notty 103.20.45.89 Thu Apr 11 09:50 - 09:51 (00:01)

3. 检查 SSH 登录日志(/var/log/secure 或 /var/log/auth.log)
3.1 查找成功登录记录

复制代码
grep "Accepted" /var/log/secure # CentOS/ RHEL

grep "Accepted" /var/log/auth.log # Ubuntu/Debian

示例输出:

复制代码
Apr 11 10:15:00 server sshd[1234]: Accepted password for root from 45.76.123.89 port 45678 ssh2

3.2 查找失败登录记录

复制代码
grep "Failed password" /var/log/secure

3.3 查找 root 用户远程登录

4. 查看当前在线用户(who / w)

复制代码
who

w

示例输出中如发现陌生用户名(如 hacker、test123),说明系统已被控制。
5. 检查 SSH 配置是否被篡改
入侵者可能会修改 SSH 配置,放宽登录条件。

复制代码
cat /etc/ssh/sshd_config | grep PermitRootLogin

建议设置为:

复制代码
PermitRootLogin no

并修改默认端口,避免暴力扫描。
6. 查看用户执行命令历史(.bash_history)

复制代码
cat ~/.bash_history | tail -n 50

重点查找:

  • wget 或 curl 下载恶意脚本
  • chmod 777、./xxx 执行权限提升命令
  • 添加用户、植入后门的脚本

7. 追踪可疑 IP 来源(whois / ping)
例:

复制代码
whois 45.76.123.89

ping -c 4 45.76.123.89

还可以使用 AbuseIPDB 检查是否为恶意 IP:

复制代码
curl -s https://api.abuseipdb.com/api/v2/check?ipAddress=45.76.123.89

8. 应急处理建议
8.1 封禁可疑 IP

复制代码
iptables -A INPUT -s 45.76.123.89 -j DROP

firewall-cmd --add-rich-rule='rule family="ipv4" source address="45.76.123.89" reject' --permanent

fail2ban-client set sshd banip 45.76.123.89

8.2 修改 SSH 配置

复制代码
vim /etc/ssh/sshd_config

# 推荐配置

复制代码
Port 2222

PermitRootLogin no

systemctl restart sshd

8.3 强制踢出可疑用户

复制代码
pkill -u hacker

8.4 锁定高危账户

复制代码
usermod -L hacker

8.5 更改所有密码

复制代码
passwd root

8.6 更新系统与安全补丁

复制代码
yum update -y  # CentOS

apt update && apt upgrade -y  # Ubuntu/Debian

9. 总结与建议当发现服务器被入侵,第一步不是重装系统,而是排查入侵路径和清除隐患。
通过 last、lastb、grep、w、bash_history 等常用命令,我们可以快速定位登录来源,分析入侵行为。
当然,如果系统已被完全控制,建议直接备份数据后重装系统,稳定服务器平台重新部署,同时强化如下措施:

  • 禁止 root 远程登录
  • 使用非默认 SSH 端口
  • 启用 fail2ban、防火墙策略
  • 使用密钥登录替代密码登录
  • 定期审计登录日志和账户活动
相关推荐
aixingkong9213 小时前
Nvidia为例 XPU的Multi-Host、Socket Direct 、GPUDirect、RDMA 技术点分析
服务器·网络·硬件架构·硬件工程
雯宝5 小时前
mnt_init 函数
linux
律宏阔11 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔11 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴11 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千11 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei3711 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei3711 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei3711 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh11 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker