在Linux系统管理领域,安全审计与追踪用户活动是至关重要的日常任务,CentOS作为广泛使用的服务器操作系统,提供了一系列强大的工具来帮助管理员实现这一目标。last
命令是一个基础但极其有用的工具,它专门用于显示用户近期的登录历史记录,通过深入理解和运用last
命令,管理员可以快速回顾系统的访问情况,发现潜在的安全风险,或排查与用户会话相关的问题。
last
命令的核心功能是读取并解析系统中的/var/log/wtmp
文件,这个二进制日志文件记录了系统中每一次成功的登录、登出以及系统重启事件,每当用户成功登录时,一条新的记录会被写入wtmp
文件;当用户登出时,对应的记录会被更新。last
命令展示的正是这个文件所维护的动态历史。
基本用法与输出解析
在没有任何参数的情况下,直接在终端输入last
命令,系统会列出从wtmp
文件创建以来所有的登录记录,通常按照时间倒序排列(最新的记录在最前面),其输出格式非常直观,每一行代表一个登录会话,并包含多个信息列。
一个典型的last
命令输出如下所示:
testuser pts/0 192.168.1.101 Mon May 20 09:15 still logged in
root pts/1 192.168.1.102 Sun May 19 22:30 - 23:45 (01:15)
reboot system boot 5.4.17-2136.311 Sun May 19 22:28 still running
admin tty1 Sun May 19 10:00 - 14:30 (04:30)
为了更好地理解这些信息,我们可以将其分解为以下几个关键列:
列名 | 描述 |
---|---|
用户名 | 登录系统的账户名称,如root 、testuser ,特殊值reboot 表示系统启动事件。 |
终端 | 用户登录所使用的终端设备。pts/0 、pts/1 等代表SSH或图形界面的伪终端;tty1 代表物理控制台。 |
来源主机 | 用户登录来源的IP地址或主机名,如果显示为0.0.0 或留空,通常表示从本地控制台登录。 |
登录时间 | 用户会话开始的日期和时间。 |
登出时间 | 用户会话结束的日期和时间,如果用户仍在登录状态,会显示still logged in ,如果是系统崩溃或网络中断导致会话异常结束,可能会显示down 。 |
持续时长 | 本次登录会话的总时长,以(HH:MM) 格式表示。 |
常用选项详解
last
命令的真正威力在于其丰富的选项,这些选项允许管理员对输出进行精确的过滤和格式化,以满足不同的审计需求。
-n
或 --limit
:限制输出行数
当系统登录记录非常多时,使用-n
选项可以只显示最近的N条记录,这对于快速获取最新动态非常有用。
last -n 20
这个命令将只显示最近的20条登录记录,让终端输出更加简洁。
-u
或 --user
:筛选特定用户
如果需要调查某个特定账户的活动情况,可以使用-u
选项后跟用户名。
last -u testuser
该命令会只显示testuser
这个账户的所有登录历史,排除了其他用户的干扰,便于集中分析。
-t
或 --until
与 -s
或 --since
:按时间范围筛选
这是进行安全事件追溯时最常用的选项组合。-s
指定开始时间,-t
指定结束时间,从而可以精确地查询某个特定时间窗口内的登录活动,时间格式通常为YYYYMMDDHHMMSS
。
# 查询2025年5月20日全天到5月21日早上的登录记录 last -s 20250520000000 -t 20250521080000
通过这种方式,管理员可以快速定位到某个可疑事件发生时间段内的所有系统访问记录。
-F
或 --fulltimes
:显示完整时间戳
默认情况下,last
可能会省略年份或显示简化的时间,使用-F
选项可以显示完整的、包含年月日时分秒的详细时间戳,这在需要精确时间点的审计场景中至关重要。
last -F -n 5
-d
或 --dns
:将IP地址解析为主机名
为了更直观地了解登录来源,-d
选项会尝试将IP地址反向解析为主机名,这可能会增加命令的执行时间,因为需要进行DNS查询。
last -d -n 10
-i
或 --ip
:强制显示IP地址
与-d
相反,-i
选项会将所有主机名都转换为数字IP地址显示,这对于快速识别网络段或进行IP层面的分析很有帮助。
last -i -u root
-x
或 --system
:显示系统关机和重启事件
默认情况下,last
会显示reboot
记录,但使用-x
选项可以显示更详细的系统状态变化,包括运行级别的切换(runlevel
)和关机事件(shutdown
)。
last -x
这对于排查因系统重启或意外关机导致的服务中断问题非常有用。
工作原理:日志文件探秘
理解last
命令背后的工作机制,能让我们更有效地使用它,它主要依赖两个日志文件:
/var/log/wtmp
:记录所有成功的登录、登出和系统重启事件。last
命令默认读取此文件。/var/log/btmp
:记录所有失败的登录尝试,这个文件对于发现暴力破解攻击等恶意行为至关重要。
要查看失败的登录尝试,需要使用lastb
命令,它的用法和选项与last
几乎完全相同,只是读取的数据源是btmp
文件。
# 查看最近的10次失败登录尝试 lastb -n 10
定期检查lastb
的输出是系统安全维护的一个良好习惯。
相关问答 (FAQs)
解答: 这种情况通常是由日志轮转机制引起的,为了防止日志文件无限增长,CentOS系统会通过logrotate
工具定期对/var/log/wtmp
进行切割、压缩和清理,旧的wtmp
文件可能会被重命名为wtmp.1
、wtmp.2.gz
等,并最终被删除。last
命令默认只读取当前活跃的/var/log/wtmp
文件,如果你想查看已被轮转的旧日志,可以手动指定文件路径,last -f /var/log/wtmp.1
,你可以检查/etc/logrotate.conf
或/etc/logrotate.d/wtmp
配置文件来了解日志轮转的具体策略。
解答: 是的,last
命令能够记录通过SSH密钥的登录。last
命令关注的是“登录会话”的建立与结束,而不是用户进行身份验证的具体方式,无论用户是通过密码、SSH密钥、还是其他认证方法(如Kerberos)成功登录系统,wtmp
文件都会记录下这次登录事件,在last
的输出中,你无法直接区分一次登录是通过密码还是密钥完成的,但该登录行为本身会被完整地记录下来,包括用户名、来源IP和登录时间。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复