Linux網(wǎng)絡(luò)服務(wù)之firewalld防火墻

Linux網(wǎng)絡(luò)服務(wù)之firewalld防火墻

1.前言

? 上一篇文章中(Linux防火墻)我們主要介紹了防火墻的概念,主要針對(duì)軟件防火墻(Linux防火墻)進(jìn)行詳細(xì)介紹。本文主要將對(duì)Centos7系統(tǒng)中的firewalld防火墻進(jìn)行相關(guān)闡述。

創(chuàng)新互聯(lián)公司是一家以網(wǎng)絡(luò)技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護(hù)、網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站備案、服務(wù)器租用、域名注冊(cè)、軟件開發(fā)、小程序制作等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務(wù),是一家有著豐富的互聯(lián)網(wǎng)運(yùn)營(yíng)推廣經(jīng)驗(yàn)的科技公司,有著多年的網(wǎng)站建站經(jīng)驗(yàn),致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個(gè)面向全國(guó)乃至全球的業(yè)務(wù)窗口:建站服務(wù)熱線:18980820575

2.firewalld防火墻與iptables防火墻聯(lián)系與區(qū)別

? firewalld防火墻是Centos7版本系統(tǒng)默認(rèn)的防火墻管理工具,取代了iptables防火墻,與iptables防火墻一樣也屬于典型的包過濾防火墻或稱之為網(wǎng)絡(luò)層防火墻,都屬于用戶態(tài)(又稱用戶空間(User Space)),內(nèi)部結(jié)構(gòu)都指向netfilter這一強(qiáng)大的網(wǎng)絡(luò)過濾子系統(tǒng)(屬于內(nèi)核態(tài)),用以實(shí)現(xiàn)包過濾防火墻的功能。

主要區(qū)別如下:

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

? firewalld的優(yōu)點(diǎn)在于支持動(dòng)態(tài)更新以及加入了防火墻的“zone”概念,firewalld防火墻同時(shí)支持ipv4和ipv6地址。

? 本文將分別從字符管理工具和圖形化管理工具介紹firewalld防火墻。

3.區(qū)域的概念

?

區(qū)域描述
drop(丟失) 任何接收的網(wǎng)絡(luò)數(shù)據(jù)包都被丟棄,沒有任何回復(fù)。僅能有發(fā)送出去的網(wǎng)絡(luò)練連接
block(限制) 任何接收的網(wǎng)絡(luò)連接都被IPv4的icmp-host-prohibited信息和icmp6-adm-prohibited信息所拒絕
public (公共) 在公共區(qū)域內(nèi)使用,不能相信網(wǎng)絡(luò)內(nèi)的其他計(jì)算機(jī)不會(huì)對(duì)您的計(jì)算機(jī)造成危害,只能接收經(jīng)過選取的連接
external (外部) 特別是為路由器啟用了偽裝功能的外部網(wǎng)。您不能信任來自網(wǎng)絡(luò)的其他計(jì)算,不能相信它們不會(huì)對(duì)您的計(jì)算機(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)的其他電腦不會(huì)危害您的電腦。僅僅接收經(jīng)過選擇的連接用于家庭網(wǎng)絡(luò)。
home (家庭) 您可以基本信任網(wǎng)絡(luò)內(nèi)的其他計(jì)算機(jī)不會(huì)危害您的計(jì)算機(jī)。僅僅接收經(jīng)過選擇的連接
internal (內(nèi)部) 用于內(nèi)部網(wǎng)絡(luò)。您可以基本上信任網(wǎng)絡(luò)內(nèi)的其他計(jì)算機(jī)不會(huì)危害您的計(jì)算機(jī)。僅僅接受經(jīng)過選擇的連接
trusted (信任) 可接受所有的網(wǎng)絡(luò)連接

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

區(qū)域介紹

(1)區(qū)域如同進(jìn)入主機(jī)的安全門,每個(gè)區(qū)域都具有不同限制程度的規(guī)則
(2)可以使用一個(gè)人或多個(gè)區(qū)域,但是任何一個(gè)活躍區(qū)域至少需要關(guān)聯(lián)源地址或接口
(3)默認(rèn)情況下,public區(qū)域是默認(rèn)區(qū)域,包含所有接口(網(wǎng)卡)

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

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

5.Firewalld防火墻的配置方法

運(yùn)行時(shí)配置

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

永久配置

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

6.具體操作實(shí)例

