從Ext到Ext2,從Ext2再到Ext3,乃至以後的Ext4或者更高版本,Linux系統曆來以強大、豐富和完整的日誌系統著稱。通過管理日誌,可以清晰地瞭解系統的健全狀態,也能從各種蛛絲馬跡中發現入侵和快速地阻止入侵。本文是有關Linux系統全方位管理的第四部分,講述Linux日誌管理方面的事項。前面三個部分分別為:檔案系統管理,Linux進程管理,以及使用者管理。
日誌主要的功能有:審計和監測。它還可以即時的監測系統狀態,監測和追蹤侵入者等等。成功地管理任何系統的關鍵之一,是要知道系統中正在發生什麼事。Linux中提供了異常日誌,並且日誌的細節是可配置的。Linux日誌都以明文形式儲存,所以使用者不需要特殊的工具就可以搜尋和閱讀它們。還可以編寫指令碼,來掃描這些日誌,並基於它們的內容去自動執行某些功能。Linux日誌儲存在/var/log目錄中。這裡有幾個由系統維護的記錄檔,但其他服務和程式也可能會把它們的日誌放在這裡。大多數日誌只有root賬戶才可以讀,不過修改檔案的存取權限就可以讓其他人可讀。在Linux系統中,有四類主要的日誌:
◆連線時間日誌:由多個程式執行,把記錄寫入到/var/log/wtmp和/var/run/utmp,login等程式更新wtmp和utmp檔案,使系統管理員能夠跟蹤誰在何時登入到系統。
◆進程統計:由系統核心執行。當一個進程終止時,為每個進程往進程統計檔案(pacct或acct)中寫一個記錄。進程統計的目的是為系統中的基本服務提供命令使用統計。
◆錯誤記錄檔:由syslogd(8)精靈執行。各種系統守護進程、使用者程式和核心通過syslogd(3)精靈向檔案/var/log/messages報告值得注意的事件。另外有許多UNIX程式建立日誌。像HTTP和FTP這樣提供網路服務的伺服器也保持詳細的日誌。
◆公用程式日誌:許多程式通過維護日誌來反映系統的安全狀態。su命令允許使用者獲得另一個使用者的許可權,所以它的安全很重要,它的檔案為sulog。同樣的還有sudolog。另外,諸如Apache等Http的伺服器都有兩個日誌:access_log(用戶端訪問日誌)以及error_log(服務出錯日誌)。 FTP服務的日誌記錄在xferlog檔案當中,Linux下郵件傳送服務(sendmail)的日誌一般存放在maillog檔案當中。
utmp、wtmp記錄檔是多數Linux日誌子系統的關鍵,它儲存了使用者登入進入和退出的記錄。有關當前登入使用者的資訊記錄在檔案utmp中;登入進入和退出記錄在檔案wtmp中;資料交換、關機以及重啟的機器資訊也都記錄在wtmp檔案中。所有的記錄都包含時間戳記。時間戳記對於日誌來說非常重要,因為很多攻擊行為分析都與時間有極大的關係。這些檔案在具有大量使用者的系統中增長十分迅速。例如wtmp檔案可以無限增長,除非定期截取。許多系統以一天或者一周為單位把wtmp配置成迴圈使用。它通常由cron啟動並執行指令碼來修改。這些指令碼重新命名並迴圈使用wtmp檔案。通常,wtmp在第一天結束後命名為wtmp.1;第二天后wtmp.1變為wtmp.2等等,使用者可以根據實際情況來對這些檔案進行命名和配置使用。
utmp檔案被各種命令檔案使用,包括who、w、users和finger。而wtmp檔案被程式last和ac使用。
wtmp和utmp檔案都是二進位檔案,他們不能被諸如tail命令剪貼或合并(使用cat命令)。使用者需要使用who、w、users、last和ac來使用這兩個檔案包含的資訊。
1.who命令
who命令查詢utmp檔案並報告當前登入的每個使用者。Who的預設輸出包括使用者名稱、終端類型、登入日期及遠程主機。使用該命令,系統管理員可以查看當前系統存在哪些不法使用者,從而對其進行審計和處理。例如:運行who命令顯示如下所示:
# whoroot pts/1 2010-02-22 13:02 (:0.0)root pts/2 2010-02-22 15:57 (:0.0)root pts/3 2010-02-22 15:57 (:0.0)
如果指明了wtmp檔案名稱,則who命令查詢所有以前的記錄。命令who /var/log/wtmp將報告自從wtmp檔案建立或刪改以來的每一次登入。例如:運行該命令如下所示:
# who /var/log/wtmproot :0 2010-01-24 21:47root pts/1 2010-01-24 21:47 (:0.0)root :0 2010-02-20 19:36root pts/1 2010-02-20 19:36 (:0.0)root :0 2010-02-21 15:21root pts/1 2010-02-21 15:56 (:0.0)root pts/2 2010-02-21 16:03 (:0.0)root :0 2010-02-22 13:01root pts/1 2010-02-22 13:02 (:0.0)root pts/2 2010-02-22 15:57 (:0.0)root pts/3 2010-02-22 15:57 (:0.0)