
# 點樣用 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 管理貼士!