Firewall-config圖形工具與Firewall-cmd命令行工具都可以對(duì)其進(jìn)行設(shè)置
/etc/firewalld/中的配置文件

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

  • /etc/firewalld/ :用戶自定義配置文件,需要時(shí)可通過從/usr/ib/firewalld/中拷貝
  • /usr/lib/firewalldl: 默認(rèn)配置文件,不建議修改,若恢復(fù)至默認(rèn)配置,可直接刪除/etc/firewalld/中的配置
[root@localhost ~]# cd /etc/firewalld/
[root@localhost firewalld]# ls
firewalld.conf  icmptypes  lockdown-whitelist.xml  zones
helpers         ipsets     services
[root@localhost firewalld]# cd /usr/lib/firewalld/
[root@localhost firewalld]# ls
helpers  icmptypes  ipsets  services  xmlschema  zones

1)防火墻的啟動(dòng)停止查看命令

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl start firewalld
[root@localhost ~]# systemctl enable firewalld  //開機(jī)自啟動(dòng)
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2019-12-10 18:40:56 CST; 32s ago
     Docs: man:firewalld(1)
 Main PID: 53010 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─53010 /usr/bin/python -Es /usr/sbin/firewalld --nofork --no...

12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
12月 10 18:40:56 localhost.localdomain firewalld[53010]: WARNING: COMMA...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# firewall-cmd --state   //cmd設(shè)置
running 
root@localhost ~]# systemctl stop firewalld //停止 firewalld 
[root@localhost ~]#systemctl disable firewalld //設(shè)置 firewalld 開機(jī)不自啟動(dòng) 

2)下面我們結(jié)合圖形化界面管理工具(firewall-config)來對(duì)照驗(yàn)證使用命令行操作(firewall-cmd)

首先,我們?cè)诿钚休斎雈irewall-config將會(huì)彈出如下的窗口界面:

Linux網(wǎng)絡(luò)服務(wù)之firewalld防火墻

1.獲取預(yù)定義信息

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

[root@localhost ~]# firewall-cmd --get-zones //顯示預(yù)定義的區(qū)域 
work drop internal external trusted home dmz public block 
[root@localhost ~]# firewall-cmd --get-service //顯示預(yù)定義的服務(wù) 
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-wbtMySQLnfsntpopen***pmcdpmproxypmwebapi 
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 //顯示預(yù)定義的 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 命令的執(zhí)行結(jié)果中各種阻塞類型的含義分別如下所示。
? destination-unreachable:目的地址不可達(dá)。
? echo-reply:應(yīng)答回應(yīng)(pong)。
? parameter-problem:參數(shù)問題。
? redirect:重新定向。
? router-advertisement:路由器通告。
? router-solicitation:路由器征尋。
? source-quench:源端抑制。
? time-exceeded:超時(shí)。
? timestamp-reply:時(shí)間戳應(yīng)答回應(yīng)。
? timestamp-request:時(shí)間戳請(qǐng)求。

2.區(qū)域管理

--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>時(shí)表示僅

對(duì)默認(rèn)區(qū)域操作

具體操作如下所示。

(1)顯示當(dāng)前系統(tǒng)中的默認(rèn)區(qū)域。

[root@localhost ~]# firewall-cmd --get-default-zone

public

(2)顯示默認(rèn)區(qū)域的所有規(guī)則。

[root@localhost ~]# firewall-cmd --list-all

public (active)

target: default

icmp-block-inversion: no

interfaces: ens33

sources:

services: dhcpv6-client ssh

ports:

protocols:

masquerade: no

forward-ports:

sourceports:

icmp-blocks:

rich rules:

(3)顯示網(wǎng)絡(luò)接口 ens33 對(duì)應(yīng)區(qū)域。

