CentOS7系統(tǒng)的Firewalld防火墻基礎(chǔ)詳解

Firewalld簡介

支持網(wǎng)絡(luò)區(qū)域所定義的網(wǎng)絡(luò)鏈接以及接口安全等級的動態(tài)防火墻管理工具,支持IPv4、IPv6防火 墻設(shè)置以及以太網(wǎng)橋,支持服務(wù)或應(yīng)用程序直接添加防火墻規(guī)則接口。

發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認(rèn)真做好每個細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及成都咖啡廳設(shè)計等,在成都網(wǎng)站建設(shè)、成都營銷網(wǎng)站建設(shè)、WAP手機(jī)網(wǎng)站、VI設(shè)計、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計經(jīng)驗(yàn)。

擁有兩種配置模式

1.運(yùn)行時配置

2.永久配置

Firewalld和iptables的關(guān)系

netfilter:

位于Linux內(nèi)核中的包過濾功能體系稱為Linux防火墻的“內(nèi)核態(tài)”

Firewalld/iptables:

CentOS7默認(rèn)的管理防火墻規(guī)則的工具(Firewalld)稱為Linux防火墻的“用戶態(tài)”

CentOS7系統(tǒng)的Firewalld防火墻基礎(chǔ)詳解

Firewalld和iptables的區(qū)別:

Firewalldiptables
配置文件 /us/ib/firewalld/、 /etc/sysconfig/iptables /etc/firewalld/
對規(guī)則的修改 不需要全部刷新策略,不丟失現(xiàn)行連接 需要全部刷新策略,丟失連接
防火墻類型 動態(tài)防火墻 靜態(tài)防火墻

Firewalld網(wǎng)絡(luò)區(qū)域

區(qū)域介紹:

  • 區(qū)域如同進(jìn)入主機(jī)的安全門,每個區(qū)域都具有不同限制程度的規(guī)則;
  • 可以使用一個或多個區(qū)域,但是任何一個活躍區(qū)域至少需要關(guān)聯(lián)源地址或接口;
  • 默認(rèn)情況下,public區(qū)域是默認(rèn)區(qū)域,包含所有接口(網(wǎng)卡)。
區(qū)域描述
drop (丟棄) 任何接收的網(wǎng)絡(luò)數(shù)據(jù)包都被丟棄,沒有任何回復(fù)。僅能有發(fā)送出去的網(wǎng)絡(luò)連接
block (限制) 任何接收的網(wǎng)絡(luò)連接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒絕
public (公共) 在公共區(qū)域內(nèi)使用,不能相信網(wǎng)絡(luò)內(nèi)的其他計算機(jī)不會對您的計算機(jī)造成危害,只能接收經(jīng)過選取的連接
external (外部) 特別是為路由器啟用了偽裝功能的外部網(wǎng)。您不能信任來自網(wǎng)絡(luò)的其他計算,不能相信它們不會對您的計算機(jī)造成危害,只能接收經(jīng)過選擇的連接
dmz (非軍事區(qū)) 用于您的非軍事區(qū)內(nèi)的電腦,此區(qū)域內(nèi)可公開訪問,可以有限地進(jìn)入您的內(nèi)部網(wǎng)絡(luò),僅僅接收經(jīng)過選擇的連接
work (工作) 用于工作區(qū)。您可以基本相信網(wǎng)絡(luò)內(nèi)的其他電腦不會危害您的電腦。僅僅接收經(jīng)過選擇的連接
home (家庭) 用于家庭網(wǎng)絡(luò)。您可以基本信任網(wǎng)絡(luò)內(nèi)的其他計算機(jī)不會危害您的計算機(jī)。僅僅接收經(jīng)過選擇的連接
internal (內(nèi)部) 用于內(nèi)部網(wǎng)絡(luò)。您可以基本上信任網(wǎng)絡(luò)內(nèi)的其他計算機(jī)不會威脅您的計算機(jī)。僅僅接受經(jīng)過選擇的連接
trusted (信任) 可接受所有的網(wǎng)絡(luò)連接

