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