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、防火墙策略
  • 使用密钥登录替代密码登录
  • 定期审计登录日志和账户活动
相关推荐
云捷配低代码7 分钟前
低代码库存管理系统实战:实现库存预警、出入库自动化管理
运维·低代码·自动化·数字化·敏捷流程·数字化转型
头铁的伦19 分钟前
QNX 网络模型
linux·网络·车载系统
小贾要学习19 分钟前
【Linux】TCP网络通信编程
linux·服务器·网络·c++·网络协议·tcp/ip
Q3_SkyAsh20 分钟前
【电子取证】——第三届“平航杯”电子数据取证竞赛服务器取证部分
服务器·电子取证
大白菜和MySQL23 分钟前
apache服务器部署简记
运维·服务器·apache
极创信息33 分钟前
信创系统认证服务怎么做?从适配到验收全流程指南
java·大数据·运维·tomcat·健康医疗
渣渣馬44 分钟前
rk3588s的firfly的linux的sdk版本
linux·运维·服务器
赵优秀一一2 小时前
FastAPI 核心
linux·python·fastapi
大数据新鸟2 小时前
NIO 三大核心组件
服务器·网络·nio
相醉为友2 小时前
024 嵌入式Linux应用开发——文字显示与freetype的使用显示
linux·运维·驱动开发