Linux系統日誌及分析講解,linux日誌講解
Linux系統擁有非常靈活和強大的日誌功能,可以儲存幾乎所有的操作記錄,並可以從中檢索出我們需要的資訊。
大部分Linux發行版預設的日誌守護進程為 syslog,位於 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,預設設定檔為 /etc/syslog.conf 或 rsyslog.conf,任何希望組建記錄檔的程式都可以向 syslog 發送資訊。
Linux系統核心和許多程式會產生各種錯誤資訊、警告資訊和其他的提示資訊,這些資訊對管理員瞭解系統的運行狀態是非常有用的,所以應該把它們寫到記錄檔中去。
完成這個過程的程式就是syslog。syslog可以根據日誌的類別和優先順序將日誌儲存到不同的檔案中。
例如,為了方便查閱,可以把核心資訊與其他資訊分開,單獨儲存到一個獨立的記錄檔中。預設配置下,記錄檔通常都儲存在“/var/log”目錄下。
日誌類型
下面是常見的日誌類型,但並不是所有的Linux發行版都包含這些類型:
| 類型 |
說明 |
| auth |
使用者認證時產生的日誌,如login命令、su命令。 |
| authpriv |
與 auth 類似,但是只能被特定使用者查看。 |
| console |
針對系統控制台的訊息。 |
| cron |
系統定期執行計畫任務時產生的日誌。 |
| daemon |
某些守護進程產生的日誌。 |
| ftp |
FTP服務。 |
| kern |
系統核心訊息。 |
| local0.local7 |
由自訂程式使用。 |
| lpr |
與印表機活動有關。 |
| mail |
郵件日誌。 |
| mark |
產生時間戳記。系統每隔一段時間向記錄檔中輸出目前時間,每行的格式類似於May 26 11:17:09 rs2 -- MARK --,可以由此推斷系統發生故障的大概時間。 |
| news |
網路新聞傳輸通訊協定(nntp)產生的訊息。 |
| ntp |
網路時間協議(ntp)產生的訊息。 |
| user |
使用者進程。 |
| uucp |
UUCP子系統。 |
日誌優先順序
常見的日誌優先順序請見下標:
| 優先順序 |
說明 |
| emerg |
緊急情況,系統不可用(例如系統崩潰),一般會通知所有使用者。 |
| alert |
需要立即修複,例如系統資料庫損壞。 |
| crit |
危險情況,例如硬碟錯誤,可能會阻礙程式的部分功能。 |
| err |
一般錯誤訊息。 |
| warning |
警告。 |
| notice |
不是錯誤,但是可能需要處理。 |
| info |
通用性訊息,一般用來提供有用資訊。 |
| debug |
偵錯工具產生的資訊。 |
| none |
沒有優先順序,不記錄任何日誌訊息。 |
常用記錄檔
系統日誌是由一個名為syslog的服務管理的,如以下記錄檔都是由syslogLog Service驅動的:
/var/log/boot.log:錄了系統在引導過程中發生的事件,就是Linux系統開機自我測試 (POST)過程顯示的資訊
/var/log/lastlog :記錄最後一次使用者成功登陸的時間、登陸IP等資訊
/var/log/messages :記錄Linux作業系統常見的系統和服務錯誤資訊
/var/log/secure :Linux系統安全日誌,記錄使用者和工作群組變壞情況、使用者登陸認證情況
/var/log/btmp :記錄Linux登陸失敗的使用者、時間以及遠程IP地址
/var/log/syslog:只記錄警告資訊,常常是系統出問題的資訊,使用lastlog查看
/var/log/wtmp:該記錄檔永久記錄每個使用者登入、登出及系統的啟動、停機的事件,使用last命令查看
/var/run/utmp:該記錄檔記錄有關當前登入的每個使用者的資訊。如 who、w、users、finger等就需要訪問這個檔案
/var/log/syslog 或 /var/log/messages 儲存所有的全域系統活動資料,包括開機資訊。基於 Debian 的系統如 Ubuntu 在 /var/log/syslog 中儲存它們,而基於 RedHat 的系統如 RHEL 或 CentOS 則在 /var/log/messages 中儲存它們。
/var/log/auth.log 或 /var/log/secure 儲存來自可插拔認證模組(PAM)的日誌,包括成功的登入,失敗的登入嘗試和認證方式。Ubuntu 和 Debian 在 /var/log/auth.log 中儲存認證資訊,而 RedHat 和 CentOS 則在 /var/log/secure 中儲存該資訊。
記錄檔詳細介紹:
/var/log/boot.log
該檔案記錄了系統在引導過程中發生的事件,就是Linux系統開機自我測試 (POST)過程顯示的資訊。/var/log/syslog
預設Centos,Fedora不產生該記錄檔,但可以配置/etc/syslog.conf讓系統產生該記錄檔。
它和/etc/log/messages記錄檔不同,它只記錄警告資訊,常常是系統出問題的資訊,所以更應該關注該檔案。
要讓系統產生該記錄檔,在/etc/syslog.conf檔案中加上:*.warning /var/log/syslog 該記錄檔能記錄當使用者登入時login記錄下的錯誤口令、Sendmail的問題、su命令執行失敗等資訊。
該記錄檔記錄最近成功登入的事件和最後一次不成功的登入事件,由login產生。在每次使用者登入時被查詢,該檔案是二進位檔案,需要使用lastlog命令查看,根據UID排序顯示登入名稱、連接埠號碼和上次登入時間。如果某使用者從來沒有登入過,就顯示為"**Never logged in**"。該命令只能以root許可權執行。簡單地輸入lastlog命令後就會看到類似圖4的資訊:
| [root@TestStation etc]# lastlogUsername Port From Latestroot pts/0 110.87.109.232 Wed Nov 2 10:34:20 +0800 2016bin **Never logged in**daemon **Never logged in**adm **Never logged in**lp **Never logged in**sync **Never logged in**shutdown **Never logged in**halt **Never logged in**mail **Never logged in**uucp **Never logged in**operator **Never logged in**games **Never logged in**gopher **Never logged in**ftp **Never logged in**nobody **Never logged in**vcsa **Never logged in**saslauth **Never logged in**postfix **Never logged in**sshd **Never logged in**ntp **Never logged in**suda pts/2 222.79.79.120 Tue Oct 25 16:00:01 +0800 2016 |
/var/log/wtmp
該記錄檔永久記錄每個使用者登入、登出及系統的啟動、停機的事件。因此隨著系統正常已耗用時間的增加,該檔案的大小也會越來越大,增加的速度取決於系統使用者登入的次數。該記錄檔可以用來查看使用者的登入記錄,last命令就通過訪問這個檔案獲得這些資訊,並以反序從後向前顯示使用者的登入記錄,last也能根據使用者、終端tty或時間顯示相應的記錄。
/var/run/utmp
該記錄檔記錄有關當前登入的每個使用者的資訊。因此這個檔案會隨著使用者登入和登出系統而不斷變化,它只保留當時聯機的使用者記錄,不會為使用者保留永久的記錄。系統中需要查詢目前使用者狀態的程式,如 who、w、users、finger等就需要訪問這個檔案。該記錄檔並不能包括所有精確的資訊,因為某些突發錯誤會終止使用者登入工作階段,而系統沒有及時更新 utmp記錄,因此該記錄檔的記錄不是百分之百值得信賴的。
以上提及的3個檔案(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日誌子系統的關鍵檔案,都記錄了使用者登入的情況。這些檔案的所有記錄都包含了時間戳記。這些檔案是按二進位儲存的,故不能用less、cat之類的命令直接查看這些檔案,而是需要使用相關命令通過這些檔案而查看。其中,utmp和wtmp檔案的資料結構是一樣的,而lastlog檔案則使用另外的資料結構,關於它們的具體的資料結構可以使用man命令查詢。
每次有一個使用者登入時,login程式在檔案lastlog中查看使用者的UID。如果存在,則把使用者上次登入、登出時間和主機名稱寫到標準輸出中,然後login程式在lastlog中記錄新的登入時間,開啟utmp檔案並插入使用者的utmp記錄。該記錄一直用到使用者登入退出時刪除。utmp檔案被各種命令使用,包括who、w、users和finger。
下一步,login程式開啟檔案wtmp附加使用者的utmp記錄。當使用者登入退出時,具有更新時間戳記的同一utmp記錄附加到檔案中。wtmp檔案被程式last使用。