Linux

Ubuntu Linux 使用 logwatch 分析系統日誌教學與範例

本篇介紹如何在 Ubuntu Linux 中安裝並使用 logwatch 分析工具,每日自動分析各種服務的日誌,產生報表。

logwatch 是一個簡單的日誌分析工具,可以每天自動分析伺服器上各種服務的日誌,產生簡單的報表,讓管理者更容易掌握整個系統與各項服務的狀態。

安裝 logwatch

首先以 apt 安裝 logwatch 套件:

# 安裝 logwatch 套件
sudo apt install logwatch

安裝好 logwatch 之後,要手動建立 logwatch 用的暫存目錄:

# 建立 logwatch 用的暫存目錄
sudo mkdir /var/cache/logwatch

設定 logwatch

logwatch 預設的設定檔位於 /usr/share/logwatch/default.conf/logwatch.conf,若要更改其中的設定,可以將設定檔複製到 /etc/logwatch/conf/logwatch.conf,再進行修改:

# 建立 logwatch 的設定檔
sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

以下是一些常見的設定。

輸出管道

Output 參數是設定 logwatch 要如何輸出報表,stdout 代表輸出至程式的標準輸出,可用手動在命令列執行的狀況:

# 預設輸出管道為 stdout
Output = stdout

若要讓 logwatch 在系統上定期執行,可以將輸出以 Email 的方式寄送至管理者的信箱:

# 預設輸出管道為 Email
Output = mail

若採用 Email 輸出的方式,還要另外設定信件的收件者與寄件者,收件者與寄件者可以是本機的帳號:

# 以本機帳號設定收件者與寄件者
MailTo = root
MailFrom = logwatch

收件者與寄件者也可以使用標準的 Email 位址來指定:

# 以 Email 設定收件者與寄件者
MailTo = adm@mydomain.com
MailFrom = logwatch@host1.mymachine.com

若需要將信件寄送至網路上的 Email 信箱,要先確認自己的系統可以用 sendmail 寄信,這樣信才寄的出去。

若希望 logwatch 的報表直接儲存至檔案中,則可將 Output 設定為 file

# 預設輸出管道為檔案
Output = file

若輸出至檔案,要搭配 Filename 參數來設定輸出的檔案路徑:

# 輸出檔案位置
Filename = /tmp/logwatch.txt

報表詳細程度

Detail 參數可以設定 logwatch 報表的詳細程度,可用的選項有 LowMedHigh

# 報表詳細程度
Detail = Low

報表格式

Format 參數可以設定報表的格式,預設的格式為文字報表:

# 文字報表
Format = text

如果希望產生網頁報表,可以將 Format 設定為 html

# 網頁報表
Format = html

服務清單

Service 是用來設定 logwatch 要分析哪一些服務的日誌,所有支援的服務名稱可以從 /usr/share/logwatch/scripts/services 目錄下的檔案名稱來查詢。若要分析所有服務的日誌,可將 Service 設定為 All

# 監看所有服務
Service = All

Service 設定為 All 的情況下,可以搭配額外的排除清單,將少數不重要的服務排除在外:

# 排除 eximstats 服務(搭配 Service = All)
Service = "-eximstats"

如果只要分析幾個特定服務的日誌,也可以直接指定需要的服務:

# 僅分析 PAM_pwdb 與 PAM 服務日誌
Service = "pam_pwdb"
Service = "pam"

日誌區間

Range 可設定分析日誌的時間區間,預設為前一天:

# 分析前一天的日誌
Range = yesterday

Range 亦可調整為當天(Today)或所有時間(All)。

測試執行

設定好 logwatch 之後,可以直接執行 logwatch 指令,測試設定是否有問題:

# 測試執行 logwatch
sudo logwatch --detail Low --range today

