Linux下重要日誌及查看方式
1、Linux下重要日誌文件介紹
/var/log/boot.log
該文件記錄了系統在引導過程中發生的事件,就是Linux系統開機自檢過程顯示的信息,如圖1所示:
圖1 /var/log/boot.log示意
/var/log/cron
該日誌文件記錄crontab守護進程crond所派生的子進程的動作,前面加上用戶、登錄時間和PID,以及派生出的進程的動作。CMD的一個動作是cron派生出一個調度進程的常見情況。REPLACE(替換)動作記錄用戶對它的cron文件的更新,該文件列出了要周期性執行的任務調度。RELOAD動作在REPLACE動作後不久發生,這意味著cron註意到一個用戶的cron文件被更新而cron需要把它重新裝入內存。該文件可能會查到一些反常的情況。該文件的示意請見圖2:
圖2 /var/log/cron文件示意
/var/log/maillog
該日誌文件記錄了每一個發送到系統或從系統發出的電子郵件的活動。它可以用來查看用戶使用哪個系統發送工具或把數據發送到哪個系統。圖3所示是該日誌文件的片段:
圖3 /var/log/maillog文件示意
該文件的格式是每一行包含日期、主機名、程序名,後面是包含PID或內核標識的方括號、一個冒號和一個空格,最後是消息。該文件有一個不足,就是被記錄的入侵企圖和成功的入侵事件,被淹沒在大量的正常進程的記錄中。但該文件可以由/etc/syslog文件進行定制。由/etc/syslog.conf配置文件決定系統如何寫入/var/messages。
/var/log/syslog
默認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的信息:
圖4 lastlog命令的運行結果
/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使用。
/var/log/xferlog
該日誌文件記錄FTP會話,可以顯示出用戶向FTP服務器或從服務器拷貝了什麽文件。該文件會顯示用戶拷貝到服務器上的用來入侵服務器的惡意程序,以及該用戶拷貝了哪些文件供他使用。
該文件的格式為:第一個域是日期和時間,第二個域是下載文件所花費的秒數、遠程系統名稱、文件大小、本地路徑名、傳輸類型(a:ASCII,b:二進制)、與壓縮相關的標誌或tar,或"_"(如果沒有壓縮的話)、傳輸方向(相對於服務器而言:i代表進,o代表出)、訪問模式(a:匿名,g:輸入口令,r:真實用戶)、用戶名、服務名(通常是ftp)、認證方法(l:RFC931,或0),認證用戶的ID或"*"。圖5是該文件的部分顯示:
圖5 /var/log/xferlog文件示意
2、Linux日誌輸出查看方式
Linux下面提供了許多文本工具來查看和處理日誌文件,下面給讀者提供一些比較常見和有用的工具。
dmesg
使用dmesg命令可以快速查看最後一次系統引導的引導日誌。如圖6所示:
圖6 dmesg顯示結果
如上所示,通常它的內容會很多,所以我們往往使用如下命令以分頁的方式顯示引導信息,如圖7所示:
# dmesg | more
圖7 dmesg|more命令顯示結果
tail
tail命令設計用於顯示文本文件的最後幾行。使用-f開關,當日誌增加新的內容時,tail將繼續顯示新的輸出。如圖8所示:
# tar -f /var/log/messages
圖8 使用tail查看日誌
上面的命令將顯示/var/log/messages文件的最後6行,然後繼續監控那個文件,並輸出新的行為。要停止tail -f命令,使用[Ctrl + C]來中止進程。
more和less
more的工作方式與DOS版本相同。您可以將它指向一個文件,或者通過它以管道輸出信息,以分頁的方式來查看信息。例如,以分頁方式顯示maillog日誌文件的內容:
# more maillog
圖9 使用more查看日誌
然後,可以使用q或者[Ctrl+C]來停止查看文件。
less 是另一個文本閱讀器,不過它還允許在文件中滾動瀏覽以及檢索信息。如下所示:
# less /var/log/cron-20090830
圖9 使用less命令查看日誌
上面的命令將顯示/var/log/yum.log文件的內容,可以使用q來停止查看文件。
其他方式
Linux中的日誌文件對於系統的故障診斷和維護來說至關重要。許多諸如WWW、FTP、SMTP等網絡應用服務的Linux日誌記錄都是記錄到專門指定的文本文件中(比如access.log,error.log等等),所以不需要專門的工具來查看這些文件。用戶可以選擇Vi、gEdit等簡單的文本編輯工具查看使用。
3、Linux日誌使用的重要原則
系統管理人員要應該提高警惕,隨時註意各種可疑狀況,並且按時和隨機地檢查各種系統日誌文件,包括一般信息日誌、網絡連接日誌、文件傳輸日誌以及用戶登錄日誌等。在檢查這些日誌時,要註意是否有不合常理的時間記載。例如:
- 用戶在非常規的時間登錄;
- 不正常的日誌記錄,比如日誌的殘缺不全或者是諸如wtmp這樣的日誌文件無故地缺少了中間的記錄文件;
- 用戶登錄系統的IP地址和以往的不一樣;
- 用戶登錄失敗的日誌記錄,尤其是那些一再連續嘗試進入失敗的日誌記錄;
- 非法使用或不正當使用超級用戶權限su的指令;
- 無故或者非法重新啟動各項網絡服務的記錄。
尤其提醒管理人員註意的是:日誌並不是完全可靠的。高明的黑客在入侵系統後,經常會打掃現場。所以需要綜合運用以上的系統命令,全面、綜合的進行審查和檢測,切忌斷章取義,否則很難發現入侵或者做出錯誤的判斷。
另外,在有些情況下,可以把日誌送到打印機,這樣網絡入侵者怎麽修改日誌都沒有用。並且,通常要廣泛記錄日誌。另外,syslog設備是一個攻擊者的顯著目標。一個為其他主機維護日誌的系統對於防範服務器攻擊特別脆弱,因此要特別註意。
Linux下重要日誌及查看方式