FreeBSD的系統log日誌(轉)

ba發表於2007-08-12
FreeBSD的系統log日誌(轉)[@more@]由於FreeBSD是一個多使用者系統,那麼就需要管理員進行日常維護,特別是用做網路 伺服器的系統,一旦因為缺乏維護而造成停機故障,就會造成很大損失。即使對於單用 戶的FreeBSD系統,同樣也要執行這些不可缺乏的維護任務,只是由於系統歸個人使用, 那麼對維護的要求就不必那麼高,維護任務就輕鬆一些。

系統日誌

   系統的日誌記錄提供了對系統活動的詳細審計,這些日誌用於評估、審查系統的運 行環境和各種操作。對於一般情況,日誌記錄包括記錄使用者登入時間、登入地點、進行 什麼操作等內容,如果使用得當,日誌記錄能向系統管理員提供有關危害安全的侵害或
入侵試圖等非常有用的資訊。

   BSD提供了詳細的各種日誌記錄,以及有關日誌的大量工具和實用程式。這些審計記 錄通常由程式自動產生,是預設設定的一部分,能夠幫助Unix管理員來尋找系統中存在 的問題,對系統維護十分有用。還有另一些日誌記錄,需要管理員進行設定才能生效。 大部分日誌記錄檔案被儲存在/var/log目錄中,在這個目錄中除了儲存系統生成日誌之 外,還包括一些應用軟體的日誌檔案。當然/var目錄下的其他子目錄中也會記錄下一些 其他種類的日誌記錄檔案,這依賴於具體的應用程式的設定。

$ ls /var/log
adduser maillog.5.gz sendmail.st.1
dmesg.today maillog.6.gz sendmail.st.10
dmesg.yesterday maillog.7.gz sendmail.st.2
httpd-access.log messages sendmail.st.3
httpd-error.log messages.0.gz sendmail.st.4
kerberos.log messages.1.gz sendmail.st.5
lastlog messages.2.gz sendmail.st.6
lpd-errs messages.3.gz sendmail.st.7
maillog messages.4.gz sendmail.st.8
maillog.0.gz messages.5.gz sendmail.st.9
maillog.1.gz news setuid.today
maillog.2.gz ppp.log setuid.yesterday
maillog.3.gz sendmail.st userlog
maillog.4.gz sendmail.st.0 wtmp

系統登入日誌

   系統會儲存每個使用者的登入記錄,這些資訊包括這個使用者的名字、登入起始結束時 間以及從何處登入入系統的等等。它們被儲存到/var/log/lastlog、/var/log/wtmp和/ var/run/utmp檔案中,這三個檔案以二進位制格式儲存了這些使用者的登入資料。

   其中/var/run/utmp檔案中儲存的是當前系統使用者的登入記錄,因此這個檔案會隨著 使用者進入和離開系統而不斷變化,而它也不會為使用者保留很長的記錄,只保留當時聯機 的使用者記錄。系統中需要查詢當前使用者狀態的程式,如 who、w等就需要訪問這個檔案。 utmp可能不包括所有精確的資訊,某些突發錯誤會終止使用者登入會話,當沒有及時更新 utmp記錄,因此utmp的記錄不是百分之百的可以信賴的。
   而/var/log/wtmp儲存了所有的登入、退出資訊,以及系統的啟動、停機記錄,因此 隨著系統正常執行時間的增加,它的大小也會越來越大,增加的速度依賴於系統使用者登 錄次數。因此可以利用這個日誌用來檢視使用者的登入記錄,last命令就透過訪問這個文 件來獲得這些資訊,並以反序從後向前顯示使用者的登入記錄,last也能根據使用者、終端 tty或時間顯示相應的記錄。ac命令同樣也使用wtmp中的資料產生報告,但它的顯示方 式不同。它可以根據使用者(ac -p),或按日期(ap -d)顯示資訊,這樣管理員就能獲 得一些非常有用的反常資訊,如一個平時不太活躍的使用者突然登入並連線很長時間,就 有理由懷疑這個帳戶被竊取了。

   注意:X Window由於會同時開啟多個終端視窗,因此會使得使用者登入連線時間迅速 增加。
   lastlog檔案儲存的是每個使用者的最後一次登入資訊,包括登入時間和地點,這個文 件一般只有login程式使用,透過使用者的UID,來在lastlog檔案中查詢相應記錄,然後報 告其最後一次登入時間和終端tty。然後, login程式就使用新的記錄更新這個檔案。

   這三個檔案是使用二進位制格式儲存的,因此不能直接檢視其中的內容,而需要使用 相關命令。當然也可以透過程式來訪問這三個檔案,這就需要了解它們使用的資料結構 。其中utmp和wtmp使用同樣的資料結構,而lastlog使用另外一個資料結構,可使用man 來進行查詢具體結構。如果系統的使用者數量很多,那麼wtmp檔案的大小會迅速增加,在 系統/var檔案系統空間緊張的情況下,就導致這個檔案系統被佔滿。系統不會主動控制 這個檔案的大小,因此這需要管理員的干預,需要手工及時清除,或編寫shell指令碼定期 儲存和清除。
   系統還可以提供記賬統計的功能,要開啟系統的計賬功能,需要使用accton命令, 注意,accton必須跟隨記賬日誌檔案的名字作引數,而不帶引數的accton將關閉記賬進 程。
   當開啟了記賬功能後,可以使用lastcomm來檢查在系統中執行的所有命令的資訊, 包括執行的命令、執行命令的使用者、使用者使用的終端tty,命令完成的時間,執行時間等 。從lastcomm的輸出也能幫助管理員檢查可能的入侵行為。
   此外可以使用ac命令來查詢使用者的連線時間的報告,sa命令來查詢使用者消耗的處理 器時間的報告。

