跳轉至內容

Ict-innovation/LPI/108.2

來自華夏公益教科書,開放的書籍,開放的世界

108.2 系統日誌

[編輯 | 編輯原始碼]

考生應該能夠配置 syslog 守護程序。此目標還包括配置日誌守護程序以將日誌輸出傳送到中央日誌伺服器或作為中央日誌伺服器接受日誌輸出。


關鍵知識領域

  • syslog 配置檔案
  • syslog
  • 標準設施、優先順序和操作



/var/log/ 目錄

許多服務透過將訊息寫入日誌檔案來報告其活動。一些服務,如 Apache、Samba 和 X 伺服器直接寫入自己的日誌檔案。許多其他服務透過名為 syslog 的日誌服務進行日誌記錄。此服務由兩個守護程序提供 - syslogd 處理應用程式日誌,而 klogd 處理核心日誌。使用 syslog 的優點是它提供了一箇中央位置來控制記錄的訊息將去往何處。

大多數日誌檔案位於 /var/log 目錄中。您在此處找到的實際檔案集在 Linux 發行版之間會有所不同,但您通常會找到以下檔案:

cron跟蹤cron執行時生成的訊息

mail與mail相關的訊息

messages記錄所有訊息,除了私人身份驗證 authpriv、cron、mail 和 news

secure記錄所有失敗的身份驗證、新增/刪除的使用者等。

最重要的日誌檔案是 messages,其中記錄了大多數活動。

/etc/syslog.conf 檔案

當 syslogd 啟動時,它會讀取配置檔案 /etc/syslog.conf(可以使用 -f 選項啟動 syslogd 以指定備用配置檔案。)此檔案包含規則列表。每個規則的第一部分標識規則適用的訊息,每個規則的第二部分指定一個操作(對訊息執行的操作)。

Syslog 可以將訊息傳送到

  • 一個檔案
  • 一個已登入的使用者
  • 遠端機器上執行的另一個 syslog

圖 108.2-1:/etc/syslog.conf 中規則的格式

使用設施優先順序來標識訊息。設施指示訊息的大致來源,優先順序指示訊息的重要性。

可用設施和優先順序如圖所示。它們是預定義的,無法擴充套件;但請注意,為一般使用提供了 local0 到 local7 設施。

有效的優先順序是:(從最高到最低)

  • emerg
  • alert
  • crit
  • err
  • warning
  • notice
  • info
  • debug


此外,萬用字元 '*' 可以用於表示“所有設施”或“所有優先順序”。

考慮 syslog.conf 中以下四個示例行。(這些並非代表一個可工作的配置,只是為了提供語法示例。另外,行號僅供參考,它們不是檔案的一部分)

1. cron.notice/var/log/cron

2. *.*;authpriv.none/var/log/messages

3. mail.*~/var/log/mail

4. *.crit*

5. *.crit@neptune

6. lpr.=info/var/log/lpr


第 1 行匹配來自 cron 設施的通知優先順序或更高優先順序的訊息。這些訊息將附加到 /var/log/cron

第 2 行匹配所有訊息,除了來自 authpriv 設施的訊息(注意此處使用了 'none')。

第 3 行匹配來自 mail 設施的所有訊息。這些訊息將附加到 /var/log/mail。檔名前面的 '~' 會抑制 syslog 的正常行為,即在寫入每條訊息後重新整理輸出檔案。重新整理會降低 I/O 效能,可能不適用於低優先順序、高容量訊息,例如郵件守護程序可能會生成的那些訊息。

第 4 行匹配級別為 crit(或更高)的所有訊息,並將它們寫入所有已登入的使用者。(在伺服器上,這不太可能是引起任何人注意的有效方法!)

第 5 行顯示如何將訊息轉發到另一臺機器(示例中的“neptune”)。

第 6 行顯示了使用 '=' 來匹配單個優先順序。

請注意,一條訊息可以匹配多條規則,在這種情況下,將執行多個操作。

/etc/syslog.conf 的清單

# 將所有核心訊息記錄到控制檯。

# 記錄其他任何內容都會使螢幕混亂。

# kern.* /dev/console

# 記錄所有內容(除了郵件)的 info 級或更高。

# 不要記錄私人身份驗證訊息!

*.info;mail.none;news.none;authpriv.none /var/log/messages


# authpriv 檔案的訪問許可權有限。

authpriv.* /var/log/secure


# 將所有郵件訊息記錄在一個地方。

mail.* /var/log/maillog


# 記錄 cron 相關內容

cron.* /var/log/cron


# 每個人都會收到緊急訊息,並在另一臺機器上記錄。

# 機器。

*.emerg *

*.emerg @10.1.1.254


# 將引導訊息也儲存到 boot.log

local7.* /var/log/boot.log

#

news.=crit /var/log/news/news.crit

news.=err /var/log/news/news.err

news.notice /var/log/news/news.notice

請注意,如果更改了 syslog.conf 檔案,則應向 syslogd 守護程序發出訊號,以重新讀取它

# pkill -HUP syslogd


使用中央日誌伺服器

在大型網路中,將訊息轉發到安全的中央伺服器可能很有用。這樣做有兩個優點。首先,如果所有訊息都在一個地方,則更易於進行日誌檔案分析。其次,它使入侵者更難透過篡改受損機器上的日誌檔案來“掩蓋自己的行蹤”。如果訊息也已轉發到另一臺機器,則入侵者將無法刪除它們,除非他也能破壞該機器。

為此,在“上游”機器上,在 syslog.conf 檔案中,只需為要轉發的訊息指定“@10.1.1.254”或“@loghost”形式的操作。(“loghost”必須是中央日誌伺服器的可解析名稱)。在“下游”機器上,您必須使用 '-r' 標誌啟動 syslogd,以告訴它監聽(在 UDP 埠 514 上)轉發訊息。這不是預設設定,因此您可能需要修改啟動指令碼(可能是 /etc/init.d/syslog)以新增此標誌。


日誌實用程式

[編輯 | 編輯原始碼]

logger 命令

命令列實用程式 logger 可用於將訊息傳送到 syslogd。它可以在互動式模式下使用(通常用於測試您的 syslog 配置),也可以在 shell 指令碼中使用。

示例

# logger "來自客戶端的無效請求"

預設情況下,logger 會以 user.notice 的優先順序傳送訊息,在典型的系統上,這些訊息最終會出現在 /var/log/messages 中

# tail -1 /var/log/messages

Sep 15 07:07:04 neptune chris: 來自客戶端的無效請求

在此訊息中,“neptune”是主機名,“chris”是使用者名稱。

logger 實用程式預設以 user.notice 的優先順序記錄訊息。可以使用 '-p' 選項指定不同的優先順序。在下面的示例中,我們以 local4.notice 的優先順序記錄訊息。local4 設施是為一般使用定義的八個設施(local0 到 local7)之一。這些可以用來建立您自己的日誌檔案。(但請注意,RedHat 使用 local7 在 /var/log/boot.log 中記錄啟動時資訊)。

首先,將以下行新增到 /etc/syslog.conf

local4.* /dev/tty1

重新啟動 syslogd 或強制它重新讀取其配置檔案,如下所示

#pkill -HUP syslogd

現在,來自 local4 設施的訊息將寫入終端 /dev/tty1

#logger -p local4.notice "此指令碼正在寫入 /dev/tty1"



以下是對所用檔案、術語和實用程式的部分列表

  • syslog.conf
  • syslogd
  • klogd
  • logger


上一章 | 下一章

華夏公益教科書