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

🧩 Linux 安全強化實戰:Firewalld、SELinux 與 Fail2Ban 整合指南

    🧩 Linux 安全強化實戰:Firewalld、SELinux 與 Fail2Ban 整合指南

    在企業級 Linux 環境中,安全防護不應只靠單一機制。 本篇將從 FirewalldSELinuxFail2Ban 三者的協同運作出發, 帶你一步步建立多層防禦架構,兼顧動態封鎖、權限隔離與服務持續運行。

    📘 一、Firewalld:區域化防火牆管理

    Firewalld 是 RHEL / CentOS / Rocky 的預設防火牆框架, 以「zone」為核心概念,能針對不同介面或服務設定安全層級。

    # 檢查當前 zone 與啟用狀態
    sudo firewall-cmd --get-active-zones
    sudo firewall-cmd --get-default-zone
    
    # 新增服務允許
    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=ssh --permanent
    
    # 重新載入設定
    sudo firewall-cmd --reload
    
    # 自訂 port 範例
    sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
      
    💡 建議:為不同介面分配專屬 zone(如:外網 public、內網 internal), 並在 /etc/firewalld/zones/ 下持久化自訂 XML 配置。

    🔐 二、SELinux:權限隔離與防範內部入侵

    SELinux(Security-Enhanced Linux)透過安全上下文控制程序與檔案存取, 有效阻止服務被提權或竄改。雖然許多使用者選擇關閉它,但正確設定能極大化系統防護。

    # 查看當前模式
    getenforce
    # 永久修改為 enforcing
    sudo setenforce 1
    sudo vi /etc/selinux/config
    SELINUX=enforcing
    
    # 查詢被封鎖的操作記錄
    sudo ausearch -m avc -ts recent
    sudo sealert -a /var/log/audit/audit.log
      

    若應用因 SELinux 封鎖而失效,可利用 audit2allow 自動生成允許規則:

    sudo cat /var/log/audit/audit.log | audit2allow -M mypolicy
    sudo semodule -i mypolicy.pp
      

    🧱 三、Fail2Ban 整合 Firewalld 動態防護

    透過 action 腳本,Fail2Ban 可與 Firewalld 動態整合,達成即時封鎖與自動解封。

    # 編輯 jail.local(僅示意)
    [sshd]
    enabled = true
    filter  = sshd
    action  = firewallcmd-ipset
    logpath = /var/log/secure
    maxretry = 5
    bantime  = 900
      

    檢查整合狀態:

    sudo fail2ban-client status
    sudo firewall-cmd --info-ipset=fail2ban-sshd
      
    🔎 說明:
    • firewallcmd-ipset 會建立動態 IP 集合(ipset),並由 Firewalld 接管封鎖。
    • 封鎖規則不會在 reboot 後遺失,確保持續防護。

    ⚙️ 四、三者整合架構示意

    • Firewalld:靜態防護(預設 zone、服務允許)。
    • Fail2Ban:動態封鎖(即時反應異常行為)。
    • SELinux:內層強制控管(防止程式越權)。
    [外部攻擊] → Firewalld → Fail2Ban(自動封鎖 IP)
                          ↓
                   SELinux(防止提權)
                          ↓
                   systemd(穩定運作)
      

    🧭 五、行動清單

    ✅ 確認 Firewalld zone 與服務配置正確
    ✅ 啟用 SELinux 並使用 audit2allow 處理誤封
    ✅ 於 Fail2Ban action 中啟用 firewallcmd-ipset
    ✅ 驗證封鎖 IP 是否同步反映於 ipset
    ✅ 建立每日封鎖報告(crontab + fail2ban-client)
      

    📘 結語

    Linux 的安全性並非來自單一指令,而是多層協同的結果。 透過 Firewalld 管理網路邊界、SELinux 保護內部資源、Fail2Ban 動態封鎖攻擊, 你就能建立兼顧彈性與穩定的伺服器安全防線。


    🔗 延伸閱讀

    — WWFandy・Linux 安全強化筆記

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級