古詩詞大全網 - 個性簽名 - linux系統下如何查看各種日誌文件?linux系統日誌分析。

linux系統下如何查看各種日誌文件?linux系統日誌分析。

日誌文件詳細記錄了系統每天發生的各種事件。用戶可以通過日誌文件檢查錯誤的原因,或者在受到攻擊和黑客攻擊時追蹤攻擊者。日誌的兩個重要功能是:審計和監控。

Linux系統的日誌主要分為兩種類型:

1.過程日誌

用戶進程或其他系統服務進程生成的日誌,如服務器上的access_log和error_log日誌文件。

2.系統日誌消息

系統系統日誌記錄的日誌。任何想要記錄日誌的系統進程或用戶進程都可以調用syslog來記錄日誌。

測井系統可分為三個子系統:

1.連接時間日誌——由多個程序執行,將記錄寫入/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,這樣系統管理員就可以跟蹤誰在什麽時候登錄了系統。

2.進程統計——由系統內核執行。當進程終止時,在進程統計文件(pacct或acct)中為每個進程寫壹條記錄。進程統計的目的是為系統中的基本服務提供命令使用統計。

3.錯誤日誌-由syslogd(8)執行。各種系統守護進程、用戶程序和內核通過syslog(3)向文件/var/log/messages報告值得註意的事件。

2.檢查日誌文件

Linux系統的所有日誌文件都在/var/log下,必須有root權限才能查看。

日誌文件實際上是壹個純文本文件,每壹行都是壹條消息。有很多方法可以看到。

1.cat命令。日誌文件總是很大,因為從第壹次啟動Linux開始,消息就累積在日誌文件中。如果文件超過壹頁,文件的內容將會不清楚,因為顯示滾動得太快。

2.文本編輯器。最好不要用文本編輯器打開日誌文件,因為這樣壹方面消耗大量內存,另壹方面也不允許隨意更改日誌文件。

3.以頁的形式顯示程序,如或多或少。

4.使用grep查找特定的消息。

每行代表壹條消息,由固定格式的四個字段組成:

n時間戳,表示發送消息的日期和時間。

N hostname(在我們的例子中是escher),表示生成消息的計算機的名稱。如果只有壹臺計算機,主機名可能不是必需的。但是,如果在網絡環境中使用syslog,則可能需要將來自不同主機的消息發送到服務器進行集中處理。

n生成消息的子系統的名稱。可以是“內核”,表示消息來自內核,也可以是進程名,表示發送消息的程序名。方括號中是進程的PID。

n條消息,剩下的就是消息的內容了。

例如:

在[root@localhost root]#提示符下輸入:tail /var/log/messages。

Jan 05 21:55:51 localhost最後壹條消息重復了3次

1月5日21:55:51本地主機內核:[drm]英特爾I 810 @ 0xf 0000000 128m上的AGP 0.99

B

Jan 05 21:55:51 localhost內核:[drm]在minor上初始化i830 1 . 3 . 2 20021108

Jan 05 21:55:51 localhost內核:mtrr: base(0xf0000000)在siz上未對齊

e(0x12c000)邊界

GDM (PAM _ UNIX) [4079]:會話在f

或用戶root by (uid=0)

Jan 05 21:56:39 localhost 1:56:39 gconfd(root-4162):開始(版本2。

2.0),pid 4162用戶“root”

Jan 05 21:56:39 localhost 65438+10月28 21:56:39 gconfd(root-4162):解析的地址" xml:re。

僅ad:/etc/gconf/gconf . XML . mandatory "指向位於0的只讀配置源。

Jan 05 21:56:39 localhost 65438+10月28 21:56:39 gconfd(root-4162):解析的地址" xml:re。

Adwrite:/root/。gconf”指向1處的可寫配置源。

Jan 05 21:56:39 localhost 65438+10月28 21:56:39 gconfd(root-4162):解析的地址" xml:re。

僅ad:/etc/gconf/gconf . XML . defaults”指向位於2的只讀配置源。