Firewalld數(shù)據(jù)處理流程:

檢查數(shù)據(jù)來源的源地址

  • 若源地址關(guān)聯(lián)到特定的區(qū)域,則執(zhí)行該區(qū)域所指定的規(guī)則;
  • 若源地址未關(guān)聯(lián)到特定的區(qū)域,則使用傳入網(wǎng)絡(luò)接口的區(qū)域并執(zhí)行該區(qū)域所指定的規(guī)則;
  • 若網(wǎng)絡(luò)接口未關(guān)聯(lián)到特定的區(qū)域,則使用默認(rèn)區(qū)域并執(zhí)行該區(qū)域所指定的規(guī)則。

Firewalld防火墻的配置方法

運(yùn)行時配置

  • 實(shí)時生效,并持續(xù)至Firewalld重新啟動或重新加載配置
  • 不中斷現(xiàn)有連接
  • 不能修改服務(wù)配置

永久配置

  • 不立即生效,除非Firewalld重新啟動或重新加載配置
  • 中斷現(xiàn)有連接
  • 可以修改服務(wù)配置

/etc/firewalld/中的配置文件

Firewalld會優(yōu)先使用/etc/firewalld/中的配置,如果不存在配置文件,則使用/usr/lib/firewalld/中的配置

  • /etc/firewalld/:用戶自定義配置文件,需要時可通過從/usr/ib/firewalld/中拷貝
  • /usr/lib/firewalld/:默認(rèn)配置文件,不建議修改,若恢復(fù)至默認(rèn)配置,可直接刪除/etc/firewalld/中的配置

Firewall-config圖形工具

輸入"firewall-config"命令,進(jìn)入圖形工具。

CentOS7系統(tǒng)的Firewalld防火墻基礎(chǔ)詳解

當(dāng)我們配置完畢后,需要重載防火墻才能才能生效,在重載防火墻前一定要將Runtime設(shè)定為永久配置,不然之前配置的運(yùn)行時配置會直接刪除,如果你配的就是永久,直接重載即可。

CentOS7系統(tǒng)的Firewalld防火墻基礎(chǔ)詳解

我們可以選擇配置防火墻規(guī)則的網(wǎng)卡、接口等,同時也能根據(jù)服務(wù)、端口、協(xié)議等進(jìn)行訪問限制。圖形工具簡潔方便,就不多做介紹了。
CentOS7系統(tǒng)的Firewalld防火墻基礎(chǔ)詳解

Firewall-cmd命令行工具

(1)啟動、停止、查看 firewalld 服務(wù)

在安裝 CentOS7 系統(tǒng)時,會自動安裝 firewalld 和圖形化工具 firewall-config。執(zhí)行 以下命令可以啟動 firewalld 并設(shè)置為開機(jī)自啟動狀態(tài)。

[root@localhost ~]# systemctl start firewalld          //啟動 firewalld 
[root@localhost ~]# systemctl enable firewalld    //設(shè)置 firewalld 為開機(jī)自啟動 

如果 firewalld 正在運(yùn)行,通過 systemctl status firewalld 或 firewall-cmd 命令可以查看其運(yùn)行狀態(tài)。

[root@localhost ~]# systemctl status firewalld                //查看狀態(tài)
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2019-10-14 10:04:49 CST; 5h 59min ago
     Docs: man:firewalld(1)
 Main PID: 633 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─633 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

10月 14 10:04:45 localhost.localdomain systemd[1]: Starting firewalld - dynamic fi....
10月 14 10:04:49 localhost.localdomain systemd[1]: Started firewalld - dynamic fir....
10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: ICMP type 'beyond-....
10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: beyond-scope: INVA....
10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: ICMP type 'failed-....
10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: failed-policy: INV....
10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: ICMP type 'reject-....
10月 14 10:04:49 localhost.localdomain firewalld[633]: WARNING: reject-route: INVA....
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# firewall-cmd --state                         //查看狀態(tài)
running
[root@localhost ~]# 

如果想要禁用 firewalld,執(zhí)行以下命令即可實(shí)現(xiàn)。

