在 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 把从何处登入系统的 WordPress 主机名称或 IP 地址, 显示在最后一行;
-d 将 IP 地址转换成 WordPress 主机名称;
-f <记录档案> 指定记录档案;
-n <显示列数>或-<显示列数> 设定列出名单的显示列数;
-R 不显示登入系统的 WordPress 主机名或 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 把从何处登入系统的 WordPress 主机名称或 IP 地址, 显示在最后一行;
-d 将 IP 地址转换成 WordPress 主机名称;
-f <记录档案> 指定记录档案;
-n <显示列数>或-<显示列数> 设定列出名单的显示列数;
-R 不显示登入系统的 WordPress 主机名或 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