搜尋近期熱門

利用Red Hat Enterprise Linux 9設定簡易防火牆

利用Red Hat Enterprise Linux 9設定簡易防火牆

文、猛鬼小紀

 

 

一、防火牆知識概要

 

在現今網路連線設備中,防火牆(Firewall)已經是家家戶戶必備的工具之一。從內建防火牆的家用型IP分享器、無線路由器,至企業所使用的專業防火牆設備,沒有任何一種設備可以取代它的地位。

 

 

防火牆的種類,從其安裝型態可分為主機式防火牆(host-based firewall)、網路型防火牆(network-based firewall)。

 

若依其運作狀態來分類,亦可分成有態式防火牆(stateful firewall)、無態式防火牆(stateless firewall)。

 

若以運用於網路 OSI 模型的層級來看,有所謂的應用層防火牆(application firewall)、網路層防火牆(network firewall),就看所需要的功能與防禦緃深的規劃與安排。

 

本文所要提及的防火牆是 Red Hat Enterprise Linux 9上預設安裝的Firewalld防火牆服務。Firewalld防火牆服務,分類上雖然是屬於主機式防火牆,但其功能卻可以涵蓋部份網路型防火牆功能,就運作狀態而言,除了一般可作為單純的無態式防火牆,亦可以進行有態式防火牆的運作,針對網路封包的運行狀態,進行過濾,如果配合適當的軟體套件,亦可從網路層防火牆,一路晉升為應用層級的防火牆,可謂是窮人最佳的免費防火牆。

 

接下來,本文將從 Firewalld 服務的操作方式出發,進行簡單的網路層防火牆設定與配置。

 

 

二、Firewalld防火牆簡單操作

 

在設定防火牆之前,首先需要將 Red Hat Enterprise Linux 9安裝好,另外,在主機上需要準備兩張網路卡,一張網路卡對外連上網際網路,另一張則是對內連上內部網路,相關的設定,如下圖所示。

 

利用ip addr show這個指令,查看目前所有網路卡的設定,很顯然的,ens1這張網卡是對外連線至網際網路,而enp1s0這張網路卡則是連接內部網路,內部網路假設是使用192.168.1.0/24這個網段,而位於內部網路上的主機群,如果要利用這個防火牆對網際網路連線,將需要指定192.168.1.123這個IP位址為網路閘道,當然,這些網路相關的指令操作,通常也都只有root才有足夠的權限進行操作,一般的使用者身份是無法操作的。

 

linux for lccnet lesson img1

 

 

接下來,可以利用systemctl這個系統服務管理指令,查詢firewalld防火牆服務的運作情況,如下圖所示:

 

linux for lccnet lesson img2

 

 

另外,利用firewall-cmd這個指令,可以輕易地操作防火牆設定與查詢,例如:要查詢目前防火牆的設定,可以使用firewall-cmd --list-all這個指令參數組合,如下圖所示:

 

linux for lccnet lesson img3

 

 

很明顯的,這裡有些項目是等一下會用到的,需要事前先解釋:

publicactive):

表示目前預設的防火牆規則區域(zone)是名為 public這個領域名稱。active表示其狀態為運作中。

 

 ▶ target: default: 

表示這個區域是防火牆設定的預設區域,只要執行 firewall-cmd 這個指令沒有指定要使用哪個區域,就表示是針對這個區域進行設定。

 

 ▶ interfaces: 

表示這個區域內的規則,可以套用在哪些網路卡上。主機上的每一張網路卡,只能加入到一個區域內,不可以跨多個區域。

 

 ▶ services: 

表示允許哪些服務,可以進入該主機系統。

 

ports:

表示開放哪些通訊埠可以進行通訊連結。

 

 ▶ masquerade: 

表示是否開放 IP 偽裝的功能,這對於要實作 NAT(Network Address Translation,網路位址轉址)功能,十分重要。

 

 ▶ forward-ports: 

表示有哪些通訊埠,可以轉送到指定的IP或是通訊埠。

