日志檔案對于診斷和解決系統中的問題很有幫助,因為在Linux系統中運作的程式通常會把系統消息和錯誤消息寫入相應的日志檔案,這樣系統一旦出現問題就會“有據可查”。此外,當主機遭受攻擊時,日志檔案還可以幫助尋找攻擊者留下的痕迹。
一、主要日志檔案
在Linux系統中,日志資料主要包括以下三種類型:
【核心及系統日志】
【使用者日志】
【程式日志】
Linux系統本身和大部分伺服器程式的日志檔案預設情況下都放置在目錄“/var/log”中。一部分程式公用一個日志檔案,一部分程式使用單個日志檔案,而有些大型伺服器程式由于日志檔案不止一個,是以會在“/var/log”目錄中建立相應的子目錄來存放日志檔案,這樣既保證了日志檔案目錄的結構清晰,又可以快速地定位日志檔案。有相當一部分日志檔案隻有root使用者才有權限讀取,這保證了相關日志資訊的安全性。
例1:清單檢視“/var/log”目錄中的各種日志檔案及子目錄。
對于Linux系統中的一些常見日志檔案,有必要熟悉其相應的用途,這樣才能在需要的時候更快地找到問題所在,及時解決各種故障。常見的日志檔案如下:
/var/log/messages:記錄Linux核心消息及各種應用程式的公共日志資訊,包括啟動、IO錯誤、網絡錯誤、程式錯誤等。對于未使用獨立日志檔案的應用程式或服務,一般都可以從該日志檔案中獲得相關的事件記錄資訊。
/var/log/cron:記錄crond計劃任務産生的事件資訊。
/var/log/dmesg:記錄Linux系統在引導過程中的各種事件資訊。
/var/log/maillog:記錄進入或發出系統的電子郵件活動。
/var/log/lastlog:最近幾次成功登入事件和最後一次不成功登入事件。
/var/log/rpmpkgs:記錄系統中安裝的各rpm包清單資訊。
/var/log/secure:記錄使用者登入認證過程中的事件資訊。
/var/log/wtmp:記錄每個使用者登入、登出及系統啟動和停機事件。
/var/run/utmp:記錄目前登入的每個使用者的詳細資訊。
二、日志檔案分析
分析日志檔案的目的在于通過浏覽日志查找關鍵資訊,對系統服務進行調試,判斷發生故障的原因等。
對于大多數文本格式的日志檔案,隻要使用tail、more、less、cat等文本處理工具就可以檢視日志内容。而對于一些二進制格式的日志檔案,則需要使用相應的查詢指令。
1、核心及系統日志
核心及系統日志功能主要由預設安裝的sysklogd-1.4.1-39.2軟體包提供,該軟體包安裝了klogd、syslogd兩個程式,并通過syslog服務進行控制,分别用于記錄系統核心的消息和各種應用程式的消息。syslog服務所使用的配置檔案為“/etc/syslog.conf”。
例2:檢視日志配置檔案“/etc/syslog.conf”中的内容。
從配置檔案“/etc/syslog.conf”中可以看到,受syslogd服務管理的日志檔案都是Linux系統中最主要的日志檔案,他們記錄了Linux系統中核心、使用者認證、郵件、計劃任務等最基本的系統消息。在Linux核心中,根據日志消息的重要程度不同,将其分為不同的優先級别(數字等級越小,優先級越高,消息越重要)。
0 EMERG(緊急):會導緻主機系統不可用的情況。
1 ALERT(警告):必須馬上采取措施解決的問題。
2 CRIT(嚴重):比較嚴重的情況。
3 ERR(錯誤):運作出現錯誤。
4 WARNING(提醒):可能影響系統功能,需要提醒使用者的重要事件。
5 NOTICE(注意):不會影響正常功能,但是需要注意的事件。
6 INFO(資訊):一般資訊。
對于syslog服務統一管理的大部分日志檔案,使用的日志記錄格式基本上都是相同的。以下以公共日志檔案“/var/log/messages”為例來簡單介紹核心及系統日志記錄的基本格式。
例3:檢視公共日志檔案“/var/log/messages”的最後3行記錄。
日志檔案中的每一行表示一條消息,每個消息均由四個字段的固定格式組成。
【時間标簽】:消息發出的日期和時間。
【主機名】:生成消息的計算機的名稱。
【子系統名稱】:發出消息的應用程式的名稱。
【消息】:消息的具體内容。
在有些情況下,可以設定syslog,使其在把日志資訊記錄到檔案的同時将日志資訊發送到列印機進行列印,這樣無論網絡入侵者怎麼修改日志都不能清除入侵的痕迹。syslog日志服務是一個常會被攻擊的顯著目标,破壞了它将會使管理者難以發現入侵以及入侵的痕迹,是以要特别注意監控其守護程序以及配置檔案。
2、使用者日志
在wtmp、utmp、lastlog等日志檔案中,儲存了系統使用者登入、退出等相關事件的事件消息。但是這些檔案都是二進制的資料檔案,不能直接使用tail、less等文本檢視工具進行浏覽,需要使用who、w、users、last和ac等使用者查詢指令來擷取日志資訊。
【who指令】
who指令用于查詢utmp檔案并報告目前登入的每個使用者資訊。使用該指令,系統管理者可以檢視目前系統存在哪些不合法使用者,進而對其進行審計和處理。who的預設輸出包括使用者名、終端類型、登入日期及遠端主機。
例4:使用who指令檢視目前登入的各使用者的所在終端、登入日期/時間/地點等資訊。
【w指令】
用于查詢utmp檔案并顯示目前系統中的每個使用者及其所運作的程序資訊。
例5:使用w指令檢視目前登入的各使用者資訊及所運作的程序。
【users指令】
users指令用單獨的一行列印出目前登入的使用者,每個顯示的使用者名對應一個登入會話。如果一個使用者有不止一個登入會話,那他的使用者名将顯示與其相同的次數。
例6:使用users指令檢視目前的使用者登入會話情況。
【last指令】
last指令用于查詢wtmp檔案,顯示出自從該檔案被建立以來登入過的所有使用者記錄,最近登入的使用者記錄将顯示在最前面。
例7:使用last指令檢視系統中最近的五次使用者登入記錄。
【ac指令】
ac指令将查詢wtmp檔案中的使用者登入和退出情況,報告使用者連接配接的總時間(小時)。使用使用者名作為參數,在結合“-d”選項可以按每天進行統計。未指定使用者名時,可以使用“-p”選項進行分别統計。
例8:統計gzj使用者在每天的連接配接時間。
例9:分别統計各使用者的總連接配接時間。
3、程式日志
在Linux系統中,還有相當一部分應用程式并沒有使用syslog服務來管理日志,而是由程式自己維護日志記錄。例如,http網站服務程式使用兩個日志檔案access_log和error_log,一般存放在“/var/log/httpd/”目錄中,分别記錄客戶通路事件、錯誤事件;而FTP服務程式可以将與檔案上傳、下載下傳事件相關的消息記錄在xferlog檔案中。由于不同應用程式的日志記錄格式 差别較大,并沒有嚴格使用統一的格式,這裡不再詳細進行介紹。
總的來說,作為一名合格的系統管理人員,應該提高警惕,随時注意各種可疑狀況,定期并随機的檢查各種系統日志檔案,包括一般資訊日志、網絡連接配接日志、檔案傳輸日志以及使用者登入日志記錄等。在檢查這些日志時,要注意是否有不合常理的時間或操作記錄。例如以下一些不合理的現象。
a、使用者在非正常的時間登入,或者使用者登入系統的IP位址和以往的不一樣。
b、使用者登入失敗的日志記錄,尤其是那些一再連續嘗試進入失敗的日志記錄。
c、非法使用或不正當使用超級使用者權限。
d、無故或者非法重新啟動各項網絡服務的記錄。
e、不正常的日志記錄,比如日志的殘缺不全,或者是諸如wtmp這樣的日志檔案無故地缺少了中間的記錄檔案。
另外,尤其提醒管理人員注意的是:日志并不是完全可靠的,高明的黑客在入侵系統後,經常會打掃現場。是以需要綜合運用以上的系統指令,全面、綜合地進行審查和檢測,切忌斷章取義,否則将可能做出錯誤的判斷。
三、日志管理政策
鑒于日志資料資料的重要性,對于系統運作過程中産生的各種日志檔案,必須采取有針對性的管理政策,以確定日志資料的準确性、安全性和真實性。一般來說,可以從以下幾個方面進行考慮。
1、日志備份和歸檔
2、延長日志儲存期限
3、控制日志通路權限
4、集中管理日志