熱門分類
載入中…
目錄0%

🧱 Linux Rsyslog 集中日誌管理與分析教學

    🧱 Linux Rsyslog 集中日誌管理與分析教學

    在企業環境中,集中式日誌管理(Centralized Logging)能協助系統管理員即時監控多台伺服器狀態。Rsyslog 是 Linux 上最常用的日誌系統之一,具備高速、模組化與安全傳輸特性,本文將說明如何架設與整合 Rsyslog 伺服器。

    📘 一、Rsyslog 角色與運作原理

    Rsyslog 是 syslog 的進階版本,支援 TCP、UDP 傳輸與 TLS 加密。常見架構如下:

    • Client(Sender):將本地系統日誌透過網路傳送至集中伺服器。
    • Server(Receiver):接收並分類儲存多台主機的日誌。

    日誌訊息的基本結構:

    <PRI>Timestamp Hostname Process[PID]: Message
    ---

    ⚙️ 二、安裝與啟用 Rsyslog

    # Rocky / CentOS / RHEL
    sudo dnf install rsyslog -y
    sudo systemctl enable --now rsyslog
    
    # Ubuntu / Debian
    sudo apt install rsyslog -y
    sudo systemctl enable --now rsyslog
    

    確認服務狀態:

    sudo systemctl status rsyslog
    
    ---

    🏗 三、設定 Rsyslog 為集中接收端(Server)

    編輯主設定檔:

    sudo nano /etc/rsyslog.conf
    

    取消註解並開啟 UDP / TCP 接收功能:

    # 接收 UDP 日誌
    module(load="imudp")
    input(type="imudp" port="514")
    
    # 接收 TCP 日誌
    module(load="imtcp")
    input(type="imtcp" port="514")
    
    # 設定儲存路徑
    $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
    *.* ?RemoteLogs
    & ~
    

    儲存後重啟服務:

    sudo systemctl restart rsyslog
    

    防火牆開放埠口:

    sudo firewall-cmd --permanent --add-port=514/tcp
    sudo firewall-cmd --permanent --add-port=514/udp
    sudo firewall-cmd --reload
    
    ---

    💻 四、設定用戶端(Client)傳送日誌

    在遠端主機中編輯 /etc/rsyslog.conf

    *.* @@192.168.1.10:514   # TCP
    # 或
    *.* @192.168.1.10:514    # UDP
    

    重新啟動服務:

    sudo systemctl restart rsyslog
    

    此時,伺服器端應能在 /var/log/remote/ 下看到對應主機資料夾。

    ---

    🔒 五、安全強化與 TLS 加密

    若要在跨網段環境中傳送敏感資料,建議啟用 TLS:

    module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="anon")
    input(type="imtcp" port="6514" StreamDriver="gtls")
    

    並在 /etc/rsyslog.d/ssl.conf 中指定憑證位置:

    $DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.crt
    $DefaultNetstreamDriverCertFile /etc/rsyslog.d/server.crt
    $DefaultNetstreamDriverKeyFile /etc/rsyslog.d/server.key
    
    ---

    📊 六、整合 GoAccess / Fail2Ban 分析

    • 使用 GoAccess 即時視覺化分析 nginx / squid 的存取日誌。
    • 配合 Fail2Ban 可依據 Rsyslog 匯入的 SSH / Proxy 攻擊紀錄自動封鎖來源。
    • 可搭配 systemd journal-gatewayd,整合為 Web Log 檢視介面。
    ---

    📈 七、常見疑難排解

    • 確認 SELinux 是否允許 rsyslog 接收外部連線:
    • sudo setsebool -P nis_enabled on
    • 使用 logger 測試傳送:
    • logger "Test message from $(hostname)"
    • 檢查 Rsyslog log:/var/log/messages/var/log/syslog
    ---

    📘 結語

    Rsyslog 為 Linux 世界中不可或缺的日誌骨幹。透過集中式架構,我們能在多台伺服器間統一監控與分析事件,進而快速發現異常、追蹤攻擊來源,並與自動化防護系統(如 Fail2Ban)協同運作,達成高效率的安全維運。


    🔗 延伸閱讀

    — WWFandy・系統維運筆記

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級