Firewalld防火牆基礎

无敌小鲁班發表於2024-05-24

目錄
  • 1.Firewalld概述
  • 2.Firewalld和iptables的關係及區別
  • 3.Firewalld網路區域
    • (1)firewalld防火牆預定義了9個區域
    • (2)firewalld 資料包處理原則
  • 4.Firewalld防火牆的配置方法
    • (1)執行時配置
    • (2)永久配置

1.Firewalld概述

firewalld防火牆是Centos7系統預設的防火牆管理工具,取代了之前的iptables防火牆,也是工作在網路層,屬於包過濾防火牆。

firewalld提供了支援網路區域所定義的網路連線以及介面安全等級的動態防火牆管理工具。 它支援IPv4、IPv6防火牆設定以及乙太網橋(在某些高階服務可能會用到,比如雲端計算), 並且擁有兩種配置模式:執行時配置與永久配置。

2.Firewalld和iptables的關係及區別

(1)firewalld和iptables都是用來管理防火牆的工具(屬於使用者態)來定義防火牆的各種規則功能,內部結構都指向netfilter網路過濾子系統(屬於核心態)來實現包過濾防火牆功能。

(2)firewalld 與 iptables 的區別:

①iptables主要是基於介面,來設定規則,從而判斷網路的安全性。
firewalld是基於區域,根據不同的區域來設定不同的規則,從而保證網路的安全。與硬體防火牆的設定相類似。

②iptables 在 /etc/sysconfig/iptables 中儲存配置,
firewalld 將配置儲存在 /etc/firewalld/(優先載入)和 /usr/lib/firewalld/(預設的配置檔案)中的各種 XML 檔案裡。

③使用 iptables 每一個單獨更改意味著清除所有舊有的規則和從/etc/sysconfig/iptables 裡讀取所有新的規則。(規則修改後會立即生效)
使用 firewalld 卻不會再建立任何新的規則,僅僅執行規則中的不同之處。因此firewalld可以在執行時間內, 改變設定而不丟失現行連線。

④iptables 防火牆型別為靜態防火牆
firewalld 防火牆型別為動態防火牆

區別 firewalld iptables
配置檔案 /etc/firewalld/ (優先載入,儲存使用者自定義的配置) ; /usr/lib/firewalld/ (預設的初始配置) /etc/sysconfig/iptables
對規則的修改 不需要全部重新整理策略,不中斷現有連線 立即生效,可能中斷現有連線
防火牆型別 動態防火牆(在不同區域設定不同規則,可透過更換區域來更改防護策略) 靜態防火牆(所有規則都是配置在表的鏈裡,只能透過修改規則來更改防護策略)

3.Firewalld網路區域

firewalld防火牆為了簡化管理,將所有網路流量分為多個區域(zone)。然後根據資料包的源IP地址或傳入的網路介面等條件將流量傳入相應區域。每個區域都定義了自己開啟或者關閉的埠和服務列表。

(1)firewalld防火牆預定義了9個區域

區域
trusted(信任區域) 允許所有的傳入流量
public(公共區域) 允許與ssh或dhcpv6-client預定義服務匹配的傳入流量,其餘均拒絕。是新新增網路介面的預設區域
external(外部區域) 允許與 ssh 預定義服務匹配的傳入流量,其餘均拒絕。 預設將透過此區域轉發的IPv4傳出流量將進行地址偽裝,可用於為路由器啟用了偽裝功能的外部網路
home(家庭區域) 允許與ssh、mdns、samba-client或dhcpv6-client預定義服務匹配的傳入流量,其餘均拒絕
internal(內部區域) 預設值時與home區域相同
work(工作區域) 允許與 ssh、dhcpv6-client 預定義服務匹配的傳入流量,其餘均拒絕
dmz(隔離區域也稱為非軍事區域) 可實現網路隔離,提供對LAN的有限訪問,並且只允許指定的傳入埠
block(限制區域) 所有傳入的網路連線都被拒絕,只允許傳出的網路連線
drop(丟棄區域) 丟棄所有傳入的網路連線,並不返回任何應答訊息,只允許傳出的網路連線