Syslog日誌記錄

   最初,syslog只是為了sendmail而設計的訊息日誌工具,由於它提供了一箇中心控 制點,使得sys log非常好用和易配置,因此當今很多程式都使用syslog來傳送它們的記 錄資訊。syslog是一種強大的日誌記錄方式,不但可以將日誌儲存在本地檔案中,還可
以根據設定將syslog記錄傳送到網路上的另一臺主機中。
   支援syslog方式的系統啟動了syslogd守護程式,這個程式從本地的Unix套接字和監 聽在514埠(UDP)上的Internet套接字,來獲得syslog的記錄。本機中程式使用sysl og系統呼叫傳送來sy slog記錄,然後由syslogd將他們儲存到正確的檔案或傳送到網路 上另一臺執行syslogd主機中去。
   syslogd的設定檔案為/etc/syslog.conf,定義訊息對應的相應目標,一條訊息可以 達到多個目標,也可能被忽略。

# $Id: syslog.conf,v 1.9 1998/10/14 21:59:55 nate Exp $
#
# Spaces are NOT valid field separators in this file.
# Consult the syslog.conf(5) manpage.
*.err;kern.debug;auth.notice;mail.crit /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
cron.* /var/cron/log
*.err root
*.notice;news.err root
*.alert root
*.emerg *
!ppp
*.* /var/log/ppp.log
   syslog.conf的配置可以分為兩個部分,第一部分用於區分訊息的型別,另一個用於 設定訊息傳送的目的地。通常,訊息的型別包括訊息的產生者,例如kern表示核心產生 的訊息,auth表示認證系統產生的訊息,等等,還包括訊息的級別,例如emerg表示非常 重要的緊急資訊,alert表示系統告警狀態,crit表示關鍵狀態,err 表示一般的錯誤信 息,warning表示警告資訊,notice表示提示資訊,但還不是錯誤,info表示一般資訊, debug表示除錯資訊等,因此一個訊息的型別可能為:kern.debug、mail.info等,但頁 可以使用萬用字元*進行匹配。
   從上面的syslog.conf的設定可以看出,系統正常執行中的很多重要的資訊,如錯誤 資訊*.err、核心除錯資訊kern.debuf、認證報告auth.notice等被直接輸出的console中 ,另外還有一些比較重要的資訊被輸出到/var/log/messages檔案中,傳送郵件的記錄將 被儲存在/var/log/mail log檔案中,列印記錄為/var/log/lpd-errs等,使得管理員可 以根據這些檔案來查詢相關記錄,進行統計或尋找系統問題。其中使用syslog記錄的me ssages檔案中包括root登入的資訊、使用者多次登入失敗的嘗試等對系統安全相當重要的 資訊,因此也是系統遭受攻擊之後,攻擊者會根據syslog.conf中設定試圖清除相關檔案 中自己的登入記錄。因此對於安全性要求更高的系統,可以嘗試將syslog傳送到另一臺 計算機上,或者輸出到一些裝置檔案中,如在印表機上立即列印輸出。

   系統會使用newsyslog定期檢查syslog輸出的messages檔案和maillog檔案,將舊數 據壓縮儲存為備份檔案,如messages.1.gz等。

其他日誌

   除了系統登入記錄和syslog記錄之外,其他還有一些應用程式使用自己的記錄方式 。

   系統每天都會自動檢查系統的安全設定,包括對SetUID、SetGID的執行檔案的檢查 ,其結果將輸出到/ var/log/security.today檔案中,管理員可以與/var/log/securit y.yeste rday檔案對比,尋找系統安全設定的變化。

   如果系統使用sendmail,那麼sendmail.st檔案中以二進位制形式儲存了sendmail的統 計資訊。
   在系統啟動的時候,就將核心的檢測資訊輸出到螢幕上,這些資訊可以幫助使用者分 析系統中的硬體狀態。一般使用d mesg命令來檢視最後一次啟動時輸出的這個檢測資訊 。這個資訊也被系統儲存在/var/log/dmesg.tod ay檔案中,系統中同時也存在另一個文
件dmesg.yesterday,是上次的啟動檢測資訊,對比這兩個檔案,就可以瞭解到系統硬體 和核心配置的變化。

   lpd-errs記錄了系統中lpd產生的錯誤資訊。
   此外,各種shell還會記錄使用者使用的命令歷史,它使用使用者主目錄下的檔案來記錄 這些命令歷史,通常這個檔案的名字為.history(csh),或.bash-history等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-950462/,如需轉載,請註明出處,否則將追究法律責任。

相關文章