社区编辑申请
注册/登录
Linux内置的审计跟踪工具:last命令
系统 Linux
Linux有一个内置工具last,对于审计追踪非常有用。可以查看最后登陆服务器用户的用户名、tty、IP地址(如果用户是远程连接的话)、日期-时间等,来帮助你保护服务器。

如果你是一个服务器管理员,你或许知道你要保护你的服务器的话,不仅是从外部,还要从内部保护。Linux有一个内置工具来看到***登陆服务器的用户,可以帮助你保护服务器。

这个命令是last。它对于追踪非常有用。让我们来看一下last可以为你做些什么。

last命令的功能是什么

last显示的是自/var/log/wtmp文件创建起所有登录(和登出)的用户。这个文件是二进制文件,它不能被文本编辑器浏览,比如vi、Joe或者其他软件。这是非常有用的,因为用户(或者root)不能像他们希望的那样修改这个文件。

last会给出所有已登录用户的用户名、tty、IP地址(如果用户是远程连接的话)、日期-时间和用户已经登录的时间。

如何运行last

你只要在控制台中输入last即可。这是个例子:

$ last

leni pts/0 10.0.76.162 Mon Dec 2 12:32 - 13:25 (00:53)
pungki tty1 Mon Dec 2 09:31 still logged in
reboot system boot 2.6.32-358.23.2 Mon Dec 2 09:20 - 13:25 (04:05) 

这里是如何阅读last信息:

  • ***列告诉谁是用户
  • 第二列给出了用户如何连接的信息

    • pts/0 (伪终端) 意味着从诸如SSH或telnet的远程连接的用户
    • tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户
    • 除了重启活动,所有状态会在启动时显示
  • 第三列显示用户来自哪里。如果用户来自于远程计算机,你会看到一个主机名或者IP地址。如果你看见:0.0 或者什么都没有,这意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中。

  • 剩下的列显示日志活动发生在何时。括号中的数字告诉我们连接持续了多少小时和分钟。

日常操作中last的一些示例

限制显示行的数目

当你有很多行要显示时,你可以限制你想看到的行的数目.使用 -n 参数来这么做。

$ last -n 3

leni pts/0 10.0.76.162 Mon Dec 2 12:32 - 13:25 (00:53)
pungki tty1 Mon Dec 2 09:31 still logged in
reboot system boot 2.6.32-358.23.2 Mon Dec 2 09:20 - 13:25 (04:05)

-n 参数会使last显示从当前时间到以后的3条记录。

不显示主机名

使用 -R 参数来这么做。这里是例子 :

$ last -R

leni pts/0 Mon Dec 2 12:32 - 13:25 (00:53)
pungki tty1 Mon Dec 2 09:31 still logged in
reboot system boot Mon Dec 2 09:20 - 13:25 (04:05)

如你所见,现在在也没有关于主机或者IP地址的信息了。

***一列显示主机名

要这么做,我们使用 -a参数

$ last -a

leni pts/0 Mon Dec 2 12:32 - 13:25 (00:53) 10.0.76.162
pungki tty1 Mon Dec 2 09:31 still logged in :0.0
reboot system boot Mon Dec 2 09:20 - 13:25 (04:05) 2.6.32-358.23.2.el6.i686

现在主机信息诸如10.0.76.162 会放在***一列。

显示完整登入登出时间日期

对于此,你可以使用 -F 参数。这个是个示例:

$ last -F

leni pts/0 10.0.76.162 Mon Dec 2 12:32:24 2013 – Mon Dec 2013 13:25:24 2013 (00:53)

打印特定的用户名

如果你想要追踪特定的用户,你可以特别打印它。在last命令后面输入用户名。

$ last leni

leni tty1 Mon Dec 2 18-42 still logged in
leni pts/0 Mon Dec 2 12:32 - 13:25 (00:53) 10.0.76.162

或者你想要知道reboot何时完成,你也可以这样显示它:

$ last reboot

reboot system boot Mon Dec 2 09:20 - 16:55 (07:34)
reboot system boot Sun Dec 1 04:26 - 04:27 (00:01)
reboot system boot Wed Nov 27 20:27 - 01:24 (04:57)
reboot system boot Tue Nov 26 21:06 - 06:13 (09:06)

打印特定 / pts

last同样可以打印特定tty/pts的信息. 只要在last命令后面输入tty名字或者pty名字。

这里有一些例子:

$ last tty1

pungki tty1 Mon Dec 2 09:31 still logged in
pungki tty1 Mon Dec 2 04:26 – down (00:00)
pungki tty1 Mon Dec 2 04:07 – down (00:00)
pungki tty1 Sun Dec 1 18:55 – 04:07 (09:12)

$ last pts/0

leni pts/0 10.0.76.162 Mon Dec 2 12:32 - 13:25 (00:53)
pungki pts/0 :0.0 Wed Nov 27 20:28 – down (04:56)

