🛡 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.xmlsudo firewall-cmd --reload MyService
📌 七、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 的防火牆設計更安全、可維護、效能更高,並避免三者衝突。
沒有留言: