最近更新日期:2005/10/24
『登錄檔』似乎是常常聽到的名詞,網路上的老手們也常常告知新手們要多察看登錄檔, 那麼這些登錄檔是幹嘛用的?嗯!似乎是當你啟發一個事件的時候,或者是有人登入你的 Linux 主機的時候,主機會有一些認證的程序或者是一些重要的訊息,由於這些訊息有被追蹤的重要性, 所以自然就有需要將他保留下來,以備未來的不時之需囉,這些訊息會被紀錄在某些檔案上, 這些檔案就被稱為登錄檔了!那麼您曉得該登入者的資訊被紀錄在哪裡嗎?這些資訊的量有多大呢? 您可以每天自行觀看嗎?哇!如果能用 Shell Scripts 來分析的話,不是就更快速了嗎?呵呵! 這裡鳥哥寫了一個小小的分析檔案 ( logfile.sh ),讓大家可以更快樂的管理你的 Linux 主機呦! ^_^ |
1. 什麼是登錄檔?
2. 登錄檔的紀錄: syslogd
2.1 登錄檔內容的一般格式
2.2 登錄檔的設定檔: /etc/syslog.conf
2.3 登錄檔的安全性設置
2.4 登錄檔主機的簡單設定
3. 登錄檔的輪替 (logrotate):
3.1 logrotate 的設定檔
3.2 實際測試 logrotate 的動作
4. 分析登錄檔
4.1 一些常見指令: last, lastlog, dmesg
4.2 鳥哥自己寫的登錄檔分析工具:
5. 本章習題練習
6. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=23895
2. 登錄檔的紀錄: syslogd
2.1 登錄檔內容的一般格式
2.2 登錄檔的設定檔: /etc/syslog.conf
2.3 登錄檔的安全性設置
2.4 登錄檔主機的簡單設定
3. 登錄檔的輪替 (logrotate):
3.1 logrotate 的設定檔
3.2 實際測試 logrotate 的動作
4. 分析登錄檔
4.1 一些常見指令: last, lastlog, dmesg
4.2 鳥哥自己寫的登錄檔分析工具:
5. 本章習題練習
6. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?t=23895
什麼是登錄檔?
這部分是最容易被新手所忽略的,那就是『
詳細而確實的紀錄或者是備份系統的登錄檔 』。那麼什麼是登錄檔呢?簡單的說,就是
記錄系統活動記錄的幾個檔案, 例如:何時、何地 (來源 IP)、何人( login name )、做了什麼動作, 另外就是系統在什麼時候做了什麼樣的行為時,發生了什麼樣的事件等等,要知道的是,我們的 Linux 主機在背景之下,有相當多的 daemons 在工作著,那麼這些工作中的程序總是會有一些訊息顯示, 這些顯示的訊息就是給記錄在登錄檔當中啦,也就是說,記錄這些系統的重要訊息, 就是登錄檔所進行的紀錄工作的內容了。
而 由於這些記錄的工作內容對於系統的資訊太詳細了, 若被取得將可能影響到系統的安全性,因此,通常這些登錄檔只有 root 可以進行視察的功能! 那麼為何要記錄與解析登錄檔呢?這是由於登錄檔有幾個重要的功能:
好了,那麼記錄了這些登錄檔之後,我要做什麼分析呀!?基本上,一個好的系統管理員大概都知道 『 一部主機負責的服務最好能少盡量少』,這是什麼意思呢? 也就是說,這部主機為郵件主機那麼就專門負責郵件工作,不要還搞 WWW 服務!這樣有幾個好處,除了系統的安全性較佳之外 ( 因為開的 port 變少了! ) , 登錄檔的解析也會比較簡單!因為我們的 /var/log/secure 記錄的登入者資訊就會比較有一致性! 那麼我們就可以查詢一下每日登入的使用者帳號啦與錯誤訊息啦等等的!( 當然囉,如果你的頻寬夠、經驗豐富的話,那麼一部主機上面安裝所有的網路服務也是可以的啦!) 基本上,檢查 /var/log/messages、/var/log/secure 這些個檔案也就相當夠了! 因為系統發生的錯誤或者是警告訊息通常都會寫入這些檔案中。
但是,如果我手邊有數十部主機怎麼辦?我要不要一部一部去察看 log file 呢?呵呵!那樣察看會死人ㄋㄟ~因此,我們底下也使用一個簡易的登錄檔來分析 Red Hat (含 Fedora 啦!) 系列的登錄檔吧!
在 Linux 的登錄檔系統當中,大多以一支特定的 daemon 來進行寫入這些訊息的工作,那就是 syslogd 這支程式啦!所以說,只要軟體套件有支援 syslogd 的登錄檔寫入模式, 那麼該軟體套件的資訊就會被寫入到 syslogd 管理的登錄檔當中。
另外,由於登錄檔如果一直長大的話,那麼這些登錄檔的寫入動作將會很沒有效率, 這是因為檔案太大時,ASCII 格式碼的資料檔案寫入比較麻煩的緣故! 那麼怎麼進行登錄檔資料的備份工作呢?呵呵!那就使用 logrotate 吧!將資料進行輪轉( rotate )?什麼是輪轉?!(我ㄌㄟ台語不輪轉呦!?) 其實也可以稱為輪替啦!
所謂的 logrotate 基本上,就是將舊的 log 檔案更改名稱,然後建立一個空的 log 檔案,如此一來,新的 log 檔案將從零開始記錄,然後只要將舊的 log 檔案留下一陣子,嗯!那就可以達到將登錄檔『輪轉』的目的啦! 此外,如果舊的紀錄 (大概要保存幾個月吧!保存了一段時間沒有問題,那麼就可以讓系統自動的將他砍掉, 免得佔掉很多寶貴的硬碟空間說!(舉個例子來說,鳥哥的 WWW 網站一個月的登錄檔,所佔掉的硬碟空間大小,大概就有 3GB 這麼多....而且都是純文字檔....很可怕吧!)
所以說,基本上,針對 log 檔案來設計的服務有這兩支:
而 由於這些記錄的工作內容對於系統的資訊太詳細了, 若被取得將可能影響到系統的安全性,因此,通常這些登錄檔只有 root 可以進行視察的功能! 那麼為何要記錄與解析登錄檔呢?這是由於登錄檔有幾個重要的功能:
- 解決系統的錯誤:
這個對於系統管理員來說是很重要的資訊,例如:開機的過程當中偵測到的硬體訊息資料會記錄到記憶體當中, 由於這些偵測的資訊可以提供我們瞭解硬體資訊,所以如果你的系統發生問題時,可以下達 dmesg 看看硬體的偵測有沒有發生錯誤呢!另外,如果系統資源被耗盡、 核心活動發生錯誤等等事件發生的時候,則系統登錄檔亦會將錯誤的訊息記錄在登錄檔中 (通常是 /var/log/messages ),這些都可以藉以取得錯誤發生時的資訊,並加以克服問題!! - 解決網路服務的問題:
在安裝或設定新服務的套件時,最常使用到這個功能了!例如在安裝啟動 sendmail 時,如果 sendmail 無法提供服務的時候,那麼無法提供服務的問題則會被紀錄到登錄檔當中去, 則只要分析登錄檔就可以瞭解問題點,並藉以解決問題啦!( 所以我們常說『天助自助者』是真的啦!察看(1)螢幕上面的錯誤訊息與(2)登錄檔的錯誤資訊,幾乎可以解決大部分的 Linux 問題! ) - 記錄登錄資訊:
這個東西相當的重要!例如:有天您的 apache 這個 WWW 服務掛了,你怎麼知道何時掛掉的? 而最後登入者是誰?!這都可以藉由分析 apache 的登錄檔來取得資訊; 此外,萬一有一天您的系統被入侵,並且被利用來攻擊他人的主機,這個時候對方的主機查出是您的 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:
分別是幾個不同的網路服務的記錄檔啦!
好了,那麼記錄了這些登錄檔之後,我要做什麼分析呀!?基本上,一個好的系統管理員大概都知道 『 一部主機負責的服務最好能少盡量少』,這是什麼意思呢? 也就是說,這部主機為郵件主機那麼就專門負責郵件工作,不要還搞 WWW 服務!這樣有幾個好處,除了系統的安全性較佳之外 ( 因為開的 port 變少了! ) , 登錄檔的解析也會比較簡單!因為我們的 /var/log/secure 記錄的登入者資訊就會比較有一致性! 那麼我們就可以查詢一下每日登入的使用者帳號啦與錯誤訊息啦等等的!( 當然囉,如果你的頻寬夠、經驗豐富的話,那麼一部主機上面安裝所有的網路服務也是可以的啦!) 基本上,檢查 /var/log/messages、/var/log/secure 這些個檔案也就相當夠了! 因為系統發生的錯誤或者是警告訊息通常都會寫入這些檔案中。
但是,如果我手邊有數十部主機怎麼辦?我要不要一部一部去察看 log file 呢?呵呵!那樣察看會死人ㄋㄟ~因此,我們底下也使用一個簡易的登錄檔來分析 Red Hat (含 Fedora 啦!) 系列的登錄檔吧!
在 Linux 的登錄檔系統當中,大多以一支特定的 daemon 來進行寫入這些訊息的工作,那就是 syslogd 這支程式啦!所以說,只要軟體套件有支援 syslogd 的登錄檔寫入模式, 那麼該軟體套件的資訊就會被寫入到 syslogd 管理的登錄檔當中。
另外,由於登錄檔如果一直長大的話,那麼這些登錄檔的寫入動作將會很沒有效率, 這是因為檔案太大時,ASCII 格式碼的資料檔案寫入比較麻煩的緣故! 那麼怎麼進行登錄檔資料的備份工作呢?呵呵!那就使用 logrotate 吧!將資料進行輪轉( rotate )?什麼是輪轉?!(我ㄌㄟ台語不輪轉呦!?) 其實也可以稱為輪替啦!
所謂的 logrotate 基本上,就是將舊的 log 檔案更改名稱,然後建立一個空的 log 檔案,如此一來,新的 log 檔案將從零開始記錄,然後只要將舊的 log 檔案留下一陣子,嗯!那就可以達到將登錄檔『輪轉』的目的啦! 此外,如果舊的紀錄 (大概要保存幾個月吧!保存了一段時間沒有問題,那麼就可以讓系統自動的將他砍掉, 免得佔掉很多寶貴的硬碟空間說!(舉個例子來說,鳥哥的 WWW 網站一個月的登錄檔,所佔掉的硬碟空間大小,大概就有 3GB 這麼多....而且都是純文字檔....很可怕吧!)
所以說,基本上,針對 log 檔案來設計的服務有這兩支:
- syslogd:
進行系統或者是網路服務的登錄檔記錄工作; - logrotate:
將舊的資料更名,並且建立新的登錄檔, 以保持登錄檔的『新鮮』,並視設定將最舊的登錄檔刪除。
登錄檔的紀錄: syslogd
剛剛上面提到說,Linux 的登錄檔主要是由 syslogd 這個 daemon 在負責,那麼您的 Linux 是否有啟動 syslogd 呢?而且是否有設定開機時啟動呢?呵呵!檢查一下先:
看到 syslog 這個服務名稱了吧?!呵呵!所以知道他已經在背景底下工作囉!如前所述, syslog 這支程式提供了『系統登入資訊記錄』及『 Kernel 錯誤或警示資訊記錄』等功能,此外, 他還提供了『本地端與遠端電腦的登錄資訊記錄』功能,所以,可以將遠端的主機登入資訊同時記錄在本地端呢! 很不錯的功能吧!!此外,目前正規使用的系統服務中,大都預設支援以 syslog 這一個服務來記錄他的登錄檔案資料,例如 apache, samba, sendmail 等等。
登錄檔內容的一般格式
登錄檔的設定檔:/etc/syslog.conf
登錄檔的安全性設置
登錄檔主機的簡單設定
[root@linux ~]# ps aux | grep syslog |
登錄檔內容的一般格式
一般來說,通常經過 syslog 而記錄下來的資料主要有:
以第一筆資料為例,該資料說明的內容為:『
時間在 Oct 16 10:16:13 (10/16, 10:16)時;由主機名稱為 linux 的那部主機當中;由 sshd (且其 PID 為 3494) 那項服務所產生的一個訊息;訊息內容說明是:接受來自 192.168.1.11 連接至本機,使用 ssh2 連線機制,接受的使用者為 dmtsai』。有夠清楚的吧! ^_^。就是因為太清楚了, 包括那個 192.168.1.11 的 IP 來源,以及使用者帳號為 dmtsai , 這些資訊如果讓比較高竿的 cracker 知道後,是有可能猜測密碼的, 所以囉,這些資訊當然不能夠外流啦!好好保存吧!
其實還有很多的資訊值得查閱的呢!尤其是 /var/log/messages 的內容。記得一個好的系統管理員, 要常常去『巡視』登錄檔的內容喔!尤其是:
-
- 事件發生的日期與時間;
- 發生此事件的主機名稱;
- 啟動此事件的服務名稱 (如 samba, xinetd 等) 或函式名稱 (如 libpam ..);
- 該訊息資料內容。
[root@linux ~]# cat /var/log/secure |
其實還有很多的資訊值得查閱的呢!尤其是 /var/log/messages 的內容。記得一個好的系統管理員, 要常常去『巡視』登錄檔的內容喔!尤其是:
- 當你覺得系統似乎不太正常時;
- 某個 daemon 老是無法正常啟動時;
- 某個使用者老是無法登入時;
- 某個 demon 執行過程老是不順暢時;
登錄檔的設定檔:/etc/syslog.conf
什麼?登錄檔還有設定檔??喔!不是啦~是 syslogd 這個 daemon 的設定檔啦! 我們現在知道 syslogd 可以負責主機產生的各個資訊的登錄,而這些資訊本身是有『嚴重等級』之分的, 而且,這些資料要傳送到什麼檔名的檔案裡去?這都是可以修訂的呢,所以我們才會在一開頭的地方講說, 每個 Linux distributions 放置的登錄檔檔名可能會有所差異啊!
基本上, syslog 針對各種服務與訊息記錄在某些檔案的設定檔就是:
簡單的說明如下:
基本上, syslog 針對各種服務與訊息記錄在某些檔案的設定檔就是:
- /etc/syslog.conf
服務名稱[.=!]訊息等級 訊息記錄的檔名或裝置或主機 |
- 服務名稱:
什麼服務產生的訊息要被紀錄的意思。syslog 認識的服務主要有底下這些:
- auth, authpriv:主要與認證有關的機制,例如 telnet, login, ssh 等需要認證的服務都是使用此一機制;
- cron:就是例行性命令 cron/at 等產生訊息記錄的地方;
- daemon:與各個 daemon 有關的訊息;
- kern:就是核心 (kernel) 產生訊息的地方;
- lpr:亦即是列印相關的訊息啊!
- mail:只要與郵件收發有關的訊息紀錄都屬於這個;
- news:與新聞群組伺服器有關的東西;
- syslog:就是 syslogd 這支程式本身產生的資訊啊!
- user, uucp, local0 ~ local7:與 Unix like 機器本身有關的一些訊息。
另外,每種服務所產生的資料量其實是差異很大的,舉例來說, mail 的登錄檔訊息多的要命, 每一封信件進入後, mail 至少需要記錄『寄信人的資訊;與收信者的訊息』等等, 而如果是用來做為工作站主機的,那麼登入者 (利用 login 登錄主機處理事情) 的數量一定不少,那個 authpriv 所管轄的內容可就多的要命了。
為了讓不同的資訊放置到不同的檔案當中,好讓我們分門別類的進行登錄檔的管理, 所以囉,將各種類別的服務之登錄檔,記錄在不同的檔案裡面,就是我們 /etc/syslog.conf 所要作的規範了!
- 訊息等級
每種服務所產生的訊息是有差異的,有啟動時告知系統的資訊訊息 (information), 有被入侵時發出的警告訊息 (warn) ,還有系統硬體發生錯誤時,所產生的重大問題訊息 (error 等等); 基本上,系統將訊息分為七個主要的等級,依序是這樣的(由不重要排列到重要訊息等級):
- info:僅是一些基本的訊息說明而已;
- notice:比 info 還需要被注意到的一些資訊內容;
- warning 或 warn:警示的訊息,可能有問題, 但是還不至於影響到某個 daemon 運作的資訊;基本上, info, notice, warn 這三個訊息都是在告知一些基本資訊而已,應該還不至於造成一些系統運作困擾;
- err 或 error :一些重大的錯誤訊息, 例如設定檔的某些設定值造成該服務服法啟動的資訊說明, 通常藉由 err 的錯誤告知,應該可以瞭解到該服務無法啟動的問題呢!
- crit:比 error 還要嚴重的錯誤資訊,這個 crit 是臨界點 (critical) 的縮寫,這個錯誤已經很嚴重了喔!
- alert:警告警告,已經很有問題的等級,比 crit 還要嚴重!
- emerg 或 panic:疼痛等級,意指系統已經幾乎要當機的狀態! 很嚴重的錯誤資訊了。 通常大概只有硬體出問題,導致整個核心無法順利運作,就會出現這樣的等級的訊息吧!
特別留意一下在訊息等級之前還有 [.=!] 的連結符號喔!他代表的意思是這樣的:- . :代表『比後面還要高的等級(含該等級)都被記錄下來』的意思, 例如: mail.info 代表只要是 mail 的資訊,而且該資訊等級高於 info (含 info 本身)時,就會被記錄下來的意思。
- .=:代表所需要的等級就是後面接的等級而已,其他的不要!
- .!:代表不等於,亦即是除了該等級外的其他等級都記錄。
- 訊息記錄的檔名或裝置或主機
再來則是這個訊息要放置在哪裡的紀錄了。通常我們使用的都是記錄的檔案啦!但是也可以輸出到裝置呦! 例如印表機之類的!也可以記錄到不同的主機上頭去呢!底下就是一些常見的放置處:基本上,整個 syslog 的設定檔就只是這樣而已,底下我們來思考一些例題, 好讓你可以更清楚的知道如何設定 syslogd 啊!
- 檔案的絕對路徑:通常就是放在 /var/log 裡頭的檔案啦!
- 印表機或其他:例如 /dev/lp0 這個印表機裝置
- 使用者名稱:顯示給使用者囉!
- 遠端主機:例如 @test.adsldns.org當然啦,要對方主機也能支援才行!
- *:代表『目前在線上的所有人』,類似 wall 這個指令的意義!
例題:如果我要將我的 mail 相關的資料給他寫入 /var/log/maillog 當中,那麼在 /etc/syslog.conf 應該如何寫?
答:-
基本的寫法是這樣的:
mail.info /var/log/maillog
注意到上面喔,當我們的等級使用 info 時,那麼『任何大於 info 等級(含 info 這個等級)之上的訊息,都會被寫入到後面接的檔案之中!』這樣可以瞭解嗎?也就是說,我們可以將所有 mail 的登錄資訊都紀錄在/var/log/maillog 裡面的意思啦!
例題:我要將新聞群組資料 (news) 及例行性命令的資訊 (cron) 都寫入到一個稱為/var/log/cronnews 的檔案中,但是這兩個程序的警告訊息記錄在 /var/log/cronnews.warn 該如何設定我的檔案呢?
答:-
很簡單啦!既然是兩個程序,那麼只好以分號來隔開了,此外,由於第二個指定檔案中,我只要記錄警告訊息,因此設定上需要指定『=』這個符號,所以就成為了:
news.*;cron.* /var/log/cronnews
news.=warn;cron.=warn /var/log/cronnews.warn
上面那個『.=』就是在指定等級的意思啦!由於指定了等級,因此,只有這個等級的訊息才會被紀錄在這個檔案裡面呢!
例題:我的 messages 這個檔案需要記錄所有的資訊,但是就是不想要記錄 cron, mail 及 news 的資訊,那麼應該怎麼寫才好?
答:-
可以有兩種寫法,分別是:
*.*;news,cron,mail.none /var/log/messages
*.*;news.none;cron.none;mail.none /var/log/messages
使用『,』分隔時,那麼等級只要接在最後一個即可,如果是以『;』來分的話,那麼就需要將服務與等級都寫上去囉!這樣會設定了吧!
瞭解語法之後,我們來看一看在尚未開啟網路服務的情況下,我們的 syslog 有哪些系統服務已經在紀錄了呢?!那就是瞧一瞧 /etc/syslog.conf 這個檔案的預設內容囉! ( 注意!如果需要將該行做為註解時,那麼就加上 # 符號就可以啦!)
基本上,每個版本的 syslog.conf 差異是頗大的,所以,每個登錄檔記錄的資料其實不很固定。 舉例來說,如果您曾經使用過 Mandriva 的話,他的 syslogd 設定資訊有點像這樣:# 來自 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
# 在已知各服務的訊息中,不要記錄到這個檔案當中啦!
# 例如 mail 我們已經預設要記錄在 /var/log/maillog (底下),
# 所以自然不要在記錄 mail 到這個 /var/log/messages 檔案中啦!
# 然後其他的訊息全部都記錄到 /var/log/messages 當中!
# 所以這個檔案相當的重要!沒有被規定到的訊息都可以在這裡找到!
authpriv.* /var/log/secure
# 這個就是經過一些身份確認的行為之後,需要記錄身份的檔案啦!
# 什麼是身份確認呢?例如 pop3 收信要輸入帳號與密碼、 ssh 與 telnet, ftp
# 等等的服務需要輸入帳號與密碼,這些都會在 /var/log/secure 裡面記錄!
# 他可也是相當重要的一個檔案呢!
mail.* -/var/log/maillog
# 只要跟 mail 有關的(不論是 pop3 還是 sendmail )都會被紀錄到這個檔案中!
cron.* /var/log/cron
# 還記得例行性命令那一章節嗎?!對啦!就是那個 crontab 的東西,
# 那東西的服務程式名稱就是 cron 啦!執行 cron 的結果都記錄於此!
*.emerg *
# 任何時候發生的警告訊息都會顯示給線上的所有人!那個 * 就是目前線上的所有人啦!
# 這個就是利用 wall 之類的方式傳輸訊息的啊!
uucp,news.crit /var/log/spooler
# 記錄新聞錯誤高於 crit 的等級的資訊,寫入 spooler 當中!
local7.* /var/log/boot.log
# 將開機的當中的訊息給他寫入 /var/log/boot.log 這個檔案當中呦!
基本上,他將每個服務的登錄檔都分成三個內容,那麼我們就可以簡單的依據比較嚴重的登錄檔來解析, 有助於系統的快速整理。但是每個人的喜好不同,因此,並不見得這樣的設定大家都喜歡。 而像鳥哥自己,我自己寫了一支分析 logfile 的程式,該程式主要針對 Red Hat 系統的登錄檔來作處理的,則 Mandriva 的版本是否適用呢?當然適用啊! 只要手動修訂一下 /etc/syslog.conf 內容即可啊!這樣說,瞭了吧?! ^_^# 來自 Mandrake 9.0 的 syslog.conf 內容
[root@linux ~]# vi /etc/syslog.conf
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
user.* -/var/log/user.log
*.info;mail.none;;news.none;authpriv.none -/var/log/messages
Authpriv.* /var/log/secure
mail.=debug;mail.=info;mail.=notice -/var/log/mail/info
mail.=warn -/var/log/mail/warnings
mail.err -/var/log/mail/errors
cron.=debug;cron.=info;cron.=notice -/var/log/cron/info
cron.=warn -/var/log/cron/warnings
cron.err -/var/log/cron/errors
kern.=debug;kern.=info;kern.=notice -/var/log/kernel/info
kern.=warn -/var/log/kernel/warnings
kern.err /var/log/kernel/errors
lpr.=debug;lpr.=info;lpr.=notice -/var/log/lpr/info
lpr.=warn -/var/log/lpr/warnings
lpr.err -/var/log/lpr/errors
news.=debug;news.=info;news.=notice -/var/log/news/news.notice
news.=crit -/var/log/news/news.crit
news.=err -/var/log/news/news.err
Daemon.=debug;daemon.=info;daemon.=notice -/var/log/daemons/info
Daemon.=debug;daemon.=info;daemon.=notice -/var/log/daemons/info
Daemon.=warn -/var/log/daemons/warnings
Daemon.err -/var/log/daemons/errors
*.emerg *
Local1.* -/var/log/explanations
另外,這些檔案都相當的重要 (例如什麼時候被誰登入進來主機啦!?) ,所以他們的權限大多是屬於 root 的可讀寫而已!這點非常需要小心而留意! ( 請注意,在系統的預設狀況中,所有的未知狀態的訊息幾乎都是寫入 /var/log/messages 這個檔案中,所以,如果系統有問題,請詳細的檢查一下這個 /var/log/messages 檔案吧!!)
如果您有其他的需求,所以需要特殊的檔案來幫你記錄時,呵呵!別客氣,千萬給他記錄在 /etc/syslog.conf 當中,如此一來,您就可以重複的將許多的資訊記錄在不同的檔案當中,以方便您的管理呢!
讓我們來作個練習題吧!如果你想要讓『所有的資訊』都額外寫入到 /var/log/admin.log 這個檔案時, 你可以怎麼作呢?先自己想一想,並且作一下,再來看看底下的作法啦!
很簡單吧!如此一來,所有的資訊都會寫入 /var/log/admin.log 裡面了!# 1. 先設定好所要建立的檔案設置!
[root@linux ~]# vi /etc/syslog.conf
*.info /var/log/admin.log
# 2. 重新啟動 syslog 呢!
[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
# 瞧吧!建立了這個檔案出現囉!
登錄檔的安全性設置
好了,由上一個小節裡面我們知道了 syslog.conf 的設定,也知道了登錄檔內容的重要性了, 所以,如果幻想你是一個很厲害的駭客,想利用他人的電腦幹壞事,然後又不想留下證據, 你會怎麼作?對啦!就是離開的時候將屁股擦乾淨,將所有可能的訊息都給他抹煞掉, 所以第一個動腦筋的地方就是登錄檔的清除工作啦~
哇!鳥哥教人家幹壞事……喂!不要亂講話~俺的意思是,如果改天你發現你的登錄檔不翼而非了, 或者是發現你的登錄檔似乎不太對勁的時候,最常發現的就是網友常常會回報說,他的 /var/log 這個目錄『不見了!』不要笑!這是真的事情?請記得,『趕快清查你的系統!』
傷腦筋呢!那麼有沒有辦法防止這樣的事情呢?有呀!拔掉網路線……呵呵!別擔心,基本上, 我們可以透過一個隱藏的屬性來設定你的登錄檔,成為『 只可以增加資料,但是不能被刪除 』的狀態,那麼或許可以達到些許的保護!不過,如果你的 root 帳號被破解了,那麼底下的設定還是無法保護的,因為你要記得『 root 是可以在系統上面進行任何事情的 』,因此,請將你的 root 這個帳號的密碼設定的安全一些!千萬不要輕忽這個問題呢!
好了,開始來設定一下基本的隱藏屬性吧!那就是在 Linux 檔案屬性 提過的 lsattr 與 chattr 這兩個東西啦!如果將一個檔案以 chattr 設定 i 這個屬性時,那麼該檔案連 root 都不能殺掉!而且也不能新增資料,嗯!真安全!但是,如此一來登錄檔的功能豈不是也就消失了? 因為沒有辦法寫入呀!所以囉, 我們要使用的是 a 這個屬性!你的登錄檔如果設定了這個屬性的話,那麼 他將只能被增加,而不能被刪除!嗯! 這個項目就非常的符合我們登錄檔的需求啦!因此,您可以這樣的增加你的登錄檔的隱藏屬性。
加入了這個屬性之後,你的 /var/log/messages 登錄檔從此就僅能被增加,而不能被刪除,直到 root 以『 chattr -a /var/log/messages 』取消這個 a 的參數之後,才能被刪除或移動喔!
雖然,為了您登錄檔的資訊安全,這個 chattr 的 +a 旗標可以幫助您維護好這個檔案, 不過,如果您的系統已經被取得 root 的權限,而既然 root 可以下達 chattr -a 來取消這個旗標, 所以囉,還是有風險的啦!此外,前面也稍微提到,新手最好還是先不要增加這個旗標, 很容易由於自己的忘記,導致系統的重要訊息無法記錄呢。
基本上,鳥哥認為,這個旗標最大的用處除了在保護您登錄檔的資料外, 他還可以幫助您避免掉不小心寫入登錄檔的狀況喔。要注意的是,當『 你不小心 "手動" 更動過登錄檔後,例如那個 /var/log/messages , 你不小心用 vi 開啟他,離開卻下達 :wq 的參數,呵呵!那麼該檔案未來將不會再繼續進行登錄動作! 』這個問題真的很常發生!由於你以 vi 儲存了登錄檔,則 syslogd 會誤判為該檔案已被更動過, 將導致 syslogd 不再寫入該檔案新的內容~很傷腦筋的!
要讓該登錄檔可以繼續寫入,你只要重新啟動 syslog (/etc/init.d/syslog restart) 即可。 不過,總是比較麻煩。所以啊,如果你針對登錄檔下達 chattr +a 的參數,嘿嘿! 未來你就不需要害怕不小心更動到該檔案了!因為無法寫入嘛!除了可以新增之外~ ^_^
不過,也因為這個 +a 的屬性讓該檔案無法被刪除與修改,所以囉,當我們進行登錄檔案輪替時 (logrotate) ,將會無法移動該登錄檔的檔名呢!所以會造成很大的困擾。這個困擾雖然可以使用 logrotate 的設定檔來解決,但是,還是先將登錄檔的 +a 旗標拿掉吧!
哇!鳥哥教人家幹壞事……喂!不要亂講話~俺的意思是,如果改天你發現你的登錄檔不翼而非了, 或者是發現你的登錄檔似乎不太對勁的時候,最常發現的就是網友常常會回報說,他的 /var/log 這個目錄『不見了!』不要笑!這是真的事情?請記得,『趕快清查你的系統!』
傷腦筋呢!那麼有沒有辦法防止這樣的事情呢?有呀!拔掉網路線……呵呵!別擔心,基本上, 我們可以透過一個隱藏的屬性來設定你的登錄檔,成為『 只可以增加資料,但是不能被刪除 』的狀態,那麼或許可以達到些許的保護!不過,如果你的 root 帳號被破解了,那麼底下的設定還是無法保護的,因為你要記得『 root 是可以在系統上面進行任何事情的 』,因此,請將你的 root 這個帳號的密碼設定的安全一些!千萬不要輕忽這個問題呢!
好了,開始來設定一下基本的隱藏屬性吧!那就是在 Linux 檔案屬性 提過的 lsattr 與 chattr 這兩個東西啦!如果將一個檔案以 chattr 設定 i 這個屬性時,那麼該檔案連 root 都不能殺掉!而且也不能新增資料,嗯!真安全!但是,如此一來登錄檔的功能豈不是也就消失了? 因為沒有辦法寫入呀!所以囉, 我們要使用的是 a 這個屬性!你的登錄檔如果設定了這個屬性的話,那麼 他將只能被增加,而不能被刪除!嗯! 這個項目就非常的符合我們登錄檔的需求啦!因此,您可以這樣的增加你的登錄檔的隱藏屬性。
Tips: 請注意,底下的這個 chattr 的設定狀態:『僅適合已經對 Linux 系統很有概念的朋友』來設定, 對於新手來說,建議您直接使用系統的預設值就好了,免得到最後登錄檔無法寫入~ 那就比較糗一點! @_@ |
[root@linux ~]# chattr +a /var/log/messages |
雖然,為了您登錄檔的資訊安全,這個 chattr 的 +a 旗標可以幫助您維護好這個檔案, 不過,如果您的系統已經被取得 root 的權限,而既然 root 可以下達 chattr -a 來取消這個旗標, 所以囉,還是有風險的啦!此外,前面也稍微提到,新手最好還是先不要增加這個旗標, 很容易由於自己的忘記,導致系統的重要訊息無法記錄呢。
基本上,鳥哥認為,這個旗標最大的用處除了在保護您登錄檔的資料外, 他還可以幫助您避免掉不小心寫入登錄檔的狀況喔。要注意的是,當『 你不小心 "手動" 更動過登錄檔後,例如那個 /var/log/messages , 你不小心用 vi 開啟他,離開卻下達 :wq 的參數,呵呵!那麼該檔案未來將不會再繼續進行登錄動作! 』這個問題真的很常發生!由於你以 vi 儲存了登錄檔,則 syslogd 會誤判為該檔案已被更動過, 將導致 syslogd 不再寫入該檔案新的內容~很傷腦筋的!
要讓該登錄檔可以繼續寫入,你只要重新啟動 syslog (/etc/init.d/syslog restart) 即可。 不過,總是比較麻煩。所以啊,如果你針對登錄檔下達 chattr +a 的參數,嘿嘿! 未來你就不需要害怕不小心更動到該檔案了!因為無法寫入嘛!除了可以新增之外~ ^_^
不過,也因為這個 +a 的屬性讓該檔案無法被刪除與修改,所以囉,當我們進行登錄檔案輪替時 (logrotate) ,將會無法移動該登錄檔的檔名呢!所以會造成很大的困擾。這個困擾雖然可以使用 logrotate 的設定檔來解決,但是,還是先將登錄檔的 +a 旗標拿掉吧!
[root@linux ~]# chattr -a /var/log/messages |
登錄檔主機的簡單設定
我們在之前稍微提到的,在 syslog.conf 檔案當中,可以將登錄資料傳送到印表機, 或者是遠端主機上面去。這樣做有什麼意義呢? 如果你將登錄資訊直接傳送到印表機上面的話,那麼萬一不小心你的系統被 cracker 所入侵, 他也將您的 /var/log/ 砍掉了,怎麼辦?沒關係啊!反正你已經將重要資料直接以印表機記錄起來了, 嘿嘿!他是無法逃開的啦!^_^
再想像一個環境,你的辦公室內有十部 Linux 主機,每一部負責一個網路服務, 你為了要瞭解每部主機的狀態,因此,你常常需要登入這十部主機去查閱你的登錄檔~ 哇!光用想的,每天要進入十部主機去查資料,想到就煩~沒關係~這個時候我們可以讓某一部主機當成 『登錄檔主機』 ,用他來記錄所有的十部 linux 主機的資訊,嘿嘿!這樣我就直接進入一部主機就可以了! 省時又省事,真方便~
那要怎麼達到這樣的功能呢?首先,你必須要連上網路嘛!不然怎麼接受資訊? 再來,由於 syslog 用的是 udp 封包的 514 埠號,因此,你的登錄檔主機就得要啟用這個 port 才行~ 如何啟用呢?很簡單啊!這樣做就可以了!
透過這個簡單的動作,你的 Linux 主機已經可以接收來自其他主機的登錄資訊了! 當然啦,你必須要知道網路方面的相關基礎,這裡鳥哥只是先介紹, 未來瞭解了網路相關資訊後,再回頭來這裡瞧一瞧先! ^_^,此外, 更多的相關資訊可以 man syslogd 查閱看看喔! ^_^
至於 client 端的設定就簡單多了!只要指定某個資訊傳送到這部主機即可! 舉例來說,我們的登錄檔主機 IP 為 192.168.1.100 ,而 client 端希望所有的資料都送給主機, 所以,可以在 /etc/syslog.conf 裡面新增這樣的一行:
立刻就搞定了!而未來主機上面的登錄檔當中,每一行的『主機名稱』就會顯示來自不同主機的資訊了。 很簡單吧! ^_^。接下來,讓我們來談一談,那麼如何針對登錄檔來進行輪轉 (rotate) 呢?
再想像一個環境,你的辦公室內有十部 Linux 主機,每一部負責一個網路服務, 你為了要瞭解每部主機的狀態,因此,你常常需要登入這十部主機去查閱你的登錄檔~ 哇!光用想的,每天要進入十部主機去查資料,想到就煩~沒關係~這個時候我們可以讓某一部主機當成 『登錄檔主機』 ,用他來記錄所有的十部 linux 主機的資訊,嘿嘿!這樣我就直接進入一部主機就可以了! 省時又省事,真方便~
那要怎麼達到這樣的功能呢?首先,你必須要連上網路嘛!不然怎麼接受資訊? 再來,由於 syslog 用的是 udp 封包的 514 埠號,因此,你的登錄檔主機就得要啟用這個 port 才行~ 如何啟用呢?很簡單啊!這樣做就可以了!
# 1. 先取得 port number 的資訊! |
至於 client 端的設定就簡單多了!只要指定某個資訊傳送到這部主機即可! 舉例來說,我們的登錄檔主機 IP 為 192.168.1.100 ,而 client 端希望所有的資料都送給主機, 所以,可以在 /etc/syslog.conf 裡面新增這樣的一行:
[root@linux ~]# vi /etc/syslog.conf |
登錄檔的輪替(logrotate):
好了!假設我們已經將登錄資料寫入了記錄檔中了,也已經利用 chattr 設定了 +a 這個屬性了,那麼該如何進行 logrotate 的工作呢!?這裡請特別留意的是:『
syslog 利用的是 demand 的方式來啟動的, 當有需求的時候立刻就會被執行的,但是 logrotate 卻是在規定的時間到了之後才來進行登錄檔的輪替, 所以這個 logrotate 程序當然就是掛在 cron 底下進行的呦!』 仔細看一下 /etc/cron.daily/ 裡面的檔案,嘿嘿~看到了吧! /etc/cron.daily/logrotate 就是記錄了每天要進行的登錄檔輪替的行為啦! ^_^!底下我們就來談一談怎麼樣設計這個 logrotate 吧!
logrotate 的設定檔
實際測試 logrotate 的動作
logrotate 的設定檔
既然 logrotate 主要是針對登錄檔來進行輪替的動作,所以囉,他當然必須要記載『 在什麼狀態下才將登錄檔進行輪替』的設定啊!那麼 logrotate 這個程式的參數設定檔在哪裡呢?!呵呵!那就是:
好了,剛剛我們提到 logrotate 的主要功能就是將舊的登錄檔案移動成舊檔, 並且重新建立一個新的空的檔案來記錄,他的執行結果有點類似底下的圖示:
圖一、登錄檔進行 logrotate 的結果
由上面的圖示我們可以清楚的知道,當第一次執行完 rotate 之後,原本的 messages 會變成 messages.1 而且會製造一個空的 messages 給系統來儲存登錄檔。而第二次執行之後,則 messages.1 會變成 messages.2 而 messages 會變成 messages.1 ,又造成一個空的 messages 來儲存登錄檔!那麼如果我們僅設定保留三個登錄檔而已的話,那麼執行第四次時,則 messages.3 這個檔案就會被刪除,並由後面的較新的保存登錄檔所取代!基本的工作就是這樣啦!
那麼多久進行一次 logrotate 的工作呢?嗯!這些都記錄在 logrotate.conf 裡面,我們來看一下預設的 logrotate 的內容吧!
由這個檔案的設定我們可以知道 /etc/logrotate.d 其實就是由 /etc/logrotate.conf 所規劃出來的目錄,所以,其實我們可以將所有的資料都給他寫入 /etc/logrotate.conf 即可,但是這樣一來這個檔案就實在是太複雜了,尤其是當我們使用很多的服務在系統上面時, 每個服務都要去修改 /etc/logrotate.conf 的設定也似乎不太合理~ 所以,如果獨立出來一個目錄,那麼每個以 RPM 打包方式所建立的服務的登錄檔輪替設定, 就可以獨自成為一個檔案,並且放置到 /etc/logrotate.d/ 當中即可, 真是方便又合理的做法啊! ^_^
一般來說,這個 /etc/logrotate.conf 是『預設的輪替狀態』而已, 我們的各個服務都可以擁有自己的登錄檔輪替設定,您也可以自行修改成自己喜歡的樣式啊! 例如,如果您的系統的空間夠大,並且擔心除錯以及駭客的問題,那麼可以:
在上面的語法當中,我們知道正確的 logrotate 的寫法為:
好!若假設我們有針對 /var/log/messages 這個檔案增加 chattr +a 的屬性存在時, 依據 logrotate 的工作原理,我們知道,這個 /var/log/messages 將會被更名成為 /var/log/messages.1 才是。但是由於加上這個 +a 的參數啊,所以,更名是不可能成功的! 那怎麼辦呢?呵呵!就利用 prerotate 與 postrotate 來進行登錄檔輪替前、後所需要作的動作啊! 果真如此時,那麼你可以這樣修改一下這個檔案喔!
看到否?就是先給他去掉 a 這個屬性,讓登錄檔 /var/log/messages 可以進行輪替的動作, 然後執行了輪替之後,再給他加入這個屬性!請特別留意的是,那個 /bin/kill -HUP ... 的意義,這一行的目的在於將系統的 syslogd 重新以其參數檔( syslog.conf )的資料讀入一次!也可以想成是 reload 的意思啦! 由於我們建立了一個新的空的紀錄檔,如果不執行此一行來重新啟動服務的話, 那麼記錄的時候將會發生錯誤呦!! (請回到資源管理的章節讀一下 kill 後面的 signal 的內容說明)!
-
- /etc/logrotate.conf
- /etc/logrotate.d/
好了,剛剛我們提到 logrotate 的主要功能就是將舊的登錄檔案移動成舊檔, 並且重新建立一個新的空的檔案來記錄,他的執行結果有點類似底下的圖示:
圖一、登錄檔進行 logrotate 的結果
由上面的圖示我們可以清楚的知道,當第一次執行完 rotate 之後,原本的 messages 會變成 messages.1 而且會製造一個空的 messages 給系統來儲存登錄檔。而第二次執行之後,則 messages.1 會變成 messages.2 而 messages 會變成 messages.1 ,又造成一個空的 messages 來儲存登錄檔!那麼如果我們僅設定保留三個登錄檔而已的話,那麼執行第四次時,則 messages.3 這個檔案就會被刪除,並由後面的較新的保存登錄檔所取代!基本的工作就是這樣啦!
那麼多久進行一次 logrotate 的工作呢?嗯!這些都記錄在 logrotate.conf 裡面,我們來看一下預設的 logrotate 的內容吧!
[root@linux ~]# vi /etc/logrotate.conf |
一般來說,這個 /etc/logrotate.conf 是『預設的輪替狀態』而已, 我們的各個服務都可以擁有自己的登錄檔輪替設定,您也可以自行修改成自己喜歡的樣式啊! 例如,如果您的系統的空間夠大,並且擔心除錯以及駭客的問題,那麼可以:
-
- 將 rotate 4 改成 rotate 9 左右,以保存較多的備份檔案;
- 大部分的登錄檔不需要 compress 囉!但是空間太小就需要 compress !尤其是很佔硬碟空間的 httpd 更需要 compress 的!
[root@linux ~]# vi /etc/logrotate.d/syslog |
-
- 將要被處理的登錄檔檔名 (包含絕對路徑) 寫在前面,可以使用空白字元分隔多個登錄檔;
- 用 { } 包括所有的設定;
- 設定的項目與前面提到的相同,並且可加入輪替前 (pre) 與後 (post) 的一些特殊執行的指令! 這個設定需與 sharedscripts .... endscript 設定合用才行;
- prerotate:在啟動 logrotate 之前進行的指令,例如修改登錄檔的屬性等動作;
- postrotate:在做完 logrotate 之後啟動的指令,例如重新啟動 (kill -1 或 kill -HUP) 某個服務!
- Prerotate 與 postrotate 對於已經加上了特殊屬性的檔案處理上面,是相當重要的執行程序!
好!若假設我們有針對 /var/log/messages 這個檔案增加 chattr +a 的屬性存在時, 依據 logrotate 的工作原理,我們知道,這個 /var/log/messages 將會被更名成為 /var/log/messages.1 才是。但是由於加上這個 +a 的參數啊,所以,更名是不可能成功的! 那怎麼辦呢?呵呵!就利用 prerotate 與 postrotate 來進行登錄檔輪替前、後所需要作的動作啊! 果真如此時,那麼你可以這樣修改一下這個檔案喔!
[root@linux ~]# vi /etc/logrotate.d/syslog |
實際測試 logrotate 的動作
好了,設定完成之後,我們來測試看看這樣的設定是否可行呢?給他執行底下的指令:
上面那個 -f 具有『強制執行』的意思,如果一切的設定都沒有問題的話,那麼理論上,您的 /var/log 這個目錄就會起變化囉!而且應該不會出現錯誤訊息才對!嘿嘿!這樣就 OK 了!很棒不是嗎?!
好了,那麼預設的 logrotate 什麼時候執行呢?呵呵!不用擔心,系統已經幫我們設定好了!放在哪裡呢? 剛剛不是提過嗎?就是放在 /etc/cron.daily/logrotate 裡面啊!如果您的版本不是 FC4 , 那麼可以利用 rpm 的相關功能找到這個設定資料喔! ^_^
由於 logrotate 的工作已經加入 crontab 裡頭了!所以現在每天系統都會自動的給他查看 logrotate 囉!不用擔心的啦!!只是要注意一下那個 /var/log/messages 裡頭是否常常有類似底下的字眼:
假設前提是這樣的,前一小節當中,假設您已經建立了 /var/log/admin.log 這個檔案, 現在,您想要將該檔案加上 +a 這個隱藏標籤,而且設定底下的相關資訊:
看到了嗎?透過這個方式,我們可以建立起屬於自己的 logrotate 設定檔案, 很簡便吧!尤其是要注意的, /etc/syslog.conf 與 /etc/logrotate.d/* 檔案常常要搭配起來,例如剛剛我們提到的兩個案例中所建立的 /var/log/admin.log 就是一個很好的例子~建立後,還要使用 logrotate 來輪替啊! ^_^
[root@linux ~]# logrotate [-vf] logfile |
好了,那麼預設的 logrotate 什麼時候執行呢?呵呵!不用擔心,系統已經幫我們設定好了!放在哪裡呢? 剛剛不是提過嗎?就是放在 /etc/cron.daily/logrotate 裡面啊!如果您的版本不是 FC4 , 那麼可以利用 rpm 的相關功能找到這個設定資料喔! ^_^
由於 logrotate 的工作已經加入 crontab 裡頭了!所以現在每天系統都會自動的給他查看 logrotate 囉!不用擔心的啦!!只是要注意一下那個 /var/log/messages 裡頭是否常常有類似底下的字眼:
- Oct 24 15:15:35 localhost syslogd 1.4.1: restart.
假設前提是這樣的,前一小節當中,假設您已經建立了 /var/log/admin.log 這個檔案, 現在,您想要將該檔案加上 +a 這個隱藏標籤,而且設定底下的相關資訊:
- 登錄檔輪替一個月進行一次;
- 該登錄檔若大於 10MB 時,則主動進行輪替,不需要考慮一個月的期限;
- 保存五個備份檔案;
- 備份檔案不要壓縮
# 1. 先建立 +a 這個屬性啊! |
分析登錄檔
登錄檔的分析是很重要的!例如那個 last 可以讓你知道到底誰登錄進主機啦!但是並沒有 pop3 這個收信協定的登錄訊息!這個時候就需要考慮到 /var/log/secure 的紀錄啦!無論如何,既然系統有給我們幾個指令可以約略觀察,那就來查一查吧! ^_^
一些常見指令: last, lastlog, dmesg
鳥哥自己寫的登錄檔分析工具:
一些常見指令: last, lastlog, dmesg
那就來談一談一些系統有的觀察指令啊:
- dmesg
在指令列模式直接輸入 dmesg 即可執行!由於系統在開機的過程當中尚未將硬碟 mount 上來,所以無法直接將資料直接給他讀到 log file 當中去,但是為了除錯上面的方便, 所以在開機的過程當中的訊息還是要記錄下來,這個時候系統就將 ram 開了一個小區塊來儲存這個資料囉!這個開機記錄的檔案就是:『/proc/kmsg』啦!同時,預設的 RAM 的區塊容量在不同的版本中並不相同,目前的預設版本是 16KB 的大小呦。[root@linux ~]# dmesg | more
基本上,幾乎所有的核心資訊都可以使用 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)
- lastlog
說穿了, lastlog 只是讀出 /var/log/lastlog 內的資訊而已~ 他會顯示目前系統上面的所有帳號當中,每個帳號最近一次登入的時間喔![root@linux ~]# lastlog
Username Port From Latest
root tty1 Tue Aug 16 18:06:20 +0800 2005
bin **Never logged in**
.....(中間省略).....
dmtsai2 vbird-wo vbird-work Mon Oct 24 14:18:49 +0800 2005
鳥哥自己寫的登錄檔分析工具:
雖然有一些有用的系統指令,不過,要瞭解系統的狀態,還是得要分析整個登錄檔才行~ 事實上,目前已經有相當多的登錄檔分析工具,例如 FC4 上面預設的 logwatch 這個套件所提供的分析工具, 他會每天分析一次登錄檔案,並且將資料以 email 的格式寄送給 root 呢! 你也可以直接到 logwatch 的官方網站上面看看:
如果是非 FC4 系列的其他 distributions ,可以查閱一下您自己的 distributions 所提供的分析工具, 如果沒有,那麼可以自行安裝 logwatch 幫您分析啊~
雖然已經有了這些工具,但是鳥哥自己想要分析的資料畢竟與對方不同~ 所以囉,鳥哥就自己寫了一支小程式 (shell script 的語法) 用來分析自己的登錄檔, 這支程式分析的登錄檔資料其實是固定的,包括有:
如果您有興趣看看這支程式的話,歡迎下載:
安裝的方法也很簡單,只要將上述檔按下載後,解壓縮,就會得到一個名為 logfile 的目錄, 將此目錄移動到 /usr/local/virus 當中,修改一下: /usr/local/virus/logfile.sh 檔案, 裡面的 email 與相關的資訊只要修改一下,您就可以使用啦~ 啊!還要記得,將這支程式的執行寫入 /etc/crontab 當中喔! 可以在每天的 12:10am 執行這支小程式啦! ^_^
雖然已經有了這些工具,但是鳥哥自己想要分析的資料畢竟與對方不同~ 所以囉,鳥哥就自己寫了一支小程式 (shell script 的語法) 用來分析自己的登錄檔, 這支程式分析的登錄檔資料其實是固定的,包括有:
-
- /var/log/secure
- /var/log/messages
- /var/log/maillog
########################################################## |