歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> linux log日志解析

linux log日志解析

日期:2017/3/1 14:43:47   编辑:關於Linux
linux log日志解析 其實,可以說成是監控系統的記錄,系統一舉一動基本會記錄下來。這樣由於信息非常全面很重要,通常只有 root 可以進行視察!通過登錄文件(日志文件)可以根據屏幕上面的錯誤訊息與再配合登錄文件的錯誤信息,幾乎就可以解決大部分的 Linux 問題! 所以日志文件異常重要,作為一個合格的linux 系統工程師,日志文件是必要熟練掌握的部分。 常見的幾個登錄文件有: /var/log/secure:記錄登入系統存取數據的文件,例如 pop3, ssh, telnet, ftp 等都會被記錄; /var/log/wtmp:記錄登入者的訊息數據,由於本文件已經被編碼過,所以必須使用 last指令來取出文件的內容; /var/log/messages:尤為重要,幾乎發生的錯誤訊息(或是重要信息)都會被記錄在此; /var/log/boot.log:記錄開機或者是一些服務啟動的時候,所顯示的啟動或關閉訊息; /var/log/maillog 或 /var/log/mail/*:紀錄郵件存取或往來( sendmail 與 pop3 )的使用者記錄; /var/log/cron:記錄 crontab 這個例行性服務的內容的。 /var/log/httpd, /var/log/news, /var/log/mysqld.log, /var/log/samba, /var/log/procmail.log:分別是幾個不同的網絡服務的記錄文件! 登錄文件的紀錄程序之一: syslogd 通常經過 syslog 而記錄下來的數據主要有: 事件發生的日期與時間; 發生此事件的主機名稱; 啟動此事件的服務名稱 (如 samba, xinetd 等) 或函式名稱 (如 libpam ..); 該訊息數據內容 syslogd的daemon配置文件:/etc/syslog.conf 內容語法是這樣的: 服務名稱[.=!]訊息等級 訊息記錄的文件名或裝置或主機 # 例如底下: mail.info /var/log/maillog_info 服務名稱:該服務產生的訊息會被紀錄的意思。syslog 認識的服務主要有底下這些: auth, authpriv:主要與認證有關的機制,例如telnet, login, ssh 等需要認證的服務都是使用此一機制; cron:例行性命令 cron/at 等產生訊息記錄的地方; daemon:與各個 daemon 有關的訊息; kern:核心 (kernel) 產生訊息的地方; lpr:打印相關的訊息! mail:只要與郵件收發有關的訊息紀錄都屬於這個; news:與新聞群組服務器有關的東西; syslog:syslogd 這支程序本身產生的信息啊! user, uucp, local0 ~ local7:與 Unix like 機器本身有關的一些訊息。 訊息等級 系統將訊息分為七個主要的等級,依序是由不重要排列到重要訊息等級: info:僅是一些基本的訊息說明而已; notice:比 info 還需要被注意到的一些信息內容; warning 或 warn:警示訊息,可能有問題,但是還不至於影響到某個 daemon 運作。 err 或 error :一些重大的錯誤訊息,這就要去找原因了。 crit:比 error 還要嚴重的錯誤信息,crit 是臨界點 (critical) 的縮寫,已經很嚴重了! alert:警告警告,已經很有問題的等級,比 crit 還要嚴重! emerg 或 panic:疼痛等級,意指系統已經幾乎要當機的狀態! 很嚴重的錯誤信息了。 除了這些有等級的訊息外,還有兩個特殊的等級,那就是 debug(錯誤偵測等級) 與 none (不需登錄等級) 兩個,當要作一些錯誤偵測,或者是忽略掉某些服務的信息時,就用這倆! 在訊息等級之前還有 [.=!] 的連結符號!他代表的意思是: . :代表比後面還要高的等級(含該等級)都被記錄下來的意思, 例如:mail.info 代表只要是 mail 的信息,而且該信息等級高於 info (含info )時,就會被記錄下來。 .=:代表所需要的等級就是後面接的等級而已! .!:代表不等於。 日志文件記錄的文件名或裝置或主機常見的放置處: 文件的絕對路徑:通常就是放在 /var/log 裡頭的文件! 打印機或其它:例如 /dev/lp0 這個打印機裝置 (即使被黑客可以刪除掉日志文件,但是最終刪除不了打印出來的日志信息) 使用者名稱:顯示給使用者! 遠程主機:例如 @test.adsldns.org,要對方主機也能支持才行! *:代表目前在線的所有人,類似 wall 這個指令的意義! 看看在尚未開啟網絡服務的情況下來自 Fedora Core Release 4 的相關資料 [root@linux ~]# vi /etc/syslog.conf #kern.* /dev/console # 只要是 kernel 產生的訊息,全部都送到 console 去!默認是關閉的。 *.info;mail.none;authpriv.none;cron.none /var/log/messages # 在已知各服務的訊息中,不要記錄到這個文件中,把已知的服務記錄到單獨的日志文件中去,方便日後查詢,否則messages這個文件就太混亂了。這個文件非常重要,所有未知的信息都會被記錄在這個文件中,所以有問題,找這個文件就八九不離十了。 authpriv.* /var/log/secure # 這個就是經過一些身份確認的行為之後,需要記錄身份的文件。 mail.* -/var/log/maillog # 只要跟 mail 有關的(不論是 pop3 還是 sendmail )都會被紀錄到這個文件! cron.* /var/log/cron #例行性命令相關的。 *.emerg * # 任何時候發生的警告訊息都會顯示給在線的所有人!那個 * 就是目前在線的所有人。 uucp,news.crit /var/log/spooler # 記錄新聞錯誤高於 crit 的等級的信息,寫入 spooler 當中! local7.* /var/log/boot.log # 將開機的當中的訊息寫入 /var/log/boot.log 中! 每個版本的 syslog.conf 差異是很大的,所以,每個登錄文件記錄的數據其實不很固定。 例:讓所有的信息都額外寫入到 /var/log/admin.log! [root@linux ~]# vi /etc/syslog.conf *.info /var/log/admin.log 》》如果服務器硬盤容量夠大,這麼做也不失為一個良策。 [root@linux ~]# /etc/init.d/syslog restart [root@linux ~]# ll /var/log/admin.log -rw------- 1 root root 122 Oct 23 22:21 /var/log/admin.log 》》注意權限 分析登錄文件 dmesg [root@linux ~]# dmesg | more 由於系統在開機的過程當中尚未將硬盤 mount 上來,所以無法直接將數據直接讀到 log file 當中去,但是為了除錯上面的方便, 所以在開機的過程當中的訊息還是要記錄下來,這個時候系統就將 ram 開了一個小區塊來儲存這個數據!這個開機記錄文件就是:/proc/kmsg! 幾乎所有的核心信息都可以使用 dmesg 來查閱得到的,例 想要知道開機有沒有捉到網卡,dmesg | grep 'eth' ! last [root@linux ~]# last -n number [root@linux ~]# last -f filename 參數: -n :last 會讀出這個月的數據,若數據量太大,可使用 -n 來嚴格要求顯示的筆數。例如 20 筆數據: last -n 20 或 last -20 均可。 -f :last預設讀出 /var/log/wtmp,但是我們可以透過 -f 讀取不同的登錄文件信息! 例,將上個月的資料讀出,僅讀出5筆資料 [root@linux ~]# last -n 5 -f /var/log/wtmp.1 dmtsai2 pts/2 Mon Oct 24 14:18 - 14:18 (00:00) dmtsai2 work:0 work Mon Oct 24 14:18 gone - no logout dmtsai2 work:0 work Mon Oct 24 14:18 - 14:18 (00:00) dmtsai2 pts/2 Mon Oct 24 14:18 - 14:18 (00:00) dmtsai2 work:0 work Mon Oct 24 14:18 - 14:18 (00:00) [root@linux ~]# lastlog lastlog 只是讀出 /var/log/lastlog 內的信息. 他會顯示目前系統上面的所有賬號當中,每個賬號最近一次登入的時間! Linux系統的LOG日志文件介紹! UNIX網管員主要是靠系統的LOG,來獲得入侵的痕跡.當然也有第三方工具記錄入侵系統的 痕跡,UNIX系統存放LOG文件,普通位置如下: /usr/adm - 早期版本的UNIX /var/adm - 新一點的版本使用這個位置 /var/log - 一些版本的Solaris,linux BSD,Free BSD使用這個位置 /etc - 多數UNIX版本把utmp放在這裡,有些也把wtmp放在這裡,syslog.conf在這裡 下面的一些文件根據你所在的目錄不同而不同: acct 或 pacct -- 記錄每個用戶使用的命令記錄 access_log -- 主要當服務器運行NCSA HTTPD時, 記錄什麼站點連接過你的服務器 aculog -- 保存著你撥出去的MODEMS記錄 lastlog -- 記錄了用戶最近的LOGIN記錄和每個用戶的最初目的地,有時是最後不 成功LOGIN的記錄,當一個用戶登陸到unix系統,注冊程序在lastlog文件中查找該用戶的uid,如果該程序找到了 該用戶的uid,unix就會顯示最後一次登陸的時間和tty(終端號) loginlog -- 記錄一些不正常的LOGIN記錄 messages -- 記錄輸出到系統控制台的記錄,另外的信息由syslog來生成 security -- 記錄一些使用UUCP系統企圖進入限制范圍的事例 sulog -- 記錄使用su命令的記錄.它通常在/var/adm/sulog.如果你在機器上使用了su命令,別忘了清除哦. utmp -- 記錄當前登錄到系統中的所有用戶,這個文件伴隨著用戶進入和離開系統而不斷變化.它還會為系統中的用戶保持很長的歷史記錄,utmp日志通常存放在/var/adm/utmp目錄下.可以用w和who命令查看,其他命令也可以訪問這個文件.如:finger root就可以.現在的utmp一般都有utmpx文件作為日志記錄的補充. utmpx -- UTMP的擴展 wtmp -- 記錄用戶登錄和退出事件.它和utmp日志文件相似,但它隨著登陸次數的增加,它會變的越來越大,有些系統的ftp訪問也在這個文件裡記錄,同時它也記錄正常的系統退出時間,可以用ac和last命令訪問. syslog -- 最重要的日志文件,使用syslogd守護程序來獲得日志信息,通常情況下通過查看/etc/syslog.conf.我們可以知道syslog記錄些什麼.缺省時,它把大多的消息傳給/var/adm/message. /dev/log -- 一個UNIX域套接字,接受在本地機器上運行的進程所產生的消息 /dev/klog -- 一個從UNIX內核接受消息的設備 514端口 -- 一個INTERNET套接字,接受其他機器通過UDP產生的syslog消息。 uucp -- 記錄的UUCP的信息,可以被本地UUCP活動更新, 也可有遠程站點發起 的動作修改,信息包括發出和接受的呼叫,發出的請求,發送者, 發 送時間和發送主機 lpd-errs -- 處理打印機故障信息的日志 ftp日志 -- 執行帶-l選項的ftpd能夠獲得記錄功能 httpd日志 -- HTTPD服務器在日志中記錄每一個WEB訪問記錄 history日志 -- 這個文件保存了用戶最近輸入命令的記錄 vold.log -- 記錄使用外接媒介時遇到的錯誤記錄 ====================== 其他類型的日志文件- ====================== 有些類型的LOG文件沒有特定的標題,但開始於一個特定的標志, 你可以在前面頭發現如 下的標志,這就一般表示此是個LOG日志文件,你就可以編輯它了: xfer -- 表明試圖一個禁止的文件傳輸. rexe -- 表明試圖執行一個不允許的命令 還有許多其他其他類型的LOG文件存在,主要是第三方軟件引起的, 或者甚至他媽的網管 自己有設置了一只"眼睛"在他的系統上,所以你要對你認為可能是LOG文件的文件多一份心眼。 許多管理員喜歡把日志文件放在同一個目錄中以便管理, 所以你要檢查你發現的LOG文件所在 的目錄中,是否有其他日志文件放在這裡,如果有,咯,你知道怎麼做。 另一個你要注意的是有關LOG用戶MAIL的文件,此文件名可以多種多樣,或則有時是 syslog文件的一部分。你要知道syslog記錄那些信息, 你可以查看syslog.conf中的信息此文 件的目錄是在/etc中 一般我們都是查看syslog.conf文件來查看日志的配置情況.例如:cat /etc/syslog.conf 其中sunos操作系統的在/var/log和/var/adm下,還有/usr/adm為/var/adm的的鏈接. redhat的在/var/log 和 /var/run下 下面的是sun os5.7中的日志樣本. 此外,各種shell還會記錄用戶使用的命令歷史,它使用用戶主目錄下的文件來記錄這些命令歷史,通常這個文件的名字為.sh_history(ksh),.history(csh),或.bash_history(bash)等。 # ls /var/adm acct    log      messages.1    passwd    sulog   vold.log aculog   messages   messages.2    sa      utmp   wtmp lastlog   messages.0  messages.3    spellhist   utmpx   wtmpx # ls /var/log authlog      syslog    syslog.1   syslog.3 sysidconfig.log  syslog.0   syslog.2   syslog.4 下面的是redhat9.0中的日志樣本. # ls /var/log boot.log   dmesg       messages.2    secure     uucp boot.log.1  htmlaccess.log  messages.3    secure.1    wtmp boot.log.2  httpd       messages.4    secure.2    wtmp.1 boot.log.3  lastlog      netconf.log   secure.3    xferlog boot.log.4  mailllog      netconf.log.1  secure.4    xferlog.1 cron     maillog      netconf.log.2  sendmail.st   xferlog.2 cron.1    maillog.1     netconf.log.3  spooler     xferlog.3 cron.2    maillog.2     netconf.log.4  spooler.1    xferlog.4 cron.3    maillog.3     news       spooler.2 cron.4    maillog.4     normal.log    spooler.3 daily.log   messages     realtime.log  spooler.4 daily.sh   messages.1     samba      transfer.log # ls /var/run atd.pid    gpm.pid    klogd.pid   random-seed    treemenu.cache crond.pid   identd.pid   netreport   runlevel.dir   utmp ftp.pids-all inetd.pid   news      syslogd.pid 一般我們要清除的日志有 lastlog utmp(utmpx) wtmp(wtmpx) messages syslog sulog 一般把以上說的日志給擦一下,就可以了. 下面我來說說上面這些我們要清除的日志的相關資料和清除方法.更詳細的資料和其他的日志請你查看相關資料. 上面已經對日志的功能做了簡單陳述,那麼這些日志文件到底記錄的是什麼呢? follow me 下面是一個例子: SunOS 5.7 login: gao Password: No directory! Logging in with home=/ Last login: Sun Feb 4 22:18:25 from 219.31.36.7 Sun Microsystems Inc. SunOS 5.7 Generic October 1998 $ 然後注冊程序用新的登陸時間和TTY信息更新lastlog文件,而且該程序帶更新utmp wtmp.文件. shell記錄: .sh_history(ksh),.history(csh),或.bash_history(bash)等,是shell執行時的歷史記錄.記錄用戶執行的命令.它一般存在於用戶的主目錄.別忘了去根目錄看看. 1.日志都是一些文本形式的文件.最笨的方法是用文本編輯器來編輯日志文件.刪除相關的記錄.來達到擦拭腳印和隱藏自己的效果. 比如用vi等,但這樣做是很笨的.太麻煩,工作量太大. 2.用rm -f 來刪掉日志.比如rm -f /usr/adm/lastlog 這樣做是很蠢的.更容易被管理員發現有人入侵.但是,相對來說自己還是保護好了. 可以用在一些不太重要的機器上. 3.用>定向符清除. 比如: cat > /usr/log/lastlog ->這裡輸入你要的寫的東西.最好偽裝得像一些,也可以不輸入哦. ^d ->這裡的^d是按鍵 ctrl + d. # .
Copyright © Linux教程網 All Rights Reserved