1. 程式人生 > 其它 >Firewalld防火牆基礎

Firewalld防火牆基礎

一、firewalld 概述

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

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

  • firewalld提供了支援網路區域所定義的網路連線以及介面安|全等級的動態防火牆管理工具!

它支援IPv4、IPv6防火牆設定以及乙太網橋( 在某些高階服務可能會用到,比如雲計算),
並且擁有兩種配置模式:執行時配置與永久配置。

二、firewalld與iptables 的區別

1、

  • iptables主要是基於介面,來設定規則,從而判斷網路的安全性

  • firewalld是基於區域,根據不同的區域來設定不同的規則,從而保證網路的安全。與硬體防火牆的設定相類似

2、

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

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

3、

  • 使用iptables每一-個單獨更改意味著清除所有舊有的規則和從/etc/sysconfig/iptables裡讀取所有新的規則

  • 使用firewalld卻不會再建立任何新的規則,僅僅執行規則中的不同之處。因此firewalld可以在執行時間內,改變設定而不丟失現行連線

4、

iptables防火牆型別為靜態防火牆

firewalld防火牆型別為動態防火牆

三、firewalld 區域概念

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

firewalld防火牆預定義了9個區域:

1. trusted (信任區域) : 允許所有的傳入流量

2. public(公共區域): 允許與ssh或dhcpv6-client預定義服務匹配的傳入流量,其餘均拒絕。是新新增網路介面的預設區域

3. external (外部區域) : 允許與ssh預定義服務匹配的傳入流量,其餘均拒絕。預設將通過此區域轉發的IPv4傳出流量將進行地址偽裝,可用於為路由器啟用了偽裝功能的外部網路

4. home (家庭區域) : 允許與ssh、ipp-client、 mdns、samba-client 或dhcpv6-client預定義服務匹配的傳入流量,其餘均拒絕

5. internal (內部區域) :預設值時與home區域相同

6. work (工作區域) :允許與ssh、 ipp-client、dhcpv6-client 預定義服務匹配的傳入流量,其餘均拒絕

7. dmz(隔離區域也稱為非軍事區域):允許與ssh預定義服務匹配的傳入流量,其餘均拒絕

8. block (限制區域) :拒絕所有傳入流量

9. drop (丟棄區域) :丟棄所有傳入流量,並且不產生包含ICMP的錯誤響應

區域介紹

• 區域如同進入主機的安全門,每個區域都具有不同限制程度的規則

• 可以使用一個或多個區域,但是任何一個活躍區域至少需要而關聯源地址或介面

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

四、Firewalld資料處理流程

firewalld對於進入系統的資料包,會根據資料包的源IP地址或傳入的網路介面等條件,將資料流量轉入相應區域的防火牆規則。對於進入系統的資料包,首先檢查的就是其源地址

五、Firewalld檢查資料包的源地址的規則

1.若源地址關聯到特定的區域(即源地址或介面繫結的區域有衝突),則執行該區域所制定的規則

2.若源地址未關聯到特定的區域(即源地址或介面繫結的區域沒有衝突),則使用傳入網路介面的區域並執行該區域所制定的規則

3.若網路介面也未關聯到特定的區域(即源地址或介面都沒有繫結特定的某個區域),則使用預設區域並執行該區域所制定的規則

六、Firewalld 防火牆的配置方法

1.使用firewalld-cmd 命令列工具

2.使用firewalld-config 圖形工具

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

systemctl start firewalld.service

執行時配置

• 實時生效,並持續至Firewalld重 新啟動或重新載入配置

• 不中斷現有連線

• 不能修改服務配置

永久配置

• 不立即生效,除非Firewalld重 新啟動或重新載入配置

• 中斷現有連線

• 可以修改服務配置

1、常用的firewalld-cmd 命令選項

--get-default-zone :顯示當前預設區域
--set-default-zone=<zone> :設定預設區域

--get-active-zones: 顯示當前正在使用的區域及其對應的網絡卡介面
--get-zones :顯示所有可用的區域

--get-zone-of-interface=<interface> :顯示指定介面繫結的區域
--zone=<zone> --add-interface=<interface> :為指定介面繫結區域
--zone=<zone> --change-interface=<interface> :為指定的區域更改繫結的網路介面
--zone=<zone> --remove-interface=<interface> :為指定的區域刪除繫結的網路介面

--zone=<zone> --add-source=<source> [/<mask>] :為指定源地址繫結區域
--zone=<zone> --change-source=<source> [/<mask>] :為指定的區域更改繫結的源地址
--zone=<zone> --remove-source=<source>[/ <mask>] :為指定的區域刪除繫結的源地址

--list-all-zones :顯示所有區域及其規則
[--zone=<zone>] --list-all :顯示所有 指定區域的所有規則,省略--zone=<zone>時 表示僅對預設區域操作

[--zone=<zone>] --list-services :顯示指定區域內允許訪問的所有服務
[--zone=<zone>] --add-service=<service> :為指定區域設定允許訪問的某項服務
[--zone=<zone>] --remcve-service=<service> :刪除指定區域已設定的允許訪問的某項服務

[--zone=<zone>] --list-ports :顯示指定區域內允許訪問的所有埠號
[--zone=<zone>] --add-port=<portid> [-<portid>]/<protocol> :為指定區域設定允許訪問的某個/某段埠號(包括協議名)
[--zone=<zone>] --remove-port=<portid> [-<portid>]/<protocol> :刪除指定區域已設定的允許訪問的埠號( 包括協議名)

[--zone=<zone>] --list-icmp-blocks :顯示指定區域內拒絕訪問的所有ICMP 型別
[--zone=<zone>] --add- icmp-block=<icmptype> :為指定區域設定拒絕訪問的某項ICMP 型別
[--zone=<zone>] --remove-icmp-block=<icmptype> :刪除 指定區域已設定的拒絕訪問的某項ICMP型別

firewall-cmd --get-icmptypes :顯示所有ICMP 型別

2、區域管理

(1)顯示當前系統中的預設區域
firewall-cmd --get-default-zone

(2)顯示預設區域的所有規則
firewall-cmd --list-all

(3)顯示當前正在使用的區域及其對應的網絡卡介面
firewall-cmd --get-active -zones

(4)設定預設區域
firewall-cmd --set-default-zone=home
firewall-cmd --get-default-zone

3、服務管理

(1)檢視預設區域內允許訪問的所有服務
firewall-cmd --list-service

(2)新增httpd服務到public區域
firewall-cmd --add-service=http --zone=public

(3)檢視public區域已配置規則
firewall-cmd --list-all --zone=public

(4)刪除public區域的httpd服務
firewall-cmd --remove-service=http --zone=public

(5)同時新增httpd、https 服務到預設區域,設定成永久生效
firewall-cmd --add-service=http --add-service=https --permanent
firewall-cmd --add-service={http, https, ftp} --zone=internal
firewall-cmd --reload
firewall-cmd --list-all
  • 新增使用 --permanent選項表示設定成永久生效,需要重新啟動firewalld服務或執行firewall-cmd --reload命令

  • 重新載入防火牆規則時才會生效。若不帶有此選項,表示用於設定執行時規則,但是這些規則在系統或firewalld服務重啟、停止時配置將失效

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

4、埠管理

(1)允許TCP的443埠到internal 區域
firewall-cmd --zone=internal --add-port=443/tcp
firewall-cmd --list-all --zone=internal

(2)從internal區域將TCP的443埠移除
firewall-cmd --zone=internal --remove-port=443/tcp

(3) 允許UDP的2048~2050埠到預設區域
firewall-cmd -- add-port=2048-2050/udp
firewall-cmd --list-all