溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Linux防火墻firewalld安全設(shè)置

發(fā)布時(shí)間:2020-06-02 14:04:35 來(lái)源:網(wǎng)絡(luò) 閱讀:604 作者:cxf210210 欄目:系統(tǒng)運(yùn)維

背景描述

防火墻是具有很好的保護(hù)作用。***者必須首先穿越防火墻的安全防線(xiàn),才能接觸目標(biāo)計(jì)算機(jī)。在公司里數(shù)據(jù)安全是最重要的,要求安全部門(mén)進(jìn)行全公司進(jìn)行服務(wù)器防火墻安全搭建,在原有的基礎(chǔ)上進(jìn)行安全的防火墻設(shè)置,有效避免安全隱患等問(wèn)題,建議大家還是花個(gè)十多分鐘好好看一下防火墻的理論,這樣便于后期問(wèn)題排查,最后一小節(jié)有常用命令操作。

主要內(nèi)容

  • 1 詳細(xì)了解防火墻相關(guān)配置;
  • 2 詳細(xì)解讀相關(guān)安全配置方法;
  • 3 詳細(xì)解讀firewalld防火墻的基礎(chǔ)知識(shí);
  • 4 了解firewalld防火墻的配置;
  • 5 了解firewalld防火墻相關(guān)命令的使用。

1.Linux防火墻概述

防火墻是指設(shè)置在不同網(wǎng)絡(luò)或網(wǎng)絡(luò)安全域之間的一系列部件的組合,它能增強(qiáng)機(jī)構(gòu)內(nèi)部網(wǎng)絡(luò)的安全性。它通過(guò)訪(fǎng)問(wèn)控制機(jī)制,確定哪些內(nèi)部服務(wù)允許外部訪(fǎng)問(wèn),以及允許哪些外部請(qǐng)求可以訪(fǎng)問(wèn)內(nèi)部服務(wù)。它可以根據(jù)網(wǎng)絡(luò)傳輸?shù)念?lèi)型決定IP包是否可以傳進(jìn)或傳出內(nèi)部網(wǎng)。
防火墻通過(guò)審查經(jīng)過(guò)的每一個(gè)數(shù)據(jù)包,判斷它是否有相匹配的過(guò)濾規(guī)則,根據(jù)規(guī)則的先后順序進(jìn)行一一比較,直到滿(mǎn)足其中的一條規(guī)則為止,然后依據(jù)控制機(jī)制做出相應(yīng)的動(dòng)作。如果都不滿(mǎn)足,則將數(shù)據(jù)包丟棄,從而保護(hù)網(wǎng)絡(luò)的安全。
Linux系統(tǒng)的防火墻功能是由內(nèi)核實(shí)現(xiàn)的。在2.4 版及以后的內(nèi)核中,包過(guò)濾機(jī)制是netfilter.CentOS 6管理工具是iptables,CentOS 7管理工具是firewalld ,firewalld 是Linux新一代的防火墻工具,它提供了支持網(wǎng)絡(luò)/防火墻區(qū)域 (zone) 定義網(wǎng)絡(luò)鏈接以及接口安全等級(jí)的動(dòng)態(tài)防火墻管理。
Netfilter,位于Linux內(nèi)核中的包過(guò)濾防火墻功能體系,稱(chēng)為L(zhǎng)inux防火墻“內(nèi)核態(tài)”。firewall-cmd,位于/bin/firewall-cmd,是用來(lái)管理防火墻的命令工具,為防火墻體系提供過(guò)濾規(guī)則/策略,決定如何過(guò)濾或處理到達(dá)防火墻主機(jī)的數(shù)據(jù)包,稱(chēng)為L(zhǎng)inux防火墻的“用戶(hù)態(tài)”。習(xí)慣上,上述2種稱(chēng)呼都可以代表Linux防火墻。

2.Linux防火墻框架

(1) netfilter框架
Linux內(nèi)核包含了一個(gè)強(qiáng)大的網(wǎng)絡(luò)子系統(tǒng),名為netfilter,它可以為iptables內(nèi)核防火墻模塊提供有狀態(tài)或無(wú)狀態(tài)的包過(guò)濾服務(wù),如NAT、IP偽裝等,也可以因高級(jí)路由或連接狀態(tài)管理的需要而修改IP頭信息。而firewalld可以動(dòng)態(tài)管理防火墻,將netfilter的過(guò)濾功能集于一身,它也支持允許服務(wù)或者應(yīng)用程序直接添加防火墻規(guī)則的接口,netfilter所處的位置如圖1所示:

