Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux last 指令完整指南:追蹤使用者登入歷史與系統重啟記錄

編輯:關於 Linux

last 讀取 /var/log/wtmp 二進位日誌,顯示所有成功登入、登出與系統重啟事件。資料不可竄改 (非文字檔),適合安全稽核、異常登入調查、系統可用性分析。本文詳細說明輸出欄位解讀、常用參數組合與實戰範例。

資料來源與特性

  • 來源:/var/log/wtmp (二進位,utmp 結構)
  • 記錄事件:使用者登入 (TTY/PTS)、登出、系統重啟、運行等級變更
  • 保留期限:由 logrotate 輪轉,通常保留數週至數月
  • 對應檔案:/var/log/btmp (失敗登入,lastb 讀取)

輸出欄位詳細解讀

$ last
user1  pts/0  192.168.1.50  Mon Mar 15 10:30 - 12:45  (02:15)
user2  tty1   -              Mon Mar 15 09:15   still logged in
reboot system boot 5.15.0-91   Mon Mar 15 08:00 - 14:30  (06:30)
欄位說明範例值
1. 使用者/事件登入帳號、reboot、shutdownuser1, reboot
2. 終端機類型pts/N=遠端 (SSH/Telnet)、ttyN=本地主控台、:0=圖形登入pts/0, tty1
3. 來源 IP/主機遠端 IP、主機名、:0.0 (本地圖形)、- (本地文字)192.168.1.50, -
4. 登入時間日期 時間Mon Mar 15 10:30
5. 登出時間/狀態時間、still logged in、gone - no logout (異常中斷)12:45, still logged in
6. 時長(時:分),重啟事件顯示運行時長(02:15), (06:30)

常用參數完整表

參數功能範例
-n NUM, -NUM顯示最近 NUM 筆記錄last -10, last -n 5
-R隱藏來源 IP/主機欄位last -R
-a來源 IP/主機移至最後一欄last -a
-F顯示完整日期時間 (含秒、年份)last -F
-iIP 以數字格式顯示 (不解析主機名)last -i
-d對 IP 進行 DNS 反向解析 (預設不解析)last -d
-f FILE指定讀取檔案 (預設 /var/log/wtmp)last -f /var/log/wtmp.1
-s TIME, -t TIME顯示指定時間範圍內記錄 (YYYYMMDDhhmmss)last -s 20240315000000 -t 20240316000000
-p TIME顯示指定時間點仍在登入的使用者last -p 20240315120000
-w顯示完整網域名稱last -w
-x顯示系統關機/運行等級變更事件last -x

實戰範例

1. 查詢特定使用者登入歷史

last john
last -n 20 john

2. 查詢系統重啟歷史

last reboot
last -x reboot shutdown

3. 查詢特定終端機 (pts/0) 記錄

last pts/0

4. 近 24 小時所有登入活動

last -s $(date -d '24 hours ago' +%Y%m%d%H%M%S)

5. 異常登入偵測:非常用 IP、非工作時間、多地登入

# 最近 100 筆,顯示 IP,找出非內網 IP
last -n 100 -i | awk '$3 !~ /^192\.168\.|^10\.|^172\.(1[6-9]|2[0-9]|3[0-1])\./ && $3 != "-" {print}'

# 非工作時間 (22:00-06:00) 登入
last -F | awk '$5 ~ /(2[2-3]|0[0-5]):[0-5][0-9]/ {print}'

6. 統計使用者總登入時長 (簡易版)

last -F | grep -v 'still logged in' | grep -v 'reboot' | \
awk '{user[$1]+=($7*3600+$8*60)} END {for(u in user) print u, user[u]/3600 " hours"}'

安全稽核最佳實踐

  1. 定期備份 wtmp:cp /var/log/wtmp /backup/wtmp-$(date +%F),防止日誌輪轉遺失歷史。
  2. 整合至 SIEM:last -F -i 輸出解析送入 Splunk/ELK/Graylog。
  3. 監控 btmp (失敗登入):lastb -n 20 偵測暴力破解。
  4. 帳號停用檢查:last -n 1 $USER 確認最後活動時間,超過 90 天未登入考慮鎖定。

常見問題

現象原因與解決
last: /var/log/wtmp: No such file or directory日誌尚未建立 (全新系統) 或被誤刪,touch /var/log/wtmp 重建
顯示 "gone - no logout"使用者未正常登出 (關機、網路斷線、進程被殺),非正常登出
時間顯示錯誤系統時區設定錯誤,timedatectl set-timezone Asia/Taipei
無法看到最近登入wtmp 輪轉已歸檔,使用 last -f /var/log/wtmp.1 讀取舊檔

總結

last 是 Linux 內建、零依賴的登入稽核利器。掌握 -n/-F/-i/-s/-t 參數組合,配合 awk/grep 即可完成:異常 IP 偵測、非工作時間登入、重啟頻率分析、使用者活躍度統計等安全運營核心任務。

Copyright © Windows教程網 All Rights Reserved