如何在 RHEL、Rocky 和 ??AlmaLinux 中配置 FirewallD

言鼎科技 2023-07-14 362

我們都知道Net-filter是Linux中的防火墻。Firewalld是一個(gè)動(dòng)態(tài)守護(hù)進(jìn)程,用于管理防火墻并支持網(wǎng)絡(luò)區(qū)域。在以前的版本中,RHEL 和 CentOS 我們使用 iptables 作為數(shù)據(jù)包過(guò)濾框架的守護(hù)進(jìn)程。


在基于 RHEL 的較新版本(例如 Fedora、Rocky Linux、CentOS Stream、AlmaLinux 和 openSUSE)中,iptables 接口正在被 firewalld 取代。


[您可能還喜歡:Linux 系統(tǒng)的 10 個(gè)開源安全防火墻優(yōu)勢(shì)]。


建議您開始使用 Firewalld 而不是 iptables,因?yàn)樗鼘?lái)可能會(huì)停止使用。不過(guò),iptables 仍然受支持,并且可以使用 yum 命令加載。我們不能將Firewalld和iptables放在同一個(gè)系統(tǒng)中,這可能會(huì)導(dǎo)致沖突。


在 iptables 中,我們配置為輸入、輸出和轉(zhuǎn)發(fā)鏈,但在 Firewalld 中,邏輯使用區(qū)域?;旧?,firewalld 中有不同的區(qū)域,我們將在本文中討論。



公共區(qū)域和私人區(qū)域等基本區(qū)域。為了使這些區(qū)域能夠正常工作,我們需要將接口添加到配置的區(qū)域支持中,然后我們可以將服務(wù)添加到firewalld中。


基本上有很多服務(wù),firewalld 最好的功能之一是,它帶有預(yù)先配置的功能,我們可以以這些服務(wù)為例,只需下載它們即可將它們添加到我們的服務(wù)中。


Firewalld 還可以與 IPv4、IPv6 和以太網(wǎng)橋配合良好。我們可以在單獨(dú)的防火墻系統(tǒng)中設(shè)置超時(shí)和一致的時(shí)間表。


讓我們從如何使用區(qū)域開始,并通過(guò) Linux 中更有趣的 Firewalld 用法來(lái)創(chuàng)建我們自己的服務(wù)。


操作系統(tǒng):Red Hat Enterprise Linux 版本 9.0 (Plough)

 IP 地址       :192.168.0.159

主機(jī)名 :howtoing-rhel9


步驟 1:在基于 RHEL 的系統(tǒng)中安裝 Firewalld

1. RHEL、Fedora、Rocky Linux、CentOS Stream、AlmaLinux 和 openSUSE 中默認(rèn)安裝防火墻軟件包。否則,您可以使用以下 yum 命令安裝它。


# yum 安裝防火墻 -y


.


# systemctl 狀態(tài) iptables

# systemctl 停止 iptables

# systemctl 掩碼 iptables


第 2 步:了解壁爐組件(區(qū)域和規(guī)則)。

3. 在開始壁爐設(shè)計(jì)之前,我想探索一下每個(gè)領(lǐng)域。基本上,存在一些社區(qū)。我們需要將接口分配給區(qū)域。區(qū)域定義了接口接受連接的可信或拒絕級(jí)別的區(qū)域。區(qū)域可以包含服務(wù)和端口。


在這里,我們將解釋 Firewalld 中可用的每個(gè)環(huán)境。


Drop Zone:當(dāng)我們使用 drop zone 時(shí),所有傳入的數(shù)據(jù)包都會(huì)被丟棄。這是我們與iptables -j drop結(jié)合使用的。使用丟棄規(guī)則意味著沒(méi)有響應(yīng),只有傳出網(wǎng)絡(luò)連接。

阻止區(qū)域:阻止區(qū)域?qū)⒕芙^拒絕帶有 icmp-host-prohibited 的傳入網(wǎng)絡(luò)連接。僅允許在公司內(nèi)部配置的聯(lián)系人。

公共領(lǐng)域:為了獲取選定的鏈接,我們可以在公共領(lǐng)域定義規(guī)則。這將確保一旦特定端口移出我們的設(shè)施,其他連接將被刪除。

外部區(qū)域:該區(qū)域?qū)⒊洚?dāng)選定的偽裝路由器,其他連接將被丟棄且不被接受,并且僅允許專用連接。

DMZ區(qū)域:如果我們需要允許公眾訪問(wèn)某些服務(wù),可以在DMZ區(qū)域中定義它。這也傾向于只接受選定的傳入連接。

工作區(qū):在此區(qū)域中,我們只能定義內(nèi)部網(wǎng)絡(luò),即允許專用網(wǎng)絡(luò)流量。

家庭區(qū)域:此區(qū)域?qū)iT用于家庭區(qū)域,我們可以使用此區(qū)域來(lái)信任網(wǎng)絡(luò)上的其他計(jì)算機(jī),他們不會(huì)像在任何區(qū)域中那樣損害您的計(jì)算機(jī)。這也只允許傳入選定的連接。

內(nèi)部環(huán)境:這對(duì)應(yīng)于具有允許的通信選項(xiàng)的企業(yè)。

信任區(qū)域:當(dāng)我們到達(dá)信任區(qū)域時(shí),所有流量都會(huì)被接受。

現(xiàn)在您對(duì)區(qū)域有了更好的了解,現(xiàn)在讓我們查找可用區(qū)域和默認(rèn)區(qū)域,并使用以下命令列出所有區(qū)域。


# 防火墻-cmd --get-zones


# 防火墻-cmd --get-default-zone


# 防火墻-cmd --list-all-zones



注意:上述命令的輸出不會(huì)出現(xiàn)在一頁(yè)上,因?yàn)檫@將列出每個(gè)區(qū)域,例如 block、dmz、drop、external、home、internal、public、trusted 和 work。如果區(qū)域有高級(jí)規(guī)則,則還將列出所提供的服務(wù)或端口以及這些區(qū)域的描述。


第三步:規(guī)劃初始廚房區(qū)域

4. 如果要將默認(rèn)區(qū)域設(shè)置為內(nèi)部、外部、緩沖區(qū)、進(jìn)程或任何其他區(qū)域,可以使用以下命令設(shè)置默認(rèn)區(qū)域。在這里,我們使用“內(nèi)部”字段作為默認(rèn)值。


# 防火墻-cmd --set-default-zone=內(nèi)部

5. 設(shè)置區(qū)域后,使用以下命令驗(yàn)證默認(rèn)區(qū)域。


# 防火墻-cmd --get-default-zone


6. 這里,我們的接口是enp0s3,如果我們需要檢查接口所綁定的區(qū)域,我們可以使用以下命令。


# 防火墻-cmd --get-zone-of-interface=enp0s3


7. 另一個(gè)有趣的防火墻屬性是“icmptype”,它是防火墻支持的 icmp 類型之一。要獲取支持的 icmp 類型列表,我們可以使用以下命令。


# 防火墻-cmd --get-icmptypes


第 4 步:在 Firewalld 中創(chuàng)建您自己的服務(wù)

8. 服務(wù)是 Firewalld 使用的一組規(guī)則以及端口和選項(xiàng)。服務(wù)已啟用,當(dāng)Firewalld服務(wù)啟用時(shí)會(huì)自動(dòng)出現(xiàn)。


默認(rèn)情況下有多個(gè)服務(wù),要獲取所有可用服務(wù)的列表,請(qǐng)使用以下命令。


# 防火墻-cmd --get-services


9. 要獲取所有現(xiàn)有服務(wù)的列表,請(qǐng)導(dǎo)航到以下文件夾,您將在此處找到應(yīng)用程序列表。


# cd /usr/lib/firewalld/services/


10. 要?jiǎng)?chuàng)建您自己的服務(wù),您需要在以下位置定義它。比如這里我想給RTMP 1935端口添加一個(gè)服務(wù),首先下載每個(gè)服務(wù)。


# cd /etc/firewalld/services/

# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/

然后,導(dǎo)航到下載服務(wù)文件的位置,然后將文件“ssh.xml”重命名為“rtmp.xml”,如下圖所示。


# cd /etc/firewalld/services/

# mv ssh.xml rtmp.xml

# ls -l rtmp.xml



11. 接下來(lái)打開文件并編輯標(biāo)題、描述、配置和端口號(hào),我們需要將其用于 RTMP 服務(wù),如下圖所示。



12. 要使這些更改生效,請(qǐng)重新啟動(dòng)防火墻服務(wù)器或重新加載設(shè)置。


# 防火墻-cmd --reload

13. 要確認(rèn)是否添加了服務(wù),請(qǐng)運(yùn)行以下命令來(lái)查看可用服務(wù)的列表。


# 防火墻-cmd --get-services


步驟 5:將服務(wù)添加到 Firewalld 區(qū)域

14. 這里我們將討論如何使用firewall-cmd命令來(lái)管理防火墻。要確定防火墻和所有活動(dòng)區(qū)域的當(dāng)前狀態(tài),請(qǐng)輸入以下命令。


# 防火墻-cmd --state

# 防火墻-cmd --get-active-zones


15. 要獲取接口enp0s3的公共區(qū)域,這是默認(rèn)接口,在/etc/firewalld/firewalld.conf文件中定義為DefaultZone= public。


在此默認(rèn)界面窗格中列出所有可用服務(wù)。


# 防火墻-cmd --get-service


第 6 步:將服務(wù)添加到 Firewalld 區(qū)域

16. 在上面的示例中,我們了解了如何通過(guò)創(chuàng)建 rtmp 服務(wù)來(lái)創(chuàng)建自己的服務(wù),這里我們還將了解如何將 rtmp 服務(wù)添加到區(qū)域。


# 防火墻-cmd --add-service=rtmp

17. 要?jiǎng)h除附加區(qū)域,請(qǐng)輸入該區(qū)域。


# 防火墻-cmd --zone=public --remove-service=rtmp

上述步驟是暫時(shí)的。為了使其持久化,我們需要使用選項(xiàng)–permanent運(yùn)行以下命令。


# 防火墻-cmd --add-service=rtmp --permanent

# 防火墻-cmd --reload

18. 定義網(wǎng)絡(luò)源范圍的規(guī)則并打開每個(gè)端口。例如,如果您想移動(dòng)網(wǎng)絡(luò)范圍“192.168.0.0/24”和端口“1935”,請(qǐng)使用以下命令。


# 防火墻-cmd --permanent --add-source=192.168.0.0/24

# 防火墻-cmd --permanent --add-port=1935/tcp

添加或刪除任何作業(yè)或端口后,請(qǐng)務(wù)必重新加載防火墻作業(yè)。


# 防火墻-cmd --reload

# 防火墻-cmd --list-all


第7步:為網(wǎng)絡(luò)范圍添加Firewalld豐富規(guī)則

19. 當(dāng)我想要授權(quán)http、https、vnc-server和PostgreSQL等服務(wù)時(shí),我使用以下規(guī)則。首先添加規(guī)則并使其持久化,然后重新加載規(guī)則并檢查狀態(tài)。


#firewall-cmd --add-rich-rule '規(guī)則族=“ipv4”源地址=“192.168.0.0/24”服務(wù)名稱=“http”接受'

#firewall-cmd --add-rich-rule '規(guī)則族=“ipv4”源地址=“192.168.0.0/24”服務(wù)名稱=“http”接受'--permanent


#firewall-cmd --add-rich-rule '規(guī)則系列=“ipv4”源地址=“192.168.0.0/24”服務(wù)名稱=“https”接受'

#firewall-cmd --add-rich-rule '規(guī)則系列=“ipv4”源地址=“192.168.0.0/24”服務(wù)名稱=“https”接受'--permanent


#firewall-cmd --add-rich-rule '規(guī)則族=“ipv4”源地址=“192.168.0.0/24”服務(wù)名稱=“vnc-server”接受'

#firewall-cmd --add-rich-rule '規(guī)則系列=“ipv4”源地址=“192.168.0.0/24”服務(wù)名稱=“vnc-server”接受'--permanent


#firewall-cmd --add-rich-rule '規(guī)則族=“ipv4”源地址=“192.168.0.0/24”服務(wù)名稱=“postgresql”接受'

#firewall-cmd --add-rich-rule '規(guī)則系列=“ipv4”源地址=“192.168.0.0/24”服務(wù)名稱=“postgresql”接受'--permanent

現(xiàn)在,網(wǎng)絡(luò)范圍 192.168.0.0/24 可以從我的服務(wù)器使用上述服務(wù)。–constant選項(xiàng)可以在任何規(guī)則中使用,但是我們必須定義規(guī)則并檢查客戶端權(quán)限,然后我們必須使其持久化。


20.添加上述規(guī)則后,不要忘記重新插入防火墻規(guī)則并通過(guò)以下方式輸入規(guī)則:


# 防火墻-cmd --reload

# 防火墻-cmd --list-all


了解有關(guān) Firewalld 的更多信息。


# 人防火墻

就這樣,我們了解了如何在基于 RHEL 的發(fā)行版(例如 Fedora、Rocky Linux、CentOS Stream、AlmaLinux 和 openSUSE)中使用 Firewalld 設(shè)置網(wǎng)絡(luò)過(guò)濾器。


Net-filter 是任何 Linux 發(fā)行版的防火墻設(shè)置。在 RHEL 和 CentOS 的每個(gè)版本中,我們都使用 iptables,但在較新的版本中引入了 Firewalld。易于理解和使用firewalld。我們希望您喜歡這篇文章。

言鼎科技

The End