簡(jiǎn)單介紹Linux系統(tǒng)日志的使用
經(jīng)過(guò)長(zhǎng)時(shí)間學(xué)習(xí),Linux系統(tǒng)正式版已經(jīng)發(fā)行,下面就這就來(lái)講術(shù)Linux系統(tǒng)日志。Linux發(fā)行版Fedora Core Linux,而Red Hat公司原來(lái)Red Hat Linux的開(kāi)發(fā)團(tuán)隊(duì)也將繼續(xù)參與這一發(fā)行版本的開(kāi)發(fā)工作。Red Hat公司把Fedora Project看作一個(gè)新技術(shù)的開(kāi)發(fā)園地,鼓勵(lì)有興趣的自由軟件開(kāi)發(fā)人員參與此項(xiàng)項(xiàng)目的開(kāi)發(fā),希望這一發(fā)行版本真正成為以自由軟件開(kāi)發(fā)為模式的操作系統(tǒng)。
在Linux系統(tǒng)日志中,有三類主要的日志子系統(tǒng):
◆連接時(shí)間日志: 由多個(gè)程序執(zhí)行,把記錄寫(xiě)入到/var/log/wtmp和/var/run/utmp,login等程序會(huì)更新wtmp和utmp文件,使系統(tǒng)管理員能夠跟蹤誰(shuí)在何時(shí)登錄到系統(tǒng)。
◆進(jìn)程統(tǒng)計(jì): 由系統(tǒng)內(nèi)核執(zhí)行,當(dāng)一個(gè)進(jìn)程終止時(shí),為每個(gè)進(jìn)程往進(jìn)程統(tǒng)計(jì)文件(pacct或acct)中寫(xiě)一個(gè)記錄。進(jìn)程統(tǒng)計(jì)的目的是為系統(tǒng)中的基本服務(wù)提供命令使用統(tǒng)計(jì)。
◆錯(cuò)誤日志: 由syslogd(8)守護(hù)程序執(zhí)行,各種系統(tǒng)守護(hù)進(jìn)程、用戶程序和內(nèi)核通過(guò)syslogd(3)守護(hù)程序向文件/var/log/messages報(bào)告值得注意的事件。另外有許多Unix程序創(chuàng)建日志。像HTTP和FTP這樣提供網(wǎng)絡(luò)服務(wù)的服務(wù)器也保持詳細(xì)的Linux系統(tǒng)日志。
Linux系統(tǒng)日志的使用 基本日志命令的使用
utmp、wtmp日志文件是多數(shù)Linux系統(tǒng)日志子系統(tǒng)的關(guān)鍵,它保存了用戶登錄進(jìn)入和退出的記錄。有關(guān)當(dāng)前登錄用戶的信息記錄在文件utmp中; 登錄進(jìn)入和退出記錄在文件wtmp中; 數(shù)據(jù)交換、關(guān)機(jī)以及重啟的機(jī)器信息也都記錄在wtmp文件中。所有的記錄都包含時(shí)間戳。時(shí)間戳對(duì)于Linux系統(tǒng)日志來(lái)說(shuō)非常重要,因?yàn)楹芏喙粜袨榉治龆际桥c時(shí)間有極大關(guān)系的。這些文件在具有大量用戶的系統(tǒng)中增長(zhǎng)十分迅速。例如wtmp文件可以無(wú)限增長(zhǎng),除非定期截取。許多系統(tǒng)以一天或者一周為單位把wtmp配置成循環(huán)使用。它通常由cron運(yùn)行的腳本來(lái)修改,這些腳本重新命名并循環(huán)使用wtmp文件。utmp文件被各種命令文件使用,包括who、w、users和finger。而wtmp文件被程序last和ac使用。 但它們都是二進(jìn)制文件,不能被諸如tail命令剪貼或合并(使用cat命令)。用戶需要使用who、w、users、last和ac來(lái)使用這兩個(gè)文件包含的信息。具體用法如下:
who命令: who命令查詢utmp文件并報(bào)告當(dāng)前登錄的每個(gè)用戶。Who的缺省輸出包括用戶名、終端類型、登錄日期及遠(yuǎn)程主機(jī)。使用該命令,系統(tǒng)管理員可以查看當(dāng)前系統(tǒng)存在哪些不法用戶,從而對(duì)其進(jìn)行審計(jì)和處理。例如: 運(yùn)行who命令顯示如下:
[root@working]# who
root pts/0 May 9 21:11 (10.0.2.128)
root pts/1 May 9 21:16 (10.0.2.129)
lhwen pts/7 May 9 22:03 (10.0.2.27)
如果指明了wtmp文件名,則who命令查詢所有以前的記錄。例如命令who /var/log/wtmp將報(bào)告自從wtmp文件創(chuàng)建或刪改以來(lái)的每一次登錄。
Linux系統(tǒng)日志使用注意事項(xiàng)
系統(tǒng)管理人員應(yīng)該提高警惕,隨時(shí)注意各種可疑狀況,并且按時(shí)和隨機(jī)地檢查各種Linux系統(tǒng)日志文件,包括一般信息日志、網(wǎng)絡(luò)連接日志、文件傳輸Linux系統(tǒng)日志以及用戶登錄日志等。在檢查這些日志時(shí),要注意是否有不合常理的時(shí)間記載。例如:
◆用戶在非常規(guī)的時(shí)間登錄;
◆不正常的日志記錄,比如日志的殘缺不全或者是諸如wtmp這樣的日志文件無(wú)故地缺少了中間的記錄文件;
◆用戶登錄系統(tǒng)的IP地址和以往的不一樣;
◆用戶登錄失敗的日志記錄,尤其是那些一再連續(xù)嘗試進(jìn)入失敗的日志記錄;
◆非法使用或不正當(dāng)使用超級(jí)用戶權(quán)限su的指令;
◆無(wú)故或者非法重新啟動(dòng)各項(xiàng)網(wǎng)絡(luò)服務(wù)的記錄。
另外, 尤其提醒管理人員注意的是: Linux系統(tǒng)日志并不是完全可靠的。高明的黑客在入侵系統(tǒng)后,經(jīng)常會(huì)打掃現(xiàn)場(chǎng)。所以需要綜合運(yùn)用以上的系統(tǒng)命令,全面、綜合地進(jìn)行審查和檢測(cè),切忌斷章取義,否則很難發(fā)現(xiàn)入侵或者做出錯(cuò)誤的判斷。
users命令: users用單獨(dú)的一行打印出當(dāng)前登錄的用戶,每個(gè)顯示的用戶名對(duì)應(yīng)一個(gè)登錄會(huì)話。如果一個(gè)用戶有不止一個(gè)登錄會(huì)話,那他的用戶名將顯示相同的次數(shù)。運(yùn)行該命令將如下所示:
[root@working]# users
root root //只登錄了一個(gè)Root權(quán)限的用戶
last命令: last命令往回搜索wtmp來(lái)顯示自從文件第一次創(chuàng)建以來(lái)登錄過(guò)的用戶。系統(tǒng)管理員可以周期性地對(duì)這些用戶的登錄情況進(jìn)行審計(jì)和考核,從而發(fā)現(xiàn)其中存在的問(wèn)題,確定不法用戶,并進(jìn)行處理。運(yùn)行該命令,如下所示:
[root@working]# last
devin pts/1 10.0.2.221 Mon Jul 21 15:08-down (8+17:46)
devin pts/1 10.0.2.221 Mon Jul 21 14:42 - 14:53 (00:11)
changyi pts/2 10.0.2.141 Mon Jul 21 14:12 - 14:12 (00:00)
devin pts/1 10.0.2.221 Mon Jul 21 12:51 - 14:40 (01:49)
reboot system boot 2.4.18 Fri Jul 18 15:42 (11+17:13)
reboot system boot 2.4.18 Fri Jul 18 15:34 (00:04)
reboot system boot 2.4.18 Fri Jul 18 15:02 (00:36)
讀者可以看到,使用上述命令顯示的信息太多,區(qū)分度很小。所以,可以通過(guò)指明用戶來(lái)顯示其登錄信息即可。例如: 使用last devin來(lái)顯示devin的歷史登錄信息,則如下所示:
[root@working]# last devin
devin pts/1 10.0.2.221 Mon Jul 21 15:08 - down (8+17:46)
devin pts/1 10.0.2.221 Mon Jul 21 14:42 - 14:53 (00:11)
ac命令:ac命令根據(jù)當(dāng)前的/var/log/wtmp文件中的登錄進(jìn)入和退出來(lái)報(bào)告用戶連接的時(shí)間(小時(shí)),如果不使用標(biāo)志,則報(bào)告總的時(shí)間。另外,可以加一些參數(shù),例如,last -t 7表示顯示上一周的報(bào)告。
lastlog命令 lastlog文件在每次有用戶登錄時(shí)被查詢??梢允褂胠astlog命令檢查某特定用戶上次登錄的時(shí)間,并格式化輸出上次登錄日志/var/log/lastlog的內(nèi)容。它根據(jù)UID排序顯示登錄名、端口號(hào)(tty)和上次登錄時(shí)間。如果一個(gè)用戶從未登錄過(guò),lastlog顯示“**Never logged**”。注意需要以root身份運(yùn)行該命令。運(yùn)行該命令如下所示:
[root@working]# lastlog
Username Port From Latest
root pts/1 10.0.2.129 二 5月 10 10:13:26 +0800 2005
opal pts/1 10.0.2.129 二 5月 10 10:13:26 +0800 2005
使用Syslog設(shè)備
Syslog已被許多日志函數(shù)采納,被用在許多保護(hù)措施中,任何程序都可以通過(guò)syslog 記錄事件。Syslog可以記錄系統(tǒng)事件,可以寫(xiě)到一個(gè)文件或設(shè)備中,或給用戶發(fā)送一個(gè)信息。它能記錄本地事件或通過(guò)網(wǎng)絡(luò)記錄另一個(gè)主機(jī)上的事件。
Syslog設(shè)備核心包括一個(gè)守護(hù)進(jìn)程(/etc/syslogd守護(hù)進(jìn)程)和一個(gè)配置文件(/etc/syslog.conf配置文件)。通常情況下,多數(shù)syslog信息被寫(xiě)到/var/adm或/var/log目錄下的信息文件中(messages.*)。一個(gè)典型的syslog記錄包括生成程序的名字和一個(gè)文本信息。它還包括一個(gè)設(shè)備和一個(gè)優(yōu)先級(jí)范圍。
系統(tǒng)管理員通過(guò)使用syslog.conf文件,可以對(duì)生成的Linux系統(tǒng)日志的位置及其相關(guān)信息進(jìn)行靈活配置,滿足應(yīng)用的需要。例如,如果想把所有郵件消息記錄到一個(gè)文件中,則做如下操作:
#Log all the mail messages in one place
mail.* /var/log/maillog
其他設(shè)備也有自己的Linux系統(tǒng)日志。UUCP和news設(shè)備能產(chǎn)生許多外部消息。它把這些消息存到自己的日志(/var/log/spooler)中并把級(jí)別限為"err"或更高。例如:
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
當(dāng)一個(gè)緊急消息到來(lái)時(shí),可能想讓所有的用戶都得到。也可能想讓自己的Linux系統(tǒng)日志接收并保存。
#Everybody gets emergency messages, plus log them on anther machine
*.emerg *
*.emerg @linuxaid.com.cn
用戶可以在一行中指明所有的設(shè)備。下面的例子把info或更高級(jí)別的消息送到/var/log/messages,除了mail以外。級(jí)別"none"禁止一個(gè)設(shè)備:
#Log anything(except mail)of level info or higher
#Don't log private authentication messages!
*.info:mail.none;autHPriv.none /var/log/messages
在有些情況下,可以把Linux系統(tǒng)日志送到打印機(jī),這樣網(wǎng)絡(luò)入侵者怎么修改Linux系統(tǒng)日志都不能清除入侵的痕跡。因此,syslog設(shè)備是一個(gè)攻擊者的顯著目標(biāo),破壞了它將會(huì)使用戶很難發(fā)現(xiàn)入侵以及入侵的痕跡,因此要特別注意保護(hù)其守護(hù)進(jìn)程以及配置文件。
【編輯推薦】