Linux操作系統(tǒng)的日志說(shuō)明及分析
Linux操作系統(tǒng)的日志說(shuō)明及分析
Linux操作系統(tǒng)的系統(tǒng)日志是記錄系統(tǒng)操作信息的,是很重要的一個(gè)日志文件。下面由學(xué)習(xí)啦小編為大家整理了Linux操作系統(tǒng)的日志說(shuō)明及分析,希望對(duì)大家有幫助!
Linux操作系統(tǒng)的日志說(shuō)明及分析
Linux操作系統(tǒng)的日志說(shuō)明
【Linux日志】系統(tǒng)日志及分析Linux系統(tǒng)擁有非常靈活和強(qiáng)大的日志功能,可以保存幾乎所有的操作記錄,并可以從中檢索出我們需要的信息。
大部分Linux發(fā)行版默認(rèn)的日志守護(hù)進(jìn)程為 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默認(rèn)配置文件為 /etc/syslog.conf 或 rsyslog.conf,任何希望生成日志的程序都可以向 syslog 發(fā)送信息。
Linux系統(tǒng)內(nèi)核和許多程序會(huì)產(chǎn)生各種錯(cuò)誤信息、警告信息和其他的提示信息,這些信息對(duì)管理員了解系統(tǒng)的運(yùn)行狀態(tài)是非常有用的,所以應(yīng)該把它們寫(xiě)到日志文件中去。
完成這個(gè)過(guò)程的程序就是syslog。syslog可以根據(jù)日志的類別和優(yōu)先級(jí)將日志保存到不同的文件中。
例如,為了方便查閱,可以把內(nèi)核信息與其他信息分開(kāi),單獨(dú)保存到一個(gè)獨(dú)立的日志文件中。默認(rèn)配置下,日志文件通常都保存在“/var/log”目錄下。
日志類型
下面是常見(jiàn)的日志類型,但并不是所有的Linux發(fā)行版都包含這些類型:
類型 | 說(shuō)明 |
---|---|
auth | 用戶認(rèn)證時(shí)產(chǎn)生的日志,如login命令、su命令。 |
authpriv | 與 auth 類似,但是只能被特定用戶查看。 |
console | 針對(duì)系統(tǒng)控制臺(tái)的消息。 |
cron | 系統(tǒng)定期執(zhí)行計(jì)劃任務(wù)時(shí)產(chǎn)生的日志。 |
daemon | 某些守護(hù)進(jìn)程產(chǎn)生的日志。 |
ftp | FTP服務(wù)。 |
kern | 系統(tǒng)內(nèi)核消息。 |
local0.local7 | 由自定義程序使用。 |
lpr | 與打印機(jī)活動(dòng)有關(guān)。 |
郵件日志。 | |
mark | 產(chǎn)生時(shí)間戳。系統(tǒng)每隔一段時(shí)間向日志文件中輸出當(dāng)前時(shí)間,每行的格式類似于May 26 11:17:09 rs2 -- MARK --,可以由此推斷系統(tǒng)發(fā)生故障的大概時(shí)間。 |
news | 網(wǎng)絡(luò)新聞傳輸協(xié)議(nntp)產(chǎn)生的消息。 |
ntp | 網(wǎng)絡(luò)時(shí)間協(xié)議(ntp)產(chǎn)生的消息。 |
user | 用戶進(jìn)程。 |
uucp | UUCP子系統(tǒng)。 |
日志優(yōu)先級(jí)
常見(jiàn)的日志優(yōu)先級(jí)請(qǐng)見(jiàn)下標(biāo):
優(yōu)先級(jí) | 說(shuō)明 |
---|---|
emerg | 緊急情況,系統(tǒng)不可用(例如系統(tǒng)崩潰),一般會(huì)通知所有用戶。 |
alert | 需要立即修復(fù),例如系統(tǒng)數(shù)據(jù)庫(kù)損壞。 |
crit | 危險(xiǎn)情況,例如硬盤(pán)錯(cuò)誤,可能會(huì)阻礙程序的部分功能。 |
err | 一般錯(cuò)誤消息。 |
warning | 警告。 |
notice | 不是錯(cuò)誤,但是可能需要處理。 |
info | 通用性消息,一般用來(lái)提供有用信息。 |
debug | 調(diào)試程序產(chǎn)生的信息。 |
none | 沒(méi)有優(yōu)先級(jí),不記錄任何日志消息。 |
常用日志文件
系統(tǒng)日志是由一個(gè)名為syslog的服務(wù)管理的,如以下日志文件都是由syslog日志服務(wù)驅(qū)動(dòng)的:
/var/log/boot.log:錄了系統(tǒng)在引導(dǎo)過(guò)程中發(fā)生的事件,就是Linux系統(tǒng)開(kāi)機(jī)自檢過(guò)程顯示的信息
/var/log/lastlog :記錄最后一次用戶成功登陸的時(shí)間、登陸IP等信息
/var/log/messages :記錄Linux操作系統(tǒng)常見(jiàn)的系統(tǒng)和服務(wù)錯(cuò)誤信息
/var/log/secure :Linux系統(tǒng)安全日志,記錄用戶和工作組變壞情況、用戶登陸認(rèn)證情況
/var/log/btmp :記錄Linux登陸失敗的用戶、時(shí)間以及遠(yuǎn)程IP地址
/var/log/syslog:只記錄警告信息,常常是系統(tǒng)出問(wèn)題的信息,使用lastlog查看
/var/log/wtmp:該日志文件永久記錄每個(gè)用戶登錄、注銷及系統(tǒng)的啟動(dòng)、停機(jī)的事件,使用last命令查看
/var/run/utmp:該日志文件記錄有關(guān)當(dāng)前登錄的每個(gè)用戶的信息。如 who、w、users、finger等就需要訪問(wèn)這個(gè)文件
/var/log/syslog 或 /var/log/messages 存儲(chǔ)所有的全局系統(tǒng)活動(dòng)數(shù)據(jù),包括開(kāi)機(jī)信息?;?Debian 的系統(tǒng)如 Ubuntu 在 /var/log/syslog 中存儲(chǔ)它們,而基于 RedHat 的系統(tǒng)如 RHEL 或 CentOS 則在 /var/log/messages 中存儲(chǔ)它們。
/var/log/auth.log 或 /var/log/secure 存儲(chǔ)來(lái)自可插拔認(rèn)證模塊(PAM)的日志,包括成功的登錄,失敗的登錄嘗試和認(rèn)證方式。Ubuntu 和 Debian 在 /var/log/auth.log 中存儲(chǔ)認(rèn)證信息,而 RedHat 和 CentOS 則在 /var/log/secure 中存儲(chǔ)該信息。
Linux操作系統(tǒng)的日志文件分析
/var/log/boot.log
該文件記錄了系統(tǒng)在引導(dǎo)過(guò)程中發(fā)生的事件,就是Linux系統(tǒng)開(kāi)機(jī)自檢過(guò)程顯示的信息。
/var/log/syslog
默認(rèn)Centos,F(xiàn)edora不生成該日志文件,但可以配置/etc/syslog.conf讓系統(tǒng)生成該日志文件。
它和/etc/log/messages日志文件不同,它只記錄警告信息,常常是系統(tǒng)出問(wèn)題的信息,所以更應(yīng)該關(guān)注該文件。
要讓系統(tǒng)生成該日志文件,在/etc/syslog.conf文件中加上:*.warning /var/log/syslog 該日志文件能記錄當(dāng)用戶登錄時(shí)login記錄下的錯(cuò)誤口令、Sendmail的問(wèn)題、su命令執(zhí)行失敗等信息。
該日志文件記錄最近成功登錄的事件和最后一次不成功的登錄事件,由login生成。在每次用戶登錄時(shí)被查詢,該文件是二進(jìn)制文件,需要使用lastlog命令查看,根據(jù)UID排序顯示登錄名、端口號(hào)和上次登錄時(shí)間。如果某用戶從來(lái)沒(méi)有登錄過(guò),就顯示為"**Never logged in**"。該命令只能以root權(quán)限執(zhí)行。簡(jiǎn)單地輸入lastlog命令后就會(huì)看到類似圖4的信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | [root@TestStation etc]# lastlog Username Port From Latest root pts/0 110.87.109.232 Wed Nov 2 10:34:20 +0800 2016 bin **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
該日志文件永久記錄每個(gè)用戶登錄、注銷及系統(tǒng)的啟動(dòng)、停機(jī)的事件。因此隨著系統(tǒng)正常運(yùn)行時(shí)間的增加,該文件的大小也會(huì)越來(lái)越大,增加的速度取決于系統(tǒng)用戶登錄的次數(shù)。該日志文件可以用來(lái)查看用戶的登錄記錄,last命令就通過(guò)訪問(wèn)這個(gè)文件獲得這些信息,并以反序從后向前顯示用戶的登錄記錄,last也能根據(jù)用戶、終端tty或時(shí)間顯示相應(yīng)的記錄。
/var/run/utmp
該日志文件記錄有關(guān)當(dāng)前登錄的每個(gè)用戶的信息。因此這個(gè)文件會(huì)隨著用戶登錄和注銷系統(tǒng)而不斷變化,它只保留當(dāng)時(shí)聯(lián)機(jī)的用戶記錄,不會(huì)為用戶保留永久的記錄。系統(tǒng)中需要查詢當(dāng)前用戶狀態(tài)的程序,如 who、w、users、finger等就需要訪問(wèn)這個(gè)文件。該日志文件并不能包括所有精確的信息,因?yàn)槟承┩话l(fā)錯(cuò)誤會(huì)終止用戶登錄會(huì)話,而系統(tǒng)沒(méi)有及時(shí)更新 utmp記錄,因此該日志文件的記錄不是百分之百值得信賴的。
以上提及的3個(gè)文件(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系統(tǒng)的關(guān)鍵文件,都記錄了用戶登錄的情況。這些文件的所有記錄都包含了時(shí)間戳。這些文件是按二進(jìn)制保存的,故不能用less、cat之類的命令直接查看這些文件,而是需要使用相關(guān)命令通過(guò)這些文件而查看。其中,utmp和wtmp文件的數(shù)據(jù)結(jié)構(gòu)是一樣的,而lastlog文件則使用另外的數(shù)據(jù)結(jié)構(gòu),關(guān)于它們的具體的數(shù)據(jù)結(jié)構(gòu)可以使用man命令查詢。
每次有一個(gè)用戶登錄時(shí),login程序在文件lastlog中查看用戶的UID。如果存在,則把用戶上次登錄、注銷時(shí)間和主機(jī)名寫(xiě)到標(biāo)準(zhǔn)輸出中,然后login程序在lastlog中記錄新的登錄時(shí)間,打開(kāi)utmp文件并插入用戶的utmp記錄。該記錄一直用到用戶登錄退出時(shí)刪除。utmp文件被各種命令使用,包括who、w、users和finger。
下一步,login程序打開(kāi)文件wtmp附加用戶的utmp記錄。當(dāng)用戶登錄退出時(shí),具有更新時(shí)間戳的同一utmp記錄附加到文件中。wtmp文件被程序last使用。