正常的 logwatch 輸出內容會類似這樣:

 ################### Logwatch 7.5.2 (07/22/19) ####################
        Processing Initiated: Sat May 14 19:46:37 2022
        Date Range Processed: today
                              ( 2022-May-14 )
                              Period is day.
        Detail Level of Output: 0
        Type of Output/Format: stdout / text
        Logfiles for Host: imgqc
 ##################################################################

 --------------------- dpkg status changes Begin ------------------------

 Installed:
    comerr-dev:amd64 2.1-1.45.5-2ubuntu1
    krb5-multidev:amd64 1.17-6ubuntu4.1
    libczmq-dev:amd64 4.2.0-2
    libczmq4:amd64 4.2.0-2
    libgssrpc4:amd64 1.17-6ubuntu4.1
    libkadm5clnt-mit11:amd64 1.17-6ubuntu4.1
    libkadm5srv-mit11:amd64 1.17-6ubuntu4.1
    logwatch:all 7.5.2-1ubuntu1.3

 ---------------------- dpkg status changes End -------------------------


 --------------------- fail2ban-messages Begin ------------------------


 Banned services with Fail2Ban:                             Bans:Unbans
    sshd:                                                   [432:434]

 ---------------------- fail2ban-messages End -------------------------


 --------------------- pam_unix Begin ------------------------

 sshd:
    Authentication Failures:
       root (61.177.173.36): 117 Time(s)
       root (61.177.173.47): 99 Time(s)
       root (137.184.184.40): 69 Time(s)
       unknown (43.155.76.211): 1 Time(s)
       unknown (43.159.59.125): 1 Time(s)
       www-data (123.138.161.200): 1 Time(s)
       www-data (190.216.236.62): 1 Time(s)
    Invalid Users:
       Unknown Account: 757 Time(s)

 su:
    Sessions Opened:
       ubuntu -> root: 5 Time(s)
       root -> nobody: 3 Time(s)

 sudo:
    Sessions Opened:
       ubuntu -> root: 14 Time(s)


 ---------------------- pam_unix End -------------------------


 --------------------- Connections (secure-log) Begin ------------------------


 **Unmatched Entries**
    su: (to root) ubuntu on pts/0: 2 Time(s)
    su: (to root) ubuntu on pts/1: 2 Time(s)
    su: (to root) ubuntu on pts/2: 1 Time(s)
    systemd-logind: Existing logind session ID 60 used by new audit session, ignoring.: 1 Time(s)

 ---------------------- Connections (secure-log) End -------------------------


 --------------------- SSHD Begin ------------------------


 Network Read Write Errors: 4

 Negotiation failed:
    no matching key exchange method found: 250 Times

 Failed logins from:
    2.237.58.14 (2-237-58-14.ip237.fastwebnet.it): 4 Times
    8.212.176.175: 2 Times
    13.79.122.130: 10 Times
    219.117.228.47 (219.117.228.47.static.zoot.jp): 2 Times
    221.196.108.122 (www122.asd.tj.cn): 1 Time

 Illegal users from:
    2.237.58.14 (2-237-58-14.ip237.fastwebnet.it): 8 Times
    8.212.176.175: 6 Times
    221.133.1.50 (mail.bachvietdt.com.vn): 3 Times
    221.196.108.122 (www122.asd.tj.cn): 8 Times

 Users logging in through sshd:
    ubuntu:
       42.74.241.160 (42-74-241-160.emome-ip.hinet.net): 9 Times

 Received disconnect:
     [preauth] : 227 Times
    Bye Bye [preauth] : 1095 Times
    Normal Shutdown, Thank you for playing [preauth] : 97 Times

 **Unmatched Entries**
 error: kex_exchange_identification: Connection closed by remote host : 97 Times
 error: kex_exchange_identification: client sent invalid protocol identifier "MGLNDD_103.124.73.182_22" : 1 Time
 error: kex_exchange_identification: read: Connection reset by peer : 1 Time
 message repeated 2 times: [ Failed password for root from 218.92.0.221 port 11137 ssh2] : 1 Time
 message repeated 2 times: [ Failed password for root from 61.177.173.53 port 58952 ssh2] : 1 Time

 ---------------------- SSHD End -------------------------


 --------------------- Sudo (secure-log) Begin ------------------------


 root => root
 ------------
 /usr/bin/apt                   -   1 Time(s).
 /usr/bin/cp                    -   1 Time(s).
 /usr/bin/mkdir                 -   1 Time(s).
 /usr/sbin/logwatch             -   4 Time(s).

 ubuntu => root
 --------------
 /usr/bin/apt-get               -   2 Time(s).
 /usr/bin/su                    -   5 Time(s).

 ---------------------- Sudo (secure-log) End -------------------------


 --------------------- Disk Space Begin ------------------------

 Filesystem      Size  Used Avail Use% Mounted on
 /dev/vda1        94G   73G   17G  82% /
 /dev/loop0      111M  111M     0 100% /snap/core/12834
 /dev/loop3       44M   44M     0 100% /snap/certbot/1952
 /dev/loop2      112M  112M     0 100% /snap/core/12941
 /dev/loop1       44M   44M     0 100% /snap/certbot/2035
 /dev/loop5       56M   56M     0 100% /snap/core18/2344
 /dev/loop4       56M   56M     0 100% /snap/core18/2409
 /dev/loop7       62M   62M     0 100% /snap/core20/1405
 /dev/loop6       62M   62M     0 100% /snap/core20/1434
 /dev/loop8       68M   68M     0 100% /snap/lxd/22526
 /dev/loop11      45M   45M     0 100% /snap/snapd/15534
 /dev/loop10      44M   44M     0 100% /snap/snapd/15177
 /dev/loop9       68M   68M     0 100% /snap/lxd/22753
 /dev/vdb        295G   65M  280G   1% /mnt/test


 ---------------------- Disk Space End -------------------------


 ###################### Logwatch End #########################

每日自動執行 logwatch

在 Ubuntu Linux 安裝 logwatch 套件時,會自動建立一個 /etc/cron.daily/00logwatch 設定檔,所以只要將 logwatch 設定檔寫好,logwatch 每天就會自動執行。

參考資料

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago