一、firewalld防火墻有幾個區(qū)域,每個區(qū)域有什么作用,每個區(qū)域添加或刪除規(guī)則有什么影響?
firewalld 是 Linux 系統(tǒng)中動態(tài)管理防火墻的工具,其核心功能是通過 區(qū)域(Zones) 和 服務(wù)(Services) 來控制網(wǎng)絡(luò)流量的訪問權(quán)限。
Firewalld使用區(qū)域來管理不同的網(wǎng)絡(luò)接口和流量。每個區(qū)域有不同的規(guī)則集,根據(jù)接口的信任級別分配不同的區(qū)域。常見的區(qū)域包括public、trusted、internal、external、dmz、work、home等。每個區(qū)域有不同的預(yù)定義規(guī)則,適用于不同的網(wǎng)絡(luò)環(huán)境。public區(qū)域通常用于公共網(wǎng)絡(luò),信任度最低,只允許必要的服務(wù);而trusted區(qū)域信任所有流量。
在某個區(qū)域中添加服務(wù)或端口會允許相應(yīng)的流量,而刪除則會阻止。同時,需要提到區(qū)域之間的優(yōu)先級和規(guī)則覆蓋的問題,比如一個接口只能屬于一個區(qū)域,所以規(guī)則的改變會影響該接口的流量。再比如,將公共接口放在public區(qū)域,并限制SSH訪問,而內(nèi)部網(wǎng)絡(luò)可能使用home或work區(qū)域,允許更多服務(wù)。
1、firewalld 的默認(rèn)區(qū)域
firewalld 默認(rèn)提供 9 個區(qū)域,每個區(qū)域?qū)?yīng)不同的網(wǎng)絡(luò)信任級別和用途:
區(qū)域名稱 信任級別 適用場景 默認(rèn)允許的服務(wù)/端口
public 低 公共網(wǎng)絡(luò)(如互聯(lián)網(wǎng)) SSH、DHCPv6 Client、dhcpv6(僅限 IPv6)
trusted 最高 信任所有流量(內(nèi)部網(wǎng)絡(luò)或物理直連設(shè)備) 所有流量
internal 中 內(nèi)部網(wǎng)絡(luò)(如企業(yè)內(nèi)網(wǎng)) SSH、HTTP、HTTPS、Samba
external 中 對外暴露的網(wǎng)關(guān)或路由器(NAT 轉(zhuǎn)發(fā)) SSH、HTTP、HTTPS
dmz 低 隔離區(qū)(對外公開的服務(wù)器,如 Web 服務(wù)器) SSH、HTTP、HTTPS
work 中 工作網(wǎng)絡(luò)(同事或合作伙伴) SSH、HTTP、HTTPS、CUPS(打印服務(wù))
home 中 家庭網(wǎng)絡(luò) SSH、HTTP、HTTPS、Samba、FTP
block 無 阻止所有傳入連接 無
drop 無 丟棄所有傳入連接(無響應(yīng)) 無
2、每個區(qū)域的作用
(1) public(公共網(wǎng)絡(luò))
用途:默認(rèn)區(qū)域,用于面向互聯(lián)網(wǎng)的接口(如服務(wù)器公網(wǎng)網(wǎng)卡)。
特點(diǎn):僅允許預(yù)定義的少量服務(wù)(如 SSH、DHCPv6)。
典型場景:Web 服務(wù)器、數(shù)據(jù)庫服務(wù)器的公網(wǎng)接口。
(2)trusted(信任區(qū)域)
用途:信任所有流量,通常用于內(nèi)部網(wǎng)絡(luò)或物理直連設(shè)備。
特點(diǎn):允許所有入站和出站流量。
典型場景:內(nèi)部實驗室網(wǎng)絡(luò)、跳板機(jī)。
(3)internal(內(nèi)部網(wǎng)絡(luò))
用途:企業(yè)內(nèi)網(wǎng)或家庭網(wǎng)絡(luò),信任部分流量。
特點(diǎn):允許 SSH、HTTP/HTTPS、Samba 等服務(wù)。
典型場景:企業(yè)內(nèi)部服務(wù)器的私有接口。
(4)external(外部網(wǎng)絡(luò))
用途:對外暴露的網(wǎng)關(guān)或路由器(如 NAT 轉(zhuǎn)發(fā))。
特點(diǎn):允許 SSH、HTTP/HTTPS,通常用于 NAT 和端口轉(zhuǎn)發(fā)。
典型場景:家庭路由器的 WAN 接口。
(5)dmz(隔離區(qū))
用途:對外公開的服務(wù)器(如 Web 服務(wù)器),但與其他內(nèi)部網(wǎng)絡(luò)隔離。
特點(diǎn):僅允許 SSH、HTTP/HTTPS。
典型場景:DMZ 中的 Web 服務(wù)器公網(wǎng)接口。
(6)work(工作網(wǎng)絡(luò))
用途:同事或合作伙伴的網(wǎng)絡(luò),信任程度中等。
特點(diǎn):允許 SSH、HTTP/HTTPS、CUPS(打印服務(wù))。
典型場景:辦公室內(nèi)部網(wǎng)絡(luò)。
(7)home(家庭網(wǎng)絡(luò))
用途:家庭網(wǎng)絡(luò),信任程度較高。
特點(diǎn):允許 SSH、HTTP/HTTPS、Samba、FTP。
典型場景:家庭NAS或家庭服務(wù)器。
(8)block/drop(阻斷/丟棄)
用途:完全禁止網(wǎng)絡(luò)訪問(用于隔離或調(diào)試)。
特點(diǎn):無服務(wù)或端口開放,直接阻斷所有流量。
典型場景:臨時禁用網(wǎng)絡(luò)接口。
3、區(qū)域規(guī)則的影響
1. 添加規(guī)則
允許服務(wù)/端口:
例如,在 public 區(qū)域添加 http 服務(wù),會開放 TCP 80 端口。
firewall-cmd --zone=public --add-service=http --permanent
影響:公網(wǎng)接口的 HTTP 流量被允許,可能增加攻擊面。
刪除規(guī)則:
例如,從 public 區(qū)域刪除 ssh 服務(wù):
firewall-cmd --zone=public --remove-service=ssh --permanent
影響:公網(wǎng)接口的 SSH 連接被拒絕,需通過其他區(qū)域或端口訪問。
2. 區(qū)域切換
接口綁定區(qū)域:
例如,將網(wǎng)卡 eth0 分配到 dmz 區(qū)域:
firewall-cmd --zone=dmz --change-interface=eth0
影響:eth0 接口的流量將遵循 dmz 區(qū)域的規(guī)則(僅允許 SSH/HTTP/HTTPS)。
3. 規(guī)則優(yōu)先級
區(qū)域優(yōu)先級:
firewalld 按區(qū)域優(yōu)先級(從高到低)處理流量,高優(yōu)先級區(qū)域的規(guī)則覆蓋低優(yōu)先級區(qū)域。
例如,若網(wǎng)卡同時屬于 public 和 trusted 區(qū)域(通常不會),以更高優(yōu)先級的規(guī)則為準(zhǔn)。
4.操作建議及驗證規(guī)則
默認(rèn)區(qū)域選擇:
服務(wù)器公網(wǎng)接口:使用 public 區(qū)域,僅開放必要服務(wù)(如 SSH、HTTP/HTTPS)。
內(nèi)部網(wǎng)絡(luò)接口:使用 internal 或 trusted 區(qū)域,開放更多服務(wù)。
避免直接使用 trusted 或 drop:
trusted 區(qū)域無限制,可能暴露敏感服務(wù)。
drop 區(qū)域會直接斷開現(xiàn)有連接,需謹(jǐn)慎操作。
備份配置:
修改前導(dǎo)出當(dāng)前配置:
firewall-cmd --runtime-to-permanent
cp /etc/firewalld/zones/*.xml /backup/
#驗證規(guī)則
查看當(dāng)前區(qū)域規(guī)則:
firewall-cmd --zone=public --list-all
測試連接:
telnet <your-server-ip> 80 # 測試 HTTP 是否開放
總結(jié)
區(qū)域的核心作用:根據(jù)網(wǎng)絡(luò)信任級別,預(yù)定義允許的流量規(guī)則。
規(guī)則操作影響:
添加規(guī)則:開放流量,可能引入風(fēng)險。
刪除規(guī)則:阻斷流量,可能導(dǎo)致服務(wù)不可用。
最佳實踐:
按網(wǎng)絡(luò)環(huán)境選擇合適的區(qū)域(如公網(wǎng)用 public,內(nèi)網(wǎng)用 internal)。
通過富規(guī)則(Rich Rules)進(jìn)一步細(xì)化訪問控制(如 IP 白名單)
二、文件 /etc/firewalld/zones/public.xml
firewalld使用區(qū)域(zones)和服務(wù)(services)來管理網(wǎng)絡(luò)流量。每個區(qū)域有不同的規(guī)則,服務(wù)則是預(yù)定義的規(guī)則集合,允許特定的端口和協(xié)議。
public.xml屬于public區(qū)域,通常是默認(rèn)區(qū)域,適用于公共網(wǎng)絡(luò),如互聯(lián)網(wǎng).
直接刪除或注釋掉或者不包含該服務(wù)。無論哪種情況,結(jié)果都是public區(qū)域不再允許SSH流量。這會導(dǎo)致通過public區(qū)域(比如外部網(wǎng)絡(luò)接口)的SSH連接被拒絕,除非有其他規(guī)則允許,比如富規(guī)則或直接添加的端口。
但需要注意,如果在另一個區(qū)域(如internal)中啟用了ssh服務(wù),并且接口被分配到該區(qū)域,則SSH仍然可用。
此外,如果手動打開了22端口(比如通過),即使沒有服務(wù)條目,端口仍然開放。因此,去掉服務(wù)條目并不一定完全禁止SSH,還要看其他配置。
服務(wù)條目和直接端口開放的差異。服務(wù)條目更易于管理,因為它們使用預(yù)定義的端口和協(xié)議,而手動添加端口需要更多維護(hù)。
如果用戶刪除了服務(wù)條目,但后續(xù)更新firewalld時重新生成配置,可能會恢復(fù)該條目,導(dǎo)致變化被覆蓋。
還需要考慮潛在的影響,比如如果用戶依賴public區(qū)域的SSH訪問,去掉服務(wù)條目會導(dǎo)致無法遠(yuǎn)程連接,必須通過其他方式(如本地控制臺)恢復(fù)配置,建議謹(jǐn)慎操作,確保有備用訪問方式或者在修改前備份配置文件。
總結(jié)來說,涵蓋以下幾點(diǎn):
作用:允許SSH流量通過public區(qū)域。
去掉后的影響:public區(qū)域不再允許SSH,可能導(dǎo)致遠(yuǎn)程連接失敗。
其他可能允許SSH的情況:其他區(qū)域、手動端口開放等。
操作建議:備份配置,檢查其他區(qū)域設(shè)置,確認(rèn)是否有替代規(guī)則。
操作建議
(1) 修改前確保有備用訪問方式
在刪除 <service name="ssh"/> 前,確保已配置其他訪問途徑(如密鑰認(rèn)證、跳板機(jī)或本地控制臺)。
(2) 替代方案:限制而非完全禁用
僅允許特定 IP 訪問 SSH:
使用富規(guī)則替代直接刪除服務(wù),例如:
<!-- 在 public.xml 中添加 -->
<rule family="ipv4">
<source address="192.168.1.0/24"/>
<service name="ssh"/>
</rule>
(3) 檢查其他區(qū)域配置
確認(rèn)服務(wù)器的其他網(wǎng)絡(luò)接口是否分配到了其他區(qū)域(如 trusted),這些區(qū)域可能仍允許 SSH。
(4)驗證
查看當(dāng)前生效的規(guī)則:
firewall-cmd --zone=public --list-all
輸出中若無 services: ssh,則表示 SSH 服務(wù)已從 public 區(qū)域移除。
測試 SSH 連接:
從外部設(shè)備嘗試連接,確認(rèn)是否被拒絕。