[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33

public

(4)將網(wǎng)絡(luò)接口 ens33 對(duì)應(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 --zone=internal --list-interfaces

ens33

[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33

internal

(5)顯示所有激活區(qū)域。

[root@localhost ~]# firewall-cmd --get-active-zones

internal

interfaces: ens33

4)服務(wù)管理

為 了 方 便 管 理 , firewalld 預(yù) 先 定 義 了 很 多 服 務(wù) , 存 放 在

/usr/lib/firewalld/services/ 目錄中,服務(wù)通過單個(gè)的 XML 配置文件來指定。這些配置文件則按以下格式命名:service-name.xml,每個(gè)文件對(duì)應(yīng)一項(xiàng)具體的網(wǎng)絡(luò)服務(wù),如 ssh 服

務(wù)等。與之對(duì)應(yīng)的配置文件中記錄了各項(xiàng)服務(wù)所使用的 tcp/udp 端口。在最新版本的

firewalld 中默認(rèn)已經(jīng)定義了 70 多種服務(wù)供我們使用,對(duì)于每個(gè)網(wǎng)絡(luò)區(qū)域,均可以配置允

許訪問的服務(wù)。當(dāng)默認(rèn)提供的服務(wù)不適用或者需要自定義某項(xiàng)服務(wù)的端口時(shí),我們需要將

service 配置文件放置在 /etc/firewalld/services/ 目錄中。service 配置具有以下優(yōu)點(diǎn)。

? 通過服務(wù)名字來管理規(guī)則更加人性化。

? 通過服務(wù)來組織端口分組的模式更加高效,如果一個(gè)服務(wù)使用了若干個(gè)網(wǎng)絡(luò)端口,則服

務(wù)的配置文件就相當(dāng)于提供了到這些端口的規(guī)則管理的批量操作快捷方式。

表 1-3 列出了 firewall-cmd 命令區(qū)域中服務(wù)管理的常用選項(xiàng)說明。

表 1-3 firewall-cmd 命令區(qū)域中服務(wù)管理的常用選項(xiàng)說明

選項(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)允許訪問的所有端口號(hào)

[--zone=<zone>]

--add-port=<portid>[-<portid>]/<protocol>

為指定區(qū)域設(shè)置允許訪問的某個(gè)/某段端口號(hào)

(包括協(xié)議名)

[--zone=<zone>]

--remove-port=<portid>[-<portid>]/<protocol>

刪除指定區(qū)域已設(shè)置的允許訪問的端口號(hào)(包括

協(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>時(shí)表示對(duì)默認(rèn)區(qū)域操作

具體操作如下所示。

(1)為默認(rèn)區(qū)域設(shè)置允許訪問的服務(wù)。

[root@localhost ~]# firewall-cmd --list-services

ssh dhcpv6-client //顯示默認(rèn)區(qū)域內(nèi)允許訪問的所有服務(wù)

[root@localhost ~]# firewall-cmd --add-service=http

//設(shè)置默認(rèn)區(qū)域允許訪問 http 服務(wù)success 在圖形化界面中會(huì)發(fā)現(xiàn)public中HTTP服務(wù)打上了√了。

[root@localhost ~]#firewall-cmd --add-service=https

//設(shè)置默認(rèn)區(qū)域允許訪問 https 服務(wù)

success

[root@localhost ~]# firewall-cmd --list-services

dhcpv6-clientssh https http

(2)為 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ù)

sshmdns dhcpv6-client mysql

5)端口管理

在進(jìn)行服務(wù)配置時(shí),預(yù)定義的網(wǎng)絡(luò)服務(wù)可以使用服務(wù)名配置,服務(wù)所涉及的端口就會(huì)自

動(dòng)打開。但是,對(duì)于非預(yù)定義的服務(wù)只能手動(dòng)為指定的區(qū)域添加端口。例如,執(zhí)行以下操作

即可實(shí)現(xiàn)在 internal 區(qū)域打開 443/TCP 端口。

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

success

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

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

success

6)兩種配置模式

前面提到 firewall-cmd 命令工具有兩種配置模式:運(yùn)行時(shí)模式(Runtime mode)表示

當(dāng)前內(nèi)存中運(yùn)行的防火墻配置,在系統(tǒng)或 firewalld 服務(wù)重啟、停止時(shí)配置將失效;永久模

式(Permanent mode)表示重啟防火墻或重新加載防火墻時(shí)的規(guī)則配置,是永久存儲(chǔ)在配置

文件中的。

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

? --reload:重新加載防火墻規(guī)則并保持狀態(tài)信息,即將永久配置應(yīng)用為運(yùn)行時(shí)配置。

? --permanent:帶有此選項(xiàng)的命令用于設(shè)置永久性規(guī)則,這些規(guī)則只有在重新啟動(dòng)

firewalld 或重新加載防火墻規(guī)則時(shí)才會(huì)生效;若不帶有此選項(xiàng),表示用于設(shè)置運(yùn)行時(shí)

規(guī)則。

--runtime-to-permanent:將當(dāng)前的運(yùn)行時(shí)配置寫入規(guī)則配置文件中,使之成為永久性

7.總結(jié)

本文主要講述了firewalld的相關(guān)概念與具體的配置設(shè)置,環(huán)境為Centos7。

本文名稱:Linux網(wǎng)絡(luò)服務(wù)之firewalld防火墻
網(wǎng)頁路徑:http://bm7419.com/article14/geepge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、全網(wǎng)營(yíng)銷推廣網(wǎng)站導(dǎo)航、企業(yè)建站、網(wǎng)站制作、App開發(fā)

廣告

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

成都app開發(fā)公司