当你看到 down 的值 - 比如上面的第二行,它意味着用户从某个时间登录直到系统重启或关机。

使用另一个文件而不是 /var/log/wtmp

默认上,last命令会从/var/log/wtmp中解析信息。如果你想要last命令从另外一个文件解析,你可以使用-f 参数。比如,当日志切割后,让我们假设切割后,之前的文件名变为/var/log/wtmp.1。那么last命令会像这样。

$ last -f /var/log/wtmp.1

显示运行级别改变

这里有个-x参数来显示运行级别。这里示例输出:

pungki tty1 Mon Dec 2 19:21 still logged in
runlevel (to lvl 3) 2.6.32-358.23.2 Mon Dec 2 19:20 – 19:29 (00:08)
reboot system boot 2.6.32-358.23.2 Mon Dec 2 19:20 – 19:29 (00:08)
shutdown system down 2.6.32-358.23.2 Mon Dec 2 18:56 – 19:20 (00:23)
runlevel (to lvl 0) 2.6.32-358.23.2 Mon Dec 2 18:56 – 18:56 (00:00)
leni tty1 Mon Dec 2 18:42 – down (00:00) 

你可以看到这里有两个运行级别。运行级别to lvl 3的条目意味着系统运行在完整的控制台模式,而没在X window或者GUI中。同时,当系统关机时,实际上是切换为运行级别0,这就是为什么last会显示to lvl 0。

 

查看失败登录

last命令用了记录成功登录,而 lastb 命令记录失败的登录尝试。你必须拥有root权限才能运行lastb命令。这里有一个lastb命令的示例输出。lastb会解析/var/log/btmp的信息。

# lastb

leni tty1 Mon Dec 2 22:12 – 22:12 (00:00)
rahma tty1 Mon Dec 2 22:11 – 22:11 (00:00) 

切割日志

因为/var/log/wtmp记录每次的登录活动,文件的大小可能会快速地增长。默认上,Linux会每月切割 /var/log/wtmp/。切割的策略放在/etc/logrotate.conf 文件中。这里是我/etc/logrotate.conf*文件的内容。

/var/log/wtmp {
  monthly
  create 0664 root umtp
  minsize 1M
  rotate 1
}

对于 /var/log/btmp, 这里是默认的倒换活动配置

/var/log/btmp {
  missingok
  monthly
  create 0600 root umtp
  minsize 1M
  rotate 1
}

你可以根据需要自己修改。

总结

你可以结合这些参数来自定义last和lastb的输出。所有可以运行于last命令的参数都可运行在lastb命令上。更多细节,请通过在控制台输入man last来访问。


via: http://linoxide.com/linux-command/linux-last-command/

译者:geekpi 校对:wxy

责任编辑:黄丹 来源: Linux中国
相关推荐

2022-06-20 22:37:25

Linux操作系统命令

2022-06-15 08:21:49

Linux运维工程师

2022-06-22 09:19:55

HDC鸿蒙ADB命令

2022-06-17 09:47:04

Linux命令

2022-06-17 09:08:27

代码Python内置库

2022-06-19 14:13:29

tmateLinux

2022-05-05 09:27:31

Linux服务器优化

2022-06-28 10:03:56

CentOSLinux

2022-06-06 08:37:13

Linux远程桌面工具

2022-05-09 08:55:58

Linuxdiff命令

2022-06-05 08:12:56

LinuxLinux Lite浏览器

2022-06-16 10:14:51

LinuxEmacs编辑器

2022-06-14 23:34:10

Linux安全服务器

2022-06-06 10:20:59

CPUCPU 使用率CPU 负载

2022-06-27 19:01:04

Python应用程序数据

2022-06-09 09:20:40

Linux语言编写代码

2022-06-09 21:34:41

2022-06-21 09:26:21

Shell脚本JavaScript

2022-05-24 13:08:55

GNOMEKDELinux

2022-04-02 20:45:04

Hi3516开发板操作系统鸿蒙

同话题下的热门内容

用这些开源工具在 Linux 上编辑 PDF 文件Linux 网络性能的 15 个优化建议Docker Compose:搭建开发环境的好方式在 Linux 上玩电子游戏的三种方式为什么命令行在 Linux 生态系统中如此重要在 Linux 上使用 WineZGUI 运行 Windows 应用和游戏Docker 暴重大安全漏洞:外部网络可直接访问映射到 127.0.0.1 的本地服务如何构建自己的可引导 Linux Live CD

编辑推荐

Linux系统下安装MySQL的步骤详解CentOS与Ubuntu有什么不同?Linux下如何使用minicom USB串口为什么你可能想要略过Ubuntu 17.04?Linux中7个判断文件系统类型的方法
我收藏的内容
点赞
收藏

51CTO技术栈公众号