关于Linux操作系统使用lastlog命令对OS账号最后一次登录时间的审计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Linux操作系统使用lastlog命令对OS账号最后一次登录时间的审计相关的知识,希望对你有一定的参考价值。

本文以Red Hat Enterprise Linux release 8.1 (Ootpa) 为例 ,应该也能适用于7.x版本的

如果对操作系统中的账号审计,其中有一个项目可能会比较重要(尤其是对于个人账号),那就是最后一次登录的记录

如果需要查看每一个OS账号的最后一次登录记录(笔者测试,不包括scp/sftp登录的记录),可以使用lastlog命令

[qq-5201351@localhost ~]$ lastlog
Username         Port     From             Latest
root             pts/1                     Sun Apr 30 12:30:40 +0800 2023
bin                                        **Never logged in**
ec2-user         pts/0    93.88.226.221    Sun Apr 30 12:21:43 +0800 2023

说明:对于From为空的,一般多为su方式登录,直接从其他地方登录,一般都会显示成IP地址

此命令实际是读取的/var/log/lastlog,因为这个文件的属主/组和权限默认如下,一般使用普通用户也是可以执行lastlog的(系统特殊加固的可能不行):

-rw-rw-r--. 1 root utmp 293460 Apr 30 12:30 /var/log/lastlog

如果此文件,被删除,笔者测试只有使用普通用户su - root 后,文件又会被创建,(直接普通用户或者直接使用root用户ssh登录,都不会自动创建)

只是这样创建的用户、有可能权限,属组会有变化,只有等到下次重启OS,才会恢复成root:utmp

回到账号审计,如果就是简单的审计的每一个账号的最后一次登录,就可以直接使用lastlog命令即可

关于lastlog命令的详细使用说明,也可以参考笔者另一篇文章 《每天一个Linux命令-lastlog》

如果要针对一部分账号,或者要求对账号按指定顺序列出,我们可以使用for循环方式,这种对于填写审计表格较为实用

for user in root bin ec2-user;do
    lastlog --user $user |tail -n 1 
done

 

最后,还有如下两个点需要注意一下:

1、lastlog命令有如下两个选项,是可以直接修改lastlog数据的,当然只能清除时间,或者设置为当前时间,不能自定义时间

-C, --clear                  clear lastlog record of an user (usable only with -u)

-S, --set                     set lastlog record to current time (usable only with -u)

2、目前笔者没有发现lastlog命令能有相关选项,可以直接读取指定位置的lastlog的data类型的文件

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17365149.html

 

Linux 命令(170)—— lastlog 命令

文章目录

1.命令简介

lastlog 命令用于显示系统中所有用户最近一次登录信息。

lastlog 命令格式化输出上次登录日志 /var/log/lastlog 的内容。它根据 UID 排序显示登录名、终端(tty)和上次登录时间。如果一个用户从未登录过,lastlog 显示 **Never logged in**

注意需要以 root 身份运行该命令。

2.命令格式

lastlog [<options>]

无选项单独执行 lastlog 将打印 lastlog 日志中的条目,并按其在 /etc/passwd 中的顺序进行排序。

3.选项说明

-b, --before <DAYS>
	仅打印早于 DAYS 的最近登录记录。
-C, --clear
	清除用户的 lastlog 记录(仅与-u一起使用)。
-h, --help
	显示此帮助信息并退出。
-R, --root <CHROOT_DIR>
	在 CHROOT_DIR 目录中应用更改并使用 CHROOT_DIR 目录中的配置文件。
-S, --set
	将 lastlog 记录设置为当前时间(仅与 -u 一起使用)。
-t, --time <DAYS>
	仅打印晚于 DAYS 的最近登录记录。
-u, --user <LOGIN>
	打印 LOGIN 用户的最近登录记录。

4.常用示例

(1) 显示系统中所有用户最近一次登录信息。

Username         Port     From             Latest
root             pts/4    223.73.1.91      Thu Oct 27 15:49:23 +0800 2022
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**
mail                                       **Never logged in**
operator                                   **Never logged in**
games                                      **Never logged in**
ftp                                        **Never logged in**
nobody                                     **Never logged in**
systemd-network                            **Never logged in**
dbus                                       **Never logged in**
polkitd                                    **Never logged in**
libstoragemgmt                             **Never logged in**
rpc                                        **Never logged in**
ntp                                        **Never logged in**
abrt                                       **Never logged in**
sshd                                       **Never logged in**
postfix                                    **Never logged in**
chrony                                     **Never logged in**
tcpdump                                    **Never logged in**
syslog                                     **Never logged in**
www                                        **Never logged in**
lighthouse                                 **Never logged in**
tss                                        **Never logged in**

(2)显示指定用户的最近登录信息。

lastlog -u root
Username         Port     From             Latest
root             pts/4    223.73.1.91      Thu Oct 27 15:49:23 +0800 2022

(3)显示指定天数前的登录信息。

lastlog -b 7
Username         Port     From             Latest
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
...

(4)显示指定天数以来的登录信息。

lastlog -b 7
Username         Port     From             Latest
root             pts/4    223.73.1.91      Thu Oct 27 15:49:23 +0800 2022

(5)清除指定用户的登录信息。

lastlog -C -u root

lastlog -u root
Username         Port     From             Latest
root                                       **Never logged in**

参考文献

lastlog(8) - Linux manual page - man7.org

以上是关于关于Linux操作系统使用lastlog命令对OS账号最后一次登录时间的审计的主要内容,如果未能解决你的问题,请参考以下文章

Linux之lastlog命令

Linux之lastlog命令

Linux 之 w who lastlog 命令例子

Linux常用命令——last,lastlog

Linux-命令-总结-持续更新

关于Linux下的命令历史记录