【Linux日誌】系統日誌及分析
Linux系統擁有很是靈活和強大的日誌功能,能夠保存幾乎全部的操做記錄,並能夠從中檢索出咱們須要的信息。數據庫
大部分Linux發行版默認的日誌守護進程爲 syslog,位於 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默認配置文件爲 /etc/syslog.conf 或 rsyslog.conf,任何但願生成日誌的程序均可以向 syslog 發送信息。安全
Linux系統內核和許多程序會產生各類錯誤信息、警告信息和其餘的提示信息,這些信息對管理員瞭解系統的運行狀態是很是有用的,因此應該把它們寫到日誌文件中去。網絡
完成這個過程的程序就是syslog。syslog能夠根據日誌的類別和優先級將日誌保存到不一樣的文件中。數據結構
例如,爲了方便查閱,能夠把內核信息與其餘信息分開,單獨保存到一個獨立的日誌文件中。默認配置下,日誌文件一般都保存在「/var/log」目錄下。less
日誌類型ssh
下面是常見的日誌類型,但並非全部的Linux發行版都包含這些類型:ide
類型 說明
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子系統。post
日誌優先級操作系統
常見的日誌優先級請見下標:debug
優先級 說明
emerg 緊急狀況,系統不可用(例如系統崩潰),通常會通知全部用戶。
alert 須要當即修復,例如系統數據庫損壞。
crit 危險狀況,例如硬盤錯誤,可能會阻礙程序的部分功能。
err 通常錯誤消息。
warning 警告。
notice 不是錯誤,可是可能須要處理。
info 通用性消息,通常用來提供有用信息。
debug 調試程序產生的信息。
none 沒有優先級,不記錄任何日誌消息。
經常使用日誌文件
系統日誌是由一個名爲syslog的服務管理的,如如下日誌文件都是由syslog日誌服務驅動的:
/var/log/boot.log:錄了系統在引導過程當中發生的事件,就是Linux系統開機自檢過程顯示的信息
/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系統開機自檢過程顯示的信息,如圖1所示:
/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的信息:
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
該日誌文件永久記錄每一個用戶登陸、註銷及系統的啓動、停機的事件。所以隨着系統正常運行時間的增長,該文件的大小也會愈來愈大,增長的速度取決於系統用戶登陸的次數。該日誌文件能夠用來查看用戶的登陸記錄,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使用。