09. Ubuntu Server 上的稽核與日誌記錄:全面指南

簡介:為什麼稽核和日誌記錄很重要

Ubuntu Server 上的稽核和日誌記錄對於維護 Ubuntu 伺服器的安全性、可靠性和問責制至關重要。它們可以讓你了解系統活動、幫助發現異常,並且對於遵守 GDPR、HIPAA 或 PCI-DSS 等監管要求至關重要。

然而,許多系統由於擔心磁碟空間消耗或缺乏有效分析資料的工具而沒有啟用稽核。在本文中,我們將解決這些顧慮,並指導你以實用且可擴展的方式實施稽核和日誌記錄。

涵蓋的主題包括:

  • 稽核的實際應用和挑戰。
  • 使用 auditd 追蹤和記錄系統事件。
  • 稽核日誌的磁碟空間規劃。
  • 分析稽核日誌和系統日誌的工具。
  • 使用以下工具設定日誌輪替: logrotate。
  • 進階監控和稽核實踐

上一篇文章:

01. Ubuntu Server 簡介 – SysOSX: AI & Cloud

02. 如何搭建你的第一台 Ubuntu Server:初學者指南 – SysOSX: AI & Cloud

03. 掌握 Ubuntu Server 的 Linux 命令列 – SysOSX: AI & Cloud

04. Ubuntu Server 使用者與權限管理:全面指南 – SysOSX: AI & Cloud

05. Ubuntu Server 網路基礎:全面指南 – SysOSX: AI & Cloud

06. 在 Ubuntu Server 上安裝和管理軟體:完整指南 – SysOSX: AI & Cloud

07.Ubuntu Server 修補程式與更新:全面指南 – SysOSX: AI & Cloud

08. 保護你的 Ubuntu Server:強化與防護的實用步驟 – SysOSX: AI & Cloud



1. 系統稽核的實際應用

為什麼許多系統跳過稽核

儘管稽核功能強大,但許多管理員出於以下原因避免啟用它:

  • 磁碟空間消耗:稽核日誌可能會快速增長,尤其是在繁忙的系統上,佔用大量磁碟空間。
  • 效能開銷:啟用詳細稽核可能會給系統效能帶來輕微開銷。
  • 複雜性:稽核日誌內容繁雜,需要專門的工具進行分析。

如何規劃稽核

磁碟空間規劃

要有效地規劃稽核:

  1. 估算日誌增長量:透過臨時啟用稽核並測量一週內日誌的大小,來監控日誌增長率。 sudo du -sh /var/log/audit/ 使用這些資料計算每日、每週和每月的儲存需求。
  2. 分配專用儲存:將稽核日誌儲存在單獨的分區或磁碟上,以防止日誌佔滿根檔案系統。例如:
    • 為日誌建立一個分區: /var/log/audit。
    • 使用以下工具 lvcreate (邏輯磁碟區管理員),以便在需要時動態擴展儲存空間。
  3. 啟用壓縮:使用 logrotate 壓縮舊的稽核日誌,從而顯著降低儲存需求。
  4. 保留策略:根據組織的需求定義保留策略。例如:
    • 將日誌保留 30 天以便排查問題。
    • 將較舊的日誌歸檔到外部儲存空間,以滿足合規要求。

效能考量

Auditd 對大多數系統的效能影響微乎其微。但是,對於高流量伺服器(例如 Web 伺服器或資料庫伺服器),請在啟用稽核後監控 CPU 和 I/O 使用情況。如有必要:

  • 將稽核規則的範圍限制在關鍵檔案或目錄,而不是監控整個系統。
  • 使用採樣技術降低日誌的產生頻率。

2. 使用 auditd 追蹤和記錄系統事件

工具 auditd 仍然是系統稽核最穩健的解決方案之一。下面是針對實際應用的其他考慮因素。

進階稽核規則

不必稽核每個檔案,而應聚焦關鍵領域:

  • 系統設定檔案:
 sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config_changes
  • 敏感目錄:
sudo auditctl -w /var/www/html -p rwxa -k web_access
  • 使用者活動:
    監控特定使用者或群組:
sudo auditctl -a always,exit -F uid=1001 -F arch=b64 -S execve -k user_commands

分析稽核日誌的工具

稽核日誌可能讓人望而生畏,但有幾種工具可以幫助整理和分析資料:

  1. Aureport:根據稽核日誌產生摘要報告。 sudo aureport --summary
  2. Auditbeat:Elastic 出品的輕量級工具,用於將稽核日誌傳送到集中式 ELK Stack 進行視覺化和分析。
    • 安裝 Auditbeat: sudo apt install auditbeat
    • 將其設定為向 Elasticsearch 或 Logstash 傳送日誌。
  3. Splunk:一款商業日誌分析工具,具備進階搜尋和報告功能。

3. 稽核日誌的磁碟空間規劃

磁碟空間規劃範例

假設:

  • 每天的稽核日誌佔用 500 MB。
  • 日誌每週輪替一次,並壓縮到原始大小的 20%。

磁碟空間計算:

  • 7 天的未壓縮日誌:500 MB×7=3.5 GB500MB×7=3.5GB
  • 30 天的壓縮日誌:500 MB×30×0.2=3 GB500MB×30×0.2=3GB
  • 所需總儲存空間:3.5 GB+3 GB=6.5 GB3.5GB+3GB=6.5GB

