活跃用户和登录监控:使用命令 who
、w
和 last
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
如果 who
和 w
讲的是当前的情况,那么 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. 特点以及常见的错误
使用监控命令时,需要注意以下几点:
日志文件可能会被清空。 如果有人恶意删除了
/var/log/wtmp
中的记录,命令last
将不会显示任何内容。这就是为什么定期备份日志文件或将其发送到远程服务器很重要。简化输出的理解。 有时候命令的输出可能会过于冗长(例如,登录用户很多时)。使用像
grep
这样的过滤器来查找所需信息:last | grep user1
依赖系统设置。 某些系统可能因为设置而不记录登录日志。请确保
/var/log/wtmp
定期更新。
这些知识在实际中如何应用?
- 服务器管理。 比如你是企业的管理员,你需要监视系统的安全性,以防有人意外或故意“搞垮”系统。
- 威胁检测。 监控工具可以帮助你发现未经授权的访问尝试。
- 系统审计。 在检查服务器是否符合安全标准时,这些命令经常用于分析用户活动。
- 诊断。 发现服务器变慢了?看看谁在干啥!
现在你已经准备好像个大佬一样监控你的系统啦!别忘了,保护系统从理解它的运行状况开始。
GO TO FULL VERSION