而在CentOS 7及更高版本中,Firewalld成為了默認的防火墻管理工具,取代了傳統的iptables
Firewalld不僅繼承了iptables的功能,還通過引入區域(zone)的概念和動態更新規則的能力,使得防火墻配置更加直觀和靈活
本文將深入探討Linux Firewalld的配置方法,幫助讀者更好地掌握這一強大的工具
一、Firewalld概述 Firewalld是Red Hat公司開發的動態防火墻管理工具,旨在提供比iptables更直觀和易于管理的界面
Firewalld不僅支持命令行接口(CLI),還提供了圖形用戶界面(GUI)和D-Bus接口,方便用戶和管理員進行配置
它工作在網絡層,主要功能是管理網絡連接和防止未經授權的訪問
相較于iptables,Firewalld具有以下顯著優勢: 1.動態更新:Firewalld支持在運行時更改配置,而無需重新加載所有規則,從而保持現有連接的穩定性
2.區域管理:Firewalld引入了區域的概念,通過定義不同區域的安全策略來簡化配置過程
3.豐富的配置接口:除了命令行工具,Firewalld還提供了圖形界面和D-Bus接口,降低了配置難度
二、Firewalld區域概念 Firewalld防火墻為了簡化管理和提高靈活性,引入了區域(zone)的概念
區域是一組預定義的防火墻規則集,用于決定如何處理通過特定網絡接口或源自特定IP地址的數據包
Firewalld防火墻預定義了九個區域,每個區域都有其特定的用途和默認規則: 1.trusted(信任區域):允許所有的傳入流量,不進行任何限制
2.public(公共區域):默認用于新添加的網絡接口,允許SSH和DHCPv6客戶端的流量,其余均拒絕
3.external(外部區域):類似于公共區域,但增加了對傳出流量的地址偽裝功能,適用于路由器外部網絡
4.home(家庭區域):允許SSH、mDNS、Samba客戶端和DHCPv6客戶端的流量,其余均拒絕
5.internal(內部區域):默認規則與家庭區域相同,適用于受信任的內部網絡
6.work(工作區域):允許SSH和DHCPv6客戶端的流量,其余均拒絕,適用于工作環境
7.dmz(隔離區域/非軍事區域):僅允許SSH流量,適用于需要較高安全隔離的環境
8.block(限制區域):拒絕所有傳入流量,但會發送ICMP錯誤響應
9.drop(丟棄區域):丟棄所有傳入流量,不發送任何響應,適用于需要極高隱蔽性的場景
管理員可以根據實際需求和網絡環境,配置和調整區域及其規則,以實現最佳的安全策略
三、Firewalld數據包處理流程 對于進入系統的數據包,Firewalld會根據以下步驟進行處理: 1.檢查源地址:Firewalld會首先檢查數據包的源IP地址
如果源地址已經關聯到特定的區域(即源地址或接口已明確綁定到某個區域),則直接應用該區域的規則
2.檢查網絡接口:如果源地址未關聯到特定的區域,Firewalld會接著檢查數據包傳入的網絡接口
如果網絡接口已綁定到某個區域,則應用該區域的規則
3.使用默認區域:如果源地址和網絡接口都未關聯到特定的區域,Firewalld將使用默認區域(默認情況下為public區域)的規則來處理數據包
這一流程確保了無論數據包來自何處,Firewalld都能根據相應的規則集進行處理,從而提供靈活且強大的網絡保護
四、Firewalld配置方法 Firewalld的配置可以通過命令行工具、圖形用戶界面或直接編輯配置文件來完成
以下是幾種常見的配置方法: 1. 使用firewall-cmd命令行工具 `firewall-cmd`是Firewalld的主要命令行工具,通過它可以管理和配置Firewalld
以下是一些常用的`firewall-cmd`命令選項: 查詢與設置默認區域: bash firewall-cmd --get-default-zone 獲取默認的區域名稱 firewall-cmd --set-default-zone=public 設置默認區域為public 查看區域信息: bash firewall-cmd --list-all-zones 列出所有區域及其規則 firewall-cmd --zone=public --list-all 列出public區域的所有規則 管理接口與區域綁定: bash firewall-cmd --zone=public --change-interface=eth0 將eth0接口分配到pu