Linux防火墻firewalld安全設(shè)置
雖然防火墻模塊構(gòu)建在Linux內(nèi)核,并且要對(duì)流經(jīng)IP層的數(shù)據(jù)包進(jìn)行處理,但它并沒(méi)有改變IP協(xié)議棧的代碼,而是通過(guò)netfilter模塊將防火墻的功能引入IP層,從而實(shí)現(xiàn)防火墻代碼和IP協(xié)議棧代碼的完全分離。netfilter模塊的結(jié)構(gòu)。如圖2所示:
Linux防火墻firewalld安全設(shè)置
數(shù)據(jù)包從左邊進(jìn)入IP協(xié)議棧,進(jìn)行IP校驗(yàn)以后,數(shù)據(jù)包被PREROUTING處理,然后就進(jìn)入路由模塊,由其決定該數(shù)據(jù)包是轉(zhuǎn)發(fā)出去還是送給本機(jī)。若該數(shù)據(jù)包是送給本機(jī)的,則通過(guò)INPUT處理后傳遞給本機(jī)的上層協(xié)議;若該數(shù)據(jù)包應(yīng)該被轉(zhuǎn)發(fā),則它將FORWARD處理,然后還要經(jīng)POSTROUTING處理后才能傳輸?shù)骄W(wǎng)絡(luò)。本機(jī)進(jìn)程產(chǎn)生的數(shù)據(jù)包要先經(jīng)過(guò)OUTPUT處理后,再進(jìn)行路由選擇處理,然后經(jīng)過(guò)POSTROUTING處理后再發(fā)送到網(wǎng)絡(luò)。
iptables服務(wù)在/etc/sysconfig/iptables中儲(chǔ)存配置,而firewalld將配置儲(chǔ)存在 /usr/lib/firewalld/和/etc/firewalld/中的各種XML文件里,使用iptables的時(shí)候每一個(gè)單獨(dú)更改意味著清除所有舊有的規(guī)則和從/etc/sysconfig/iptables里讀取所有新的規(guī)則,使用firewalld 卻不會(huì)再創(chuàng)建任何新的規(guī)則,僅僅運(yùn)行規(guī)則中的不同。因此firewalld可以在運(yùn)行時(shí)改變?cè)O(shè)置而不丟失現(xiàn)行配置。
Firewalld動(dòng)態(tài)管理防火墻,不需要重啟整個(gè)防火墻便可應(yīng)用更改。因而也就沒(méi)有必要重載所有內(nèi)核防火墻模塊。不過(guò),要使用firewalld就要求防火墻的所有變更都要通過(guò)firewalld守護(hù)進(jìn)程來(lái)實(shí)現(xiàn),以確保守護(hù)進(jìn)程中的狀態(tài)和內(nèi)核里的防火墻是一致的。另外,firewalld無(wú)法解析由iptables和iptables命令行工具添加的防火墻規(guī)則。 Firewalld防火墻堆棧示意圖,如圖3所示。
Linux防火墻firewalld安全設(shè)置

2.Firewall防火墻管理

FirewallD 提供了支持網(wǎng)絡(luò)/防火墻區(qū)域(zone)定義網(wǎng)絡(luò)鏈接以及接口安全等級(jí)的動(dòng)態(tài)防火墻管理工具。firewalld通過(guò)將網(wǎng)絡(luò)劃分成不同的區(qū)域(通常情況下稱(chēng)為 zones),制定出不同區(qū)域之間的訪(fǎng)問(wèn)控制策略來(lái)控制不同區(qū)域間傳送的數(shù)據(jù)流。它支持 IPv4, IPv6 防火墻設(shè)置以及以太網(wǎng)橋接,并且擁有運(yùn)行時(shí)配置和永久配置選項(xiàng)。它也支持允許服務(wù)或者應(yīng)用程序直接添加防火墻規(guī)則的接口。 以前的 system-config-firewall/lokkit 防火墻模型是靜態(tài)的,每次修改都要求防火墻完全重啟。這個(gè)過(guò)程包括內(nèi)核 netfilter 防火墻模塊的卸載和新配置所需模塊的裝載等。而模塊的卸載將會(huì)破壞狀態(tài)防火墻和確立的連接。
相反,firewall daemon 動(dòng)態(tài)管理防火墻,不需要重啟防火墻便可應(yīng)用更改。因而也就沒(méi)有必要重載所有內(nèi)核防火墻模塊了。不過(guò),要使用 firewall daemon 就要求防火墻的所有變更都要通過(guò)該守護(hù)進(jìn)程來(lái)實(shí)現(xiàn),以確保守護(hù)進(jìn)程中的狀態(tài)和內(nèi)核里的防火墻是一致的。另外,firewall daemon 無(wú)法解析由 ip*tables 和 ebtables 命令行工具添加的防火墻規(guī)則。守護(hù)進(jìn)程通過(guò) D-BUS 提供當(dāng)前激活的防火墻設(shè)置信息,也通過(guò) D-BUS 接受使用 PolicyKit 認(rèn)證方式做的更改。應(yīng)用程序、守護(hù)進(jìn)程和用戶(hù)可以通過(guò)D-BUS請(qǐng)求啟用一個(gè)防火墻特性。特性可以是預(yù)定義的防火墻功能,如:服務(wù)、端口和協(xié)議的組合、端口/數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)、偽裝、ICMP 攔截或自定義規(guī)則等。該功能可以啟用確定的一段時(shí)間也可以再次停用。

3.firewalld區(qū)域管理

