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