服務器如何配置防火墻規則開放/關閉端口?

配置服務器防火墻規則以開放或關閉端口是確保服務器安全、控制流量的重要步驟。以下是基于不同防火墻工具(如 UFW、Firewalld 和 Iptables)的詳細配置方法,適用于不同的 Linux 發行版。
1. 防火墻工具簡介
在 Linux 系統中,以下是常見的防火墻工具:
- UFW(Uncomplicated Firewall):適用于 Ubuntu/Debian,操作簡單,適合新手。
- Firewalld:默認用于 CentOS/RHEL 系統,支持動態防火墻規則。
- Iptables:低級防火墻工具,功能強大,但配置復雜。
2. 使用 UFW 配置防火墻規則
UFW 是 Debian/Ubuntu 系統的默認防火墻工具,配置簡單直觀。
2.1 啟用 UFW
默認情況下,UFW 可能未啟用:
bash
sudo ufw enable
2.2 開放端口
單個端口
開放 HTTP 服務(端口 80):
bash
sudo ufw allow 80/tcp
多個端口
同時開放 HTTP 和 HTTPS 服務:
bash
sudo ufw allow 80,443/tcp
端口范圍
開放 3000 到 3100 的端口范圍:
bash
sudo ufw allow 3000:3100/tcp
允許特定 IP 訪問指定端口
只允許 IP 192.168.1.100 訪問 SSH(端口 22):
bash
sudo ufw allow from 192.168.1.100 to any port 22
2.3 關閉端口
關閉 SSH 服務(端口 22):
bash
sudo ufw deny 22/tcp
2.4 查看防火墻狀態和規則
查看所有規則和狀態:
bash
sudo ufw status
2.5 刪除規則
刪除某條規則:
bash
sudo ufw delete allow 80/tcp
3. 使用 Firewalld 配置防火墻規則
Firewalld 是 CentOS/RHEL 的默認防火墻工具,支持動態規則管理。
3.1 啟用 Firewalld
安裝并啟動 Firewalld:
bash
sudo yum install firewalld -y
sudo systemctl start firewalld
sudo systemctl enable firewalld
3.2 開放端口
單個端口
開放 HTTP 服務(端口 80):
bash
sudo firewall-cmd --permanent --add-port=80/tcp
端口范圍
開放 3000 到 3100 的端口范圍:
bash
sudo firewall-cmd --permanent --add-port=3000-3100/tcp
允許特定 IP 訪問指定端口
只允許 IP 192.168.1.100 訪問 SSH(端口 22):
bash
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
3.3 關閉端口
關閉 HTTP 服務(端口 80):
bash
sudo firewall-cmd --permanent --remove-port=80/tcp
3.4 查看防火墻狀態和規則
查看所有開放端口
bash
sudo firewall-cmd --list-ports
查看完整規則
bash
sudo firewall-cmd --list-all
3.5 應用更改
每次修改規則后,重新加載防火墻:
bash
sudo firewall-cmd --reload
4. 使用 Iptables 配置防火墻規則
Iptables 是 Linux 系統中功能強大的防火墻工具,適用于所有發行版。
4.1 檢查并啟用 Iptables
啟動并啟用 Iptables:
bash
sudo systemctl start iptables
sudo systemctl enable iptables
4.2 開放端口
單個端口
開放 HTTP 服務(端口 80):
bash
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
端口范圍
開放 3000 到 3100 的端口范圍:
bash
sudo iptables -A INPUT -p tcp --dport 3000:3100 -j ACCEPT
允許特定 IP 訪問指定端口
只允許 IP 192.168.1.100 訪問 SSH(端口 22):
bash
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
4.3 關閉端口
單個端口
關閉 HTTP 服務(端口 80):
bash
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
4.4 查看防火墻規則
列出所有規則:
bash
sudo iptables -L -n -v
4.5 保存規則
每次修改后,保存規則以防重啟失效:
bash
sudo service iptables save
5. 防火墻配置最佳實踐
-
默認策略設置:
- 將默認策略設置為拒絕所有流量,然后僅開放必要端口。
- 在 UFW 中:
bash
sudo ufw default deny incoming sudo ufw default allow outgoing
-
限制 SSH 訪問:
- 修改 SSH 默認端口并限制來源 IP:
bash
sudo ufw allow from 192.168.1.100 to any port 2222
- 修改 SSH 默認端口并限制來源 IP:
-
禁用 ICMP(Ping)請求:
- 防止惡意探測:
bash
sudo ufw deny proto icmp
- 防止惡意探測:
-
啟用日志:
- 在 UFW 中啟用日志記錄:
bash
sudo ufw logging on
- 在 UFW 中啟用日志記錄:
-
定期審查規則:
- 定期檢查防火墻規則,刪除不必要的端口開放。
6. 總結
- 使用 UFW:適合 Ubuntu/Debian 用戶,操作簡單直觀。
- 使用 Firewalld:適合 CentOS/RHEL 用戶,動態管理規則更靈活。
- 使用 Iptables:適合高級用戶,需要更細粒度的防火墻規則配置。
通過合理配置防火墻規則,您可以有效地限制訪問、保護服務器,減少被攻擊的風險。

浙公網安備 33010602011771號