網(wǎng)絡(luò)區(qū)域定義了網(wǎng)絡(luò)連接的可信等級(jí)。這是一個(gè)一對(duì)多的關(guān)系,這意味著一次連接可以?xún)H僅是一個(gè)區(qū)域的一部分,而一個(gè)區(qū)域可以用于很多連接。一個(gè)IP可以看作是一個(gè)區(qū)域、一個(gè)網(wǎng)段可以看作是一個(gè)區(qū)域,局域網(wǎng)、互聯(lián)網(wǎng)都可以看作是一個(gè)區(qū)域。例如:

  • 預(yù)定義的服務(wù):服務(wù)是端口和/或協(xié)議入口的組合。備選內(nèi)容包括 netfilter 助手模塊以及 IPv4、Pv6地址。
  • 端口和協(xié)議:定義了 tcp 或 udp 端口,端口可以是一個(gè)端口或者端口范圍。
  • ICMP阻塞:可以選擇 Internet 控制報(bào)文協(xié)議的報(bào)文。這些報(bào)文可以是信息請(qǐng)求亦可是對(duì)信息請(qǐng)求或錯(cuò)誤條件創(chuàng)建的響應(yīng)。
  • 偽裝:私有網(wǎng)絡(luò)地址可以被映射到公開(kāi)的IP地址。這是一次正規(guī)的地址轉(zhuǎn)換。
  • 端口轉(zhuǎn)發(fā):端口可以映射到另一個(gè)端口以及/或者其它主機(jī)。
    現(xiàn)網(wǎng)應(yīng)用中,假設(shè)互聯(lián)網(wǎng)是不可信任的區(qū)域,而內(nèi)部網(wǎng)絡(luò)是高度信任的區(qū)域。為避免安全策略中禁止的一些通信,它在信任度不同的區(qū)域有各自基本的控制任務(wù)。
    典型的區(qū)域包括互聯(lián)網(wǎng)(一個(gè)沒(méi)有信任的區(qū)域)和一個(gè)內(nèi)部網(wǎng)絡(luò)(一個(gè)高信任的區(qū)域)。最終目標(biāo)是在不同信任力度的區(qū)域,通過(guò)安全政策的運(yùn)行和連通性模型之間,根據(jù)最少特權(quán)原則提供連通性。例如:公共 WIFI 網(wǎng)絡(luò)連接應(yīng)該不信任,而家庭有線(xiàn)網(wǎng)絡(luò)連接就應(yīng)該完全信任。網(wǎng)絡(luò)安全模型可以在安裝、初次啟動(dòng)和首次建立網(wǎng)絡(luò)連接時(shí)選擇初始化。該模型描述了主機(jī)所聯(lián)的整個(gè)網(wǎng)絡(luò)環(huán)境的可信級(jí)別,并定義了新連接的處理方式。在 /etc/firewalld/ 的區(qū)域設(shè)定中,定義了一系列可以被快速執(zhí)行到網(wǎng)絡(luò)接口的預(yù)設(shè)定。firewalld 提供的區(qū)域按照從不信任到信任的順序排序。有以下幾種不同的初始化區(qū)域:
  • drop(丟棄):任何接收的網(wǎng)絡(luò)數(shù)據(jù)包都被丟棄,沒(méi)有任何回復(fù)。僅能有發(fā)送出去的網(wǎng)絡(luò)連接。
  • block(限制):任何接收的網(wǎng)絡(luò)連接,都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒絕。
  • public(公共):該區(qū)域是系統(tǒng)默認(rèn)區(qū)域,在公共區(qū)域內(nèi)使用,不能相信網(wǎng)絡(luò)內(nèi)的其它計(jì)算機(jī)不會(huì)對(duì)您的計(jì)算機(jī)造成危害,只能接收經(jīng)過(guò)選取的連接。
  • external(外部):特別是為路由器啟用了偽裝功能的外部網(wǎng)。您不能信任來(lái)自網(wǎng)絡(luò)的其它計(jì)算,不能相信它們不會(huì)對(duì)您的計(jì)算機(jī)造成危害,只能接收經(jīng)過(guò)選擇的連接。
  • dmz(非軍事區(qū)):用于您的非軍事區(qū)內(nèi)的電腦,此區(qū)域內(nèi)可公開(kāi)訪(fǎng)問(wèn),可以有限地進(jìn)入您的內(nèi)部網(wǎng)絡(luò),僅僅接收經(jīng)過(guò)選擇的連接。
  • work(工作):用于工作區(qū)。您可以基本相信網(wǎng)絡(luò)內(nèi)的其它電腦不會(huì)危害您的電腦。僅僅接收經(jīng)過(guò)選擇的連接。
  • home(家庭):用于家庭網(wǎng)絡(luò)。您可以基本信任網(wǎng)絡(luò)內(nèi)的其它計(jì)算機(jī)不會(huì)危害您的計(jì)算機(jī)。僅僅接收經(jīng)過(guò)選擇的連接。
  • internal(內(nèi)部):用于內(nèi)部網(wǎng)絡(luò)。您可以基本上信任網(wǎng)絡(luò)內(nèi)的其它計(jì)算機(jī)不會(huì)威協(xié)您的計(jì)算機(jī)。僅僅接受經(jīng)過(guò)選擇的連接。
  • trusted(信任):可接受所有的網(wǎng)絡(luò)連接。