Jan 05 21:58:20本地主機內核:MSDOS FS: IO charset cp936

值得註意的是,與連接時間日誌不同,進程統計子系統在默認情況下是不激活的,必須啟動。在Linux上

系統中的啟動進程統計使用accton命令,並且必須以root用戶身份運行。accton命令采用accton的形式。

文件,文件必須預先存在。首先使用touch命令創建壹個pacct文件:touch。

/var/log/pacct,然後運行accton:accton。

/var/log/pacct .壹旦accton被激活,您就可以使用lastcomm命令來監視系統中任何時候執行的命令。要關閉統計,可以使用。

參數的Accton命令。

3.日誌系統的工作原理和配置

3.1系統日誌

它用closelog和openlog * * *,向系統日誌程序發送消息。

Linux內核由許多子系統組成,包括網絡、文件訪問、內存管理等等。子系統需要向用戶發送壹些消息,包括消息的來源和重要性。所有子系統都應該向可維護的公共消息區域發送消息。所以,有壹個程序叫Syslog。

這個程序負責接收消息(如錯誤消息、警告消息和其他由系統核心和許多系統程序生成的信息,每個信息都包含重要級別)並將消息分發到適當的位置。通常

中,所有消息都記錄在壹個特定的文件-日誌文件中(通常是/var/adm或/var/log目錄中的消息文件),並且還會使用特別重要的消息。

它顯示在用戶終端窗口上。

syslog工具有兩個重要的文件:syslogd和syslog。會議

它可以接受訪問系統的日誌信息,並根據“/etc/syslog.conf”配置文件中的說明進行處理。守護進程和內核為訪問系統提供日誌信息。因此,任何想要生成日誌信息的程序都可以調用syslog接口來生成這些信息。

3.2 syslogd守護進程

就像其他復雜的操作系統壹樣,Linux由許多不同的子系統組成。壹些名為daemon的程序壹直在後臺運行。即

它們是“未知的”,不需要與用戶交互),處理壹些日常任務如打印、發送郵件、建立互聯網連接等等。每個子系統在發送日誌消息時都會給出壹條日誌消息。

該消息指定了壹種類型。壹條消息分為兩部分:“設施”和“級別”。“設備”標識發送消息的子系統,可以組合相同類型的消息。“級別”表示消息的重要性,範圍從調試(最不重要)到緊急(最重要)。設施和級別的組合稱為優先級。(詳細解釋參見5.3)

這是在/usr/include/sys/syslog.h中定義的。

用戶看不到守護程序,因為他們沒有窗口和用戶界面。然而,這些程序有時必須向用戶傳達壹些信息。為了實現這個目標,需要壹個特殊的機制。守護進程的壹個很好的例子是syslogd,它在後臺運行,將消息從日誌區傳輸到日誌文件。

功能界面

#包括

void openlog( char *,int,int)

其中可以是下列值的OR組合:

LOG_CONS:如果消息不能發送到syslogd,將直接輸出到系統控制臺。

LOG_NDELAY:立即打開到syslogd的連接。默認情況下,只有在第壹次寫入消息時,連接才會打開。

LOG_PERROR:同時將消息發送到stderr。

LOG_PID:記錄每條消息中的PID。

void syslog( int,char *)

其中是設施和水平的OR組合。

void closelog( void)

壹般只需要使用syslog()函數,其他函數可以省略。

3.3 syslog.conf

這是壹份非常重要的文件。位於“/etc/”目錄中。告訴syslogd如何根據設備和信息嚴重性報告信息。

該文件使用以下格式:

設施級行動

syslog.conf的第壹列facility.level用於指定日誌記錄功能和日誌記錄級別,用。,可以用*匹配。

所有記錄功能和記錄級別。第二列action是消息的分發目標。

空行和以#開頭的行是註釋,可以忽略。

Facility.level字段也稱為選擇器。

N facility指定了syslog功能,主要包括以下內容:

pam_pwdb報告了Auth身份驗證活動。

Authpriv包括對特權信息(如用戶名)的身份驗證活動。

