防火牆基礎Firewalld命令配置

weixin_50344843發表於2020-11-24

防火牆

Firewalld

  • 支援網路區域所定義的網路連結以及介面安全等級的動態防火牆管理工具
  • 支援IPv4,IPv6防火牆設定以及乙太網橋
  • 支援服務或應用程式直接新增防火牆規則介面
  • 擁有兩種配置模式
    • 執行時配置:臨時命令在重啟前有效,重啟後清空
    • 永久配置:配置命令只有在重啟後才能生效 +(–permanent)
      在這裡插入圖片描述

firewalld和iptables的關係

netfilter

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

firewalld/iptables

centos7預設的管理防火牆規則的工具(firewalld)
稱為linux防火牆的“使用者態”

firewalld和iptables的區別

.Firewalldiptables
配置檔案/usr/lib/firewalld 或/etc/firewalld/etc/sysconfig/iptables
對規則的修改不需要全部重新整理策略,不丟失現行連線需要全部重新整理策略,丟失連線
防火牆型別動態防火牆靜態防火牆
Firewalld定義好策略不需要重啟服務需要重啟

firewalld網路區域

區域介紹
區域如同進入主機的安全門,每個區域都具有不同限制成都的規則
可以使用一個或多個區域,但是任何一個活躍區域至少需要關聯地址或介面→網路介面→網路卡
預設情況下,public區域是預設區域,包含所有介面(網路卡)

firewalld資料處理流程

檢查資料來源的源地址

  • 若源地址關聯到特定區域,則執行該區域所指定的規則 #源地址關聯
  • 若源地址未關聯到特定的區域,則使用傳入網路介面的區域並執行該區域所指定的規則 #網路卡關聯區域
  • 若網路介面未關聯到特定的區域,則使用預設區域並執行該區域所指定的規則 #網路卡關聯區域

優先順序 :源地址關聯>網路卡關聯

Firewalld將網路卡對應到不同的區域(zone),zone預設共有九個

drop(丟棄):任何接收的網路資料包都被丟棄,沒有任何回覆。僅能有傳送出去的網路連線。
block(限制):任何接收的網路連線都被IPV4的icmp-host-prohibited資訊和IPV6的icmp6-adm-prohibited資訊所拒絕。
public(公共):在公共區域內使用,不能相信網路內的其他計算機不會對您的計算機造成危害,只能接收經過選取的連線。
external(外部):特別是為路由器啟用了偽裝功能的外部網。您不能信任來自網路的其他計算,不能相信它們不會對您的計算機造成危害,只能接收經過選擇的連線。
dmz(軍事區域):用於您的非軍事區內的電腦,此區域內可公開訪問,可以有限地進入您的內部網路,僅僅接收經過選擇的連線。
work(工作):用於工作區。您可以基本相信網路內的其他電腦不會危害您的電腦。僅僅接收經過選擇的連線。
home(家庭):用於家庭網路。您可以基本信任網路內的其他計算機不會危害您的計算機。僅僅接收經過選擇的連線。
internal(內部):用於內部網路。您可以基本上信任網路內的其他計算機不會威脅您的計算機。僅僅接收經過選擇的連線。
trusted(信任):可接受所有的網路連線。指定其中一個區域為預設區域是可行的。當介面連線加入了NetworkManager,它們就被分配為預設區域。

Firewalld防火牆的配置方法

執行時配置

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

永久配置

  • 不立刻生效,除非Firewalld重新啟動或重新載入配置
  • 中斷現有連線
  • 可以修改服務配置 (永久有效,前提是需要重新載入)

兩種配置模式

firewall-cmd 命令工具有兩種配置模式:

  • 執行時模式(Runtime mode)表示當前記憶體中執行的防火牆配置,在系統或 firewalld 服務重啟、停止時配置將失效
  • 永久模式(Permanent mode)表示重啟防火牆或重新載入防火牆時的規則配置,是永久儲存在配置檔案中的