至少分配 10 GB,以應對意外的尖峰。


4. 使用以下工具設定日誌輪替: logrotate

日誌輪替對於管理日誌大小至關重要。以下是稽核日誌和系統日誌的進階設定。

輪替稽核日誌

稽核日誌由以下守護進程自動管理。 auditd 要自訂輪替:

  • 編輯以下檔案。 /etc/audit/auditd.conf :
max_log_file = 50   # Maximum size in MB for audit.log
max_log_file_action = rotate  # Rotate logs when size exceeds limit
  • 測試設定:
sudo service auditd restart

輪替其他日誌

對於非稽核日誌,請使用 logrotate:

  • 以下範例: /var/log/syslog:
/var/log/syslog {
    weekly
    rotate 4
    compress
    missingok
    notifempty
    create 0640 root root
}

5. 進階監控和稽核實踐

即時日誌監控

即時監控對於發現關鍵事件至關重要。以下是一些工具和技術:

  1. Logwatch:彙總每日日誌,並透過電子郵件傳送給管理員。 sudo apt install logwatch 在以下檔案中設定它: /etc/logwatch/conf/logwatch.conf。
  2. 集中式日誌管理:
    • Rsyslog:將日誌轉發到中央伺服器。 sudo apt install rsyslog 設定 /etc/rsyslog.conf ,將日誌傳送到遠端伺服器。
    • Graylog:提供基於 Web 的日誌分析介面。
    • ELK Stack:Elasticsearch、Logstash 和 Kibana,用於可擴展的日誌管理。

以安全為重點的監控

  • Fail2ban:監控日誌中的登入失敗嘗試並封鎖 IP。
sudo apt install fail2ban
  • Tripwire:偵測檔案變更,用於入侵偵測。
sudo apt install tripwire

整合警示

使用以下工具為關鍵事件設定警示:

  • Nagios:監控伺服器健康狀況和日誌,發現異常。
  • Prometheus with Grafana:即時追蹤指標和日誌。

日誌檔案的位置

有許多不同的日誌檔案,各自用途不同。當你想要尋找與某件事相關的日誌時,應該先確定最相關的檔案。下面是常見日誌檔案位置的清單。

系統日誌

系統日誌處理的就是 Ubuntu 系統本身,而不是使用者新增的其他應用程式。這些日誌可能包含有關授權、系統守護進程和系統訊息的資訊。

授權日誌

位置: /var/log/auth.log

追蹤授權系統,例如密碼提示、命令 sudo 和遠端登入。

守護進程日誌

位置: /var/log/daemon.log

守護進程是在背景執行的程式,通常無需使用者互動。例如顯示伺服器、SSH 工作階段、列印服務、藍牙等。

偵錯日誌

位置: /var/log/debug

提供來自 Ubuntu 系統和應用程式的偵錯資訊。

核心日誌

位置: /var/log/kern.log

來自 Linux 核心的日誌。

系統日誌

位置: /var/log/syslog

包含有關系統的更多資訊。如果在其他日誌中找不到任何內容,很可能就在這裡。

應用程式日誌

一些應用程式也會在以下目錄中建立日誌。 /var/log下面是一些範例。

Apache 日誌

位置: /var/log/apache2/ (子目錄)

Apache 會在以下子目錄中建立多個日誌檔案。 /var/log/apache2/ 檔案: access.log 記錄為存取檔案而向伺服器發出的所有請求。檔案: error.log 記錄伺服器抛出的所有錯誤。

X11 伺服器日誌

位置: /var/log/Xorg.0.log

X11 伺服器會為你的每個顯示器建立一個單獨的日誌檔案。顯示器編號從零開始,因此你的第一個顯示器(顯示器 0)將記錄到 Xorg.0.log。下一個顯示器(顯示器 1)將記錄到 Xorg.1.log,依此類推。

非人類可讀的日誌

並非所有日誌檔案都是為了供人閱讀而設計的。有些是為了供應用程式解析而製作的。下面是一些範例。

登入失敗日誌

位置: /var/log/faillog

包含有關登入失敗的資訊。你可以使用以下命令查看它。 faillog 。

最近登入日誌

位置: /var/log/lastlog

包含有關最近登入的資訊。你可以使用以下命令查看它。 lastlog 。

登入記錄日誌

位置: /var/log/wtmp

包含其他實用程式用來了解誰已登入的登入資訊。要查看目前登入的使用者,請使用以下命令。 who 。


結論

稽核和日誌記錄對於維護安全可靠的 Ubuntu 伺服器至關重要。透過仔細規劃磁碟空間、使用工具分析日誌以及實施進階監控實踐,你可以克服常見挑戰,並更好地了解系統活動。

無論你是在管理合規要求,還是主動保護伺服器,本文討論的技術和工具都將幫助你制定可擴展且有效的日誌記錄和稽核策略。

預告: Ubuntu Server 系統監控工具

在下一篇文章中,我們將深入探討 監控和效能管理。我們將介紹強大的 Ubuntu Server 系統監控工具,包括以下解決方案: Nagios、 Prometheus、 Grafana和 htop,幫助你追蹤資源使用情況、發現瓶頸並最佳化伺服器效能。

敬請期待,了解如何讓伺服器高效運作,並在潛在問題影響業務之前主動解決它們!

3 thoughts on “09. Audit and Logging on Ubuntu Server: A Comprehensive Guide”

發表留言