從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命令顯示如下所示:
# who root 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/wtmp root :0 2010-01-24 21:47 root pts/1 2010-01-24 21:47 (:0.0) root :0 2010-02-20 19:36 root pts/1 2010-02-20 19:36 (:0.0) root :0 2010-02-21 15:21 root 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:01 root 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)
2.users命令
users用單獨的一行打印出當前登錄的用戶,每個顯示的用戶名對應一個登錄會話。如果一個用戶有不止一個登錄會話,那他的用戶名將顯示相同的次數。運行該命令將如下所示:
# users root root root
3.last命令
last命令往回搜索wtmp來顯示自從文件第一次創建以來登錄過的用戶。系統管理員可以周期性地對這些用戶的登錄情況進行審計和考核,從而發現起中存在的問題,確定不法用戶,並進行處理。運行該命令,如下所示:
# last root pts/3 :0.0 Mon Feb 22 15:57 still logged in root pts/2 :0.0 Mon Feb 22 15:57 still logged in root pts/1 :0.0 Mon Feb 22 13:02 still logged in root :0 Mon Feb 22 13:01 still logged in reboot system boot 2.6.18-8.el5 Mon Feb 22 12:56 (03:02) root pts/2 :0.0 Sun Feb 21 16:03 - down (02:37) root pts/1 :0.0 Sun Feb 21 15:56 - down (02:45) root :0 Sun Feb 21 15:21 - down (03:20) reboot system boot 2.6.18-8.el5 Sun Feb 21 15:19 (03:22) root pts/1 :0.0 Sat Feb 20 19:36 - down (01:50) root :0 Sat Feb 20 19:36 - down (01:51) reboot system boot 2.6.18-8.el5 Sat Feb 20 19:34 (01:53) root pts/1 :0.0 Sun Jan 24 21:47 - down (00:02) root :0 Sun Jan 24 21:47 - down (00:02) reboot system boot 2.6.18-8.el5 Sun Jan 24 21:45 (00:05) reboot system boot 2.6.18-8.el5 Sun Jan 24 21:41 (00:02) wtmp begins Sun Jan 24 21:41:03 2010
讀者可以看到,使用上述命令顯示的信息太多,區分度很小。所以,可以通過指明用戶來顯示其登錄信息即可。例如:使用last reoot來顯示reboot的歷史登錄信息,則如下所示:
# last reboot reboot system boot 2.6.18-8.el5 Mon Feb 22 12:56 (03:07) reboot system boot 2.6.18-8.el5 Sun Feb 21 15:19 (03:22) reboot system boot 2.6.18-8.el5 Sat Feb 20 19:34 (01:53) reboot system boot 2.6.18-8.el5 Sun Jan 24 21:45 (00:05) reboot system boot 2.6.18-8.el5 Sun Jan 24 21:41 (00:02) wtmp begins Sun Jan 24 21:41:03 2010
4.ac命令
ac命令根據當前的/var/log/wtmp文件中的登錄進入和退出來報告用戶連結的時間(小時),如果不使用標志,則報告總的時間。例如:ac(回車)顯示:total 18.47,如下所示:
# ac total 18.47
另外,可加一些參數,例如,last -u 102將報告UID為102的用戶;last -t 7表示限制上一周的報告。
5.lastlog命令
lastlog文件在每次有用戶登錄時被查詢。可以使用lastlog命令檢查某特定用戶上次登錄的時間,並格式化輸出上次登錄日志/var/log/lastlog的內容。它根據UID排序顯示登錄名、端口號(tty)和上次登錄時間。如果一個用戶從未登錄過,lastlog顯示**Never logged**。注意需要以root身份運行該命令。運行該命令如下所示:
# lastlog 用戶名 端口 來自 最後登陸時間 root **從未登錄過** bin **從未登錄過** daemon **從未登錄過** adm **從未登錄過** lp **從未登錄過** sync **從未登錄過** shutdown **從未登錄過** halt **從未登錄過** mail **從未登錄過** news **從未登錄過** uucp **從未登錄過** operator **從未登錄過** games **從未登錄過** gopher **從未登錄過** ftp **從未登錄過** nobody **從未登錄過** rpm **從未登錄過** dbus **從未登錄過** avahi **從未登錄過** mailnull **從未登錄過** smmsp **從未登錄過** nscd **從未登錄過** vcsa **從未登錄過** haldaemon **從未登錄過** rpc **從未登錄過** rpcuser **從未登錄過** sshd **從未登錄過** pcap **從未登錄過** ntp **從未登錄過** gdm **從未登錄過** apache **從未登錄過** distcache **從未登錄過** postgres **從未登錄過** mysql **從未登錄過** dovecot **從未登錄過** webalizer **從未登錄過** squid **從未登錄過** named **從未登錄過** xfs **從未登錄過** sabayon **從未登錄過** postfix **從未登錄過** amanda **從未登錄過** cyrus **從未登錄過** mailman **從未登錄過** radiusd **從未登錄過** exim **從未登錄過** privoxy **從未登錄過** quagga **從未登錄過** radvd **從未登錄過** ldap **從未登錄過** tomcat **從未登錄過** pegasus **從未登錄過** liyang **從未登錄過** google **從未登錄過**
本文出自 “卓越始於足下” 博客,請務必保留此出處http://patterson.blog.51cto.com/1060257/399554