# 用 Linux Auditd 監控檔案存取:5 分鐘 Set 好一套簡易檔案完整性檢查
做 IT 嘅你一定遇過呢個情況:Server 上面啲 config file 無啦啦俾人改咗,或者某個敏感檔案俾人 access 過但完全唔知係邊個做嘅。今日就同大家介紹一個 Linux 內建嘅神器 — **auditd**,等你可以輕鬆監控檔案存取,唔使裝任何額外軟件。
## 咩係 Auditd?
Auditd 係 Linux kernel 嘅審計子系統,可以記錄系統上面嘅安全相關事件。佢最常用嘅功能就係**檔案存取監控** — 你可以 set rule 去監視特定檔案或者目錄,任何 read、write、execute、attribute change 都會被記錄低。
最正嘅係:auditd 幾乎所有 Linux distribution 都內建,CentOS、RHEL、Ubuntu、Debian 全部用得。
## Step 1:安裝同啟動 Auditd
大多數 distro 已經預裝,如果冇嘅話:
# Ubuntu/Debian
sudo apt update && sudo apt install auditd -y
# RHEL/CentOS
sudo yum install audit -y
啟動服務同 set 佢開機自動 run:
sudo systemctl enable auditd
sudo systemctl start auditd
sudo systemctl status auditd
見到 `active (running)` 就搞掂。
## Step 2:加 Audit Rule 監控檔案
假設你想監控 `/etc/ssh/sshd_config` 呢個關鍵 config file,任何寫入操作都要記錄:
# 監控 sshd_config 嘅寫入同屬性變更
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_change
參數解釋:
– `-w`:指定要監控嘅檔案路徑
– `-p wa`:監控 write (w) 同 attribute change (a)
– `-k`:設定一個 key 名,方便之後 search log
如果你想監控成個 `/etc/` 目錄(小心,會好多 log):
sudo auditctl -w /etc/ -p wa -k etc_changes
## Step 3:令 Rule 永久生效
上面用 `auditctl` 加嘅 rule 係 temporary 嘅,reboot 就會消失。要永久保存,就要寫入 `/etc/audit/rules.d/`:
sudo tee /etc/audit/rules.d/file-monitor.rules << 'EOF'
# 監控 SSH config
-w /etc/ssh/sshd_config -p wa -k sshd_config_change
# 監控 sudoers
-w /etc/sudoers -p wa -k sudoers_change
# 監控 passwd 同 shadow
-w /etc/passwd -p wa -k identity_changes
-w /etc/shadow -p wa -k identity_changes
EOF
然後 restart auditd 令新 rule 生效:
sudo systemctl restart auditd
## Step 4:查閲 Audit Log
所有 audit event 會記錄喺 `/var/log/audit/audit.log`。你可以用 `ausearch` 去 filter:
# 揾返 sshd_config 相關嘅 event
sudo ausearch -k sshd_config_change
# 睇今日嘅所有 event
sudo ausearch --start today
# 睇特定時間範圍
sudo ausearch --start 08/13/2026 09:00:00 --end 08/13/2026 18:00:00
如果想 generate 一個靚啲嘅 report:
# 用 aureport 睇檔案相關 event summary
sudo aureport -f --start today
# 睇所有 key 嘅 summary
sudo aureport -k --start today
## Step 5:實戰例子 — 檢測可疑檔案修改
假設你想知有冇人偷偷改過 `/etc/passwd`:
# 搜尋 passwd 相關 event
sudo ausearch -f /etc/passwd --start today
# 如果揾到可疑 event,睇詳細資料
sudo ausearch -f /etc/passwd -i --start today
`-i` 參數會將 UID 轉換成 username,方便閲讀。Output 會顯示:
– 邊個 user(auid)
– 咩時間(time)
– 咩 process(exe)
– 做咗咩操作(syscall)
## 進階 Tips
**1. 避免 Log 爆炸 — Set Buffer Size**
預設 auditd 嘅 buffer 可能唔夠,特別係 monitor 好多檔案嗰陣:
# /etc/audit/auditd.conf
# 加大 buffer 到 8192
buffer_size = 8192
**2. 配合 Logrotate**
Audit log 會好快變大,記得 set logrotate:
sudo tee /etc/logrotate.d/auditd << 'EOF'
/var/log/audit/audit.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
postrotate
/sbin/service auditd restart 2>/dev/null || true
endscript
}
EOF
**3. 集中管理 — 轉送 Log 去 SIEM**
如果你公司用緊 Splunk 或者 ELK,可以將 audit log forward 過去做 centralized monitoring:
# 安裝 audisp-json 或者直接用 filebeat 讀 /var/log/audit/audit.log
## 總結
Auditd 係一個輕量但強大嘅檔案監控工具,唔使裝 agent、唔使額外 license,Linux 內建就有。對於需要 compliance(PCI-DSS、ISO 27001)嘅環境,auditd 更加係必備。
**Key takeaways:**
– `auditctl -w` 加 rule,`-p wa` 監控寫入同屬性變更
– Rule 寫入 `/etc/audit/rules.d/` 永久保存
– `ausearch -k` 同 `aureport` 做 log analysis
– 記得 set logrotate 避免 disk full
🔗 參考資料:NVD NIST 漏洞資料庫
下次有人問你「點樣知道邊個改過個 config file」,你識做啦!
#Server #技術分享 #ssh #安全 #監控




