本章將和大家分享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。