使用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
文件,能告诉你用户是谁、从哪个终端(或IP地址)登录、登录时间、持续了多久,以及何时注销。
比如,简单地输入
last
,你就能看到一长串历史记录。如果想看更详细的登录/注销时间戳,加上
-F
参数会显示完整的日期和时间,精确到秒。
last -a
会把登录IP地址显示在最后一列,方便我们一眼识别。
last -x
则能显示系统关机、重启以及运行级别变化的记录,这对于追踪系统中断事件很有用。
lastlast -Flast -alast -x reboot # 查看系统重启历史
在我处理一些服务器问题时,
last
命令经常能快速定位到某个异常登录的时间点,或者确认系统是否在非计划内重启过。
who
命令: 这个命令就比较简单粗暴了,它主要显示当前登录到系统的所有用户。你会看到用户名、终端类型、登录时间,以及登录来源(如果是远程登录)。
who
我一般用它来快速看看当前谁在线,比如想找某个同事沟通时,先用
who
看看他是不是在线。
w
命令: 比
who
更进一步,
w
不仅显示当前登录的用户,还会列出他们正在执行的进程。这对于快速了解系统负载和用户活动非常有帮助。
w
有时候我发现系统有点慢,用
w
就能很快看到是不是有某个用户正在跑一个很吃资源的命令。
/var/log/auth.log
(或
/var/log/secure
): 如果说
last
提供了概览,那这个日志文件就是详细的“账本”。它记录了所有与认证相关的事件,包括成功的登录、失败的登录尝试、SSH连接、sudo使用等。
在基于Debian/Ubuntu的系统上,通常是
/var/log/auth.log
。在基于RHEL/CentOS的系统上,则是
/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
精心筛选才能找到你需要的信息。我经常用它来排查为什么某个用户无法登录,或者有没有人在尝试暴力破解SSH密码。

如何查看特定用户的登录记录,以及登录IP地址?
想追踪某个特定用户的登录轨迹,或者确认他们是从哪个IP地址登录的,这其实是个很常见的需求。我们手头有几个工具可以很好地完成这个任务。
最直接的方法,还是利用
last
命令。你只需要在
last
后面加上用户名,它就会过滤出这个用户的所有登录和注销记录。
last
例如,要查看用户
john
的登录历史,就输入
last john
。输出会清晰地列出
john
每次登录的时间、持续时长以及登录来源。配合
-a
参数,你还能更直观地看到登录IP地址。
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
命令的使用记录。这些记录中通常会包含登录的源IP地址。有时候,仅仅
grep "john"
可能会显示太多无关信息。我个人会更精确地筛选,比如只看成功的SSH登录:
grep "Accepted password for john from" /var/log/auth.log
通过这种方式,你不仅能看到用户登录的历史,还能对他们的登录行为(包括异常尝试)有一个全面的了解。这对于安全审计和问题排查来说,简直是利器。
如知AI笔记
如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型
27 查看详情

登录日志文件通常存储在哪里,以及如何解读关键信息?
Linux系统的登录日志文件散落在
/var/log/
目录下,但它们各自记录的内容和用途略有不同。理解这些文件的作用,对于我们分析登录行为至关重要。
/var/log/wtmp
: 这个文件被
last
命令读取,存储了所有用户的登录和注销历史。它是一个二进制文件,不能直接用文本编辑器打开,必须通过
last
命令来解析。它记录了用户的登录终端、登录IP、登录时间以及注销时间。
解读关键信息:
last
命令的输出直接就是对
wtmp
的解读。关注用户名、
tty
(终端类型,如
pts/0
表示远程终端)、
from
(登录来源IP或主机名)、
login time
和
logout time
(或
still logged in
)。异常登录时间、不熟悉的IP地址都是需要警惕的信号。
/var/run/utmp
: 这个文件被
who
和
w
命令读取,记录了当前登录到系统的用户信息。它也是一个二进制文件,实时更新。
解读关键信息:
who
和
w
的输出是对
utmp
的解读。它告诉你当前谁在线、从哪里登录、以及登录了多久。
w
命令还会显示用户当前正在执行的命令,这对于监控实时用户活动很有帮助。
/var/log/auth.log
(Debian/Ubuntu) 或
/var/log/secure
(RHEL/CentOS): 这是认证相关的核心日志文件,以纯文本形式存储,可以直接用
cat
、
tail
或
less
查看。它记录了所有与用户认证和授权相关的事件,包括:
成功的用户登录(SSH、sudo等)失败的登录尝试(密码错误、用户不存在等)
sudo
命令的使用
sshd
服务启动和停止解读关键信息: 这个文件内容丰富,但通常结构化。每一行都包含时间戳、主机名、进程名(如
sshd
、
sudo
)、以及具体事件描述。查找
Accepted password for from
表示成功的登录。查找
Failed password for from
表示失败的登录尝试。
Invalid user from
表示尝试登录一个不存在的用户。
sudo: : TTY= ; PWD= ; USER= ; COMMAND=
记录了
sudo
命令的使用。这些日志文件通常会通过
logrotate
进行轮换和压缩,以防止占用过多磁盘空间。旧的日志文件可能会以
auth.log.1
、
auth.log.2.gz
等形式存在,如果需要查看更久远的记录,你可能需要解压并查看这些归档文件。
理解这些文件的存储位置和内容,就像是拥有了一份系统的“活动报告”。通过它们,我们能更全面、更细致地掌握系统上的用户行为,这对于维护系统安全和稳定性是不可或缺的。

如何追踪异常登录行为或潜在的安全威胁?
追踪异常登录行为是系统安全管理中非常关键的一环。在我看来,这不仅仅是查日志那么简单,更是一种结合了观察、分析和判断的艺术。我们不能指望系统会直接告诉你“这里有威胁”,而是要通过解读日志数据,找出那些不符合常规的模式。
关注非正常时间段的登录: 大多数用户都有固定的工作时间。如果发现有用户在凌晨两三点,或者非工作日登录,尤其是那些平时不怎么加班的用户,这就很可疑了。结合
last
命令的输出,很容易就能发现这些“夜猫子”或“周末访客”。
last -F | less # 详细查看带时间戳的登录记录
我通常会把这些非正常时间的登录记录单独拎出来,和用户本人确认一下。
警惕来自陌生或不寻常IP地址的登录: 如果你的用户通常从公司内部网络或固定的几个外部IP登录,那么来自完全陌生国家或地区IP的登录尝试(无论是成功还是失败),都应该立即引起注意。
使用
last -a
可以快速看到登录IP。在
/var/log/auth.log
中,
grep "Accepted password"
和
grep "Failed password"
后面跟着的IP地址是关键信息。
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 from
这样的日志条目就是线索。这表明攻击者在进行用户枚举,试图找出系统上存在的有效账户。
我的经验是,定期(比如每天或每周)浏览一下
auth.log
中关于失败登录的记录,并快速扫一眼
last
的输出,就能帮助我们及时发现大部分潜在问题。不要等到系统真正被攻破了才去查日志,那往往就晚了。日志是我们的眼睛,帮助我们看到系统内部正在发生的一切。
以上就是Linux如何查看用户登录历史记录的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/429946.html
微信扫一扫
支付宝扫一扫