🧱 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)"
/var/log/messages 或 /var/log/syslog📘 結語
Rsyslog 為 Linux 世界中不可或缺的日誌骨幹。透過集中式架構,我們能在多台伺服器間統一監控與分析事件,進而快速發現異常、追蹤攻擊來源,並與自動化防護系統(如 Fail2Ban)協同運作,達成高效率的安全維運。
🔗 延伸閱讀
- 📊 Linux Log 自動化分析與 GoAccess + Fail2Ban 整合實作
- 🧩 Linux systemd 深入解析與啟動流程管理
- 🧱 Linux Firewall + Fail2Ban 安全強化與自動封鎖設定
— WWFandy・系統維運筆記
沒有留言: