Linux如何分析和排查系統故障——分析日誌檔案
Linux分析和排查系統故障——分析日誌檔案
前言:在處理Linux系統出現的各種故障時,故障的症狀是最易發現的,而導致這一故障的原因才是最終排除故障的關鍵。熟悉Linux系統中常見的日誌檔案,瞭解一般故障的分析與解決辦法,將有助於管理員快速定位故障點,"對症下藥",及時解決各種系統問題。
日誌的功能
- 用於記錄系統、程式執行中發生的各種事件
- 通過閱讀日誌,有助於診斷和解決系統故障
一、主要日誌檔案
1.主要的日誌型別:
- 核心及系統日誌
由系統服務syslog統一進行管理,日誌格式基本相似
- 使用者日誌
記錄系統使用者登入及退出系統的相關資訊
- 程式日誌
由各種應用程式獨立管理的日誌檔案,記錄格式不統一
注:Linux系統本身和大部分伺服器程式的日誌檔案預設都放在目錄/var/log/下。一部分程式共用一個日誌檔案,一部分程式使用單個日誌檔案,而有些大型伺服器程式由於日誌檔案不知一個,所以會在/var/log/目錄中建立相應的子目錄來存放日誌檔案,這樣既保證了日誌檔案目錄的結構清晰,又可以快速定位日誌檔案。有相當一部分日誌檔案只有root使用者才有權讀取,這保證了相關日誌資訊的安全性。
2.常見的日誌檔案
對於Linux系統中的日誌檔案,有必要了解其各自的用途,這樣才能在需要的時候更快地找到問題所在,及時解決各種故障。
- /var/log/messages:記錄Linux核心訊息及各種應用程式的公共日誌資訊,包括啟動、I/O錯誤、網路錯誤、程式 故障等 。對於未使用獨立日誌檔案的應用程式或服務,一般都可以從該日誌檔案中獲取相關的記錄資訊。
- /var/log/cron:記錄crond計劃任務產生的事件資訊。
- /var/log/dmesg:記錄Linux系統在引導過程中的各種事件資訊。
- /var/log/maillog:記錄進入或發出系統的電子郵件活動。
- /var/log/lastlog:記錄每個使用者最近的登入事件。
- /var/log/secure:記錄使用者認證相關的安全事件資訊。
- /var/log/wtmp:記錄每個使用者登入、登出及系統啟動和停機事件。
- /var/log/btmp:記錄失敗的、錯誤的登入嘗試及驗證事件。
圖示:
二、日誌檔案分析
對於大多數文字格式的日誌檔案(如核心及系統日誌、大多數的程式日誌),只要使用tail、more、less、cat(這些命令我以前都分享過,感興趣的話,可以在我的主頁找一下)等文字處理工具就可以檢視日誌內容。而對於一些二進位制格式的日誌檔案(如使用者日誌),則需要使用特定的查詢命令。
1.核心及系統日誌
由系統服務 rsyslogd 統一管理
軟體包:rsyslog-5.8.10-8.el6.x86_64
主要程式:/sbin/rsyslogd
配置檔案:/etc/rsyslog.conf,通過檢視/etc/rsyslog.conf檔案中的內容,可以瞭解到系統預設的日誌設定。
示例:
從配置檔案/etc/rsyslog.conf中可以看到,受rsyslogd服務管理的日誌檔案都是Linux系統中最主要的日誌檔案,它們記錄了Linux系統中核心、使用者認證、郵件、計劃任務等最基本的系統訊息。在Linux核心中,根據日誌訊息的重要程度不同,將其分為不同的優先級別(數字等級越小優先順序越高,訊息越重要)。
日誌訊息的級別(這個很重要)
- 0 EMERG(緊急):會導致主機系統不可用的情況
- 1 ALERT(警告):必須馬上採取措施解決的問題
- 2 CRIT(嚴重):比較嚴重的情況
- 3 ERR(錯誤):執行出現錯誤
- 4 WARNING(提醒):可能會影響系統功能的事件
- 5 NOTICE(注意):不會影響系統但值得注意
- 6 INFO(資訊):一般資訊
- 7 DEBUG(除錯):程式或系統除錯資訊等
核心及大多數系統訊息都被記錄到公共日誌檔案/var/log/messages中,而其他一些程式訊息被記錄到各自獨立的日誌檔案中,此外日誌訊息還能夠記錄到特定的儲存裝置中,或者直接傳送給指定使用者。檢視/var/log/messages檔案中內容如下:
如上圖所示:對於rsyslog服務統一管理的大部分日誌檔案,使用的日誌記錄格式基本都是相同的。每一行表示一條日誌訊息,每一條訊息均包括四個欄位:
- 時間標籤:訊息發出的日期和時間。
- 主機名:生成訊息的計算機名稱。
- 子系統名稱:發出訊息的應用程式的名稱。
- 訊息:訊息的具體內容。
注:在有些情況下,可以設定rsyslog,使其把日誌資訊記錄到檔案的同時將日誌資訊傳送到印表機進行列印,這樣無論網路入侵者怎樣修改日誌都不能清除入侵的痕跡。Rsyslog日誌服務是一個常會被攻擊的顯著目標,破壞了它將會使管理員難以發現入侵及入侵痕跡,因此要特別注意監控其守護程序及配置檔案。
2.使用者日誌
在var/log下的wtmp、btmp、lastlog等日誌檔案中,儲存了系統使用者登入、退出等相關的事件訊息。但是這些檔案都是二進位制的資料檔案、不能直接使用tail、less等文字工具進行瀏覽,需要使用who、w、users、last和lastb等使用者查詢命令來獲取日誌資訊。
1) 查詢當前登入的使用者情況——users、who、w
users命令:只簡單地輸出當前登入的使用者名稱稱,每個顯示的使用者名稱對應一個登入會話。
who命令:用於報告當前登入到系統中的每個使用者的資訊。預設輸出資訊包括使用者名稱、終端型別、登入日期及遠端主機。
w命令:用於顯示當前系統中每個使用者及其所執行的程序資訊,輸出的資訊比users、who更豐富。
示例:
2) 查詢使用者登入的歷史記錄——last、lastb
last命令:用於查詢成功登入到系統的使用者記錄,最近的登入情況將顯示在最前面。
lastb命令:用於查詢登入失敗的使用者記錄,如登入名錯誤、密碼錯誤等情況。也可以直接從安全日誌檔案/var/log/secure中獲取相關資訊
示例:
3.程式日誌
在Linux系統中,還有相當一部分應用程式並沒有使用rsyslog服務來管理日誌,而是由程式自己維護日誌記錄。例如:
Web服務:/var/log/httpd/
access_log、error_log
代理服務:/var/log/squid/
access.log、cache.log、squid.out、store.log
FTP服務:/var/log/xferlog
總地來說,作為一名合格的系統管理人員,應該提高警惕,隨時注意各種可疑狀況,定期並隨機地檢查各種系統日誌檔案,包括一般資訊日誌、網路連線日誌、檔案傳輸日誌及使用者登入日誌記錄等。例如:
- 使用者在非正常規定的時間登入,或者使用者登入系統的IP地址和以往的不一樣。
- 使用者登入失敗的日誌記錄,尤其是那些一再連續嘗試進入失敗的日誌記錄。
- 非法使用或不正當使用超級使用者許可權。
- 無故或者非法重啟各項網路服務的記錄。
- 不正常的日誌記錄,如日誌殘缺不全,或者是諸如wtmp這樣的日誌檔案無故缺少了中間的記錄檔案。
另外,日誌並不是完全可靠的,高明的黑客在入侵系統後,經常會打掃現場。所以需要綜合運用以上的系統命令,全面、綜合地進行審查和檢測,切忌斷章取義,否則可能做出錯誤的判斷。
三、日誌管理策略
- 及時作好備份和歸檔
- 延長日誌儲存期限
- 控制日誌訪問許可權
日誌中可能會包含各類敏感資訊,如賬戶、口令等
- 集中管理日誌
將伺服器的日誌檔案發到統一的日誌檔案伺服器
便於日誌資訊的統一收集、整理和分析
杜絕日誌資訊的意外丟失、惡意篡改或刪除