Linux系統中firewalld防火牆常用的操作命令

谢友海發表於2024-08-17

本章將和大家分享Linux系統中firewalld防火牆常用的操作命令。廢話不多說,下面我們直接進入主題。

一、安裝Firewall命令

yum install firewalld firewalld-config

二、防火牆的基本操作

1、檢視防火牆狀態

  • 使用systemctl status firewalld命令可以檢視firewalld服務的狀態。
  • 也可以使用firewall-cmd --state命令直接檢視防火牆的狀態。

2、開啟防火牆

  • 臨時性開啟(重啟後失效):systemctl start firewalld
  • 永久性開啟(即開機啟動):systemctl enable firewalld

3、關閉防火牆

  • 臨時性關閉(重啟後恢復):systemctl stop firewalld
  • 永久性關閉(即禁止開機啟動):systemctl disable firewalld

4、重啟防火牆

重新載入防火牆的所有配置並應用新的規則:systemctl restart firewalld

5、重新載入防火牆配置

  • 不中斷現有連線:firewall-cmd --reload
  • 中斷所有連線(類似重啟服務):firewall-cmd --complete-reload

三、區域(Zone)管理

  • 檢視所有可用的區域:firewall-cmd --get-zones
  • 檢視當前啟用的區域:firewall-cmd --get-active-zones
  • 檢視指定區域的詳細資訊:firewall-cmd --zone=public --list-all(public是示例區域名,需替換為實際區域名)
  • 設定預設區域:firewall-cmd --set-default-zone=public(public是示例區域名)
  • 新增區域:firewall-cmd --permanent --new-zone=myzone(myzone是自定義區域名)
  • 刪除區域:firewall-cmd --permanent --delete-zone=myzone(myzone是自定義區域名)

四、埠(Port)管理

1、檢視已開放的埠

firewall-cmd --list-ports(顯示當前防火牆會話中開放的埠,包含永久或臨時開放的埠,未指定區域則預設為public區域)

firewall-cmd --permanent --list-ports (列出在 firewalld 防火牆配置中永久設定的埠)

2、新增指定開放埠

  • 永久開放:firewall-cmd --permanent --zone=public --add-port=80/tcp(80是埠號,tcp是協議型別)
  • 開放埠範圍:firewall-cmd --permanent --zone=public --add-port=9000-9008/tcp

3、移除指定開放埠

  • 永久移除:firewall-cmd --permanent --zone=public --remove-port=80/tcp
  • 移除埠範圍:firewall-cmd --permanent --zone=public --remove-port=9000-9008/tcp

4、查詢指定開放埠狀態

firewall-cmd --zone=public --query-port=80/tcp

五、服務(Service)管理

  • 檢視已啟用的服務:firewall-cmd --list-services(未指定區域則預設為public區域)
  • 檢視所有可用的服務:firewall-cmd --get-services
  • 新增指定服務(永久新增):firewall-cmd --permanent --zone=public --add-service=http(http是服務名)
  • 移除指定服務(永久移除):firewall-cmd --permanent --zone=public --remove-service=http

六、富規則(Rich Rules)

檢視已設定的富規則:firewall-cmd --list-rich-rules(未指定區域則預設為public區域)。

新增富規則:例如,只允許特定IP訪問特定埠,可以使用如下命令:

firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='192.168.1.1/24' port protocol='tcp' port='3306' accept"

移除富規則:需要指定與新增時相同的規則字串來移除。

七、檢視當前防火牆配置

1、檢視所有預設的區域設定

sudo firewall-cmd --get-default-zone

2、列出所有可用的區域

sudo firewall-cmd --get-zones

3、列出當前啟用的區域

sudo firewall-cmd --get-active-zones

4、檢視某個區域的所有規則

sudo firewall-cmd --zone=<zone> --list-all

八、修改防火牆配置

1、永久改變預設區域

sudo firewall-cmd --set-default-zone=<new-zone>

2、臨時改變預設區域 (重啟後會恢復)

sudo firewall-cmd --set-default-zone-to=<new-zone>

3、將介面移動到特定區域

sudo firewall-cmd --permanent --change-zone=<interface> <new-zone>

4、新增埠到指定區域

sudo firewall-cmd --zone=<zone> --add-port=<port>/<protocol> --permanent

5、刪除埠

sudo firewall-cmd --zone=<zone> --remove-port=<port>/<protocol> --permanent

6、允許或禁止服務

sudo firewall-cmd --zone=<zone> --add-service=<service> --permanent
sudo firewall-cmd --zone=<zone> --remove-service=<service> --permanent

7、允許或禁止單個 IP 地址

sudo firewall-cmd --zone=<zone> --add-rich-rule='rule family="ipv4" source address="<ip-address>" accept'
sudo firewall-cmd --zone=<zone> --remove-rich-rule='rule family="ipv4" source address="<ip-address>" accept'

8、重新載入配置檔案(不會中斷現有連線)

sudo firewall-cmd --reload

九、注意事項

  • 使用 --permanent 引數會將更改寫入配置檔案,這樣更改在系統重啟後仍然有效。
  • 不帶 --permanent 引數的更改僅在當前會話中生效,重啟 firewalld 或系統後會丟失。
  • <zone> 是你想要應用規則的區域名稱,例如 public, internal, trusted 等。
  • <service> 是預定義的服務名稱,如 ssh, http, https 等。
  • <port> 指定要開放的埠號,而 <protocol> 通常是 tcp 或 udp。

相關文章