在linux中有5个用于审计的命令 :
* last : 这个命令可用于查看我么你系统的成功登录、关机、重启等情况;这个命令就是将
/var/log/wtmp文件格式化输出;
* lastb : 这个命令用于查看登录失败的情况;这个命令将/var/log/btmp文件格式化输出;
* lastlog : 这个命令用于查看用户上一次登录情况;这个命令将/var/log/lastlog文件格式化输
出;
* who : 这个命令用户查看当前登录系统的情况;这个命令就是将/var/log/utmp文件格式化
输出;
* w : 与who命令一致;
<1>last 命令
语 法 : last [-adRx][-f <记录文件>][-n <显示列数>][账号名称…][终端机编号…]
功能说明 : 列出目前与过去登入系统的用户相关信息;
补充说明 : 单独执行last指令,它会读取位于/var/log/wtmp文件,并把该文件记录的登入系统的用户名单全部显示出来;
参 数 :
-a 把从何处登入系统的主机名称或IP地址,显示在最后一行;
-d 将IP地址转换成主机名称;
-f <记录文件> 指定记录文件;
-n <显示列数>或-<显示列数> 设置列出名单的显示列数;
-R 不显示登入系统的主机名或IP地址;
-x 显示系统关机、重新开机、以及执行等级的改变等信息;
案例 :
(1)last默认显示wtmp的记录,若想通过last命令显示btmp文件内容呢?
命令 : last -f /var/log/btmp
(2)可能wtmp保存的数据过多,对于查询比较费力,我们可以尝试只列出最新的5列名单?
这里我们可能想到的是:
命令 : last -n 5(n与5之间有无空格一样) 或者last -5
但是wtmp是从上往下写入数据的,这样显示的就并非最新数据了.
利用tail命令呢?
命令 : last | tail -7
注:观察过wtmp文件的会发现wtmp结尾有一行文件描述和一行空格.”tail -7” 这样反而实现列出我们需要的最新5列名单.
(3)显示特定用户的登录情况或针对不同的情况(reboot/shutdown)进行查看
命令 : last -n 5 root //显示root用户的登录情况的前五列
命令 : last -x reboot/shutdown //只列出重启/关机的情况
<2>lastb 命令
语 法 : last [-adRx][-f <记录文件>][-n <显示列数>][账号名称…][终端机编号…]
功能说明 : 列出目前与过去登入系统失败的用户相关信息;
补充说明 : 单独执行last指令,它会读取位于/var/log/btmp文件,并把该文件记录的登入系统失败的用户名单全部显示出来;
参 数 :
-a 把从何处登入系统的主机名称或IP地址,显示在最后一行;
-d 将IP地址转换成主机名称;
-f <记录文件> 指定记录文件;
-n <显示列数>或-<显示列数> 设置列出名单的显示列数;
-R 不显示登入系统的主机名或IP地址;
-x 显示系统关机、重新开机、以及执行等级的改变等信息;
注 : lastb 功能基本跟last是一样的,只是两个命令默认读取的文件不同,一个为btmp,一个为wtmp.
<3>lastlog 命令
语 法 : lastlog
功能说明 : 检查某特定用户上次登录的时间
参 数 :
-b <天数> 显示指定天数前的登陆信息;
-h 显示帮助信息;
-t <天数> 显示指定天数以来的登录信息;
-u <用户名> 显示指定用户的最近登录信息;
<4>who、w 命令
查看当前登录系统的情况
[root@sqj ~]# who
root pts/0 2016-08-06 23:38 (XX.XX.XX.XX)
[root@sqj ~]# w
06:29:11 up 3 days, 16:26, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 XX.XX.XX.XX 23:38 0.00s 0.29s 0.00s w