firewall-cmd 命令工具與配置模式相關的選項有三個。
–reload:重新載入防火牆規則並保持狀態資訊,即將永久配置應用為執行時配置。
–permanent:帶有此選項的命令用於設定永久性規則,這些規則只有在重新啟動
firewalld 或重新載入防火牆規則時才會生效;若不帶有此選項,表示用於設定執行時規則。
–runtime-to-permanent:將當前的執行時配置寫入規則配置檔案中,使之成為永久性

Firewall-config圖形工具

在這裡插入圖片描述

firewall-cmd命令列工具

獲取預定義資訊
firewall-cmd 預定義資訊主要包括三種:

  • 可用的區域
  • 可用的服務
  • 可用的 ICMP 阻塞型別
[root@localhost ~]# firewall-cmd --get-zones    //顯示預定義的區域 
work drop internal external trusted home dmz public block 

[root@localhost ~]# firewall-cmd --get-service   //顯示預定義的服務 
RH-Satellite-6 amanda-client amanda-k5-client baculabacula-client cephceph
mondhcp dhcpv6 dhcpv6-client dnsdocker-registry dropbox-lansyncfreeipa-ldap 
freeipa-ldapsfreeipa-replication ftp high-availability http https imapimaps 
ippipp-clientipseciscsi-target kadminkerberoskpasswdldapldapslibvirt 
libvirt-tlsmdns mosh mountdms-wbtmysqlnfsntpopenvpnpmcdpmproxypmwebapi 
pmwebapis pop3 pop3s postgresqlprivoxy proxy-dhcpptppulseaudiopuppetmaster 
radiusrpc-bindrsyncd samba samba-client sane smtpsmtpssnmpsnmptrap squid ssh 
synergy syslog syslog-tls telnet tftptftp-client tinc tor-socks transmission
clientvdsmvnc-serverwbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server 

[root@localhost ~]# firewall-cmd --get-icmptypes    //顯示預定義的 ICMP 型別 
destination-unreachable echo-reply echo-request parameter-problem redirect router 
-advertisement router-solicitation source-quench time-exceeded timestamp-reply 
timestamp-request 

firewall-cmd --get-icmptypes 命令的執行結果中各種阻塞型別的含義分別如下所示。 
1、 destination-unreachable:目的地址不可達。 
2、 echo-reply:應答回應(pong)。 
3、 parameter-problem:引數問題。 
4、 redirect:重新定向。 
5、 router-advertisement:路由器通告。 
6、 router-solicitation:路由器徵尋。 
7、 source-quench:源端抑制。 
8、 time-exceeded:超時。 
9、 timestamp-reply:時間戳應答回應。 
10、timestamp-request:時間戳請求。

區域管理

使用 firewall-cmd 命令可以實現獲取和管理區域,為指定區域繫結網路介面等功能。
常用選項

1、--get-default-zone 顯示網路連線或介面的預設區域 
2、--set-default-zone=<zone> 設定網路連線或介面的預設區域 
3、--get-active-zones 顯示已啟用的所有區域 
4、--get-zone-of-interface=<interface> 顯示指定介面繫結的區域 
5、--zone=<zone> --add-interface=<interface> 為指定介面繫結區域 
6、--zone=<zone> --change-interface=<interface> 為指定的區域更改繫結的網路介面 
7、--zone=<zone> --remove-interface=<interface> 為指定的區域刪除繫結的網路介面 
8、--list-all-zones 顯示所有區域及其規則 
[--zone=<zone>] --list-all 顯示所有指定區域的所有規則,省略--zone=<zone>時表示僅對預設區域操作

顯示預設區域的所有規則
在這裡插入圖片描述
顯示所有啟用區域
在這裡插入圖片描述

服務管理

為 了 方 便 管 理 , firewalld 預 先 定 義 了 很 多 服 務 , 存 放 在/usr/lib/firewalld/services/ 目錄中,服務通過單個的 XML 配置檔案來指定。service 配置具有以下優點。

  • 通過服務名字來管理規則更加人性化。
  • 通過服務來組織埠分組的模式更加高效,如果一個服務使用了若干個網路埠,則服務的配置檔案就相當於提供了到這些埠的規則管理的批量操作快捷方式。
    常用選項