了解這些簡單的操作之後,接下來就是要進行防火牆服務的規則設定。

 

 

三、Firewalld網路型防火牆基本設定

 

首先,先使用下列指令,將對外的網路卡 ens1,移動至專門處理對外連線的 external 區域,並且取消 external 上所有對外的服務通道:

▶ # firewall-cmd --change-interface=ens1 --zone=external

▶ # firewall-cmd --remove-service=ssh --zone=external

接著,我們指定 external 為預設的區域:

▶ #firewall-cmd --set-default-zone=external

結果如下圖所示:

 

linux for lccnet lesson img4

 

 

接下來,再將enp1s0網路卡,移至 internal 這個區域內,專門用於處理內陪網路,並且開放ssh連線,可連入這一部防火牆,方便遠端管理與維護:

▶ # firewall-cmd --change-interface=enp1s0 --zone=internal

結果如下圖所示:

 

linux for lccnet lesson img5

 

 

完成以上的設定之後,一個網路層的網路型防火牆,就這樣輕鬆的完成了。這裡會建議使用下列規則,來進行規則的儲存,方便在開機時,可直接導入:

▶ # firewall-cmd --runtime-to-permanent

 

接下來,就是要如何開通服務,將網路的流量導入至內部網路的站台。

 

😮:欸欸聽說有一門課程可以學習 Red Hat Enterprise Linux 9,能夠設定防火牆,增加安全性!
🤔:真的嗎?那也可以學到Red Hat Linux-RH294 和 AWS 雲端運算技能嗎?
😮:對啊!這門課程可以讓我們成為百大企業追逐的 Linux 人才!趕快填表領取限時優惠吧!

優惠這邊拿👉🏻Red Hat Linux-RH294 & AWS雲端運算

 

四、Firewalld防火牆設定規則

 

假設內部網路中,有一部主機位址是 192.168.1.30 為對外提供 Web 服務的站台,需要將網路流量從防火牆導入至該主機上,並且回程的流量也應該被允許。這樣的設定要求,可如下操作指令:

▶ # firewall-cmd --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.1.30

▶ # firewall-cmd --add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.1.30

 

 

以上的指令,是讓外部的流量,通過防火牆至指定的內部網路主機.而以下的指令,則是讓內部網路的主機通過防火牆,前往網際網路:

▶ firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o ens1 -j MASQUERADE

▶ [root@dlp ~]# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp1s0 -o ens1 -j ACCEPT

▶ [root@dlp ~]# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i ens1 -o enp1s0 -m state --state RELATED,ESTABLISHED -j ACCEPT

完成以上的項目操作,即可讓內部網路的Web站台,提供HTTP/HTTPS服務給網際網路使用者存取,並且擋掉其它意圖非法的連結通訊埠。

 

最後,再進行儲存規則的動作,以利開機時導入系統:

▶ # firewall-cmd --runtime-to-permanent

 

 

五、結語

 

就以上的設定流程而言,利用RHEL9要架設一個網路型防火牆,並不是件十分困難的事,只要對於網路概念有基礎,再加對於 RHEL9 有熟悉的觀念與操作技巧,均可輕鬆以對。

 

想要好好學好 Red Hat Enterprise Linux 9安全防護機制與相關的操作技巧,建議洽詢Red Hat官方授權教育訓練中心—聯成電腦教育訓練中心,有優良的環境、完整的訓練體制與經驗豐富的講師,不管再如何困難的資安知識,都可以輕易的迎刃而解,並且應用於日常。

 

 

 

 

FB粉絲團:https://www.facebook.com/lccnetzone
YouTube頻道:https://www.youtube.com/user/LccnetTaiwan

痞客邦Blog:http://lccnetvip.pixnet.net/blog

本網站使用相關網站技術以確保使用者獲得最佳體驗,通過使用我們的網站,您確認並同意本網站的隱私權政策。欲了解詳情,請參閱 隱私權政策