Linux常用命令(十二)日誌文件分析
日誌文件是用於記錄Linux系統中各種運行消息的文件,相當於Linux主機的“日記”。不同的日誌文件記載了不同類型的信息,如Linux內核消息、用戶登錄事件、程序錯誤等。
一、主要日誌文件
在Linux系統中,日誌數據主要包括以下三種類型。
■ 內核及系統日誌: 這種日誌數據由系統服務rslslog統一管理,根據其主配置文件/etc/rsyslog.conf中的設置決定將內核消息及各種系統程序消息記錄到什麼位置。系統中有相當一部分程序會把自己的日誌文件交由rsyslog管理,因而 這些程序使用的日誌記錄也具有相似的格式。
■ 用戶日誌:這種日誌數據用於記錄Linux系統用戶登錄及退出系統的相關信息,包括用戶名、登錄的終端、登錄時間、來源主機、正在使用的進程操作等。
■ 程序日誌:有些應用程序會選擇由自己獨立管理一份日誌文件(而不是交給rsyslog服務管理),用於記錄本程序運行過程中的各種事件信息。由於這些程序只負責管理自己的日誌文件,因此不同程序所使用的日誌記錄格式可能會存在 較大的差異。
Linux系統本身和大部分服務器程序的日誌文件默認都放在目錄/var/log/下。一部分程序共用一個日誌文件,一部分程序使用單個日誌文件,而有些大型服務器程序由於日誌文件不止一個,所以會在/var/log/目錄中建立相應的子目錄來存放日誌文件,這樣既保證了日誌文件目錄的結構清晰,又可以快速定位日誌文件。有相當一部分日誌文件只有root用戶纔有權限讀取,這保證了相關日誌信息的安全性。
對於Linux系統中的日誌文件,有必要了解其各自的用途,這樣才能在需要的時候更快地找到問題所在,及時解決各種故障。下面介紹常見的一些日誌文件。
■ /var/log/messages:記錄Linux內核消息及各種應用程序的公共日誌信息,包括啓動、1/0錯誤、網絡錯誤、程序故障等。對於未使用獨立日誌文件的應用程序或服務,一般都可以從該日誌文件中獲得相關的事件記錄信息。
■ /var/log/cron:記錄crond計劃任務產生的事件信息。
■ /var/log/dmesg:記錄Linux系統在引導過程中的各種事件信息。
■ /var/log/maillog:記錄進入或發出系統的電子郵件活動。
■ /var/log/lastlog:記錄每個用戶最近的登錄事件。
■ /var/log/secure:記錄用戶認證相關的安全事件信息。
■ /var/log/wtmp:記錄每個用戶登錄、註銷及系統啓動和停機事件。
■ /var/log/btmp:記錄失敗的、錯誤的登錄嘗試及驗證事件。
二、日誌文件分析
熟悉了系統中的主要日誌文件以後,下面將介紹針對日誌文件的分析方法。
1、內核及系統日誌
內核及系統日誌功能主要有默認安裝的rsyslog-5.8.10-8.el6.x86_64軟件包提供。rsyslog服務所使用的配置文件爲/etc/rsyslog.conf。通過查看/etc/rsyslog.conf文件中的內容,可以瞭解到系統默認的日誌設置。
[root@twgdh ~]# grep -v "^$" /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中,而其他一些程序消息被記錄到各自獨立的日誌文件中,此外日誌消息還能夠記錄到特定的存儲設備中,或者直接發送給指定用戶。
[root@twgdh ~]# more /var/log/messages
對於rsyslog服務統一管理的大部分日誌文件,使用的日誌記錄格式基本上都是相同的。以公共日誌/var/log/messages文件的記錄格式爲例,其中每一行表示一條日誌消息,每一條消息均包括以下四個字段。
■ 時間標籤:消息發出的日期和時間。
■ 主機名:生成消息的計算機的名稱。
■ 子系統名稱: 發出消息的應用程序的名稱。
■ 消息:消息的具體內容。
在有些情況下,可以設置rsyslog,使其在把日誌信息記錄到文件的同時將日誌信息發送到打印機進行打印,這樣可以防止網絡***者清除***痕跡。
2.用戶日誌
在wtmp、btmp、lastlog等日誌文件中,保存了系統用戶登錄、退出等相關的事件消息。但是這些文件都是二進制的數據文件,不能直接使用tail、less等文本查看工具進行瀏覽,需要使用who、w、users、last和lastb等用戶查詢命令來獲取日誌信息。
(1)、查詢當前登錄的用戶情況—users、who、w命令
users命令只是簡單地輸出當前登錄的用戶名稱,每個顯示的用戶名對應一個登錄會話。如果一個用戶有不止一個登錄會話,那他的用戶名將顯示與其相同的次數。
[root@twgdh ~]# users root root //root用戶打開兩個終端
who命令用於報告當前登錄到系統中的每個用戶的信息。使用該命令,系統管理員可以查看當前系統存在哪些不合法用戶,從而對其進行審計和處理。who的默認輸出包括用戶名、終端類型、登錄日期及遠程主機。
[root@twgdh ~]# who root tty2 2017-12-10 05:27 root pts/0 2017-12-10 05:30 (192.168.1.123)
w命令用於顯示當前系統中的每個用戶及其所運行的進程信息,比users、who命令的輸出內容要更加豐富一些。
[root@twgdh ~]# w 06:09:33 up 43 min, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty2 - 05:27 40:06 0.06s 0.06s -bash root pts/0 192.168.1.123 05:30 0.00s 0.13s 0.09s w
(2)、查詢用戶登錄的歷史記錄
last命令用於查詢成功登錄到系統的用戶記錄,最近的登錄情況將顯示在最前面。通過last命令可以及時掌握Linux主機的登錄情況,若發現未經授權的用戶登錄過,表示當前主機可能已被***。
[root@twgdh ~]# last root pts/0 192.168.1.123 Sun Dec 10 05:30 still logged in root tty2 Sun Dec 10 05:27 still logged in reboot system boot 2.6.32-431.el6.x Sun Dec 10 05:26 - 06:15 (00:49) root pts/1 :0.0 Fri Aug 25 18:28 - down (00:13) root pts/0 :0.0 Fri Aug 25 18:13 - down (00:29) root tty1 :0 Fri Aug 25 18:12 - down (00:29) reboot system boot 2.6.32-431.el6.x Fri Aug 25 18:11 - 18:42 (00:31) 。。。。。。//省略部分內容
lastb命令用於查詢登錄失敗的用戶記錄,如登錄的用戶名錯誤、密碼不正確等情況都將記錄在案。用於登錄失敗的情況屬於安全事件,因爲這表示可能有人在嘗試猜解你的密碼。除了使用lastb命令查看以外,也可以直接從安全日誌文件/var/log/secure中獲得相關信息。
[root@twgdh ~]# lastb root tty1 :0 Fri Aug 25 18:12 - 18:12 (00:00) (unknown tty1 :0 Thu Aug 24 04:29 - 04:29 (00:00) btmp begins Thu Aug 24 04:29:28 2017
或
[root@twgdh ~]# tail /var/log/secure Aug 25 18:12:56 twgdh polkitd(authority=local): Registered Authentication Agent for session /org/freedesktop/ConsoleKit/Session2 (system bus name :1.43 [/usr/libexec/polkit-gnome-authentication-agent-1], object path /org/gnome/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) ……//省略部分內容
3、程序日誌
在Linux系統中,還有相當一部分應用程序並沒有使用rsyslog服務來管理日誌,而是由程序自己維護日誌記錄。
例如,httpd網站服務程序使用兩個日誌文件access_log和error_log,分別記錄客戶訪問事件、錯誤事件。不同的應用程序的日誌記錄格式差別較大,並沒有嚴格使用統一格式。
一名合格的系統管理人員,應該提高警惕,隨時注意各種可疑狀況,定期並隨機地檢查各種系統日誌文件。出現以下一些現象就應多加註意。
■ 用戶在非常規的時間登陸,或者用戶登錄系統的ip地址和以往不一樣。
■ 用戶登錄失敗的日誌記錄,尤其是哪些一再連續嘗試進入失敗的日誌記錄。
■ 非法使用或不正當使用超級用戶權限。
■ 無故或者非法重新啓動各項網絡服務的記錄。
■ 不正常的日誌記錄,如日誌殘缺不全,或者是諸如wtmp這樣的日誌文件無故缺少了中間的記錄文件。
另外,尤其提醒管理人員需要注意的是,日誌並不是完全可靠的,高明的何可在***系統後,經常會打掃現場。