CodeGym /课程 /Docker SELF /活跃用户和登录监控:使用命令 `who`、`w` 和 `last`

活跃用户和登录监控:使用命令 `who`、`w` 和 `last`

Docker SELF
第 5 级 , 课程 4
可用

活跃用户和登录监控:使用命令 whowlast

1. 为什么监控用户很重要?

Linux,和其他服务器一样(或者甚至是装有网站的倒霉盒子),提供多个用户同时操作的可能性。但是如果你的服务器被入侵了怎么办?或者有个同事半夜“意外地”删除了重要的文件呢?用户活动监控可以帮助我们知道谁、什么时候、从哪里登录了系统,还能知道他们正在执行什么进程。这就像一个监控摄像头,只不过是为你的服务器而设的。

主要的监控工具

为了评估服务器上的用户活动,Linux 提供了三个关键命令:

  • who — 显示当前登录系统的用户。
  • w — 提供更多的信息:用户的行为和系统负载。
  • last — 提供系统登录历史记录。

每个命令都有它的特点,并适用于不同的场景。我们会通过例子来解释这些命令。


2. 命令 who

命令 who 显示当前登录系统的用户列表。这就像一本“注册簿”,你可以看一眼,知道谁目前在服务器上。

who

命令的输出示例:

user1    pts/0        2023-10-20 09:10 (192.168.1.100)
root     pts/1        2023-10-20 09:15 (192.168.1.101)

这里我们能看到什么:

  • 用户名 user1, root
  • 他们连接的终端 pts/0, pts/1
  • 登录时间 2023-10-20 09:10
  • 连接来源 192.168.1.100

who 的选项:

  • who -a: 同时显示系统数据,比如启动时间、运行的进程和用户。
  • who am i: 只显示启动命令的用户信息。

3. 命令 w

如果 who 只是记录谁登录了,那么 w 提供了更多信息 - 它会告诉你用户现在正在干什么。这很有用,可以了解他是在干正事,还是在干些需要立刻停止的事情。

w

输出示例:

10:20:42 up 1 day,  5:12,  2 users,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user1    pts/0    192.168.1.100    09:10    1:00   0.01s  0.01s nano app.py
root     pts/1    192.168.1.101    09:15    2:00   0.02s  0.02s htop

这代表了什么:

  • 第一行提供了系统信息:当前时间、服务器运行时间、用户数量以及系统负载 load average
  • 表格显示了:
    • 用户名 user1, root
    • 用户通过哪个终端连接 pts/0, pts/1
    • 用户的 IP 地址 192.168.1.100
    • 登录时间 09:10
    • 空闲时间 IDLE
    • 用户当前的活动 WHAT,比如使用 nano 编辑文件 app.py

w 的一些参数:

  • w -h:移除表格标题。
  • w username:只显示特定用户的信息。

4. 命令 last

如果 whow 讲的是当前的情况,那么 last 可以让我们查看历史记录。它用来显示系统中所有的登录历史。这条命令会读取文件 /var/log/wtmp,而这个文件记录了所有用户的登录信息。

last

输出示例:

user1    pts/0        192.168.1.100    Fri Oct 20 09:10 - 09:30  (00:20)
root     pts/1        192.168.1.101    Fri Oct 20 09:15 - down   (00:15)

这里我们可以看到:

  • 用户名 user1, root
  • 终端 pts/0, pts/1
  • IP 地址或主机名 192.168.1.100, 192.168.1.101
  • 登录时间 Fri Oct 20 09:10
  • 退出时间 09:30 和会话总时长 00:20

last 的选项:

  • last -n 10: 只显示最近的 10 条记录。
  • last username: 查看指定用户的登录历史。
  • last reboot: 显示服务器的重启时间。

5. 实际示例:分析用户活动

假设你想知道谁在晚上使用了服务器,看看有没有什么可疑的事情发生。我们从查看当前用户开始:

who

现在检查一下他们在干什么:

w

如果你发现了什么可疑的东西(比如一个未知的进程),需要检查谁在晚上登录了。用以下命令:

last

查看引起注意的具体用户的记录:

last user1

如果看到了异常,比如从一个未知的IP登录,就需要采取措施:限制访问、启用两步验证或者锁定用户。


6. 特点以及常见的错误

使用监控命令时,需要注意以下几点:

  1. 日志文件可能会被清空。 如果有人恶意删除了 /var/log/wtmp 中的记录,命令 last 将不会显示任何内容。这就是为什么定期备份日志文件或将其发送到远程服务器很重要。

  2. 简化输出的理解。 有时候命令的输出可能会过于冗长(例如,登录用户很多时)。使用像 grep 这样的过滤器来查找所需信息:

    last | grep user1
    
  3. 依赖系统设置。 某些系统可能因为设置而不记录登录日志。请确保 /var/log/wtmp 定期更新。

这些知识在实际中如何应用?

  • 服务器管理。 比如你是企业的管理员,你需要监视系统的安全性,以防有人意外或故意“搞垮”系统。
  • 威胁检测。 监控工具可以帮助你发现未经授权的访问尝试。
  • 系统审计。 在检查服务器是否符合安全标准时,这些命令经常用于分析用户活动。
  • 诊断。 发现服务器变慢了?看看谁在干啥!

现在你已经准备好像个大佬一样监控你的系统啦!别忘了,保护系统从理解它的运行状况开始。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION