監控活躍用戶和登錄:命令 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