剖析RHEL5 日誌系統

spectre2發表於2011-12-13
摘要
RHEL 日誌系統
什麼是日誌(syslog)及它的作用
日誌的主要用途是系統審計、監測追蹤和分析統計。
為了保證 Linux 系統正常執行、準確解決遇到的各種各樣的系統問題,認真地讀取日誌檔案是管理員的一項非常重要的任務。
Linux 核心由很多子系統組成,包括網路、檔案訪問、記憶體管理等。子系統需要給使用者傳送一些訊息,這些訊息內容包括訊息的來源及其重要性等。所有的子系統都要把訊息送到一個可以維護的公用訊息區,於是,就有了syslog。
syslog 是一個綜合的日誌記錄系統。它的主要功能是:方便日誌管理和分類存放日誌。 syslog 使程式設計者從繁重的、機械的編寫日誌檔案程式碼的工作中解脫出來,使管理員更好地控制日誌的記錄過程。在 syslog 出現之前,每個程式都使用自己的日誌記錄策略。管理員對儲存什麼資訊或是資訊存放在哪裡沒有控制權。
RHEL5中syslog的守護程式有3個分別是:syslogd, klogd, auditd
syslog的配置檔案存放在/etc/syslog.conf  而系統產生出來的日誌檔案存放在/var/log下
首先來了解日誌的配置檔案裡面存放了什麼資訊
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                                            /dev/console
# Log anything (except mail) of level info or higher. 除了mail/authpriv/cron以外。
# Don’t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                   /var/log/messages
# 將 info 或更高階別的訊息送到 /var/log/messages,
# 其中*是萬用字元,代表任何裝置;none 表示不對任何級別的資訊進行記錄。
# The authpriv file has restricted access. 這主要是一些和認證、許可權使用相關的資訊。
authpriv.*                                                                         /var/log/secure
# 將 authpirv 裝置的任何級別的資訊記錄到 /var/log/secure 檔案中
# Log all the mail messages in one place. 這主要是和電子郵件相關的資訊。
mail.*                                                                            – /var/log/maillog
#將 mail 裝置中的任何級別的資訊記錄到 /var/log/maillog 檔案中
# Log cron stuff 這主要是和系統中定期執行的任務相關的資訊。
cron.*                                                                                /var/log/cron
# 將 cron 裝置中的任何級別的資訊記錄到 /var/log/cron 檔案中
# Everybody gets emergency messages 將任何裝置的 emerg 級別或更高階別的訊息傳送給所有正在系統上的使用者。
*.emerg                                                                                    *
# Save news errors of level crit and higher in a special file.
# 將 uucp 和 news 裝置的 crit 級別或更高階別的訊息記錄到 /var/log/spooler 檔案中。
uucp,news.crit                                                             /var/log/spooler
# Save boot messages also to boot.log 將和本地系統啟動相關的資訊記錄到 /var/log/boot.log 檔案中。
local7.*                                                                      /var/log/boot.log
在日誌服務檔案中,可以看到在定義一個日誌的時候需要有 【裝置】【級別】【存放路徑】
local7.*                                                /var/log/boot.log 或    *
【裝置】.【級別】                               【存放路徑】 或 【所有人】
接下來給大家介紹日誌系統中的各種裝置和級別,它們分別的作用
【裝置】用來指定需要監視的事件。它可取的值如下
authpriv —- 報告認證活動通常,口令等私有資訊不會被記錄
cron ——– 報告與cron和at有關的資訊
daemon ——– 報告與xinetd有關的資訊
kern ——– 報告與核心有關的資訊。
lpr ——– 報告與列印服務有關的資訊
syslog ——– 由syslog生成的資訊
user ——– 報告由使用者程式生成的任何資訊
uucp ——– 由UUCP生成的資訊
mail ——– 報告與郵件服務有關的資訊
news ——– 報告與網路新聞服務有關的資訊
【級別】用於指明與每一種功能有關的級別和優先順序
alert  ——– 需要立即引起注意的情況
crit  ——– 危險情況的警告
err   ——–  除了emerg、alert、crit的其他錯誤
warning  ——– 警告資訊
notice  ——–   需要引起注意的情況
info ——–  值得報告的訊息
debug   ——–  由執行於debug模式的程式所產生的訊息
none  ——– 用於禁止任何訊息
*   ——– 所有級別,除了none
emerg   ——–  出現緊急情況使得該系統不可用
【存放路徑或傳送給某人】
file ——– 指定一個絕對路徑的日誌檔名記錄日誌資訊
username ——– 傳送資訊到指定使用者,*表示所有使用者
device ——– 將資訊傳送到指定的裝置中,如/dev/console
@hostname ——– 將資訊傳送到可解析的遠端主機hostname,且該主機必須正在執行syslogd並可以識別syslog的配置檔案
常用 Log file :
/var/log/dmesg : 核心啟動資訊
/var/log/messages :標準的系統錯誤資訊
/var/log/maillog : 郵件系統資訊
/var/log/secure : 安全、認證 and xinetd 資訊
/var/log/audit/audit.log : 核心審計資訊
/var/log/audit/boot.log :  系統啟動日誌
/var/log/audit/wtmp : 一個使用者每次登入進入和退出時間的永久記錄
資料夾 Log file :
/var/log/cups/ 儲存 CUPS 列印系統的日誌目錄
/var/log/httpd/ 儲存web服務的日誌目錄
/var/log/samba/ 儲存samba服務的日誌目錄
/var/log/news/ 儲存 INN 新聞系統的日誌目錄
/var/log/mail/ 儲存 mail 日誌的目錄
接下來就是檢視最關鍵資訊,檢視記錄系統日誌檔案
[root@node1 ~]# tail /var/log/messages
May 3 18:01:01 devilkin    ntpd     [1792] : synchronized to 114.80.81.1, stratum 2
時間標籤            主機名   程式名 [程式的PID] : 訊息的內容
May 3 18:22:46 devilkin dnsmasq-dhcp [2162]: DHCPREQUEST(virbr0) 192.168.122.56 52:54:00:40:81:e5
May 3 18:22:46 devilkin dnsmasq-dhcp [2162]: DHCPACK(virbr0) 192.168.122.56 52:54:00:40:81:e5
May 3 18:45:29 devilkin dnsmasq-dhcp [2162]: DHCPREQUEST(virbr0) 192.168.122.56 52:54:00:40:81:e5
May 3 18:45:29 devilkin dnsmasq-dhcp [2162]: DHCPACK(virbr0) 192.168.122.56 52:54:00:40:81:e5
檔案中每一行表示一個訊息,而且都由四個域的固定格式組成:
時間標籤(Timestamp):表示訊息發出的日期和時間。
主機名(Hostname):表示生成訊息的計算機的名字。
生成訊息的子系統的名字:可以是“Kernel”,表示訊息來自核心或者是程式的名字,表示發出訊息的程式的名字。
在方括號裡的是程式的PID。
訊息(Message),即訊息的內容。
高階的應用:
[root@devilkin log]# cat wtmp | more
32-44.1.el6.x86_64
LOGIN
++y1:0_–+:0\
++y1:0_–+:0\
pts/0
\6.x86_64tty1:0:0
出現亂碼,因為他是二進位制檔案
可以通過strings命令來檢視二進位制檔案
[root@devilkin log]# strings wtmp
:0.0
pts/1
ts/1root
192.168.1.103
pts/3
ts/3root
192.168.1.103
#現在能正常檢視
使用 lastlog 命令來檢查某特定使用者上次登入的時間,並格式化輸出上次登入日誌 /var/log/lastlog 的內容
[root@devilkin log]# lastlog
使用者名稱 埠 來自 最後登陸時間
root pts/3 192.168.1.103 二 5月 3 17:12:11 +0800 2011
bin **從未登入過**
daemon **從未登入過**
adm **從未登入過**
lp **從未登入過**
sync **從未登入過**
shutdown **從未登入過**
last 命令往回搜尋 /var/log/wtmp 來顯示自從檔案第一次建立以來登入過的使用者
root pts/0 192.168.1.5 Sun Nov 23 21:35 – 21:38 (00:03)
root pts/0 192.168.1.5 Sun Nov 23 21:31 – 21:35 (00:03)
root pts/0 192.168.1.5 Sun Nov 23 21:27 – 21:28 (00:01)
root pts/0 192.168.1.5 Sun Nov 23 21:22 – 21:26 (00:04)
root tty1 Sun Nov 23 21:17 – down (01:08)
lastb 命令搜尋 /var/log/btmp 來顯示登入未成功的資訊。
baobao ssh:notty 192.168.1.2 Wed Nov 26 12:44 – 12:44 (00:00)
baobao ssh:notty 192.168.1.2 Wed Nov 26 12:44 – 12:44 (00:00)
baobao ssh:notty 192.168.1.2 Wed Nov 26 12:43 – 12:43 (00:00)
root tty1 Sun Nov 23 21:17 – 21:17 (00:00)
who 命令查詢 wtmp 檔案並報告當前登入的每個使用者。who 命令的預設輸出包括使用者名稱、終端型別、登入日期及遠端主機。
[root@CentOS5 ~]# who
root tty1 2008-12-02 14:14
root pts/0 2008-12-02 14:29 (192.168.1.7)

宣告: 本文采用 BY-NC-SA 協議進行授權 | 韓舍部落格
轉載請註明轉自《剖析RHEL5 日誌系統(1)》《剖析RHEL5 日誌系統(2)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-713237/,如需轉載,請註明出處,否則將追究法律責任。

相關文章