在 Rocky Linux 中,你可以使用 `firewalld` 來管理防火牆規則。以下是關閉所有埠並重新開放所需埠的步驟:
### 步驟 1:關閉所有埠
首先,你需要關閉所有埠。你可以使用 `firewall-cmd` 命令來實現這一點:
```bash
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" reject'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv6" source address="::/0" reject'
```
### 步驟 2:開放所需的埠
接下來,開放你需要的埠。例如,如果你需要開放 HTTP (80) 和 HTTPS (443) 埠,可以執行以下命令:
```bash
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
```
如果你需要開放其他埠,可以根據需要新增:
```bash
sudo firewall-cmd --permanent --add-port=<PORT>/tcp
sudo firewall-cmd --permanent --add-port=<PORT>/udp
```
### 步驟 3:重新載入防火牆規則
在完成上述配置後,重新載入防火牆規則以使更改生效:
```bash
sudo firewall-cmd --reload
```
### 步驟 4:驗證防火牆規則
最後,驗證防火牆規則是否正確應用:
```bash
sudo firewall-cmd --list-all
```
### 示例
假設你需要開放以下埠:
- HTTP (80)
- HTTPS (443)
- SSH (22)
你可以執行以下命令:
```bash
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" reject'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv6" source address="::/0" reject'
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
```
透過上述步驟,你可以關閉所有埠並重新開放所需的埠。請根據你的實際需求調整需要開放的埠。
在 `firewalld` 中,`--permanent` 選項用於永久性地修改防火牆規則。沒有 `--permanent` 選項的命令只會臨時修改規則,重啟 `firewalld` 或系統後這些臨時規則會丟失。
### 關閉某個埠
假設你想關閉某個埠(例如,埠 8080),你可以使用以下命令:
```bash
sudo firewall-cmd --permanent --remove-port=8080/tcp
```
### 重新載入防火牆規則
在修改防火牆規則後,重新載入防火牆規則以使更改生效:
```bash
sudo firewall-cmd --reload
```
### 驗證防火牆規則
最後,驗證防火牆規則是否正確應用:
```bash
sudo firewall-cmd --list-all
```
### 示例:關閉埠 8080
1. 關閉埠 8080:
```bash
sudo firewall-cmd --permanent --remove-port=8080/tcp
```
2. 重新載入防火牆規則:
```bash
sudo firewall-cmd --reload
```
3. 驗證防火牆規則:
```bash
sudo firewall-cmd --list-all
```
透過這些步驟,你可以永久性地關閉指定的埠。`--permanent` 選項確保你的更改在防火牆重啟或系統重啟後仍然有效。
為了配置防火牆規則,使其只允許從 `127.0.0.1` 的訪問並阻止其他所有來源的訪問,你可以使用 `firewalld` 的富規則(rich rules)。以下是具體步驟:
### 1. 刪除現有的拒絕規則
首先,刪除現有的拒絕規則,因為它們會阻止所有來自外部的連線:
```bash
sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="0.0.0.0/0" reject'
sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv6" source address="::/0" reject'
sudo firewall-cmd --reload
```
### 2. 新增允許本地訪問的規則
然後,新增允許從 `127.0.0.1` 訪問埠 `7500` 的規則:
```bash
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="127.0.0.1" port port=7500 protocol=tcp accept' --permanent
sudo firewall-cmd --reload
```
### 3. 新增拒絕非本地訪問的規則
最後,新增拒絕所有其他來源訪問埠 `7500` 的規則:
```bash
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" port port=7500 protocol=tcp reject' --permanent
sudo firewall-cmd --reload
```
### 確認配置
執行以下命令,確認防火牆規則配置正確:
```bash
sudo firewall-cmd --list-all
```
輸出應包括以下內容:
```plaintext
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports: 443/tcp 5005/tcp
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="127.0.0.1" port port=7500 protocol=tcp accept
rule family="ipv4" port port=7500 protocol=tcp reject
```
### 進一步除錯
如果配置完成後仍然遇到問題,請使用 `curl -v` 命令獲取更多詳細資訊:
```bash
curl -v http://127.0.0.1:7500
```
透過這些步驟,你應該能夠配置防火牆,使其只允許從 `127.0.0.1` 的訪問並阻止其他所有來源的訪問。