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

🛡 Linux 實戰防禦:Firewalld、iptables 與 nftables 的整合策略與最佳安全架構

    🛡 Linux 實戰防禦:Firewalld、iptables 與 nftables 的整合策略與最佳安全架構

    在現代 Linux 系統中,防火牆工具包括 iptables、nftables 與 firewalld。 很多人不知道應該使用哪一個、三者是否會衝突、以及如何在企業環境建立一個穩定又安全的 Firewall 架構。

    本文將用最完整的方式帶你理解三者的差異、相容性、整合方式與實戰策略,並提供實際架構圖、設定範例與最佳實務。


    📌 一、Firewalld、iptables、nftables 的角色與差異

    防火牆工具 定位 特色
    iptables 傳統防火牆後端 成熟穩定,但規則難維護、效能有限
    nftables 新世代防火牆(iptables 的繼承者) 效能更高、語法統一、取代 iptables
    firewalld 前端管理框架(API) 適合企業、系統管理,自動使用 nftables

    自 RHEL / CentOS 8 起,firewalld 已正式切換到 nftables backend,因此 firewalld 与 nftables 不會衝突。


    📌 二、三者的整合關係(ASCII 架構圖)

    防火牆完整架構
    ---------------------------------
               firewalld
               (控制 API 層)
                     |
                     v
                 nftables
               (後端核心)
                     |
                     v
             Netfilter / Kernel
      

    重點:

    • Firewalld 是前端工具,負責管理 zones、services、runtime/permanent 設定
    • nftables 是真正的後端執行者
    • iptables 在新系統會轉為 nftables 相容層

    因此在 2023~2025 年的 Linux 環境中,最推薦的組合是: Firewalld(前端) + nftables(後端)


    📌 三、你的 Linux 系統現在使用哪種 backend?(快速確認)

    sudo firewall-cmd --state
    sudo firewall-cmd --info-zone=public
    
    # 查看 firewalld backend
    sudo firewall-cmd --system-info
    
    # 查看 nftables 是否運作中
    sudo nft list ruleset
    
    # 查看 iptables 是否轉為 nft backend
    sudo iptables -L -n --wait
      

    若你看到 nft 字樣,代表系統已切換到 nftables。


    📌 四、最佳安全策略:Firewalld + nftables(企業架構)

    在企業環境中,建議使用 Firewalld 來管理防火牆,並讓 nftables 作為後端執行者。

    ✔ 管理員只操作 firewalld(簡單)

    sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
    sudo firewall-cmd --reload
      

    ✔ 系統後端由 nftables 自動生成規則(效能高)

    sudo nft list ruleset
      

    這樣可以避免人工管理 iptables 的複雜度,也能避免規則互相衝突。


    📌 五、Firewalld 常用 Zone 設計(最佳實務)

    Zone 用於限制不同網段的權限,建議如下:

    • public:對 Internet 開放(最安全、限制最多)
    • internal:內網,僅允許特定服務
    • trusted:完全信任,例如管理 VLAN
    • drop:完全封鎖,不回應

    範例:把管理 VLAN 設定為 trusted

    sudo firewall-cmd --zone=trusted --add-source=10.10.0.0/24 --permanent
    sudo firewall-cmd --reload
      

    📌 六、Firewalld 現代化服務管理(services)

    不必再手動寫每個 port,可以直接使用「服務模板」:

    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=https --permanent
    sudo firewall-cmd --reload
      

    你也可以新增自訂服務:

    sudo nano /etc/firewalld/services/myservice.xml
    
    
      MyService
      
    
    
    sudo firewall-cmd --reload
      

    📌 七、iptables 與 nftables 共存會不會衝突?

    答案:在新系統中不會。

    iptables 指令會自動轉換成 nftables 規則。 唯一不建議的情況:

    • ❌ 同時大量寫 iptables 手動規則 + 使用 firewalld
    • ❌ 人工編輯 /etc/sysconfig/iptables + firewalld

    若你要用 firewalld,就 不要寫 iptables rules。 若你要純 nftables,就 不要用 firewalld


    📌 八、企業實戰架構:三層 Firewall 設計

    Layer 1:基礎防火牆(firewalld)
        └── ports、services、zones
    
    Layer 2:細粒度策略(nftables 原生)
        └── 限制流量大小、port-range、狀態檢查
    
    Layer 3:應用層保護
        └── Fail2Ban、WAF、Rate Limit
      

    這種架構可確保:

    • 效能最佳
    • 規則乾淨、不互相衝突
    • 符合現代 Linux(RHEL 8+ / Ubuntu 22.04+)架構

    📌 九、完整 Firewalld + nftables 安全基礎配置(建議)

    sudo systemctl enable firewalld --now
    sudo firewall-cmd --set-default-zone=public
    
    # SSH 限制
    sudo firewall-cmd --zone=public --add-port=22/tcp --permanent
    
    # 限定管理 VLAN
    sudo firewall-cmd --zone=trusted --add-source=10.10.0.0/24 --permanent
    
    # 使用服務模板
    sudo firewall-cmd --zone=public --add-service=https --permanent
    sudo firewall-cmd --zone=public --add-service=http --permanent
    
    sudo firewall-cmd --reload
      

    最後檢查 nftables 規則:

    sudo nft list ruleset
      

    📌 十、結論:你應該採用什麼架構?

    🔥 最推薦(企業環境):Firewalld + nftables

    • 管理簡單(Zone、服務模板)
    • 規則清楚、結構化
    • 效能高(nftables backend)
    • 與 SELinux、Fail2Ban、Auditd 完全相容

    🔥 若你是進階使用者:純 nftables

    ❌ 不建議新系統使用大量 iptables 規則(會慢、難維護)

    使用 Firewalld 作為前端、nftables 作為後端, 就能讓 Linux 的防火牆設計更安全、可維護、效能更高,並避免三者衝突。

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級