熱門分類
載入中…
目錄0%

🔥 Linux 安全強化完整指南:SELinux、AppArmor、Auditd、Fail2Ban 一次搞懂

    🔥 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 上遇過哪些問題? 歡迎留言,一起交流最佳實務!

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級