隨著互聯(lián)網(wǎng)行業(yè)快速發(fā)展,服務(wù)器成為用戶部署網(wǎng)絡(luò)業(yè)務(wù)重要的網(wǎng)絡(luò)工具,但隨之而來的就是更密集的網(wǎng)絡(luò)攻擊,這給網(wǎng)站帶來了很大的阻礙。防火墻作為保障網(wǎng)絡(luò)安全的主要設(shè)備,可以很好的抵御網(wǎng)絡(luò)攻擊。
防火墻基本上使用硬件和軟件兩種機(jī)制來限制流量??梢允褂糜布?,如電路級網(wǎng)關(guān)、代理服務(wù)器、應(yīng)用網(wǎng)關(guān)等,來提供深入的保護(hù)。亦可以使用軟件,如包過濾等手段,允許/禁止流量。如同時(shí)使用軟硬件進(jìn)行防護(hù),效果會更好。本文僅討論軟件機(jī)制。
從centos7開始,引入firewalld防火墻管理工具,引入?yún)^(qū)域概念。相較于原版本一直使用的iptables工具,有重大改變。
對于初次接觸防火墻管理的讀者,只需關(guān)注區(qū)域、服務(wù)、端口、目標(biāo)和源等概念,全面使用firewalld工具;而對于使用linux老系統(tǒng)、低版本的讀者,則只能盡快熟悉"五表五鍵"等概念,使用iptables管理工具。
PS:centos7系統(tǒng)默認(rèn)沒有安裝iptables工具,想訓(xùn)練其使用,需要單獨(dú)下載、安裝。
防火墻底層原理
管理員在用戶態(tài),通過防火墻管理工具來設(shè)置防火墻的規(guī)則,配置在相關(guān)文件中。是否應(yīng)用或啟動,由iptables命令接口傳遞到內(nèi)核netfilter模塊。需要執(zhí)行時(shí),防火墻的規(guī)則由內(nèi)核中的netfilter模塊具體執(zhí)行。
當(dāng)數(shù)據(jù)包經(jīng)過防火墻時(shí),系統(tǒng)內(nèi)核會將客戶請求逐一與所設(shè)置的規(guī)則進(jìn)行匹配,當(dāng)匹配成功之后,由防火墻執(zhí)行規(guī)則中定義的行為,如放行、阻止、丟棄等。
配置防火墻就是添加、刪除、修改這些規(guī)則。例如,設(shè)置一條規(guī)則,拒絕所有的ICMP數(shù)據(jù)包,設(shè)置好該規(guī)則之后,該規(guī)則就會保存到內(nèi)核的netfilter模塊,之后所有的ICMP數(shù)據(jù)包都會被拒絕。
防火墻的規(guī)則,早期的CentOS 5/6操作系統(tǒng)默認(rèn)使用iptables工具,從CentOS 7開始,默認(rèn)使用firewalld工具。
兩個管理工具的底層原理在于,iptables從細(xì)節(jié)入手,從物理層面設(shè)置規(guī)則,分析網(wǎng)絡(luò)連接的各個層次,有表有鏈等。而firewalld從大處著手,從邏輯層面設(shè)置規(guī)則與要求。區(qū)域、目標(biāo)、源是其核心概念,而關(guān)注端口、服務(wù)亦具獨(dú)特視角。
一個系統(tǒng)中只能選擇一項(xiàng)管理工具,不能同時(shí)使用。原因在于:iptables允許所有流量通過,只限制指定規(guī)則的流量;而firewalld則相反,禁止所有流量通過,只允許符合規(guī)則的才允許通過。二者原理與手段完全相左。本文主要討論firewalld的概念與使用。
一、firewalld服務(wù)
在CentOS 7中,新引入了firewalld服務(wù),取代了CentOS 6之前的iptables服務(wù)。
1.firewalld特點(diǎn)
比較而言,firewalld允許哪些服務(wù)可用,哪些端口可用,屬于更高一層的防火墻。firewalld提供了支持網(wǎng)絡(luò)區(qū)域所定義的網(wǎng)絡(luò)鏈接以及接口安全等級的動態(tài)防火墻管理工具。它支持IPv4、IPv6防火墻設(shè)置以及以太網(wǎng)橋(在某些高級服務(wù)可能會用到,比如云計(jì)算),并且擁有兩種配置模式:運(yùn)行時(shí)(Runtime)模式和永久(Permanent)模式。
firewalld是一種動態(tài)的、用戶友好的Linux防火墻管理工具。相較于傳統(tǒng)的iptables,firewalld提供了更靈活、更方便的防火墻配置方式,使得管理員能夠更容易地管理網(wǎng)絡(luò)安全策略。
傳統(tǒng)的iptables配置可能比較復(fù)雜,尤其是對于新手來說。firewalld通過引入概念化的“區(qū)域”、“服務(wù)”和“端口”等概念,簡化了防火墻的配置。管理員無需深入了解iptables的規(guī)則語法,只需使用簡單的命令和配置文件就能輕松管理防火墻。
2.firewalld核心概念
區(qū)域(Zones)
Firewalld引入了"區(qū)域"的概念,用于定義不同的網(wǎng)絡(luò)區(qū)域,每個區(qū)域可以有不同的防火墻規(guī)則。常見的區(qū)域包括public、private、work、home等。默認(rèn)情況下,網(wǎng)絡(luò)接口會被分配到public區(qū)域。
服務(wù)(Services)
服務(wù)是一組預(yù)定義的規(guī)則,用于定義允許通過防火墻的特定網(wǎng)絡(luò)服務(wù)。例如,HTTP、SSH等服務(wù)都可以被定義為服務(wù),從而簡化防火墻規(guī)則的配置。
端口(Ports)
端口用于標(biāo)識網(wǎng)絡(luò)通信中的特定應(yīng)用程序。Firewalld允許你通過端口來控制流入或流出的數(shù)據(jù)包??梢源蜷_或關(guān)閉特定端口,也可以定義自定義端口。
源和目標(biāo)
firewalld允許你根據(jù)數(shù)據(jù)包的來源和目標(biāo)來定義規(guī)則。這使得你可以限制特定IP地址或地址范圍的訪問,增強(qiáng)了網(wǎng)絡(luò)安全性。
3.使用方式
a.firewall-cmd
firewall-cmd是firewalld的字符界面管理工具
可以通過遠(yuǎn)程連接工具,配置防火墻規(guī)則。
b.firewall-config
firewall-config是firewalld的圖形用戶界面管理工具
在系統(tǒng)桌面中,命令行執(zhí)行firewall-config命令,打開firewalld的圖形用戶界面管理工具。
如用遠(yuǎn)程連接工具,如xshell,執(zhí)行命令firewall-config,將不能打開圖形管理工具,提示在windows系統(tǒng)中安裝xmanager,可以直接打開該工具且配置防火墻規(guī)則。
c.修改firewalld配置文件
firewalld的配置文件分為主配置文件和區(qū)域/服務(wù)/端口配置文件。
主配置文件位于/etc/firewalld/firewalld.conf,包含一般的Firewalld設(shè)置,如默認(rèn)區(qū)域等。
每個區(qū)域都有一個對應(yīng)的配置文件,位于/etc/firewalld/zones/目錄下。這些文件包含特定區(qū)域的防火墻規(guī)則。
服務(wù)配置文件位于/etc/firewalld/services/目錄下,定義了預(yù)定義服務(wù)的防火墻規(guī)則。
4.管理工具關(guān)系
現(xiàn)有防火墻管理手段的基本框架如下,供參考。
二、命令語法
在三種使用firewalld的方法中,我們重點(diǎn)討論firewall-cmd。
1.啟動firewalld
CentOS Stream 9操作系統(tǒng)默認(rèn)開啟了firewalld服務(wù),用戶可以使用systemctl命令查看firewalld服務(wù)狀態(tài)。
2.命令格式
firewalld命令格式簡單:
????????firewall-cmd [options..]
firewall-cmd命令常用選項(xiàng)
參數(shù) |
含義 |
--get-default-zone |
查詢默認(rèn)的區(qū)域名稱 |
--set-default-zone=區(qū)域名稱 |
設(shè)置默認(rèn)的區(qū)域,使其永久生效 |
--get-zones |
顯示可用的區(qū)域 |
--get--services |
顯示預(yù)先定義的服務(wù) |
--get-active-zones |
顯示當(dāng)前正在使用的區(qū)域與網(wǎng)卡名稱 |
--add-source= |
將源自此IP或子網(wǎng)的流量導(dǎo)向指定的區(qū)域 |
--remove-source |
不再將源自此IP或子網(wǎng)的流量都導(dǎo)向某個指定區(qū)域 |
--add-service=服務(wù)名 |
設(shè)置默認(rèn)區(qū)域允許該服務(wù)的流量 |
--add-port=端口號/協(xié)議 |
設(shè)置默認(rèn)區(qū)域允許該端口的流量 |
--remove-service=服務(wù)名 |
設(shè)置默認(rèn)區(qū)域不再允許該端口的流量 |
--add-interface=網(wǎng)卡名稱 |
將源自該的所有流量都導(dǎo)向某個指定區(qū)域 |
--change-interface=網(wǎng)卡名稱 |
將某個網(wǎng)卡與區(qū)域進(jìn)行關(guān)聯(lián) |
--list-all |
顯示當(dāng)前區(qū)域的配置參數(shù)、資源、端口以及服務(wù)等信息 |
--list-all-zones |
顯示所有區(qū)域的配置參數(shù)、資源、端口以及服務(wù)等信息 |
--reload |
讓永久生效的配置規(guī)則立即生效,并覆蓋當(dāng)前的配置規(guī)則 |
--panic-on |
開啟應(yīng)急狀況模式 |
--panic-off |
關(guān)閉應(yīng)急狀況模式 |
3.常見區(qū)域
firewalld常見區(qū)域及相應(yīng)策略規(guī)則
區(qū)域 |
策略 |
trusted |
允許所有數(shù)據(jù)包 |
home |
拒絕流入的流量,除非與流出的流量相關(guān)。若流量與ssh、mdns、ipp-client、amba-client、dhcpv6-client服務(wù)相關(guān),則允許流量通過 |
internal |
等同于home區(qū)域 |
work |
拒絕流入的流量,除非與流出的流量相關(guān),若流量與ssh、ipp-client、dhcpv6-client相關(guān),則允許流量通過 |
public |
拒絕流入的流量,除非與流出的流量相關(guān),若流量與ssh、dhcpv6-client服務(wù)相關(guān),則允許流量通過 |
external |
拒絕流入的流量,除非與流出的流量相關(guān),若流量與ssh服務(wù)相關(guān),則允許流量通過 |
dmz |
拒絕流入的流量,除非與流出的流量相關(guān),若流量與ssh服務(wù)相關(guān),則允許流量通過 |
block |
拒絕流入的流量,除非與流出的流量相關(guān)(阻斷) |
drop |
拒絕流入的流量,除非與流出的流量相關(guān)(丟棄) |
4.幫助信息
firewalld命令眾多,一般可以通過幫助查看詳細(xì)使用方法。
5.模式選擇
firewalld配置的防火墻策略,分為運(yùn)行時(shí)(Runtime)模式、永久(Permanent)模式兩種。
默認(rèn)的是運(yùn)行時(shí)(Runtime)模式,配置的策略便會立即生效,但是,系統(tǒng)一旦重啟就會失效。
永久生效(Permanent)模式,可以使firewalld配置永久生效,但是,此模式需要重啟系統(tǒng),或者手動執(zhí)行firewall-cmd --reload命令,配置的策略才會立即生效。
三、使用技巧
1.命令應(yīng)用別名
firewalld命令比較復(fù)雜,也不易錄入,可以設(shè)置別名,加快錄入,并確保正確無誤。建議如下:
????????alias f=firewall-cmd
????????alias fz='firewall-cmd --zone=public'
????????alias fp='firewall-cmd --permanent'
????????alias fl='firewall-cmd --list-all'
????????alias fr='firewall-cmd --reload'
2.簡寫參數(shù)/選項(xiàng)
在firewalld命令使用中,系統(tǒng)支持簡寫。這是系統(tǒng)一大特點(diǎn),各版本都可應(yīng)用。
一般是用單詞的前三個字母。
????????--state?? 簡寫? --st[ate]
????????--masquerade? 簡寫? --mas
????????--permanent? 簡寫 ?--per
????????--list-service? 簡寫 ?--list-ser
????????--remove-masquerade? 簡寫? --remove-mas
????????--add-service? 簡寫 ?--add-ser
3.補(bǔ)全
正常使用firewall-cmd命令錄入?yún)?shù)時(shí),可以按Tab鍵補(bǔ)全命令,按兩次,可以提示可選擇的內(nèi)容。
如使用別名,不再支持Tab鍵補(bǔ)全。
4.符號使用
a.空格
在使用firewalld命令中,可以用空格代替=號
執(zhí)行上述命令時(shí),可用空格代替=號,功能相同。
了解這一特性后,可用空格代替命令中的=號,錄入時(shí)相對容易些。
b.雙引號
在配置富規(guī)則時(shí),根據(jù)習(xí)慣,可以加雙引號。
配置一條富規(guī)則,拒絕192.168.100.2主機(jī)的ssh服務(wù):
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.100.2" service name="ssh" reject'
第1次添加時(shí)命令中加雙引號。查看效果后刪除該富規(guī)則。
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.100.2" service name="ssh" reject'
第2次添加時(shí)不加雙引號,效果相同
firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.100.2 service name=ssh reject'
c.=號
我們添加一個httpd服務(wù),把=號替換為空格,結(jié)果相同
firewall-cmd ?--add-service http
d.-
添加多個端口時(shí),開始端口加上“-”結(jié)束端口:
四、案例
首先使用systemctl命令,查看firewalld(防火墻)的狀態(tài)(status)、重新啟動(restart)、臨時(shí)關(guān)閉(stop)、臨時(shí)開啟(start)防火墻服務(wù)。
1.查看使用區(qū)域
查看firewalld服務(wù)當(dāng)前所使用的區(qū)域
命令:
????????firewall-cmd --get-default-zone
效果:
2.查看所有信息
查看firewalld當(dāng)前區(qū)域的配置參數(shù)、資源、服務(wù)等信息
命令:
????????firewall-cmd --list-all
效果:
(3)查看單項(xiàng)信息
查看public區(qū)域是否允許https服務(wù)和FTP協(xié)議數(shù)據(jù)包通過
命令:
????????firewall-cmd --zone=public --query-service=https
????????firewall-cmd --zone=public --query-service=ftp
效果:
(4)永久設(shè)置
將https設(shè)置為永久允許,并立即生效
命令中添加選項(xiàng)--permanent,為永久設(shè)置;沒有此選項(xiàng),為臨時(shí)設(shè)置。
命令:
????????firewall-cmd --permanent --zone=public --add-service=https?????#設(shè)置規(guī)則
????????firewall-cmd –reload???? #立即生效
????????firewall-cmd --zone=public --query-service=https
效果:
將http設(shè)置為永久允許,并立即生效
命令:
????????f --zone public --add-ser http --per #--per位置任意
????????f –rel #使規(guī)則生效,用命令別名和簡寫
????????f --list-ser #查看所有允許的服務(wù)
效果:
(5)設(shè)置端口
將10000端口的數(shù)據(jù)包設(shè)置為允許,僅限當(dāng)前有效
命令:
????????firewall-cmd --list-port #默認(rèn)查看當(dāng)前的區(qū)域
????????firewall-cmd --zone=public --add-port=10000/tcp
????????firewall-cmd --list-port #不加--zone=public時(shí),默認(rèn)查看當(dāng)前的區(qū)域
效果:
(6)設(shè)置富規(guī)則
配置一條富規(guī)則,拒絕172.168.1.0/24網(wǎng)段的所有用戶訪問本機(jī)的ssh服務(wù)
命令:
????????firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source? address="192.168.1.0/24" service="ssh" reject'
效果:
文章來源:http://www.zghlxwxcb.cn/news/detail-830736.html
基礎(chǔ)規(guī)則是設(shè)置前幾項(xiàng),而最后一項(xiàng)是富規(guī)則。文章來源地址http://www.zghlxwxcb.cn/news/detail-830736.html
到了這里,關(guān)于Linux CentOS stream 9 firewalld的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!