歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux日志管理的5個常用命令

Linux日志管理的5個常用命令

日期:2017/3/3 16:23:01   编辑:關於Linux

從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

Copyright © Linux教程網 All Rights Reserved