Linux Auditd 檔案監控教學:10分鐘上手伺服器變更追蹤

# 點樣用 Linux Auditd 監控伺服器檔案變更?新手 10 分鐘上手教學 做 IT 管理嘅你,有冇試過咁嘅情況:公司部 Linux server 某啲 config file 無啦啦改咗,但冇人認頭?又或者懷疑有人偷偷改過 /etc/passwd 或者 sudoers?今日就同大家介紹一個內建喺 Linux 嘅神器 — **auditd**,等你可以輕鬆追蹤曬所有檔案變更! ## 咩係 ...

Linux Auditd 檔案監控教學:10分鐘上手伺服器變更追蹤 - 文章重點速覽 infographic

# 點樣用 Linux Auditd 監控伺服器檔案變更?新手 10 分鐘上手教學

做 IT 管理嘅你,有冇試過咁嘅情況:公司部 Linux server 某啲 config file 無啦啦改咗,但冇人認頭?又或者懷疑有人偷偷改過 /etc/passwd 或者 sudoers?今日就同大家介紹一個內建喺 Linux 嘅神器 — **auditd**,等你可以輕鬆追蹤曬所有檔案變更!

## 咩係 Auditd?

**Auditd**(Linux Audit Daemon)係 Linux kernel 內建嘅審計系統,可以記錄系統入面發生嘅各種事件,包括檔案存取、系統呼叫、使用者登入等等。佢最大嘅好處係**唔使裝任何額外軟件**,大部份 Linux distro 預設已經有。

對於需要做合規審計(例如 ISO 27001、PCI DSS)嘅公司嚟講,auditd 係必備工具。

## Auditd 安裝同基本設定

首先確認 auditd 係咪已經裝咗:

# Check auditd status
sudo systemctl status auditd

# 如果未裝(Ubuntu/Debian)
sudo apt update && sudo apt install auditd -y

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

裝好之後,啟動同設定開機自動執行:

sudo systemctl enable --now auditd

## 設定 Auditd 監控檔案變更

Auditd 嘅核心設定檔係 `/etc/audit/rules.d/audit.rules`。我哋可以用 `auditctl` 指令動態加入規則,或者直接寫入 rules file。

### 監控特定檔案嘅寫入操作

假設你想監控 `/etc/ssh/sshd_config` 任何改動:

# 加入監控規則(-w = watch, -p wa = write + attribute change)
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_change

參數解釋:
– `-w`:指定要監控嘅檔案路徑
– `-p wa`:監控 write (w) 同 attribute change (a)
– `-k`:設定 key name,方便之後搜尋

### 監控成個目錄

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

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

⚠️ 留意:監控大目錄會產生大量 log,建議只監控關鍵路徑。

### 永久儲存規則

上面用 `auditctl` 加嘅規則 reboot 之後會消失。要永久生效,寫入 rules file:

sudo tee -a /etc/audit/rules.d/audit.rules << 'EOF'
# Monitor critical config files
-w /etc/ssh/sshd_config -p wa -k sshd_config_change
-w /etc/passwd -p wa -k passwd_change
-w /etc/sudoers -p wa -k sudoers_change
-w /etc/crontab -p wa -k cron_change
EOF

# 重新載入規則
sudo systemctl restart auditd

## 查閲 Auditd Log

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

# 搜尋 sshd_config 相關嘅改動
sudo ausearch -k sshd_config_change

# 搜尋最近 30 分鐘嘅事件
sudo ausearch -ts recent

# 用 aureport 睇 summary
sudo aureport -f --summary

### 實用搜尋技巧

# 揾出邊個 user 改過 sudoers
sudo ausearch -k sudoers_change -i | grep uid=

# 睇最近 1 小時所有檔案變更
sudo ausearch -ts $(date -d '1 hour ago' '+%m/%d/%Y %H:%M:%S') -k etc_changes -i

`-i` 參數會將 UID 轉換成 username,方便閲讀。

## 實戰場景:監控 Web Server Config

假設你管理一部 Nginx web server,想確保冇人偷偷改 config:

# 監控 nginx config directory
sudo auditctl -w /etc/nginx/ -p wa -k nginx_config

# 監控 web root(防止網頁被篡改)
sudo auditctl -w /var/www/html/ -p wa -k web_content_change

當有人改過 nginx config 之後,你可以咁樣追查:

sudo ausearch -k nginx_config -i | grep -E "type=SYSCALL|type=PATH"

Output 會顯示邊個 user、咩時間、改咗邊個檔案,清清楚楚。

## 總結

**Auditd** 係一個輕量但強大嘅 Linux 審計工具,唔使額外安裝、唔使錢,已經可以做到基本嘅檔案完整性監控。對於中小企 IT 管理員嚟講,係一個好實用嘅起手方案。

當然,如果你需要更進階嘅功能(例如中央化管理、real-time alerting),可以考慮升級到商業方案,但 auditd 作為第一道防線絕對夠用。

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

聽日繼續同大家分享更多 IT 管理貼士!