配置或者增加區(qū)域:可以使用任何一種 firewalld 配置工具來(lái)配置或者增加區(qū)域,以及修改配置。工具有例如 firewall-config 這樣的圖形界面工具, firewall-cmd 這樣的命令行工具,以及D-BUS接口?;蛘咭部梢栽谂渲梦募夸浿袆?chuàng)建或者拷貝區(qū)域文件。 @PREFIX@/lib/firewalld/zones 被用于默認(rèn)和備用配置,/etc/firewalld/zones 被用于用戶(hù)創(chuàng)建和自定義配置文件。
修改區(qū)域:區(qū)域設(shè)置以 ZONE= 選項(xiàng) 存儲(chǔ)在網(wǎng)絡(luò)連接的ifcfg文件中。如果這個(gè)選項(xiàng)缺失或者為空,firewalld 將使用配置的默認(rèn)區(qū)域。如果這個(gè)連接受到 NetworkManager 控制,也可以使用 nm-connection-editor 來(lái)修改區(qū)域。
由NetworkManager控制的網(wǎng)絡(luò)連接:防火墻不能夠通過(guò) NetworkManager 顯示的名稱(chēng)來(lái)配置網(wǎng)絡(luò)連接,只能配置網(wǎng)絡(luò)接口。因此在網(wǎng)絡(luò)連接之前 NetworkManager 將配置文件所述連接對(duì)應(yīng)的網(wǎng)絡(luò)接口告訴 firewalld 。如果在配置文件中沒(méi)有配置區(qū)域,接口將配置到 firewalld 的默認(rèn)區(qū)域。如果網(wǎng)絡(luò)連接使用了不止一個(gè)接口,所有的接口都會(huì)應(yīng)用到 fiwewalld。接口名稱(chēng)的改變也將由 NetworkManager 控制并應(yīng)用到firewalld。為了簡(jiǎn)化,網(wǎng)絡(luò)連接將被用作與區(qū)域的關(guān)系。如果一個(gè)接口斷開(kāi)了,NetworkManager也將告訴firewalld從區(qū)域中刪除該接口。當(dāng)firewalld由systemd或者init腳本啟動(dòng)或者重啟后,firewalld將通知NetworkManager把網(wǎng)絡(luò)連接增加到區(qū)域。

4.Linux防火墻的基本配置與管理

CentOS 7中使用firewall-config圖形界面管理的防火墻策略。也可以使用firewall-cmd命令行工具進(jìn)行管理, firewall-cmd 支持全部防火墻特性,對(duì)于狀態(tài)和查詢(xún)模式,命令只返回狀態(tài),沒(méi)有其它輸出。另外還可以直接編輯/etc/firewalld/中的配置文件用來(lái)管理firewalld的策略。

  • 使用firewalld可以通過(guò)圖形界面工具 firewall-config 或者命令行客戶(hù)端 firewall-cmd 啟用或者關(guān)閉防火墻特性。
  • 使用firewall-cmd命令行工具 firewall-cmd 支持全部防火墻特性。對(duì)于狀態(tài)和查詢(xún)模式,命令只返回狀態(tài),沒(méi)有其它輸出。

4.1 firewall-cmd命令行工具

firewall-cmd支持防火墻的所有特性,管理員可以用它來(lái)改變系統(tǒng)或用戶(hù)策略,通過(guò) firewall-cmd用戶(hù)可以配置防火墻允許通過(guò)的服務(wù)、端口、偽裝、端口轉(zhuǎn)發(fā)、和ICMP過(guò)濾器和調(diào)整 zone(區(qū)域)設(shè)置等功能。
firewall-cmd工具支持兩種策略管理方式,運(yùn)行時(shí)和永久設(shè)置,需要分別設(shè)置兩者:

  • 處理運(yùn)行時(shí)區(qū)域,運(yùn)行時(shí)模式下對(duì)區(qū)域進(jìn)行的修改不是永久有效的,但是即時(shí)生效,重新加載或者重啟系統(tǒng)后修改將失效。
  • 處理永久區(qū)域,永久選項(xiàng)不直接影響運(yùn)行時(shí)的狀態(tài),這些選項(xiàng)僅在重載或者重啟系統(tǒng)時(shí)可用。
    防火墻啟動(dòng)與關(guān)閉
  • 啟動(dòng)防火墻:systemctl start firewalld
  • 查詢(xún)防火墻狀態(tài):systemctl status firewalld
  • 開(kāi)機(jī)啟動(dòng)防火墻:systemctl enable firewalld
  • 停止防火墻:systemctl stop firewalld
  • 開(kāi)機(jī)關(guān)閉防火墻:systemctl disable firewalld

防火墻管理命令格式:
firewall-cmd [Options…]
firewall-cmd支持上百參數(shù),下表為常用Options說(shuō)明,如表所示:

firewall-cmd命令 說(shuō)明
--get-default-zone 查詢(xún)當(dāng)前默認(rèn)區(qū)域
--set-default-zone=<ZONE> 設(shè)置默認(rèn)區(qū)域,會(huì)更改運(yùn)行時(shí)和永久配置
--get-zones 列出所有可用區(qū)域
--get-active-zones 列出正在使用的所有區(qū)域(具有關(guān)聯(lián)的接口或源)機(jī)器接口和源信息
--add-source=<CIDR> [--zone=<ZONE>] 將來(lái)自IP地址或網(wǎng)絡(luò)/子網(wǎng)掩碼<CIDR>的所有流量路由到指定區(qū)域。
--remove-source=<CIDR> [--zone=<ZONE>] 從指定區(qū)域中刪除用于路由來(lái)自IP地址或網(wǎng)絡(luò)/子網(wǎng)掩碼<CIDR>的所有流量的規(guī)則
--add-interface=<INTERFACE>[--zone=<ZONE>] 將來(lái)自<INTERFACE>的所有流量路由到指定區(qū)域
--change-interface=<INTERFACE>[--zone=<ZONE>] 將接口與<ZONE>而非其當(dāng)前區(qū)域關(guān)聯(lián)
--list-all [--zone=<zone>] 列出<ZONE>的所有已配置接口、源、服務(wù)和端口
--list-all-zones 檢索所有區(qū)域的所有信息(接口、源、端口、服務(wù)等)
--add-service=<SERVICE>[--zone=<ZONE>] 允許到<SERVICE>的流量
--add-port=<PORT/PROTOCOL>[--zone=<ZONE>] 允許到<PORT/PROTOCOL>端口的流量
--remove-service=<SERVICE>[--zone=<ZONE>] 從區(qū)域允許列表中刪除<SERVICE>
--remove-port=<PORT/PROTOCOL>[--zone=<ZONE>] 從區(qū)域允許列表中刪除<PORT/PROTOCOL>端口
--reload 丟棄運(yùn)行時(shí)配置,并應(yīng)用持久配置

