萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux last/lastb 命令完全指南:登入審計、失敗嘗試追蹤、日誌輪轉配置

last 讀取 /var/log/wtmp 顯示歷史登入記錄,lastb 讀取 /var/log/btmp 顯示失敗嘗試。兩者為二進制日誌,不可竄改,是安全審計、入侵偵測、合規報告的核心數據源。

last 輸出範例

last 輸出欄位解讀

$ last
user1  pts/0  192.168.1.100  Mon Jan 15 10:00 - 12:30 (02:30)
user2  tty1   -               Mon Jan 15 09:00 still logged in
reboot system boot 5.15.0-105  Mon Jan 15 08:00 - 12:35 (04:35)
欄位含義
用戶名登入帳號,reboot 表示系統啟動
終端機pts/N=遠端 SSH/Telnet,ttyN=本地控制台
來源 IP/主機名遠端連線來源,本地顯示 :0 或空
登入時間開始時間
登出時間結束時間,still logged in 表示在線,down 表示系統關機未正常登出
持續時間括號內時長

常用參數組合

參數功能範例
-n NUM顯示最近 N 行last -n 20
-R隱藏來源 IP/主機名last -R
-a來源 IP 移至最後一欄last -a
-F完整日期時間格式last -F
-f FILE指定日誌檔(如輪轉後的 wtmp.1)last -f /var/log/wtmp.1
-x顯示 runlevel 變更、shutdown 事件last -x
USER過濾特定用戶last root
TTY過濾特定終端last pts/0

lastb:失敗登入審計

# lastb
user3  ssh:notty  192.168.1.200  Mon Jan 15 22:10 - 22:10 (00:00)
user4  tty1       -               Mon Jan 15 22:11 - 22:11 (00:00)
  • 需 root 權限執行。
  • 持續時間 (00:00) 表示即時失敗(無會話建立)。
  • 大量同一 IP 失敗 = 暴力破解,配合 fail2ban/ufw 封鎖。

日誌輪轉配置 /etc/logrotate.conf

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

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    minsize 1M
    rotate 1
}
  • create MODE OWNER GROUP:輪轉後建立新檔權限。
  • minsize:最小尺寸觸發輪轉,避免過小檔案頻繁輪轉。
  • rotate 1:保留 1 個舊檔(wtmp.1、btmp.1)。
  • missingok:btmp 不存在不報錯。

進階應用

  • 登入報表腳本:last -F -a | awk '{print $1,$3,$5,$6,$7,$8,$9,$10}' | column -t。
  • 異常登入告警:cron 定時 last -s -24h | grep -v "still logged in" | mail -s "Daily Login Report" admin@。
  • 整合 SIEM:last -x | jq -R 'split(" ")|{user:.[0],tty:.[1],from:.[2],login:.[3..5],logout:.[7..9],duration:.[11]}' 轉 JSON 送 Logstash/Fluentd。

安全建議

  • 設置 /var/log/wtmp、/var/log/btmp immutable 屬性(chattr +i)防刪除,輪轉時暫時移除。
  • 集中式日誌收集(rsyslog → Elasticsearch),避免本地日誌被攻擊者清洗。
  • 定期審核 lastb 高頻 IP,更新防火牆/_fail2ban_ 規則。

善用 last/lastb 掌握系統存取全貌,是 Linux 安全基線審計的必修課。

copyright © 萬盛學電腦網 all rights reserved