# 用 Linux Auditd 監控系統檔案變更:IT 管理員必學嘅安全審計技巧
做 IT 管理員,最怕就係有人偷偷改咗重要設定檔而你懵然不知。無論係內部員工誤操作定係外部入侵者搞鬼,冇審計記錄就等於蒙住眼行路。今日同大家介紹 Linux 內置嘅 **auditd** 審計系統,教你點樣用佢嚟監控關鍵檔案嘅變更,建立一套完整嘅檔案完整性監控機制。
## Auditd 係乜嘢嚟?
**Auditd**(Linux Audit Daemon)係 Linux 核心內置嘅審計子系統,可以記錄系統入面發生嘅各種事件,包括檔案存取、系統呼叫、使用者登入等等。佢唔需要安裝第三方軟件,基本上所有主流 Linux distribution 都內置咗,係最輕量級嘅安全審計方案。
同市面上嘅 EDR 或者 SIEM 方案唔同,auditd 直接喺 kernel level 運作,效能開銷極低,而且記錄嘅資訊非常詳盡,包括邊個使用者、邊個 process、幾時、做咗乜嘢操作,全部一清二楚。
## 安裝同基本設定
大部份 Linux distro 都已經預載咗 auditd,如果冇嘅話可以用 package manager 安裝:
# Ubuntu/Debian
sudo apt install auditd -y
# RHEL/CentOS/Rocky Linux
sudo dnf install audit -y
# 啟動服務同設定開機自動執行
sudo systemctl enable --now auditd
安裝完之後,可以用以下 command 確認 auditd 係咪正常運作:
sudo systemctl status auditd
sudo auditctl -s
`auditctl -s` 會顯示 auditd 嘅目前狀態,包括 backlog limit、lost events 等關鍵資訊。
## 設定檔案監控規則
Auditd 嘅核心係規則(rules),透過 `auditctl` 或者 `/etc/audit/rules.d/` 入面嘅設定檔嚟定義要監控啲乜。以下係幾個最常用嘅檔案監控規則:
### 監控 /etc/passwd 同 /etc/shadow
呢兩個檔案係 Linux 系統嘅命脈,任何改動都要記錄:
# 監控 /etc/passwd 嘅寫入同屬性變更
sudo auditctl -w /etc/passwd -p wa -k identity_changes
# 監控 /etc/shadow 嘅寫入同屬性變更
sudo auditctl -w /etc/shadow -p wa -k identity_changes
`-w` 指定要監控嘅檔案路徑,`-p wa` 表示監控 write 同 attribute change,`-k` 係一個自訂嘅 key,方便之後搜尋。
### 監控 SSH 設定檔
SSH 設定檔被竄改係常見嘅攻擊手法:
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_changes
### 監控 Cron Jobs
攻擊者經常透過 cron 嚟建立 persistence:
sudo auditctl -w /etc/crontab -p wa -k cron_changes
sudo auditctl -w /var/spool/cron/ -p wa -k cron_changes
### 將規則永久化
上面用 `auditctl` 加嘅規則係暫時性嘅,reboot 之後會消失。要永久保存,需要寫入 `/etc/audit/rules.d/`:
sudo tee /etc/audit/rules.d/99-file-monitor.rules << 'EOF'
# 身份認證相關檔案
-w /etc/passwd -p wa -k identity_changes
-w /etc/shadow -p wa -k identity_changes
-w /etc/group -p wa -k identity_changes
# SSH 設定
-w /etc/ssh/sshd_config -p wa -k sshd_config_changes
# Cron 排程
-w /etc/crontab -p wa -k cron_changes
-w /var/spool/cron/ -p wa -k cron_changes
# Sudo 設定
-w /etc/sudoers -p wa -k sudo_changes
-w /etc/sudoers.d/ -p wa -k sudo_changes
EOF
# 重新載入規則
sudo augenrules --load
## 查閲審計記錄
Auditd 嘅記錄會寫入 `/var/log/audit/audit.log`,你可以用 `ausearch` 同 `aureport` 兩個工具嚟搜尋同分析:
### 用 ausearch 搜尋特定事件
# 搜尋同 identity_changes 相關嘅事件
sudo ausearch -k identity_changes
# 搜尋今日發生嘅所有事件
sudo ausearch --start today
# 搜尋特定使用者嘅操作
sudo ausearch -ua terry
# 搜尋失敗嘅事件(例如 permission denied)
sudo ausearch --success no
### 用 aureport 產生摘要報告
# 產生檔案存取摘要報告
sudo aureport -f
# 產生使用者登入摘要報告
sudo aureport -l
# 產生異常事件報告
sudo aureport -an
# 指定時間範圍
sudo aureport -f --start today
## 實戰場景:偵測可疑檔案變更
假設你想知道有冇人偷偷改過 `/etc/passwd`,可以咁做:
# 搜尋過去 24 小時內 /etc/passwd 嘅所有變更
sudo ausearch --start yesterday --end now -f /etc/passwd -i
`-i` 參數會將 UID 轉換成使用者名稱,令輸出更加易讀。輸出會顯示邊個使用者、用咗邊個 command、喺邊個 terminal、幾時做咗改動,非常詳盡。
## 進階技巧:配合 Logrotate 管理審計日誌
Auditd 嘅 log 可以好快變到好大,建議設定 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
## 總結
**Auditd** 係一個強大又輕量嘅安全審計工具,唔需要額外花錢買商業方案就可以做到基本嘅檔案完整性監控。對於中小企 IT 管理員嚟講,呢個係一個性價比極高嘅選擇。當然,如果你需要更進階嘅功能(例如中央化管理、即時警報、同 SIEM 整合),可以考慮商業方案,但 auditd 絕對係一個好嘅起點。
🔗 參考資料:NVD NIST 漏洞資料庫
記住:安全審計唔係 optional,而係必須。你永遠唔會知道邊個喺背後搞緊你啲檔案,直到你開始記錄為止。
#技術分享 #Linux #安全 #IT教學 #監控