4.2 firewall-config圖形工具

firewall-config支持防火墻的所有特性,管理員可以用它來(lái)改變系統(tǒng)或用戶(hù)策略,通過(guò) firewall-config 用戶(hù)可以配置防火墻允許通過(guò)的服務(wù)、端口、偽裝、端口轉(zhuǎn)發(fā)、和ICMP過(guò)濾器和調(diào)整 zone(區(qū)域)設(shè)置等功能以使防火墻設(shè)置更加的自由、安全和強(qiáng)健。
firewall-config工作界面。如圖4所示。

Linux防火墻firewalld安全設(shè)置
firewall-config工作界面分成三個(gè)部分:上面是主菜單,中間是配置選項(xiàng)卡,包括區(qū)域、服務(wù)設(shè)置選項(xiàng)卡,底部是狀態(tài)欄,狀態(tài)欄從左到右以此是連接狀態(tài)、默認(rèn)區(qū)域、鎖定狀態(tài)、應(yīng)急模式。
在左下方角落尋找“已連接”字符,這標(biāo)志著 firewall-config工具已經(jīng)連接到用戶(hù)區(qū)后臺(tái)程序 firewalld。

firewall-config 主菜單

firewall-config 主菜單包括四個(gè)選項(xiàng):文件,選項(xiàng),查看,幫助。其中選項(xiàng)子菜單是最主要的,它包括幾個(gè)部分:

  • 重載防火墻:重載防火墻規(guī)則。例如所有現(xiàn)在運(yùn)行的配置規(guī)則如果沒(méi)有在永久配置中操作,那么系統(tǒng)重載后會(huì)丟失。
  • 更改連接區(qū)域:更改網(wǎng)絡(luò)連接的默認(rèn)區(qū)域。
  • 改變默認(rèn)區(qū)域:更改網(wǎng)絡(luò)連接的所屬區(qū)域和接口。
  • 應(yīng)急模式:應(yīng)急模式意味著丟棄所有的數(shù)據(jù)包。
  • 鎖定:鎖定可以對(duì)防火墻配置進(jìn)行加鎖,只允許白名單上的應(yīng)用程序進(jìn)行改動(dòng)。鎖定特性為 firewalld 增加了鎖定本地應(yīng)用或者服務(wù)配置的簡(jiǎn)單配置方式。它是一種輕量級(jí)的應(yīng)用程序策略。
firewall-config配置選項(xiàng)卡

firewall-config 配置選項(xiàng)卡包括:運(yùn)行時(shí)和永久。

  • 運(yùn)行時(shí):運(yùn)行時(shí)配置為當(dāng)前使用的配置規(guī)則。運(yùn)行時(shí)配置并非永久有效,在重新加載時(shí)可以被恢復(fù),而系統(tǒng)或者服務(wù)重啟、停止時(shí),這些選項(xiàng)將會(huì)丟失。
  • 永久:永久配置規(guī)則在系統(tǒng)或者服務(wù)重啟的時(shí)候使用。永久配置存儲(chǔ)在配置文件種,每次機(jī)器重啟或者服務(wù)重啟、重新加載時(shí)將自動(dòng)恢復(fù)。
firewall-config區(qū)域選項(xiàng)卡

區(qū)域選項(xiàng)卡是一個(gè)主要設(shè)置界面,firewalld 提供了10種預(yù)定義的區(qū)域,區(qū)域配置選項(xiàng)和通用配置信息可以在 firewall.zone(5) 的手冊(cè)里查到,
區(qū)域選項(xiàng)卡有八個(gè)子選項(xiàng)卡,分別是服務(wù)、端口、偽裝、端口轉(zhuǎn)發(fā)、ICMP過(guò)濾器、富規(guī)則、接口、來(lái)源,如圖3-1-5所示。

  • 服務(wù):定義區(qū)域中哪些服務(wù)是可信的。
  • 端口:定義區(qū)域中允許訪(fǎng)問(wèn)的主機(jī)或網(wǎng)絡(luò)訪(fǎng)問(wèn)的附加端口或端口范圍。
  • 偽裝:NAT偽裝,是否啟用IP轉(zhuǎn)發(fā),是地址轉(zhuǎn)發(fā)的一種,僅支持IPv4。
  • 端口轉(zhuǎn)發(fā):NAT轉(zhuǎn)發(fā),將指向單個(gè)端口的流量將轉(zhuǎn)發(fā)到相同計(jì)算機(jī)上的不同端口,或者轉(zhuǎn)發(fā)到不同計(jì)算機(jī)上的端口
  • ICMP過(guò)濾器:設(shè)置可通過(guò)的ICMP數(shù)據(jù)包類(lèi)型。
  • 富規(guī)則:是一種表達(dá)性語(yǔ)言,可表達(dá)firewalld基本語(yǔ)法中未涵蓋的自定義防火墻規(guī)則,可用于表達(dá)基本的允許/拒絕規(guī)則,可用于配置記錄(面向syslog和auditd)及端口轉(zhuǎn)發(fā)、偽裝和速率限制
  • 接口:增加入口到區(qū)域。
  • 來(lái)源:綁定來(lái)源地址或范圍。
    Linux防火墻firewalld安全設(shè)置

