入門Firewalld

一個防火牆是保護機從任何不必要的流量之外的方法。它使用戶能夠通過定義一組

防火牆規則來控制主機上的傳入網絡流量。這些規則用於對傳入流量進行排序,並阻止或允許通過。

firewalld是一個防火牆服務守護程序,它提供帶有D-Bus接口的動態可定製的基於主機的防火牆。它是動態的,可以創建,更改和刪除規則,而無需在每次更改規則時重新啟動防火牆守護程序。

firewalld使用區域服務的概念,簡化流量管理。區域是預定義的規則集。可以將網絡接口和源分配給區域。允許的流量取決於計算機所連接的網絡以及此網絡的安全級別。防火牆服務是預定義的規則,涵蓋了允許特定服務的傳入流量並在區域內應用的所有必要設置。

服務使用一個或多個端口地址進行網絡通信。防火牆根據端口過濾通信。要允許服務的網絡流量,必須打開其端口。firewalld阻止未明確設置為打開的端口上的所有流量。某些區域(如可信

區域)默認允許所有流量。

入門Firewalld

firewalld和iptables的區別

1、zone區域

⁠ firewalld可以用於根據用戶決定放置在該網絡中的接口和流量上的信任級別將網絡分成不同的區域。連接只能是一個區域的一部分,但區域可用於許多網絡連接。

NetworkManager通知firewalld接口的區域。您可以使用 firewall-config工具或命令行工具為具有 NetworkManager的接口分配區域。後兩者只編輯相應的 NetworkManager配置文件。如果使用或 firewall-config更改接口的區域,請求將轉發到 NetworkManager,而不由⁠處理。 firewall-cmdfirewall-cmdfirewalld

預定義區域存儲在/usr/lib/firewalld/zones/目錄中,可以立即應用於任何可用的網絡接口。這些文件/etc/firewalld/zones/只有在修改後才會複製到目錄中。下表介紹了預定義區域的默認設置:

block

任何傳入的網絡連接都會被icmp-host-prohibited消息拒絕,IPv4並禁止icmp6-adm- for IPv6。只能從系統內啟動網絡連接。

dmz

既不屬於外網也不屬於內網的獨特區域,對於非軍事區中的計算機,這些計算機可公開訪問,並且對內部網絡的訪問權限有限。僅接受選定的傳入連接。

drop

在沒有任何通知的情況下丟棄任何傳入網絡數 只能進行傳出網絡連接。

external

用於在啟用偽裝的外部網絡上使用,尤其適用於路由器。您不相信網絡上的其他計算機不會損害您的計算機。僅接受選定的傳入連接。

home

當您主要信任網絡上的其他計算機時,可在家中使用。僅接受選定的傳入連接。

internal

當您最信任網絡上的其他計算機時,用於內部網絡。僅接受選定的傳入連接。

public

用於您不信任網絡上其他計算機的公共區域。僅接受選定的傳入連接。

trusted

接受所有網絡連接。

work

用於您最信任網絡上其他計算機的工作。僅接受選定的傳入連接。

其中一個區域設置為默認區域。將接口連接添加到NetworkManager時會將它們分配給默認區域。安裝時,默認區域firewalld設置為public區域。可以更改默認區域。

2、運行時和永久設置

運行時模式下提交的任何更改僅在運行時應用firewalld。當firewalld重新啟動,設置恢復到它們的永久值。

要使更改在重新引導後保持不變,請使用該--permanent選項再次應用它們。或者,要在firewalld運行時進行持久更改,請使用該--runtime-to-permanent firewall-cmd選項。

如果在firewalld僅使用該--permanent選項運行時設置規則,則在firewalld重新啟動之前它們不會生效。但是,重新啟動會firewalld關閉所有打開的端口並停止網絡流量。

3、使用CLI在運行時和永久配置中修改設置

使用CLI,您不能同時在兩種模式下修改防火牆設置。您只能修改運行時或永久模式。要在永久模式下修改防火牆設置,請使用--permanent帶有該firewall-cmd命令的選項。

firewall-cmd --permanent <other>

如果沒有此選項,該命令將修改運行時模式。

要在兩種模式下更改設置,可以使用兩種方法:

更改運行時設置,然後將其永久化,如下所示:

#firewall-cmd <other>

#firewall-cmd --runtime-to-permanent

  1. 設置永久設置並將設置重新加載到運行時模式:

#firewall-cmd --permanent <other>

#firewall-cmd --reload

第一種方法允許您在將設置應用於永久模式之前測試設置。