關於Cron和at的信息。

關於守護進程和inetd守護進程的信息。

Kern內核信息首先通過klogd傳輸。

與印刷服務相關的Lpr信息。

與電子郵件相關的郵件信息

標記syslog內部函數用於生成時間戳。

來自新聞服務器的新聞信息

系統日誌生成的系統日誌信息。

由用戶程序生成的用戶信息。

由Uucp生成的uucp信息

Local 0-Local 7用於自定義程序,比如使用local5作為ssh函數。

*通配符代表除mark之外的所有函數。

級別級別決定了消息的重要性。

每個功能對應的優先級是按照壹定的順序排列的,emerg是最高級別,其次是alert,以此類推。默認情況下,/etc/syslog.conf記錄中指定的級別是該級別及更高級別。如果要用某壹級,可以用兩個運算符!(不相等)和=

例如,用戶。=info告訴syslog接受信息級別的所有用戶功能信息。

n以下等級的重要性逐漸降低:

緊急情況該系統不可用。

需要立即修改的警報條件。

Crit阻止某些工具或子系統實現其功能的錯誤條件。

Err是阻止工具或某些子系統實現某些功能的錯誤條件。

警告警告信息

重要通知的壹般條件

提供信息的消息。

調試不包含關於功能條件或問題的其他信息。

None沒有重要性級別,通常用於調試。

*除無以外的所有級別

n動作字段是壹個動作字段,它所代表的活動有很大的靈活性。特別是,名稱管道可以用來使syslogd生成後處理信息。

系統日誌主要支持以下活動:

文件將消息追加到文件的指定末尾。

終端或打印完整的串行或並行設備標識符

@主機遠程日誌服務器

Username將消息寫入指定的用戶。

命名管道指定用mkfifo命令創建的FIFO文件的絕對路徑。

*給所有用戶寫消息。

選擇域以指示消息的類型和優先級;操作字段指示syslogd在收到與選擇標準匹配的消息時采取的操作。每個選項由壹個設備和壹個優先級組成。當指示優先級時,syslogd將記錄具有相同或更高優先級的消息。例如,如果指定了“crit ”,將記錄所有標有crit、alert和emerg的消息。每行的操作字段指示當選擇字段選擇給定消息時,該消息應發送到哪裏。

以下是實際站點的配置(syslog.conf)文件:

#將重要的東西存放在關鍵的地方

#

*.=暴擊;kern.none /var/adm/critical

這將優先保存/var/adm/critical文件中的所有信息,除了壹些內核信息。

#內核消息首先存儲在內核中

#文件、關鍵消息和更高的消息也將被刪除

#到另壹臺主機和控制臺

#

克恩。* /var/adm/kernel

kern.crit @finlandia

kern . crit/dev/控制臺

kern.info克恩。!err /var/adm/kernel-info

第壹段代碼指示壹些內核設備訪問/var/adm/kernel文件中的信息。

第二段代碼直接引導所有具有crit和更高優先級的內核信息訪問遠程主機。如果它們也存儲在遠程主機上,您仍然可以嘗試找到損壞的原因。

第四行顯示syslogd將優先級從info到warning的所有內核信息保存在/var/adm/kernel-info文件夾中。排除所有錯誤和更高優先級。

#我們顯示的帶有mail.info的tcp包裝程序日誌

# tty 12上的所有連接

#

郵件。=info /dev/tty12

這會將所有使用mail . info(in source log _ mail | log _ info)的信息引導到/dev/tty12,編號12。

壹個控制臺。比如tcpwrapper。

tcpd

(8)默認情況下使用此選項。

#將所有與材料相關的郵件存儲在壹個文件中

郵件。*;郵件。!=信息/變量/管理/郵件

該模式匹配具有郵件功能的所有信息,但具有信息優先級的信息除外。它們將保存在文件/var/adm/mail中。

#將所有mail.info和news.info郵件記錄到info

#

郵件,新聞。=信息/變量/管理/信息

提取mail.info或news.info函數優先級的所有信息,並存儲在文件/var/adm/info中。

#將信息和通知消息記錄到消息文件中

#

*.= info*.=通知;\

mail.none /var/log/messages

將syslogd日誌中具有info或notice功能的所有信息存儲在/var/log/messages文件中,具有mail功能的所有信息除外。

#將信息消息記錄到消息文件

#

*.= info\

郵件,新聞。無/var/log/消息

該聲明將syslogd日誌中所有具有info優先級的信息存儲在/var/log/messages文件中。但是壹些具有郵件或新聞功能的信息不能被存儲。

#將使用墻壁顯示緊急消息

#

*.=緊急*

這行代碼告訴syslogd將所有緊急信息寫入所有當前登錄的用戶日誌。這將會實現。

#將定向優先級警報的消息

#給操作員

#

*.提醒魯特,喬伊

*.* @finlandia

該代碼將所有具有警告或更高權限的信息導向終端操作。

第二行代碼將所有信息發送到名為Finland的遠程主機。這段代碼非常有用,尤其是當所有syslog信息都將保存到壹臺機器上的集群計算機時。

3.4 klogd守護程序

Klog是壹種接受來自UNIX內核的消息的設備。

克洛德

守護進程獲取並記錄Linux內核信息。通常,syslogd記錄klogd。

所有收到的信息。換句話說,klogd將讀取內核信息並將其轉發給syslogd進程。但是,如果使用-f文件名變量調用klogd。

Klogd將所有信息記錄在filename中,而不是傳遞給syslogd。當為日誌記錄指定了另壹個文件時,klogd

所有級別或優先級都被寫入文件。Klogd中沒有類似/etc/syslog.conf的配置文件。用klogd而不是用它。

syslogd的好處是可以發現很多錯誤。

摘要

其中箭頭表示向目標進程發送消息或將信息寫入目標文件。

圖1 Linux日誌系統

日誌管理和日誌保護

Logrotate程序用於幫助用戶管理日誌文件。它作為自己的守護進程工作。Logrotate定期輪換日誌文件,並且可以定期重命名每個日誌文件。

創建壹個備份名稱,然後讓它的守護程序開始使用日誌文件的新副本。在/var/log/下,比如maillog,maillog.1,

Maillog.2,boot.log.1,boot.log.2等等。它由壹個配置文件驅動,該文件是

/etc/logroatate.conf .

以下是logroatate.conf文件的示例:

#有關詳細信息,請參見“人工日誌旋轉”

#每周輪換日誌文件

壹周的

# 7天周期

#保留4周的積壓工作

旋轉4

#每4周備份壹次日誌文件

#向根用戶發送錯誤

錯誤根源

#向root用戶報告錯誤

#輪換舊日誌文件後創建新的(空)日誌文件

創造

#傳輸舊的日誌文件後,創建新的日誌文件。

#如果希望壓縮日誌文件,請取消對此的註釋

#壓縮

#指定是否壓縮日誌文件。

# RPM程序包將日誌循環信息放入此目錄

包括/etc/logrotate.d

#沒有包擁有lastlog或wtmp -我們將在這裏輪換它們

/var/log/wtmp {

每月

創建0664根utmp

旋轉1

}

#可以在此配置特定於系統的日誌

在網絡應用中,有壹種保護日誌的方法。在網絡中設置壹個秘密的syslog主機,該主機的網卡設置為混雜模式,監控子網中的所有syslog包。

例如,所有需要發送日誌的主機都可以配置為向不存在的主機發送日誌。這樣,即使黑客捕獲了目標主機,也無法通過syslog.conf文件找到備份日誌的所有者。

機器,那只是壹個不存在的主機。實際上,可以補充交換機配置,以確保備份日誌主機上的syslog進程可以接受syslog包。比如放

syslog.conf中的傳輸日誌主機設置為。

@ 192.168 . 0 . 13,但實際網絡中並不存在這個日誌主機。實際可能是192.168.0.250或者其他主機在接受syslog包。