(4)firewall-config 服務(wù)選項(xiàng)卡
預(yù)定義了幾十種重要服務(wù),可通過(guò)命令firewall-cmd --get-services查詢(xún),服務(wù)是端口、協(xié)議、模塊和目標(biāo)地址的集合,該選項(xiàng)卡配置只能在永久配置視圖中修改服務(wù),不能在運(yùn)行時(shí)配置中修改。
服務(wù)選項(xiàng)卡底下包含端口和協(xié)議、模塊、目標(biāo)地址三種子選項(xiàng)卡,如圖所示。。

  • 端口和協(xié)議:定義需要被所有主機(jī)或網(wǎng)絡(luò)訪(fǎng)問(wèn)的額外端口或端口區(qū)間。
  • 模塊:添加網(wǎng)絡(luò)過(guò)濾輔助模塊。
  • 目標(biāo)地址:如果指定了目的地址,服務(wù)項(xiàng)目將僅限于目的地址和類(lèi)型。
    Linux防火墻firewalld安全設(shè)置

5 當(dāng)前的firewalld特性

  • D-BUS接口:D-BUS 接口提供防火墻狀態(tài)的信息,使防火墻的啟用.停用或查詢(xún)?cè)O(shè)置成為可能。
  • 區(qū)域:網(wǎng)絡(luò)或者防火墻區(qū)域定義了連接的可信程度。firewalld 提供了幾種預(yù)定義的區(qū)域。區(qū)域配置選項(xiàng)和通用配置信息可以在firewall.zone(5)的手冊(cè)里查到。
  • 服務(wù):服務(wù)可以是一系列本讀端口.目的以及附加信息,也可以是服務(wù)啟動(dòng)時(shí)自動(dòng)增加的防火墻助手模塊。預(yù)定義服務(wù)的使用使啟用和禁用對(duì)服務(wù)的訪(fǎng)問(wèn)變得更加簡(jiǎn)單。服務(wù)配置選項(xiàng)和通用文件信息在 firewalld.service(5) 手冊(cè)里有描述。
  • ICMP類(lèi)型:Internet控制報(bào)文協(xié)議 (ICMP) 被用以交換報(bào)文和互聯(lián)網(wǎng)協(xié)議 (IP) 的錯(cuò)誤報(bào)文。在 firewalld 中可以使用 ICMP 類(lèi)型來(lái)限制報(bào)文交換。 ICMP 類(lèi)型配置選項(xiàng)和通用文件信息可以參閱 firewalld.icmptype(5) 手冊(cè)。
  • 直接接口:直接接口主要用于服務(wù)或者應(yīng)用程序增加特定的防火墻規(guī)則。這些規(guī)則并非永久有效,并且在收到 firewalld 通過(guò) D-Bus 傳遞的啟動(dòng).重啟.重載信號(hào)后需要重新應(yīng)用。
  • 運(yùn)行時(shí)配置:運(yùn)行時(shí)配置并非永久有效,在重新加載時(shí)可以被恢復(fù),而系統(tǒng)或者服務(wù)重啟.停止時(shí),這些選項(xiàng)將會(huì)丟失。
  • 永久配置:永久配置存儲(chǔ)在配置文件種,每次機(jī)器重啟或者服務(wù)重啟.重新加載時(shí)將自動(dòng)恢復(fù)。
  • 托盤(pán)小程序:托盤(pán)小程序 firewall-applet 為用戶(hù)顯示防火墻狀態(tài)和存在的問(wèn)題。它也可以用來(lái)配置用戶(hù)允許修改的設(shè)置。
  • 圖形化配置工具:firewall daemon 主要的配置工具是 firewall-config 。它支持防火墻的所有特性(除了由服務(wù)/應(yīng)用程序增加規(guī)則使用的直接接口)。 管理員也可以用它來(lái)改變系統(tǒng)或用戶(hù)策略。
  • 命令行客戶(hù)端:firewall-cmd是命令行下提供大部分圖形工具配置特性的工具。
  • 對(duì)于ebtables的支持:要滿(mǎn)足libvirt daemon的全部需求,在內(nèi)核 netfilter 級(jí)上防止 ip*tables 和 ebtables 間訪(fǎng)問(wèn)問(wèn)題,ebtables 支持是需要的。由于這些命令是訪(fǎng)問(wèn)相同結(jié)構(gòu)的,因而不能同時(shí)使用。
  • /usr/lib/firewalld中的默認(rèn)/備用配置:該目錄包含了由 firewalld 提供的默認(rèn)以及備用的 ICMP 類(lèi)型.服務(wù).區(qū)域配置。由 firewalld 軟件包提供的這些文件不能被修改,即使修改也會(huì)隨著 firewalld 軟件包的更新被重置。 其它的 ICMP 類(lèi)型.服務(wù).區(qū)域配置可以通過(guò)軟件包或者創(chuàng)建文件的方式提供。
  • /etc/firewalld中的系統(tǒng)配置設(shè)置:存儲(chǔ)在此的系統(tǒng)或者用戶(hù)配置文件可以是系統(tǒng)管理員通過(guò)配置接口定制的,也可以是手動(dòng)定制的。這些文件將重載默認(rèn)配置文件。為了手動(dòng)修改預(yù)定義的 icmp 類(lèi)型,區(qū)域或者服務(wù),從默認(rèn)配置目錄將配置拷貝到相應(yīng)的系統(tǒng)配置目錄,然后根據(jù)需求進(jìn)行修改。如果加載了有默認(rèn)和備用配置的區(qū)域,在 /etc/firewalld下的對(duì)應(yīng)文件將被重命名為 <file>.old 然后啟用備用配置。

6.用戶(hù)策略支持

管理員可以規(guī)定哪些用戶(hù)可以使用用戶(hù)交互模式和限制防火墻可用特性。
端口元數(shù)據(jù)信息(由 Lennart Poettering 提議),擁有一個(gè)端口獨(dú)立的元數(shù)據(jù)信息是很好的。應(yīng)用程序或服務(wù)的端口是動(dòng)態(tài)的,因而端口本身并不能描述使用情況,所以對(duì) /etc/services 的端口和協(xié)議靜態(tài)分配模型不是個(gè)好的解決方案,也沒(méi)有反映當(dāng)前使用情況。。
元數(shù)據(jù)信息可以用來(lái)為防火墻制定簡(jiǎn)單的規(guī)則。下面是一些例子:

  • 允許外部訪(fǎng)問(wèn)文件共享應(yīng)用程序或服務(wù);
  • 允許外部訪(fǎng)問(wèn)音樂(lè)共享應(yīng)用程序或服務(wù);
  • 允許外部訪(fǎng)問(wèn)全部共享應(yīng)用程序或服務(wù);
  • 允許外部訪(fǎng)問(wèn) torrent 文件共享應(yīng)用程序或服務(wù);
  • 允許外部訪(fǎng)問(wèn) http 網(wǎng)絡(luò)服務(wù)。

這里的元數(shù)據(jù)信息不只有特定應(yīng)用程序,還可以是一組使用情況。例如:組“全部共享”或者組“文件共享”可以對(duì)應(yīng)于全部共享或文件共享程序(如:torrent 文件共享)。這些只是例子,因而,可能并沒(méi)有實(shí)際用處。
這里是在防火墻中獲取元數(shù)據(jù)信息的兩種可能途徑:

  • 第一種是添加到 netfilter (內(nèi)核空間)。好處是每個(gè)人都可以使用它,但也有一定使用限制。還要考慮用戶(hù)或系統(tǒng)空間的具體信息,所有這些都需要在內(nèi)核層面實(shí)現(xiàn)。
  • 第二種是添加到 firewall daemon 中。這些抽象的規(guī)則可以和具體信息(如:網(wǎng)絡(luò)連接可信級(jí)。作為具體個(gè)人/主機(jī)要分享的用戶(hù)描述.管理員禁止完全共享的應(yīng)歸則等)一起使用。

第二種解決方案的好處是不需要為有新的元數(shù)據(jù)組和納入改變(可信級(jí).用戶(hù)偏好或管理員規(guī)則等等)重新編譯內(nèi)核。這些抽象規(guī)則的添加使得 firewall daemon 更加自由。即使是新的安全級(jí)也不需要更新內(nèi)核即可輕松添加。

7.sysctld的錯(cuò)誤設(shè)置

實(shí)際應(yīng)用中對(duì)sysctl 設(shè)置經(jīng)常出現(xiàn)錯(cuò)誤。
一個(gè)例子是,在 rc.sysinit 正運(yùn)行時(shí),而提供設(shè)置的模塊在啟動(dòng)時(shí)沒(méi)有裝載或者重新裝載該模塊時(shí)會(huì)發(fā)生問(wèn)題。
另一個(gè)例子是 net.ipv4.ip_forward ,防火墻設(shè)置.libvirt 和用戶(hù)/管理員更改都需要它。如果有兩個(gè)應(yīng)用程序或守護(hù)進(jìn)程只在需要時(shí)開(kāi)啟 ip_forwarding ,之后可能其中一個(gè)在不知道的情況下關(guān)掉服務(wù),而另一個(gè)正需要它,此時(shí)就不得不重啟它。
sysctl daemon 可以通過(guò)對(duì)設(shè)置使用內(nèi)部計(jì)數(shù)來(lái)解決上面的問(wèn)題。此時(shí),當(dāng)請(qǐng)求者不再需要時(shí),它就會(huì)再次回到之前的設(shè)置狀態(tài)或者是直接關(guān)閉它。

8.iptables 的與firewalld區(qū)別

firewalld 和 iptables service 之間最本質(zhì)區(qū)別是:

  • iptables service 在 /etc/sysconfig/iptables 中儲(chǔ)存配置,而 firewalld 將配置儲(chǔ)存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種 XML 文件里,。要注意,當(dāng) firewalld 在Linux上安裝失敗時(shí), /etc/sysconfig/iptables 文件就不存在。
  • 使用 iptables service,每一個(gè)單獨(dú)更改意味著清除所有舊有的規(guī)則和從 /etc/sysconfig/iptables里讀取所有新的規(guī)則,然而使用 firewalld 卻不會(huì)再創(chuàng)建任何新的規(guī)則;僅僅運(yùn)行規(guī)則中的不同之處。因此,firewalld 可以在運(yùn)行時(shí)間內(nèi),改變?cè)O(shè)置而不丟失現(xiàn)行連接。

