🛡️ Linux 系統安全實戰:SELinux、AppArmor、Auditd、Fail2Ban 深度解析
Linux 在企業環境中廣泛使用,而伺服器安全不再只是「防火牆」或「改 SSH Port」這麼簡單。 真正完整的 Linux 安全架構包含:
- 🔐 SELinux — 強制存取控制(MAC)
- 🔐 AppArmor — 檔案路徑為主的應用程式安全框架
- 📜 Auditd — 行為審計、事件追蹤
- 🚫 Fail2Ban — 防暴力破解(SSH / Web / Mail)
本篇將從實務角度深度解析這四大安全框架的定位、差異與最佳實務,協助你打造更完整的 Linux 主機安全策略。
📌 第一章:SELinux — 最強大的強制安全框架(MAC)
SELinux(Security-Enhanced Linux)是 Linux 最高級別的存取控制系統,採用 MAC(Mandatory Access Control)強制存取控制,比傳統的 DAC(chmod / chown)更嚴格。
1.1 SELinux 三個運作模式
| 模式 | 說明 |
|---|---|
| Enforcing | 強制執行規則,阻擋違規行為(預設 & 最安全) |
| Permissive | 不阻擋,只記錄違規行為(用於除錯) |
| Disabled | 完全停用(不建議) |
sestatus
1.2 常見 SELinux 問題:Permission denied(但檔案權限正常)
此時可查:
ausearch -m avc -ts recent
1.3 SELinux 類型(Type / Domain)
每個 process 與檔案都有「安全上下文」:
ls -Z
ps -eZ
例子:
- httpd_t(Apache)
- ssh_t
- var_log_t
1.4 常見修復方式(非常重要)
修復 SELinux 檔案標籤:
restorecon -Rv /var/www/html
允許服務使用特定行為(Boolean):
setsebool -P httpd_can_network_connect on
📌 第二章:AppArmor — 路徑為中心的「輕量安全框架」
AppArmor 是 Ubuntu / Debian 系統預設使用的安全框架,它不像 SELinux 那麼複雜,以「檔案路徑」為核心。
2.1 AppArmor Profiles 概念
每個應用程式都有 Profile,包括:
- 允許讀寫哪些檔案
- 允許執行哪些 System call
- 允許哪些能力(Capabilities)
2.2 查看 Profile
aa-status
2.3 套用 Profile
aa-enforce /etc/apparmor.d/usr.sbin.nginx
2.4 AppArmor 與 SELinux 的差異
| 項目 | SELinux | AppArmor |
|---|---|---|
| 控制模型 | 安全上下文(Context) | 路徑為主(Profile) |
| 複雜度 | 較高 | 較低 |
| 部署難度 | 偏中高 | 較容易 |
| 預設系統 | RedHat / Rocky / Fedora | Ubuntu / Debian |
📌 第三章:Auditd — 行為追蹤與安全審計
Auditd 是 Linux 的審計(日誌偵測)框架,用於監控:
- 檔案存取
- 登入行為
- 系統設定變更
- 安全事件
3.1 啟動 Auditd
systemctl enable --now auditd
3.2 增加一條觀察規則(監控重要檔案)
auditctl -w /etc/passwd -p war -k passwd_changes
代表:
--w:監控路徑
- -p:行為(write / read / attribute)
- -k:事件名稱
3.3 查詢審計紀錄
ausearch -k passwd_changes
3.4 永久規則(/etc/audit/rules.d)
寫入規則檔後重啟 auditd 即可。
📌 第四章:Fail2Ban — 防暴力破解最佳利器
Fail2Ban 會自動讀取 log,若發現暴力破解行為,就會:
- 將 IP 加入封鎖 - 使用 iptables / nftables 阻擋 - 支援 SSH、Web、Mail、FTP、多種服務 - 可自訂 Filter 與 Jail4.1 安裝 Fail2Ban
apt install fail2ban -y
或
yum install fail2ban -y
4.2 啟用 SSH 防暴力破解
建立:/etc/fail2ban/jail.local
內容:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 1h
4.3 查看封鎖與狀態
fail2ban-client status sshd
4.4 Web Server 防禦特例(很常用)
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 3
📌 第五章:四大框架如何搭配?(完整安全架構)
企業常用搭配方式如下:
✔ RedHat / Rocky / Oracle Linux:
- SELinux(核心防護)
- Auditd(審計)
- Fail2Ban(暴力破解防禦)
✔ Ubuntu / Debian:
- AppArmor(預設)
- Auditd(追蹤)
- Fail2Ban(常用)
📌 第六章:最佳實務(企業部署建議)
- 🔒 勿關閉 SELinux,建議使用 Permissive 找問題 → 再切回 Enforcing
- 📜 AppArmor Profile 保持最小授權原則(Least Privilege)
- 🧪 Auditd 對敏感檔案與設定做監控(passwd / sudoers / SSH 設定)
- 🚫 Fail2Ban 監控 SSH + Nginx + Postfix,提升實際防護效果
- 🔄 定期 review 安全 Log(Audit + System Log)
📌 結語
Linux 的安全遠比想像中的更完整:從最底層的強制存取控制(SELinux/AppArmor)、到審計框架(Auditd)、再到暴力破解防禦(Fail2Ban),形成多層次安全防護。 只要妥善設定,就能大幅提高伺服器安全性,避免不必要的入侵與誤用風險。
下一篇將推出: 《Linux 系統攻擊面縮減指南:Sysctl、Kernel Hardening、SSH 配置、Firewall 全面加固》
沒有留言: