使用last、who、w命令及/var/log/auth.log等日志文件可追踪Linux用户登录时间、IP及行为,通过分析登录时间、来源IP和失败尝试可识别异常活动。

Linux系统里,想知道谁在什么时候登录过、从哪里登录,其实有几套方法可以帮我们摸清这些情况。最直接的,就是利用几个系统自带的命令和日志文件。它们能帮你追踪用户活动,无论是为了安全审计还是日常管理,都非常实用。
要深入查看登录历史,我们通常会用到
last
who
w
/var/log/auth.log
/var/log/secure
last
/var/log/wtmp
last
-F
last -a
last -x
last last -F last -a last -x reboot # 查看系统重启历史
在我处理一些服务器问题时,
last
who
who
我一般用它来快速看看当前谁在线,比如想找某个同事沟通时,先用
who
w
who
w
w
有时候我发现系统有点慢,用
w
/var/log/auth.log
/var/log/secure
last
/var/log/auth.log
/var/log/secure
cat
tail
grep
tail -f /var/log/auth.log # 实时查看新的认证事件 grep "Accepted password" /var/log/auth.log # 查找成功的SSH登录 grep "Failed password" /var/log/auth.log # 查找失败的登录尝试
这个文件内容非常丰富,但也因此可能显得有点“杂乱”,需要用
grep

想追踪某个特定用户的登录轨迹,或者确认他们是从哪个IP地址登录的,这其实是个很常见的需求。我们手头有几个工具可以很好地完成这个任务。
最直接的方法,还是利用
last
last
last <username>
例如,要查看用户
john
last john
john
-a
last -a john
这样,IP地址会显示在最后一列,一目了然。
如果需要更细致的、包含失败尝试的记录,或者想看看SSH登录的具体细节,那就得翻阅认证日志文件了。在
/var/log/auth.log
/var/log/secure
grep
grep "john" /var/log/auth.log
这会显示所有包含“john”这个字符串的认证事件。你可能会看到成功的SSH登录(
Accepted password for john from ...
Failed password for john from ...
sudo
grep "john"
grep "Accepted password for john from" /var/log/auth.log
通过这种方式,你不仅能看到用户登录的历史,还能对他们的登录行为(包括异常尝试)有一个全面的了解。这对于安全审计和问题排查来说,简直是利器。

Linux系统的登录日志文件散落在
/var/log/
/var/log/wtmp
last
last
last
wtmp
tty
pts/0
from
login time
logout time
still logged in
/var/run/utmp
who
w
who
w
utmp
w
/var/log/auth.log
/var/log/secure
cat
tail
less
sudo
sshd
sshd
sudo
Accepted password for <user> from <IP>
Failed password for <user> from <IP>
Invalid user <user> from <IP>
sudo: <user> : TTY=<tty> ; PWD=<pwd> ; USER=<target_user> ; COMMAND=<command>
sudo
logrotate
auth.log.1
auth.log.2.gz
理解这些文件的存储位置和内容,就像是拥有了一份系统的“活动报告”。通过它们,我们能更全面、更细致地掌握系统上的用户行为,这对于维护系统安全和稳定性是不可或缺的。

追踪异常登录行为是系统安全管理中非常关键的一环。在我看来,这不仅仅是查日志那么简单,更是一种结合了观察、分析和判断的艺术。我们不能指望系统会直接告诉你“这里有威胁”,而是要通过解读日志数据,找出那些不符合常规的模式。
关注非正常时间段的登录: 大多数用户都有固定的工作时间。如果发现有用户在凌晨两三点,或者非工作日登录,尤其是那些平时不怎么加班的用户,这就很可疑了。结合
last
last -F | less # 详细查看带时间戳的登录记录
我通常会把这些非正常时间的登录记录单独拎出来,和用户本人确认一下。
警惕来自陌生或不寻常IP地址的登录: 如果你的用户通常从公司内部网络或固定的几个外部IP登录,那么来自完全陌生国家或地区IP的登录尝试(无论是成功还是失败),都应该立即引起注意。
last -a
/var/log/auth.log
grep "Accepted password"
grep "Failed password"
grep "Accepted password" /var/log/auth.log | awk '{print $NF}' | sort | uniq -c # 统计成功登录的IP地址及次数
grep "Failed password" /var/log/auth.log | awk '{print $NF}' | sort | uniq -c # 统计失败登录的IP地址及次数如果发现某个IP地址有大量的失败登录尝试,那几乎可以肯定是有人在尝试暴力破解。这时,你可能需要考虑在防火墙层面直接封禁这个IP,或者使用像
fail2ban
频繁的失败登录尝试: 这是最明显的安全威胁信号之一。在
auth.log
Failed password
grep "Failed password" /var/log/auth.log
当你看到几十甚至上百条来自同一个IP或针对同一个用户的失败记录时,就得立刻采取行动了。
检查不存在用户的登录尝试: 有时攻击者会尝试一些常见的用户名(如
admin
test
root
Invalid user <user> from <IP>
我的经验是,定期(比如每天或每周)浏览一下
auth.log
last
以上就是Linux如何查看用户登录历史记录的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号