[root@localhost ~]# systemctl stop firewalld          //停止 firewalld 
[root@localhost ~]#systemctl disable firewalld    //設(shè)置 firewalld 開機(jī)不自啟動

(2)獲取預(yù)定義信息

firewall-cmd 預(yù)定義信息主要包括三種:可用的區(qū)域、可用的服務(wù)以及可用的 ICMP 阻塞類型,具體的查看命令如下所示。

[root@localhost ~]# firewall-cmd --get-zones                   //顯示預(yù)定義的區(qū)域
block dmz drop external home internal public trusted work
[root@localhost ~]# firewall-cmd --get-services              //顯示預(yù)定義的服務(wù)
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client DNS docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql MySQL nfs nrpe ntp open*** ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
[root@localhost ~]# firewall-cmd --get-icmptypes         //顯示預(yù)定義的 ICMP 類型
address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option
[root@localhost ~]# 

firewall-cmd --get-icmptypes 命令的執(zhí)行結(jié)果中各種阻塞類型的含義分別如下所示:

destination-unreachable:目的地址不可達(dá) 
echo-reply:應(yīng)答回應(yīng)(pong)
parameter-problem:參數(shù)問題
redirect:重新定向 
router-advertisement:路由器通告
router-solicitation:路由器征尋
source-quench:源端抑制
time-exceeded:超時
timestamp-reply:時間戳應(yīng)答回應(yīng)
timestamp-request:時間戳請求

(3)區(qū)域管理

使用 firewall-cmd 命令可以實(shí)現(xiàn)獲取和管理區(qū)域,為指定區(qū)域綁定網(wǎng)絡(luò)接口等功能。

選項(xiàng)說明

--get-default-zone 顯示網(wǎng)絡(luò)連接或接口的默認(rèn)區(qū)域 
--set-default-zone=<zone> 設(shè)置網(wǎng)絡(luò)連接或接口的默認(rèn)區(qū)域 
--get-active-zones 顯示已激活的所有區(qū)域 
--get-zone-of-interface=<interface> 顯示指定接口綁定的區(qū)域 
--zone=<zone> --add-interface=<interface> 為指定接口綁定區(qū)域 
--zone=<zone> --change-interface=<interface> 為指定的區(qū)域更改綁定的網(wǎng)絡(luò)接口 
--zone=<zone> --remove-interface=<interface> 為指定的區(qū)域刪除綁定的網(wǎng)絡(luò)接口 
--list-all-zones 顯示所有區(qū)域及其規(guī)則 
[--zone=<zone>] --list-all 顯示所有指定區(qū)域的所有規(guī)則,省略--zone=<zone>時表示僅對默認(rèn)區(qū)域操作

具體操作如下所示

  • 顯示當(dāng)前系統(tǒng)中的默認(rèn)區(qū)域。
[root@localhost ~]# firewall-cmd --get-default-zone 
public
[root@localhost ~]# 
  • 顯示默認(rèn)區(qū)域的所有規(guī)則。
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

[root@localhost ~]#
  • 顯示網(wǎng)絡(luò)接口 ens33 對應(yīng)區(qū)域。
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
public
[root@localhost ~]#
  • 將網(wǎng)絡(luò)接口 ens33 對應(yīng)區(qū)域更改為 internal 區(qū)域并查看。
[root@localhost ~]# firewall-cmd --zone=internal --change-interface=ens33
The interface is under control of NetworkManager, setting zone to 'internal'.
success
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
internal
[root@localhost ~]# firewall-cmd --zone=internal --list-interfaces 
ens33
[root@localhost ~]#  
  • 顯示所有激活區(qū)域。
[root@localhost ~]# firewall-cmd --get-active-zones 
internal
  interfaces: ens33
[root@localhost ~]# 

(4)服務(wù)管理

為 了 方 便 管 理 , firewalld 預(yù) 先 定 義 了 很 多 服 務(wù) , 存 放 在 /usr/lib/firewalld/services/ 目錄中,服務(wù)通過單個的 XML 配置文件來指定。這些配置文件則按以下格式命名:service-name.xml,每個文件對應(yīng)一項(xiàng)具體的網(wǎng)絡(luò)服務(wù),如 ssh 服 務(wù)等。

