🔥 Linux 安全強化完整指南:SELinux、AppArmor、Auditd、Fail2Ban 一次搞懂
Linux 在企業環境中扮演核心角色,無論是 Web Server、資料庫、容器平台、虛擬化平台(如 Proxmox、KVM)、CI/CD Pipeline,資安都成為不可忽略的基礎。 本篇為 百科級 Linux 安全完整指南,整合 4 大核心安全機制:
- SELinux:最嚴格的 Mandatory Access Control(MAC)
- AppArmor:較易管理的檔案路徑型安全框架
- Auditd:系統行為稽核、事件追蹤
- Fail2Ban:暴力破解防護、SSH/服務封鎖
這篇文章將從架構、用途、設定示例到企業級最佳實務一次說明。
📌 Linux 安全架構總覽(ASCII 示意)
Linux Server Security Architecture ---------------------------------------------------- | Layer 1:基礎存取控制(DAC) | - User / Group / Permission | - sudo, chmod, chown | | Layer 2:強制存取控制(MAC) | - SELinux(標籤型) | - AppArmor(路徑型) | | Layer 3:事件稽核(Audit) | - auditd:記錄所有安全相關事件 | | Layer 4:入侵防禦(Service Protection) | - Fail2Ban:防暴力破解、自動封鎖 IP ---------------------------------------------------- 四者互補形成完整安全模型
🧱 一、SELinux — 最嚴格的 MAC 系統
SELinux(Security-Enhanced Linux)由 NSA 開發,使用「標籤」控制每個 Process、File 的安全上下文,是 Linux 世界最嚴格的安全框架。
📍 1. SELinux 三種模式
| 模式 | 說明 |
|---|---|
| Enforcing | 全面強制,阻擋一切違規存取(企業預設) |
| Permissive | 不阻擋,只記錄 Log(用於除錯) |
| Disabled | 完全關閉(不建議) |
📍 2. 檢查 SELinux 狀態
sestatus getenforce
📍 3. 切換模式
# 設為 Enforcing sudo setenforce 1 # 設為 Permissive sudo setenforce 0
永久變更(/etc/selinux/config):
SELINUX=enforcing
📍 4. SELinux 上下文(Context)
ls -Z /var/www/html -rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
若檔案沒有正確 Context → Apache/Nginx 會拒絕存取。
修正 Context:
sudo restorecon -Rv /var/www/html
📍 5. 常見服務對應的 SELinux Type
- httpd:
httpd_sys_content_t - MySQL:
mysqld_db_t - SSH:
ssh_port_t
🧩 二、AppArmor — 適合 Ubuntu 的路徑型 MAC
AppArmor 為 Ubuntu / Debian 預設 MAC 系統,比 SELinux 更容易管理。 透過「Profile」定義每個服務可讀寫的檔案與行為。
📍 1. 查看程式 Profile
aa-status
📍 2. 啟用或停用 Profile
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx sudo aa-disable /etc/apparmor.d/usr.sbin.nginx
📍 3. AppArmor Profile 結構(範例)
/usr/sbin/nginx {
# 可讀寫資料
/var/www/html/ r,
/var/www/html/** r,
# 禁止讀寫 /etc/shadow
/etc/shadow r,
}
AppArmor 的管理方式對新手更友善,且不易誤封服務。
📝 三、Auditd — 系統稽核與行為追蹤
Auditd 是 Linux 的事件稽核系統,可以用來記錄:
- 誰修改了 /etc/passwd?
- 是否有人讀取敏感檔案?
- 是否執行可疑指令?
📍 1. 安裝
sudo apt install auditd sudo systemctl enable --now auditd
📍 2. 監控檔案變更(範例)
sudo auditctl -w /etc/passwd -p wa -k passwd_watch
查看稽核紀錄:
sudo ausearch -k passwd_watch
📍 3. 監控所有 sudo 行為
sudo auditctl -w /usr/bin/sudo -p x -k sudo_exec
📍 4. 永久規則(/etc/audit/rules.d/)
-w /etc/shadow -p rwxa -k shadow_edit
🛡 Fail2Ban — SSH 與服務暴力破解防護
Fail2Ban 會根據 Log 判斷是否有人暴力破解伺服器(SSH、Nginx、Postfix…)。 符合條件後 → 自動封鎖 IP。
📍 1. 安裝
sudo apt install fail2ban
📍 2. 啟用 SSH 保護
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
編輯:
[sshd] enabled = true port = ssh maxretry = 5 bantime = 3600 findtime = 600
📍 3. 查看被封鎖 IP
sudo fail2ban-client status sshd
🏢 企業級 Linux 安全最佳實務(2025)
- SSH 必須:禁止 root 登入、改 Port、使用金鑰登入
- 所有服務應有對應的 SELinux / AppArmor Profile
- Auditd 必須監控 /etc/passwd、/etc/shadow、sudo
- Fail2Ban 必須啟用 SSH + 反向代理保護
- Web Server 建議使用:反向代理 + WAF(如 Nginx)
- 使用 ZFS snapshot 保護 Web / Config
📌 結語
Linux 安全並非依靠單一工具,而是多層防護: DAC → MAC(SELinux / AppArmor)→ 稽核(Auditd)→ 防爆(Fail2Ban)。 本篇提供你一套完整的企業級安全架構,可立即部署在任何 Linux 伺服器中。
💬 留下你的觀點,讓討論更精彩!
你目前的 Linux 伺服器有啟用哪種安全框架? 在 SELinux、AppArmor、Auditd 或 Fail2Ban 上遇過哪些問題? 歡迎留言,一起交流最佳實務!
沒有留言: