命令简介

last 命令用于显示系统中记录的最近登录用户的信息。它可以显示登录和注销的时间、用户名、来源主机等详细信息。该命令通常用于审计和监控系统的登录活动。

命令格式

1
last [选项]

参数说明

参数 说明 备注
-a 显示与 /var/log/wtmp 文件中记录一致的所有主机名信息 默认情况下,主机名可能会显示为 IP 地址
-d 指定要列出信息的天数 例如 -d 7 将显示最近 7 天的登录信息
-f 显示最近的一次登录信息 仅显示最新的登录记录
-i 显示 IP 地址而不是主机名 适用于无法解析主机名的情况
-n 将主机名替换为 IP 地址 -i 选项相反
-x 扩展显示主机名和 IP 地址 同时显示主机名和 IP 地址

命令实例

基本用法

1.显示最近登录信息

1
last

这将显示最近登录系统的用户信息,包括登录时间、注销时间、用户名和来源主机。

2.显示最近 7 天的登录信息

1
last -d 7

这将仅显示最近 7 天内登录系统的用户信息。

  1. 显示最后一次登录信息
1
last -f

这将仅显示最后一次登录系统的用户信息。

4.显示 IP 地址而不是主机名

1
last -i

这将显示用户登录时的 IP 地址,而不是主机名。

5.同时显示主机名和 IP 地址

1
last -x

这将同时显示用户登录时的主机名和 IP 地址。

扩展用法

1.将输出保存到文件

1
last > last_logins.txt

这将将 last 命令的输出保存到 last_logins.txt 文件中。

2.结合 grep 过滤输出

1
last | grep "root"

这将仅显示与 root 用户相关的登录信息。

3.统计登录次数

1
last | awk '{print $1}' | sort | uniq -c | sort -rn

这将统计每个用户登录系统的次数,并按降序排列。

高级用法

1.监控登录活动

1
2
3
4
5
6
#!/bin/bash

old_logins=$(last -n 20 | awk '{ print $1 }' | sort | uniq)
new_logins=$(last -n 20 | awk '{ print $1 }' | sort | uniq)

diff <(echo "$old_logins") <(echo "$new_logins") | grep '>'

这个脚本将监控最近 20 次登录活动,并报告新的登录用户。它通过比较上一次和当前的登录用户列表来检测新的登录活动。可以将此脚本添加到 cron 作业中定期执行。

2.检测暴力破解尝试

1
last | grep "LOGIN" | awk '{ print $1 }' | sort | uniq -c | sort -rn | head

这将显示最近登录失败次数最多的用户列表,可以帮助检测潜在的暴力破解尝试。它首先过滤出所有登录失败的记录,然后统计每个用户的失败次数,并按降序排列。

3.根据登录时间范围过滤输出

1
last -F "$(date -d '-7 days' '+%Y%m%d%H%M')" -t "$(date '+%Y%m%d%H%M')"

这将显示最近 7 天内的登录信息。它使用 last 命令的 -F-t 选项来指定登录时间范围。

以上是关于 last 命令的详细文档,包括命令简介、语法格式、参数使用说明、演示实例以及扩展和高级使用方法。last 命令是一个非常有用的工具,可以帮助监控和审计系统的登录活动,检测潜在的安全威胁。通过组合其他命令和脚本,可以实现更加强大的功能。