【引用】Linux常用的日志文件解说及常用系统命令
一、前言
想成功地管理任何系統的關鍵之一,是要知道系統中正在發生什么事。Linux?中提供了異常日志,并且日志的細節是可配置的,都以明文形式存儲,所以用戶不需要特殊的工具就可以搜索和閱讀它們。還可以編寫腳本,來掃描這些日志,并基于它們的內容去自動執行某些功能,日志存儲在?/var/log?目錄中。這里有幾個由系統維護的日志文件,但其他服務和程序也可能會把它們的日志放在這里。大多數日志只有root賬戶才可以讀,不過修改文件的訪問權限就可以讓其他人可讀。
?
?
二、Linux常見的日志文件
1、/var/log/boot.log
該日志文件記錄了系統在引導過程中發生的事件,就是Linux系統開機自檢過程顯示的信息
?
2、/var/log/cron
該日志文件記錄crontab守護進程crond所派生的子進程的動作,前面加上用戶、登錄時間和PID,以及派生出的進程的動作。CMD的一個動作是cron派生出一個調度進程的常見情況;REPLACE(替換)動作記錄用戶對它的cron文件的更新,該文件列出了要周期性執行的任務調度;RELOAD動作在REPLACE動作后不久發生,這意味著cron注意到一個用戶的cron文件被更新而cron需要把它重新裝入內存,該文件可能會查到一些反常的情況
?
3、/var/log/maillog
該日志文件記錄了每一個發送到系統或從系統發出的電子郵件的活動,它可以用來查看用戶使用哪個系統發送工具或把數據發送到哪個系統
4、/var/log/messages
該日志文件是許多進程日志文件的匯總,從該文件可以看出任何入侵企圖或成功的入侵。文件的格式是每一行包含日期、主機名、程序名,后面是包含PID或內核標識的方括號、一個冒號和一個空格,最后是消息,但該文件有一個不足,就是被記錄的入侵企圖和成功的入侵事件,被淹沒在大量的正常進程的記錄中,另該文件可以由/etc/syslog文件進行定制,由/etc/syslog.conf配置文件決定系統如何寫入/var/messages
?
5、/var/log/syslog
默認在RedHat?Linux中不生成該日志文件,但可以配置/etc/syslog.conf讓系統生成該日志文件。它和/etc/log/messages日志文件不同,它只記錄警告信息,常常是系統出問題的信息,所以更應該關注該文件。要讓系統生成該日志文件,在/etc/syslog.conf文件中加上:*.warning?/var/log/syslog?該日志文件能記錄當用戶登錄時login記錄下的錯誤口令、Sendmail的問題、su命令執行失敗等信息(假若沒有發現syslog.conf這個文件,你可以上網找一個模版來修改)
?
?
6、/var/log/secure
該日志文件記錄與安全相關的信息
?
7、/var/log/lastlog
該日志文件記錄最近成功登錄的事件和最后一次不成功的登錄事件,由login生成。在每次用戶登錄時被查詢,該文件是二進制文件,需要使用lastlog命令查看,根據UID排序顯示登錄名、端口號和上次登錄時間。如果某用戶從來沒有登錄過,就顯示為"**Never?logged?in**",該命令只能以root權限執行。簡單地輸入lastlog命令后就會看相關的信息。系統賬戶諸如bin、daemon、adm、uucp、mail等決不應該登錄,如果發現這些賬戶已經登錄,就說明系統可能已經被入侵了,若發現記錄的時間不是用戶上次登錄的時間,則說明該用戶的賬戶已經泄密了,注意!!
?
?
?
8、/var/log/wtmp?
該日志文件永久記錄每個用戶登錄、注銷及系統的啟動、停機的事件。因此隨著系統正常運行時間的增加,該文件的大小也會越來越大,增加的速度取決于系統用戶登錄的次數,該日志文件可以用來查看用戶的登錄記錄,last命令就通過訪問這個文件獲得這些信息,并以反序從后向前顯示用戶的登錄記錄,last也能根據用戶、終端?tty或時間顯示相應的記錄
命令last有兩個可選參數:?
#last?-R?用戶名? 顯示用戶上次登錄的情況
#last?-t?天數[YYYYMMDDHHMMSS] 顯示指定天數之前的用戶登錄情況
?
9、/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使用.
?
?
10、/var/log/xferlog?
該日志文件記錄FTP會話,可以顯示出用戶向FTP服務器或從服務器拷貝了什么文件。該文件會顯示用戶拷貝到服務器上的用來入侵服務器的惡意程序,以及該用戶拷貝了哪些文件供他使用
該文件的格式為:第一個域是日期和時間,第二個域是下載文件所花費的秒數、遠程系統名稱、文件大小、本地路徑名、傳輸類型(a:ASCII,b:二進制)、與壓縮相關的標志或tar,或"_"(如果沒有壓縮的話)、傳輸方向(相對于服務器而言:i代表進,o代表出)、訪問模式(a:匿名,g:輸入口令,r:真實用戶)、用戶名、服務名(通常是ftp)、認證方法(l:RFC931,或0),認證用戶的ID或"*"
?
?
11、/var/log/kernlog
在RedHat?Linux中默認沒有記錄該日志文件,要啟用該日志文件,必須在/etc/syslog.conf文件中添加一行:kern.*?/var/log/kernlog?。這樣就可以向/var/log/kernlog文件中記錄所有內核消息了。該文件記錄了系統啟動時加載設備或使用設備的情況,一般是正常的操作,但如果記錄了沒有授權的用戶進行的這些操作,就要注意,因為有可能這就是惡意用戶的行為
?
?
12、/var/log/Xfree86.x.log
該日志文件記錄了X-Window啟動的情況,另外,除了/var/log/外,惡意用戶也可能在別的地方留下痕跡,應該注意以下幾個地方:root和其他賬戶的shell歷史文件;用戶的各種郵箱,如.sent、mbox,以及存放在/var/spool/mail/?和?/var/spool/mqueue中的郵箱;臨時文件/tmp、/usr/tmp、/var/tmp;隱藏的目錄;其他惡意用戶創建的文件,通常是以"."開頭的具有隱藏屬性的文件等
?
三、常用系統管理命令
#who ——>查詢utmp文件并報告當前登錄的每個用戶 root pts/0 2012-10-26 18:04 (192.168.196.128)#w ——>查詢utmp文件并顯示當前系統中每個用戶和它所運行的進程信息19:11:56 up 1 day, 9:17, 1 user, load average: 0.01, 0.02, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.196.128 18:04 1.00s 1.81s 0.21s w#users ——>打印出當前登錄的用戶 root#last ——>往回搜索wtmp來顯示自從文件第一次創建以來登錄過的用戶 root pts/0 192.168.196.128 Fri Oct 26 18:04 still logged in root pts/0 210.38.206.90 Fri Oct 26 12:55 - 13:06 (00:11) root pts/0 192.168.196.128 Thu Oct 25 16:12 - 21:46 (05:34) root pts/0 192.168.196.128 Thu Oct 25 15:30 - 15:41 (00:11) root pts/1 192.168.196.128 Thu Oct 25 11:31 - 13:47 (02:15) root tty1 Thu Oct 25 11:30 - 11:31 (00:01) root pts/0 192.168.196.128 Thu Oct 25 11:27 - 13:29 (02:01) root tty1 Thu Oct 25 09:57 - 09:59 (00:01) reboot system boot 2.6.32-279.el6.i Thu Oct 25 09:55 - 19:15 (1+09:19)#ac ——> 根據/var/log/wtmp文件報告用戶連接的時間(小時),如果不使用標志,則報告總的時間total 119.56ac -d 顯示每天的總的連接時間ac -p 顯示每個用戶的總的連接時間#lastlog ——>檢查用戶上次登錄的時間,默認為對所有用戶查詢,如果沒有登錄就表示“**Never logged in**” Username Port From Latest root pts/0 192.168.196.128 Fri Oct 26 18:04:03 +0800 2012 bin **Never logged in** daemon **Never logged in** adm **Never logged in** lp **Never logged in** sync **Never logged in**?
?系統進程統計
#accton file ——>file必須得存在 #touch /var/log/pacct#accton:accton /var/log/pacct——> 一旦accton被激活,就可以使用lastcomm命令監測系統中任何時候執行的命令,若要關閉統計,可以使用不帶任何參數的accton命令#lastcomm ——>報告以前執行的文件,不帶參數時,顯示當前統計文件生命周期內記錄的所有命令的有關信息? 進程統計的一個問題是pacct文件可能增長得十分迅速,這時需要交互式地或經過cron機制運行sa命令來保證日志數據在系統控制內。sa命令可以報告、清理并維護進程統計文件,它還能把/var/log/pacct中的信息壓縮到摘要文件/var/log/savacct和/var/log/usracct中,這些摘要包含按命令名和用戶名分類的系統統計數據。在默認情況下sa先讀它們,然后讀pacct文件,使報告能包含所有的可用信息。
sa的輸出有下面一些標記項:
avio:每次執行的平均I/O操作次數
cp:用戶和系統時間總和,以分鐘計
cpu:和cp一樣
k:內核使用的平均CPU時間,以1k為單位
k*sec:CPU存儲完整性,以1k-core秒為單位
re:實時時間,以分鐘計
s:系統時間,以分鐘計
tio:I/O操作的總數
u:用戶時間,以分鐘計
?
syslog設備
?
syslog已被許多日志函數采納,它用在許多保護措施中。任何程序都可以通過syslog?記錄事件。syslog可以記錄系統事件,可以寫到一個文件或設備中,或給用戶發送一個信息。它能記錄本地事件或通過網絡記錄另一個主機上的事件。?
syslog設備依據兩個重要的文件:/etc/syslogd(守護進程)和/etc/syslog.conf配置文件。習慣上,多數syslog信息被寫到/var/adm或/var/log目錄下的信息文件中(messages.*)。一個典型的syslog記錄包括生成程序的名字和一個文本信息。它還包括一個設備和一個優先級范圍(但不在日志中出現),syslog.conf文件指明syslogd程序記錄日志的行為,該程序在啟動時查詢配置文件。該文件由不同程序或消息分類的單個條目組成,每個占一行。對每類消息提供一個選擇域和一個動作域。這些域由tab符隔開:選擇域指明消息的類型和優先級;動作域指明syslogd接收到一個與選擇標準相匹配的消息時所執行的動作。每個選項是由設備和優先級組成的。當指明一個優先級時,syslogd將記錄一個擁有相同或更高優先級的消息。所以如果指明"crit",那所有標為crit、alert和emerg的消息將被記錄。每行的行動域指明當選擇域選擇了一個給定消息后應該把它發送到哪兒。
LOG_AUTH:認證系統login、su、getty等。 LOG_AUTHPRIV:同LOG_AUTH,但只登錄到所選擇的單個用戶可讀的文件中。 LOG_CRON:cron守護進程。 LOG_DAEMON:其他系統守護進程,如routed。 LOG_FTP:文件傳輸協議ftpd、tftpd。 LOG_KERN:內核產生的消息。 LOG_LPR:系統打印機緩沖池lpr、lpd。 LOG_MAIL:電子郵件系統。 LOG_NEWS:網絡新聞系統。 LOG_SYSLOG:由syslogd(8)產生的內部消息。 LOG_USER:隨機用戶進程產生的消息。 LOG_UUCP:UUCP子系統。 LOG_LOCAL0~LOG_LOCAL7:為本地使用保留。 syslog為每個事件賦予幾個不同的優先級: LOG_EMERG:緊急情況。 LOG_ALERT:應該被立即改正的問題,如系統數據庫被破壞。 LOG_CRIT:重要情況,如硬盤錯誤。 LOG_ERR:錯誤。 LOG_WARNING:警告信息。 LOG_NOTICE:不是錯誤情況,但是可能需要處理。 LOG_INFO:情報信息。 LOG_DEBUG:包含情報的信息,通常只在調試一個程序時使用。
?
?
?
?
轉載于:https://www.cnblogs.com/sbaicl/archive/2012/10/26/2741685.html
總結
以上是生活随笔為你收集整理的【引用】Linux常用的日志文件解说及常用系统命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springMVC 之 annotati
- 下一篇: Daily Scrum M2 10-29