注意!!!

特別是在遠程系統上,不正確的設置可能導致用戶將自己鎖定在機器外。要防止出現這種情況,請使用該--timeout選項。在指定的時間後,任何更改都將恢復為其先前的狀態。使用此選項排除了該--permanent選項。

例如,要添加SSH服務15分鐘:

# firewall-cmd --add-service=ssh --timeout 15m

4、常用命令

要停止firewalld,請作為根用戶輸入以下命令:

~]# systemctl stop firewalld

要防止firewalld在系統啟動時自動啟動,請以root用戶身份發出以下命令:

~]# systemctl disable firewalld

要啟動firewalld,請作為根用戶輸入以下命令:

~]# systemctl start firewalld

要確保firewalld在系統啟動時自動啟動,請以root用戶身份輸入以下命令:

~]# systemctl enable firewalld

若要檢查firewalld是否正在運行,請輸入以下命令:

~]$ systemctl status firewalld

另外,檢查firewall-cmd是否可以通過輸入以下命令連接到守護進程:

~]$ firewall-cmd --state

要查看活動區域列表,以及當前分配給它們的接口列表,請輸入以下命令:

~]$ firewall-cmd --get-active-zones

要找出接口(例如em1)當前分配到的區域,請輸入以下命令:

~]$ firewall-cmd --get-zone-of-interface=em1

要找出分配給某個區域(例如公共區域)的所有接口,請輸入以下命令作為根:

~]# firewall-cmd --zone=public --list-interfaces

若要查找區域(例如公共區域)的所有設置,請輸入以下命令作為根:

~]# firewall-cmd --zone=public --list-all

要查看當前加載的服務列表,請以root用戶身份輸入以下命令:

~]# firewall-cmd --get-services

如果自定義服務已經創建,但沒有加載,可以列出如下:

~]# firewall-cmd --permanent --get-services

要開始刪除所有傳入和傳出的數據包:

~]# firewall-cmd --panic-on

要重新開始傳遞傳入和傳出數據包:

~]# firewall-cmd --panic-off

允許ssh服務通過

~]#firewall-cmd --enable service=ssh

打開80端口:

~]# firewall-cmd --zone=internal --add-port=80/tcp

~] # firewall-cmd – reload

端口轉發,22to3777:

~]# firewall-cmd --zone=external --add-masquerade //啟用偽裝。

~] # firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=322 //將區域external的22號端口轉到322端口。

要在不中斷用戶連接(不丟失狀態信息)的情況下重新加載防火牆,請作為根用戶輸入以下命令:

~]# firewall-cmd --reload

若要重新加載防火牆並中斷用戶連接,丟棄狀態信息,請作為根用戶輸入以下命令:

~]# firewall-cmd --complete-reload

要向專區添加接口(例如,要將em1添加到公共專區),請作為根用戶輸入以下命令:

~]# firewall-cmd --zone=public --add-interface=em1

要獲得默認區域(例如,為public),輸入以下命令作為根:

~]# firewall-cmd --get-default-zone

要設置默認區域(例如,為public),輸入以下命令作為根:

~]# firewall-cmd --set-default-zone=public

要列出一個區域(例如dmz)的所有打開端口,輸入以下命令作為根:

~]# firewall-cmd --zone=dmz --list-ports

要將端口添加到區域(例如,允許TCP流量將端口8080添加到dmz區域),輸入以下命令作為根:

~]# firewall-cmd --zone=dmz --add-port=8080/tcp

要向區域添加一個端口範圍(例如,要允許從5060到5061的端口到公共區域,輸入以下命令作為根:

~]# firewall-cmd --zone=public --add-port=5060-5061/udp

要向專區添加服務(例如,允許SMTP進入工作專區),請作為根用戶輸入以下命令:

~]# firewall-cmd --zone=work --add-service=smtp

要從區域中刪除服務(例如,要從工作區域中刪除SMTP),輸入以下命令作為根:

~]# firewall-cmd --zone=work --remove-service=smtp

要將自定義規則添加到“IN_public_allow”鏈,可以發出以下命令作為根:

~]# firewall-cmd --direct --add-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 123 -j ACCEPT

要從“IN_public_allow”鏈中刪除自定義規則,可以發出以下命令作為根:

~]# firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow 0 -m tcp -p tcp --dport 123 -j ACCEPT

要列出“IN_public_allow”鏈中的規則,可以發出以下命令作為根:

~]# firewall-cmd --direct --get-rules ipv4 filter IN_public_allow


分享到:


相關文章: