當前位置:成語大全網 - 書法字典 - linux系統下如何查看各種日誌文件?linux系統日誌分析。

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

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

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

1.過程日誌

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

2.系統日誌消息

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

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

1.連接時間日誌-由多個程序執行,將記錄寫入/var/log/wtmp和/var/run/utmp,登錄和其他程序更新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。

1月5日21:55:51本地主機最後壹條消息重復了3次

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

B

1月5日21:55:51 localhost內核:【drm】在次要服務器上初始化i830 1 . 3 . 2 20021108

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

e(0x 12c 000)邊界

1月5日21: 56: 35本地主機65438+10月28日21: 56: 35 GDM

或根用戶(uid=0)

1月5日21:56:39 localhost 1:56:39 gconfd(root-4162):開始(版本2。

2.0),pid 4162用戶“根”

1月5日21: 56: 39本地主機65438+10月28日21:56:39 gconfd(root-4162):解析的地址“xml:re。

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

1月5日21: 56: 39本地主機65438+10月28日21:56:39 gconfd(root-4162):解析的地址“xml:re。

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

1月5日21: 56: 39本地主機65438+10月28日21:56:39 gconfd(root-4162):解析的地址“xml:re。

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

1月5日21:58:20本地主機內核:MSDOS FS: IO字符集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 open log(char *,int,int)

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

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

LOG_NDELAY:立即打開到syslogd的連接。默認情況下,連接僅在首次寫入消息時打開。

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

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

void syslog(int,char *)

設施和水平的OR組合在哪裏?

void close log(void)

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

3.3 syslog.conf

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

該文件使用以下格式:

工廠級行動

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

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

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

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

n設備指定了系統日誌功能,主要包括以下內容:

pam_pwdb報告的身份驗證活動。

Authpriv包括用戶名等特權信息的身份驗證活動。

關於Cron和at的信息。

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

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

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

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

標記系統日誌內部函數用於生成時間戳。

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

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

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

由Uucp生成的uucp信息

本地0-本地7用於自定義程序,例如使用本地5作為ssh功能。

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

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

每個功能對應的優先級按壹定順序排列,緊急是最高級別,其次是警報,依此類推。默認情況下,/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克恩。!錯誤/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)默認情況下使用它。

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

郵件。*;郵件。!=info /var/adm/mail

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

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

#

郵件新聞。=info /var/adm/info

提取具有mail.info或news.info功能優先級的所有信息,並將其存儲在文件/var/adm/info中。

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

#

*.= info*.=通知;\

mail . none/var/日誌/消息

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

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

#

*.= info\

郵件,新聞。無/var/log/messages

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

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

#

*.=緊急*

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

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

#給操作員

#

*.喬伊,通知魯特

*.* @芬蘭人

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

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

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文件的示例:

#有關詳細信息,請參見“man logrotate”

#每周輪換日誌文件

壹周的

# 7天周期

#保留4周的積壓工作

旋轉4

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

#向根用戶發送錯誤

錯誤根源

#向root用戶報告錯誤

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

創造

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

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

#壓縮

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

# RPM程序包將日誌輪換信息放入此目錄

包含/etc/logrotate.d

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

/var/log/wtmp {

每月

創建0664根utmp

旋轉1

}

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

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

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

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

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

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