在 Rocky Linux 中,你可以使用 firewalld 來管理防火牆規則。

Monarsoft發表於2024-06-30

在 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` 的訪問並阻止其他所有來源的訪問。



相關文章