[–zone=] --list-services 顯示指定區域內允許訪問的所有服務
[–zone=] --add-service= 為指定區域設定允許訪問的某項服務
[–zone=] --remove-service= 刪除指定區域已設定的允許訪問的某項服務
[–zone=] --list-ports 顯示指定區域內允許訪問的所有埠號
[–zone=] --add-port=[-]/ 為指定區域設定允許訪問的某個/某段埠號
(包括協議名)
[–zone=] --remove-port=[-]/ 刪除指定區域已設定的允許訪問的埠號(包括
協議名)
[–zone=] --list-icmp-blocks 顯示指定區域內拒絕訪問的所有 ICMP 型別
[–zone=] --add-icmp-block= 為指定區域設定拒絕訪問的某項 ICMP 型別
[–zone=] --remove-icmp-block= 刪除指定區域已設定的拒絕訪問的某項 ICMP 類 型,省略–zone=時表示對預設區域操作

為預設區域設定允許訪問的服務

[root@localhost ~]# firewall-cmd --list-services #顯示預設區域內允許訪問的所有服務
dhcpv6-clientssh
[root@localhost ~]# firewall-cmd --add-service=http #設定預設區域允許訪問 http 服務success
[root@localhost ~]#firewall-cmd --add-service=https #設定預設區域允許訪問 https 服務
success
[root@localhost ~]# firewall-cmd --list-services
dhcpv6-clientssh https http

為 internal 區域設定允許訪問的服務

[root@localhost ~]# firewall-cmd --zone=internal --add-service=mysql //設定 internal 區域允許訪問 mysql 服務
success
[root@localhost~]#firewall-cmd --zone=internal --remove-service=samba-client //設定 internal 區域不允許訪問 samba-client 服務
success
[root@localhost ~]# firewall-cmd --zone=internal --list-services //顯示 internal 區域內允許訪問的所有服務
sshmdns dhcpv6-client mysql

埠管理

在進行服務配置時,預定義的網路服務可以使用服務名配置,服務所涉及的埠就會自動開啟。但是,對於非預定義的服務只能手動為指定的區域新增埠

例如

  • 執行以下操作即可實現在 internal 區域開啟 443/TCP 埠
[root@localhost ~]# firewall-cmd --zone=internal --add-port=443/tcp
success
  • 若想實現在 internal 區域禁止 443/TCP 埠訪問,可執行以下命令
[root@localhost ~]# firewall-cmd --zone=internal --remove-port=443/tcp
success

firewalld用法示例

ls  /usr/lib/firewalld/services       #可以使用容易理解的名稱表示的所有服務.
firewall-cmd --get-services       #檢視支援的所有服務名稱
firewall-cmd --get-zones           #檢視所有區域     ,一共九個
firewall-cmd --get-default-zone     #檢視當前預設區域
firewall-cmd --get-zone-of-interface=ens33          #檢視指定網路卡所處的區域
firewall-cmd --zone=public --qluery-service=ssh   #檢視指定區域中有沒有相關的服務開放,本命令檢視public區域ssh服務有沒有開放
firewall-cmd --zone=public --query-service=http   #檢視public區域ssh服務有沒有開放
firewall-cmd --list-services         #檢視當前區域允許的服務
firewall-cmd --list-services --zone=public    #檢視指定區域允許的服務,本命令檢視public區域允許的服務
firewall-cmd --list-all --zone=public    #檢視指定區域允許的所有服務
firewall-cmd --list-all-zones         #檢視所有區域允許的服務
flirewall-cmd  --zone=public  --add-service=http --permanent   #永久配置public區域開放http服務
flirewall-cmd  --zone=public  --remove-service=http --permanent   #永久配置public區域刪除http服務
firewall-cmd --reload                 #重新載入配置檔案

相關文章