預設情況下,public區域是預設區域,包含所有介面(網路卡)

(2)firewalld 資料包處理原則

要啟用某個區域,
需要先將區域與 源地址或網路卡介面 關聯繫結(一個區域可以關聯繫結多個源地址或網路卡介面,一個源地址或網路卡介面只能關聯繫結一個區域)

先檢查傳入資料包的源地址,
若源地址與特定區域繫結,則直接使用該區域的規則過濾處理資料包
若源地址與任何一個區域沒有繫結,則使用與入站網路卡繫結的特定區域的規則過濾處理資料包
若也沒有特定區域繫結網路卡介面,則使用預設區域的規則過濾處理資料包

4.Firewalld防火牆的配置方法

(1)執行時配置

實時生效,並持續至Firewalld重新啟動或重新載入配置
不中斷現有連線
不能修改服務配置

執行時配置(會立即生效,但firewalld服務重啟或過載配置後即失效)
firewall-cmd ....
firewall-cmd --runtime-to-permanent       將之前的執行時配置都轉換成永久配置


查
firewall-cmd  --get-default-zone    ##檢視當前預設區域
              --get-active-zones   ##檢視當前已啟用的區域
			  --get-zones       ## 檢視所有可用的區域
			  --list-all-zones      ##檢視所有區域的規則
			  --list-all --zone=區域名    ##檢視指定區域的規則
			  --list-services --zone=區域名  ##檢視指定區域允許訪問的服務列表
			  --list-ports --zone=區域名     ##檢視指定區域允許訪問的埠列表
			  --get-zone-of-interface=網路卡名   ##檢視與網路卡繫結的區域
			  --get-icmptypes      ## 檢視所有icmp型別



增
firewall-cmd --add-interface=網路卡名 --zone=區域名       ##給指定區域新增繫結的網路卡
             --add-source=源地址 --zone=區域名            ## 給指定區域新增源地址
			 --add-service=服務名 --zone=區域名           ## 給指定區域新增允許訪問的服務
			 --add-service={服務名1,服務名2,...} --zone=區域名  ## 給指定區域新增允許訪問的服務列表
			 --add-port=埠/協議 --zone=區域名            ##給指定區域新增允許訪問的埠
			 --add-port=埠1-埠2/協議 --zone=區域名    ##給指定區域新增允許訪問的連續的埠列表
			 --add-port={埠1,埠2,...}/協議 --zone=區域名   ## 給指定區域新增允許訪問的不連續的埠
			 --add-icmp-block=icmp型別 --zone=區域名       ##給指定區域新增拒絕訪問的icmp型別





刪
firewall-cmd --remove-service=服務名 --zone=區域名  
             --remove-port=埠/協議 --zone=區域名
			 --remove-icmp-block=icmp型別 --zone=區域名
			 --remove-interface=網路卡名 --zone=區域名       從指定區域裡刪除繫結的網路卡
			 --remove-source=源地址 --zone=區域名          從指定區域裡刪除繫結的源地址



改
firewall-cmd --set-default-zone                            修改當前預設區域
             --change-interface=網路卡名 --zone=區域名       修改/新增網路卡 繫結給指定區域
             --change-source=源地址 --zone=區域名          修改/新增源地址 繫結給指定區域


(2)永久配置

不立即生效,除非Firewalld重新啟動或重新載入配置
中斷現有連線
可以修改服務配置

永久配置(不會立即生效,需要重新載入配置或重啟firewalld服務)
firewall-cmd ....  --permanent  

firewall-cmd --reload   ##重新載入
systemctl restart firewalld   ##重啟


檔案在
cd /etc/firewalld/zones/
vim 區域名.xml


firewall-cmd --runtime-to-permanent ##將當前的執行時配置寫入規則配置檔案中,使之成為永久性配置

設定地址轉換


相關文章