Firewalld 防火牆指令

基本指令

啟動 firewalld 服務

systemctl start firewalld

停止 firewalld 服務

systemctl stop firewalld

重新啟動 firewalld 服務

service firewalld restart

檢查 firewalld 服務狀態

systemctl status firewalld

設定開機自動啟動

systemctl enable firewalld

列出指定的區域與內容

暫時開放的port

sudo firewall-cmd --zone=public --list-all

永久設定值

sudo firewall-cmd --zone=public --list-all --permanent

列出預先定義的服務名稱

firewall-cmd --get-services

將服務新增至 public 區域

這裡以 http 服務為例

暫時性 ( 重開就沒了 )

sudo firewall-cmd --zone=public --add-service=http

永久性

sudo firewall-cmd --zone=public --permanent --add-service=http

自訂開啟連接埠

這裡以 tcp 的 8080 連接埠為例

暫時性 ( 重開就沒了 )

sudo firewall-cmd --zone=public --add-port=8080/tcp

永久性

sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp

開通多個連接埠

這裡以 udp 的 4990 至 4999 連接埠為例

暫時性 ( 重開就沒了 )

sudo firewall-cmd --zone=public --add-port=4990-4999/udp

永久性

sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp

移除服務

若要將指定的服務從某個區域中移除,可以執行以下指令

這裡以 http 服務為例

暫時移除

sudo firewall-cmd --zone=public --remove-service=http

永久移除

sudo firewall-cmd --zone=public --permanent --remove-service=http

如果是要移除自訂的通訊協定與埠號,則執行以下指令

這裡以 tcp 的 8080 連接埠為例

暫時關閉

sudo firewall-cmd --zone=public --remove-port=8080/tcp

永久關閉

sudo firewall-cmd --zone=public --permanent --remove-port=8080/tcp

新增服務名稱

除了直接指定通訊協定與埠號之外,我們也可以自訂新的服務名稱

加入 firewalld 的服務名稱清單中

這樣就可以使用服務名稱的方式來設定開啟的服務

這樣做的好處是可以讓防火牆的設定看起來更容易理

不會搞不清楚某些奇怪埠號的用途。

若要新增服務名稱

可參考 /usr/lib/firewalld/services/ 中的範例

例如 http.xml 就是定義 http 服務的設定檔

<?xml version="1.0" encoding="utf-8"?>
<service>
<short>WWW (HTTP)</short>
<description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
<port protocol="tcp" port="80"/>
</service>

參考這些範例後,撰寫自己的服務設定檔(若需要開啟多個連接埠,可以自己新增,或是參考其他的範例檔),然後另外儲存成一個新的檔案,檔名要設定為服務的名稱加上 XML 的附檔名,例如 my_service.xml,接著讓 firewalld 重新載入設定

重新載入設定

sudo firewall-cmd --reload

重新查詢一次支援的服務名稱,應該就可以看到新加入的 my_service 服務了

列出預先定義的服務名稱

firewall-cmd --get-services
Last modification:January 8, 2020
If you think my article is useful to you, please feel free to appreciate