9.常用命令

firewalld的基本使用

啟動(dòng): systemctl start firewalld
關(guān)閉: systemctl stop firewalld
查看狀態(tài): systemctl status firewalld
開(kāi)機(jī)禁用 : systemctl disable firewalld
開(kāi)機(jī)啟用 : systemctl enable firewalld

(2) systemctl是CentOS7的服務(wù)管理工具中主要的工具,它融合之前service和chkconfig的功能于一體。

啟動(dòng)一個(gè)服務(wù):systemctl start firewalld.service
關(guān)閉一個(gè)服務(wù):systemctl stop firewalld.service
重啟一個(gè)服務(wù):systemctl restart firewalld.service
顯示一個(gè)服務(wù)的狀態(tài):systemctl status firewalld.service
在開(kāi)機(jī)時(shí)啟用一個(gè)服務(wù):systemctl enable firewalld.service
在開(kāi)機(jī)時(shí)禁用一個(gè)服務(wù):systemctl disable firewalld.service
查看服務(wù)是否開(kāi)機(jī)啟動(dòng):systemctl is-enabled firewalld.service
查看已啟動(dòng)的服務(wù)列表:systemctl list-unit-files|grep enabled
查看啟動(dòng)失敗的服務(wù)列表:systemctl --failed

(3) 配置firewalld-cmd

#《實(shí)例一》防火墻查詢(xún)
firewall-cmd --version    //查看版本
firewall-cmd --help  // 查看幫助
firewall-cmd --state // 顯示狀態(tài)
firewall-cmd --get-services //獲取支持服務(wù)列表(firewalld內(nèi)置服務(wù)支持)
firewall-cmd --zone=public --list-ports  //查看所有打開(kāi)的端口 
firewall-cmd --list-forward-ports  //查看轉(zhuǎn)發(fā)的端口
fierewall-cmd –reload       //重新加載防火墻策略
firewall-cmd --get-active-zones  //查看區(qū)域信息
firewall-cmd --list-all-zones  //列出全部啟用的區(qū)域的特性
firewall-cmd --list-services  //顯示防火墻當(dāng)前服務(wù)
firewall-cmd --get-zone-of-interface=eth0  //查看指定接口所屬區(qū)域
firewall-cmd --panic-on   //拒絕所有包
firewall-cmd --panic-offfir  //取消拒絕狀態(tài)
firewall-cmd --query-panic  //查看是否拒絕
*# 《實(shí)例二》 運(yùn)行時(shí)區(qū)域策略設(shè)置示例(注:以下示例不加zone的為默認(rèn)區(qū)域public)
firewall-cmd --add-service=ssh      //允許 ssh 服務(wù)通過(guò)
firewall-cmd --remove-service=ssh       //禁止 ssh 服務(wù)通過(guò)
firewall-cmd --add-service=samba --timeout=600      //臨時(shí)允許 samba 服務(wù)通過(guò) 600 秒
firewall-cmd --add-service=http --zone=work     //允許http服務(wù)通過(guò)work區(qū)域
firewall-cmd --zone=work --add-service=http     //從work區(qū)域打開(kāi)http服務(wù)
firewall-cmd --zone=internal --add-port=443/tcp     //打開(kāi) 443/tcp 端口在內(nèi)部區(qū)域(internal)
firewall-cmd --zone=internal --remove-port=443/tcp      //關(guān)閉443/tcp 端口在內(nèi)部區(qū)域(internal)
firewall-cmd --add-interface=eth0       //打開(kāi)網(wǎng)卡eth0
firewall-cmd --remove-interface=eth0        //關(guān)閉網(wǎng)卡eth0
 #《 實(shí)例三》 永久區(qū)域策略設(shè)置示例(注:以下示例不加zone的為默認(rèn)區(qū)域public;永久設(shè)置均需重新加載防火墻策略或重啟系統(tǒng))
firewall-cmd --permanent --add-service=ftp      //永久允許 ftp 服務(wù)通過(guò)
firewall-cmd --permanent --remove-service=ftp       //永久禁止 ftp 服務(wù)通過(guò)
firewall-cmd --permanent --add-service=http --zone=external     //永久允許http服務(wù)通過(guò)external區(qū)域
firewall-cmd --permanent --add-service=http --zone=external     //永久允許http服務(wù)通過(guò)external區(qū)域
firewall-cmd --permanent --zone=internal --add-port=111/tcp     //打開(kāi) 111/tcp 端口在內(nèi)部區(qū)域(internal)
firewall-cmd --permanent --zone=internal --remove-port=111/tcp      //關(guān)閉 111/tcp 端口在內(nèi)部區(qū)域(internal)
firewall-cmd --permanent --add-interface=eth0      //永久打開(kāi)網(wǎng)卡eth0
firewall-cmd --permanent --remove-interface=eth0        //永久關(guān)閉網(wǎng)卡eth0
firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp  //添加多個(gè)端口
firewall-cmd --permanent --zone=public --remove-port=81/tcp //刪除某個(gè)端口
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept" //刪除某個(gè)IP
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept" //
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"  //針對(duì)某個(gè)ip段訪(fǎng)問(wèn)
firewall-cmd --reload   //添加操作后別忘了執(zhí)行重載才會(huì)生效

歡迎各位關(guān)注個(gè)人公號(hào)“沒(méi)有故事的陳師傅”
Linux防火墻firewalld安全設(shè)置

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI