日誌是系統稽核、入侵偵測、故障診斷的核心依據。本文系統說明 Linux 日誌檔案分佈、核心日誌類型與等級、rsyslog 服務配置、自訂 SSH 日誌、logrotate 日誌輪轉與遠端日誌伺服器部署。
/var/log/

| 檔案 | 記錄內容 |
|---|---|
btmp | 失敗登入嘗試 |
lastlog | 各使用者最近一次成功/失敗登入 |
messages | 系統核心訊息 (syslog 連結或獨立) |
secure | 認證授權相關 (登入、sudo、SSH) |
utmp | 目前登入使用者狀態 |
wtmp | 歷史登入/登出記錄 |
cron | 排程任務執行記錄 |
maillog | 郵件系統記錄 |
boot.log | 開機過程訊息 |
last # 顯示 wtmp 內容:誰、何時、從何處登入
lastb # 顯示 btmp 內容:失敗登入嘗試 (暴力破解偵測)
lastlog # 顯示所有帳號最近登入時間
差異:last 可見來源 IP;lastlog 適合偵測異常帳號 (如長期未登入帳號突然活動)。
| 代碼 | 來源 |
|---|---|
| kern | 核心 |
| daemon | 背景服務 |
| authpriv | 認證授權 |
| cron | 排程任務 |
| 郵件系統 | |
| syslog | 日誌服務本身 |
| lpr | 列印系統 |
| news | 新聞系統 |
| local0-local7 | 保留給應用程式自訂 |
debug < info < notice < warn < err < crit < alert < emerg
配置檔:/etc/rsyslog.conf
# 核心規則範例
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
local7.* /var/log/boot.log
語法規則:
設施.優先級:記錄 ≥ 指定優先級的訊息設施.=優先級:僅記錄 指定優先級設施.!優先級:記錄 除 指定優先級外的所有none:排除該設施 (如 mail.none)- 前綴:非同步寫入 (先存記憶體達閾值再寫碟,減少 I/O,但異常關機可能丟失)# 1. rsyslog.conf 新增
local0.* /var/log/sshd.log
# 2. sshd_config 設定日誌設施
SyslogFacility LOCAL0
LogLevel VERBOSE
# 3. 重啟服務生效
systemctl restart rsyslog
systemctl restart sshd
配置檔:/etc/logrotate.conf 與 /etc/logrotate.d/ 目錄下個別服務配置。
# 核心參數範例
/var/log/sshd.log {
missingok # 檔案不存在不報錯
monthly # 每月輪轉
create 0600 root root
minsize 1M # 檔案 ≥ 1MB 才輪轉
rotate 1 # 保留 1 個舊檔
dateext # 舊檔命名加日期後綴
# compress # 可選:壓縮舊檔
}
原理:達條件時將舊日誌改名備份、建立新同名檔案繼續記錄,避免單一檔案過大導致查詢困難與磁碟耗盡。
# /etc/rsyslog.conf
$ModLoad imtcp # 載入 TCP 模組
$InputTCPServerRun 514 # 監聽 TCP 514
systemctl restart rsyslog
netstat -anltp | grep 514 # 驗證監聽
# /etc/rsyslog.conf
*.* @@192.168.75.129:514 # @@ 表示 TCP,單 @ 為 UDP
systemctl restart rsyslog
建議:生產環境務必使用 TCP (雙 @) 確保日誌傳輸可靠性;UDP 速度快但可能丟包。