Linux Auditd 審計系統新手教學:監控伺服器檔案變更完整指南

# 用 Linux Auditd 監控伺服器檔案變更:新手入門教學 做 IT 嘅你一定遇過呢個情況:老細問「邊個改過個 config file?」或者「個 server 幾時俾人掂過?」如果你冇 set 審計(audit),基本上就係大海撈針。今日就同大家介紹 Linux 內置嘅 auditd 工具,教你點樣用佢嚟監控關鍵檔案變更,等你可以隨時追查到邊個做過啲乜。 ## 乜嘢係 Auditd? A...

Linux Auditd 審計系統新手教學:監控伺服器檔案變更完整指南 - 文章重點速覽 infographic

# 用 Linux Auditd 監控伺服器檔案變更:新手入門教學

做 IT 嘅你一定遇過呢個情況:老細問「邊個改過個 config file?」或者「個 server 幾時俾人掂過?」如果你冇 set 審計(audit),基本上就係大海撈針。今日就同大家介紹 Linux 內置嘅 auditd 工具,教你點樣用佢嚟監控關鍵檔案變更,等你可以隨時追查到邊個做過啲乜。

## 乜嘢係 Auditd?

Auditd 係 Linux 核心自帶嘅審計系統,可以記錄系統入面嘅安全相關事件,包括檔案存取、系統呼叫(syscall)、使用者登入等等。佢唔使裝第三方軟件,基本上所有主流 Linux distribution(RHEL、Ubuntu、Debian)都內置咗。

Auditd 嘅最大優勢係佢喺 kernel level 運作,效能開銷極低,而且記錄非常詳細 — 包括邊個使用者、咩時間、用咩指令、改咗咩檔案,全部有齊。

## 安裝同啟用 Auditd

大部分 Linux distro 已經預裝咗 auditd,如果冇嘅話可以用套件管理員安裝:

# RHEL / CentOS / Rocky Linux
sudo dnf install audit -y

# Ubuntu / Debian
sudo apt install auditd -y

安裝完之後,啟動 auditd 服務同設定開機自動啟動:

sudo systemctl start auditd
sudo systemctl enable auditd
sudo systemctl status auditd

見到 `active (running)` 就代表 auditd 已經成功運行緊。

## 設定 Auditd 監控規則

Auditd 嘅核心係「規則」(rules),你透過 `auditctl` 指令去定義要監控啲乜。規則分兩種:**檔案監控**同**系統呼叫監控**。

### 監控關鍵檔案變更

假設你想監控 `/etc/ssh/sshd_config` 呢個 SSH 設定檔,任何寫入或屬性變更都要記錄:

sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_change

參數解釋:
– `-w`:指定要監控嘅檔案路徑
– `-p wa`:監控 write(寫入)同 attribute change(屬性變更)
– `-k`:設定一個 key 名,方便之後搜尋

如果你想監控成個 `/etc/` 目錄:

sudo auditctl -w /etc/ -p wa -k etc_changes

⚠️ 留意:監控成個目錄會產生大量 log,建議只監控真正需要嘅關鍵路徑。

### 常用監控權限組合

| 參數 | 意思 |
|——|——|
| `r` | 讀取(read) |
| `w` | 寫入(write) |
| `x` | 執行(execute) |
| `a` | 屬性變更(attribute change) |

例如監控 `/var/log` 目錄嘅寫入同屬性變更:

sudo auditctl -w /var/log/ -p wa -k log_changes

## 將規則永久化

用 `auditctl` 加嘅規則係暫時嘅,reboot 之後會消失。要永久保存,需要寫入 `/etc/audit/rules.d/` 目錄:

sudo nano /etc/audit/rules.d/custom.rules

加入以下內容:

-w /etc/ssh/sshd_config -p wa -k sshd_config_change
-w /etc/passwd -p wa -k passwd_change
-w /etc/shadow -p wa -k shadow_change
-w /var/log/ -p wa -k log_changes

然後重新載入規則:

sudo augenrules --load
sudo systemctl restart auditd

## 查閲審計記錄

Auditd 嘅 log 預設存放喺 `/var/log/audit/audit.log`。你可以直接用 `ausearch` 指令去搜尋特定事件。

### 按 key 搜尋

# 搜尋所有 sshd_config 相關變更
sudo ausearch -k sshd_config_change

# 顯示最近 10 條記錄
sudo ausearch -k sshd_config_change --start recent -i

`-i` 參數會將 UID、時間等轉換成可讀格式。

### 按時間範圍搜尋

# 搜尋今日嘅記錄
sudo ausearch --start today -i

# 搜尋特定時間範圍
sudo ausearch --start 08/10/2026 '08:00:00' --end 08/10/2026 '18:00:00' -i

### 生成報告

`aureport` 可以幫你生成摘要報告:

# 檔案變更摘要
sudo aureport -f -i

# 使用者登入摘要
sudo aureport -l -i

# 異常事件報告
sudo aureport --anomaly -i

## 實戰場景:追查可疑檔案變更

假設你發現 `/etc/ssh/sshd_config` 被人改過,想追查係邊個做嘅:

sudo ausearch -k sshd_config_change -i | grep -E "uid=|exe=|name="

輸出會顯示類似:

type=SYSCALL ... uid=root ... exe="/usr/bin/nano" ...
type=PATH ... name="/etc/ssh/sshd_config" ...

咁你就知道係 root 用 nano 改過個檔案,仲有精確到毫秒嘅時間戳。

## 效能考量同最佳實踐

Auditd 雖然高效,但過多規則仍然會影響效能。以下係幾個建議:

1. **只監控關鍵路徑** — 唔好成個 filesystem 咁 monitor
2. **定期 rotate log** — `/etc/audit/auditd.conf` 可以設定 log 大小上限同 rotate 策略
3. **配合 log 管理工具** — 將 audit log forward 去 SIEM(例如 Splunk、ELK)做集中分析
4. **測試規則先** — 喺 production 部署前,先喺 staging 環境測試規則嘅效能影響

## 總結

🔗 參考資料:NVD NIST 漏洞資料庫

Auditd 係一個強大又免費嘅 Linux 審計工具,設定簡單、效能開銷低、記錄詳盡。對於需要合規(例如 PCI-DSS、ISO 27001)嘅環境,auditd 更加係必備嘅基礎設施。今日學咗基本嘅檔案監控設定,已經足夠應付大部分日常運維需求。下次再同大家深入講 syscall 層面嘅審計同自動化警報設定!