手把手教你查看Linux服务器用户登录日志,排查异常登录
为什么需要关注Linux服务器用户登录日志
服务器每天都会产生大量登录记录,Linux服务器用户登录日志是排查异常入侵、审计操作行为的第一手资料。
无论是SSH暴力破解还是员工误操作,都能在日志里找到痕迹。
本文用最直白的步骤,带零基础的新手从头查起。
准备工作
- 拥有一台Linux服务器(Ubuntu / CentOS / Debian 均可),并有SSH root或sudo权限。
- 确认日志服务在运行:
systemctl status rsyslog(大多数发行版默认启用)。 - 知道日志文件存放路径:
/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(CentOS/RHEL)。
核心命令:一键查看Linux服务器用户登录日志
1. 用 last 查看所有成功登录记录
last 命令读取 /var/log/wtmp 文件,显示所有成功登录的用户、时间、来源IP和持续时间。
last
输出示例:
root pts/0 192.168.1.100 Mon Apr 7 10:30 still logged in
user1 pts/1 10.0.0.5 Mon Apr 7 09:15 - 09:45 (00:30)
- 只看最近10条:
last -10 - 只看某个用户:
last root
2. 用 lastb 查看失败的登录尝试
lastb 读取 /var/log/btmp,记录所有认证失败的登录。这是排查暴力破解的重要入口。
lastb
输出类似 last,但显示的都是失败记录。
如果看到大量来自同一IP的连续失败,说明该IP正在试探密码。
3. 用 lastlog 查看所有用户最近一次登录时间
lastlog
可以快速发现长时间未登录的账户,或者某个账户的登录时间与预期不符。
4. 直接分析 /var/log/auth.log 中的关键事件
使用 grep 过滤出特定事件:
# 查找所有Failed password(失败密码尝试)
grep "Failed password" /var/log/auth.log
# 查找所有Accepted(成功登录)
grep "Accepted" /var/log/auth.log
# 查找特定IP的登录记录
grep "192.168.1.100" /var/log/auth.log
建议配合 tail -f 实时监控新登录:
tail -f /var/log/auth.log | grep -E "Accepted|Failed"
避坑指南:新手最容易遇到的几个问题
lastb提示无权限或文件不存在:/var/log/btmp默认不存在,需要手动创建touch /var/log/btmp,并设置权限chmod 600 /var/log/btmp; chown root:utmp /var/log/btmp。- 日志不完整或被清空:检查日志轮转配置
/etc/logrotate.conf,如果怀疑被入侵后删除日志,可以检查last -f /var/log/wtmp.1读取轮转备份。 - 时间戳显示不对:确认时区设置,
timedatectl查看当前时区,timedatectl set-timezone Asia/Shanghai修改。 - SSH登录记录不更新:检查
sshd服务是否正常运行,systemctl status sshd。
效果验证:如何判断操作真的成功了
- 执行完
last后,能看到自己当前的登录会话(显示still logged in)。 - 执行
lastb后,能看到之前失败的尝试——如果没有,可以用错误密码故意试一次登录,再执行lastb看是否出现记录。 - 用
grep查看/var/log/auth.log中最近一条Accepted记录,确认包含你当前登录的IP。
如果以上都正确,说明你已经完全掌握了Linux服务器用户登录日志的查看方法。
总结
Linux服务器用户登录日志是运维人员最基础的技能之一,但也是挡住许多新手的第一道坎。
记住 last、lastb、lastlog 和 grep 这四类操作,配合日志轮转原理,就能轻松应对日常安全审计。
建议每周至少检查一次登录记录,结合 fail2ban 自动封禁暴力破解IP,让服务器更安全。
如果你在操作中遇到其他问题,欢迎留言交流。