Firewalld防火牆基礎

語言: CN / TW / HK

theme: condensed-night-purple

firewalld防火牆

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

  • 支援IPv4、IPv6防火牆設定以及乙太網橋
  • 支援服務或應用程式直接新增防火牆規則介面
  • 擁有兩種配置模式:臨時模式、永久模式

Firewalld和iptables的關係

netfilter

  • 位於Linux核心中的包過濾功能體系
  • 稱為Linux防火牆的“核心態”

Firewalld/iptables

  • CentOS7預設的管理防火牆規則的工具(Firewalld)
  • 稱為Linux防火牆的“使用者態”

Firewalld和iptables的區別

1、對規則的設定不同:

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

2、配置檔案不同:

  • iptables在/etc/sysconfig/iptables中儲存配置;

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

    • /etc/firewalld/中沒有相關區域的配置檔案時,才會載入/usr/lib/firewalld/中的配置檔案。

3、對規則的修改:

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

4、防火牆型別不同:

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

firewalld區域的概念

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

這些區域配置檔案存在於/usr/lib/firewalld/zones目錄中,還有一個目錄/etc/firewalld/zones。firewalld使用規則時,會首先到/etc/firewalld/目錄中查詢,如果可以找到就直接使用,找不到會繼續到/usr/lib/firewalld/目錄中查詢。

firewalld防火牆定義了9個區域

| 區域 | 作用 | | --- | --- | |trusted(信任區域) | 允許所有的傳入流量。 | |public(公共區域) |允許與ssh或dhcpv6-client預定義服務匹配的傳入流量,其餘均拒絕。是新新增網路介面的預設區域。 | |external(外部區域) | 允許與ssh預定義服務匹配的傳入流量其餘均拒絕。| |home(家庭區域) | 允許與ssh、mdns、samba-client或dhcpv6-client預定義服務匹配的傳入流量,其他均拒絕。| |internal(內部區域) | 預設值與home區域相同。| |work(工作區域) |允許與ssh、dhcpv6-client預定義服務匹配的傳入流量,其他均拒絕 | |dmz(隔離區域也稱非軍事區域) |允許與ssh預定義服務匹配的傳入流量,其他均拒絕。 | |block(限制區域) | 拒絕所有傳入流量。| |drop(丟棄區域) | 丟棄所有傳入流量,並且不產生包含icmp的錯誤響應。|

firewalld防火牆的配置方法

1、firewall-config 圖形化工具(生產環境一般只有字元介面,不使用這種方法)

2、firewall-cmd 命令列工具(生產環境中沒有圖形化介面,所以只能在命令列進行配置)

3、編寫 /etc/firewalld 中的配置檔案。

  • Firewalld 會優先使用/etc/firewalld/中的配置,如果不存在配置檔案,則使用/usr/lib/firewalld/中的配置。
  • /etc/firewalld/:使用者自定義配置檔案,需要時可通過從/usr/lib/firewalld/ 中拷貝
  • /usr/lib/firewalld/ :預設配置檔案,不建議修改,若恢復至預設配置,可直接刪除/etc/firewalld/ 中的配置

firewall-config 圖形化工具

image.png

image.png

firewall-cmd 命令列工具

常用的 firewall-cmd 命令選項:

```js  #預設區域  --get-default-zone :顯示當前預設區域  --set-default-zone= :設定預設區域  ​  --get-active-zones :顯示當前正在使用的區域及其網絡卡介面  --get-zones:顯示所有可用的區域  ​  #網路介面  --get-zone-of-interface=ens33 :檢視指定介面ens33繫結的區域  --zone= --add-interface= :為指定介面繫結區域  --zone= --change-interface= :為指定區域更改繫結的網路介面  --zone= --remove-interface= :為指定區域刪除繫結的網路介面  ​  #源地址  --zone= --add-source=[/] :為指定源地址繫結區域  --zone= --change-source=[/] :為指定的區域更改繫結的源地址  --zone= --remove-source=[/] :為指定的區域刪除繫結的源地址  ​  #顯示指定區域的所有規則  --list-all-zones :顯示所有區域及其規則  --zone= --list-all :顯示所有指定區域的所有規則,若不指定區域表示僅對預設的區域操作  ​  #服務管理  --zone= --list-service :顯示指定區域內允許訪問的所有服務  --zone= --add-service= :為指定的區域設定允許訪問的某項服務  --zone= --remove-service= :刪除指定區域已設定的允許訪問的某項服務  ​  #埠管理  --zone= --list-ports:x顯示指定區域內允許訪問的所有埠號  --zone= --add-port=[-portid]/:為指定的區域設定允許訪問的某個埠號/某段埠號(包括協議)  --zone= --remove-port=[-portid]/:刪除指定區域已設定允許訪問的埠號(包括協議)  ​  #icmp協議  --zone= --list-icmp-blocks :顯示指定區域內拒接訪問的所有icmp型別  --zone= --add-icmp-block=:為指定區域設定允許訪問的某項icmp型別  --zone= --remove-icmp-block=刪除指定區域已設定允許訪問的某項icmp型別  firealld-cmd --get-icmptypes :顯示所有icmp型別

```

Firewalld兩種配置模式

執行時配置:

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

永久配置:

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

執行時配置

image.png

image.png

image.png

image.png

image.png

檢視指定區域的所有規則

firewall-cmd --list-all-zones:顯示所有區域及其規則

firewall-cmd --list-all : 不指定區域時,檢視的是預設區域

firewall-cmd --list-all --zone=work:顯示work區域的所有規則

image.png

image.png

服務管理

顯示、新增、刪除指定區域的某個服務

image.png

image.png

image.png

埠管理

新增、刪除某個協議的埠

image.png

永久配置

永久配置不立即生效,需要重啟服務或重新載入後才生效。重啟服務或重新載入時會中斷現有連線。下次重啟後不會丟失,永久存在。

直接進行永久配置

image.png

image.png