選項(xiàng)說明

[--zone=<zone>] --list-services 顯示指定區(qū)域內(nèi)允許訪問的所有服務(wù) 
[--zone=<zone>] --add-service=<service> 為指定區(qū)域設(shè)置允許訪問的某項(xiàng)服務(wù) 
[--zone=<zone>] --remove-service=<service> 刪除指定區(qū)域已設(shè)置的允許訪問的某項(xiàng)服務(wù) 
[--zone=<zone>] --list-ports 顯示指定區(qū)域內(nèi)允許訪問的所有端口號 
[--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol> 為指定區(qū)域設(shè)置允許訪問的某個/某段端口號 (包括協(xié)議名) 
[--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocol> 刪除指定區(qū)域已設(shè)置的允許訪問的端口號(包括協(xié)議名) 
[--zone=<zone>] --list-icmp-blocks 顯示指定區(qū)域內(nèi)拒絕訪問的所有 ICMP 類型 
[--zone=<zone>] --add-icmp-block=<icmptype> 為指定區(qū)域設(shè)置拒絕訪問的某項(xiàng) ICMP 類型 
[--zone=<zone>] --remove-icmp-block=<icmptype> 刪除指定區(qū)域已設(shè)置的拒絕訪問的某項(xiàng) ICMP 類型,省略--zone=<zone>時表示對默認(rèn)區(qū)域操作 

具體操作如下所示

  • 為默認(rèn)區(qū)域設(shè)置允許訪問的服務(wù)。
[root@localhost ~]# firewall-cmd --list-services    //顯示默認(rèn)區(qū)域內(nèi)允許訪問的所有服務(wù) 
ssh dhcpv6-client
[root@localhost ~]# firewall-cmd --add-service=http   //設(shè)置默認(rèn)區(qū)域允許訪問 http 服務(wù)
success
[root@localhost ~]# firewall-cmd --add-service=https   //設(shè)置默認(rèn)區(qū)域允許訪問 https 服務(wù)
success
[root@localhost ~]# firewall-cmd --list-services   //顯示默認(rèn)區(qū)域內(nèi)允許訪問的所有服務(wù)
ssh dhcpv6-client http https
[root@localhost ~]#
  • 為 internal 區(qū)域設(shè)置允許訪問的服務(wù)。
[root@localhost ~]# firewall-cmd --zone=internal --add-service=mysql    //設(shè)置 internal 區(qū)域允許訪問 mysql 服務(wù)
success
[root@localhost ~]# firewall-cmd --zone=internal --remove-service=samba-client    //設(shè)置 internal 區(qū)域不允許訪問 samba-client 服務(wù)
success
[root@localhost ~]# firewall-cmd --zone=internal --list-services   //顯示 internal 區(qū)域內(nèi)允許訪問的所有服務(wù) 
ssh mdns dhcpv6-client mysql
[root@localhost ~]# 

(5)端口管理

在進(jìn)行服務(wù)配置時,預(yù)定義的網(wǎng)絡(luò)服務(wù)可以使用服務(wù)名配置,服務(wù)所涉及的端口就會自 動打開。但是,對于非預(yù)定義的服務(wù)只能手動為指定的區(qū)域添加端口。例如,執(zhí)行以下操作 即可實(shí)現(xiàn)在 internal 區(qū)域打開 443/TCP 端口。

[root@localhost ~]# firewall-cmd --zone=internal --add-port=443/tcp
success
[root@localhost ~]# 

若想實(shí)現(xiàn)在 internal 區(qū)域禁止 443/TCP 端口訪問,可執(zhí)行以下命令。

[root@localhost ~]# firewall-cmd --zone=internal --remove-port=443/tcp
success
[root@localhost ~]#

(6)兩種配置模式

前面提到 firewall-cmd 命令工具有兩種配置模式:運(yùn)行時模式(Runtime mode)表示 當(dāng)前內(nèi)存中運(yùn)行的防火墻配置,在系統(tǒng)或 firewalld 服務(wù)重啟、停止時配置將失效;永久模 式(Permanent mode)表示重啟防火墻或重新加載防火墻時的規(guī)則配置,是永久存儲在配置 文件中的。

firewall-cmd 命令工具與配置模式相關(guān)的選項(xiàng)有三個:

--reload:重新加載防火墻規(guī)則并保持狀態(tài)信息,即將永久配置應(yīng)用為運(yùn)行時配置 
--permanent:帶有此選項(xiàng)的命令用于設(shè)置永久性規(guī)則,這些規(guī)則只有在重新啟動firewalld 或重新加載防火墻規(guī)則時才會生效;若不帶有此選項(xiàng),表示用于設(shè)置運(yùn)行時 規(guī)則。 
--runtime-to-permanent:將當(dāng)前的運(yùn)行時配置寫入規(guī)則配置文件中,使之成為永久性 

Firewall-cmd命令總結(jié):

選項(xiàng)說明
--get-default-zone 顯示網(wǎng)絡(luò)連接或接口的默認(rèn)區(qū)域
--set-default-zone= <zone> 設(shè)置網(wǎng)絡(luò)連接或接口的默認(rèn)區(qū)域
--get-active -zones 顯示已激活的所有區(qū)域
--get-zone-of-interface= <interface> 顯示指定接口綁定的區(qū)域
--zone= <zone> --add-interface= <interface> 為指定接口綁定區(qū)域
--zone= <zone> --change-interface= <interface> 為指定的區(qū)域更改綁定的網(wǎng)絡(luò)接口
--zone= <zone> --remove-interface= <interface> 為指定的區(qū)域刪除綁定的網(wǎng)絡(luò)接口
--query-interface= <interface> 查詢區(qū)域中是否包含某接口
--list-all-zones 顯示所有區(qū)域及其規(guī)則
[--zone= <zone>] --list-all 顯示所有指定區(qū)域的所有規(guī)則
[--zone= <zone>] --list-services 顯示指定區(qū)域內(nèi)允許訪問的所有服務(wù)
[--zone= <zone>] --add-service= <service> 為指定區(qū)域設(shè)置允許訪問的某項(xiàng)服務(wù)
[--zone= <zone>] --remove-service= <service> 刪除指定區(qū)域已設(shè)置的允許訪問的某項(xiàng)服務(wù)
[--zone= <zone>] --query-service= <service> 查詢指定區(qū)域中是否啟用了某項(xiàng)服務(wù)
[--zone= <zone>] --list-ports 顯示指定區(qū)域內(nèi)允許訪問的所有端口號
[--zone= <zone>] --add-port= <port>[-<port> ]/ <protocol> [--timeout= <seconds>] 啟用區(qū)域端口和協(xié)議組合,可選配置超時時間
[--zone= <zone>] --remove-port= <port>[-<port>]/<protocol> 禁用區(qū)域端口和協(xié)議組合
[--zone= <zone>] --query-port=<port>[-<port> ]/<protocol> 查詢區(qū)域中是否啟用了端口和協(xié)議組合
[--zone= <zone>] --list-icmp-blocks 顯示指定區(qū)域內(nèi)阻塞的所有ICMP類型
[--zone= <zone>] --add-icmp-block= <icmptype> 為指定區(qū)域設(shè)置阻塞的某項(xiàng)ICMP類型
[--zone= <zone>] --remove-icmp-block= <icmptype> 刪除指定區(qū)域已阻塞的某項(xiàng)ICMP類型
[--zone= <zone>] --query-icmp-block= <icmptype> 查詢指定區(qū)域的ICMP阻塞功能

名稱欄目:CentOS7系統(tǒng)的Firewalld防火墻基礎(chǔ)詳解
URL網(wǎng)址:http://bm7419.com/article40/jdgjeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站排名、網(wǎng)站改版、虛擬主機(jī)網(wǎng)站策劃、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)