如果您的 Linux 服務器或桌面需要一個好的防火牆,iptables 是一個不錯的選擇。它非常靈活且快速。在本指南中,我們將向您展示如何在 Linux 上設置 iptables 防火牆。
在 Linux 上安裝 iptables
要在Linux 系統上使用 iptables設置防火牆,您需要先安裝它。打開終端窗口並按照下面適用於您的 Linux 操作系統的安裝說明進行操作。iptables 可以安裝在 Linux 桌面和服務器上,如果您更喜歡 iptables 的通用 Linux 下載,您可以訪問官方網站。安裝完成後,您可以繼續使用 iptables 設置防火牆。
Ubuntu指令
sudo apt install iptables
Debian 說明
sudo apt-get install iptables
Arch Linux 說明
sudo pacman -S iptables
軟呢帽說明
sudo dnf 安裝 iptables
OpenSUSE 指令
iptables 中的 sudo sudo zypper
EPEL 發行版(Rhel、CentOS、Rocky、Alma 等)
須藤 yum 安裝 iptables
如何創建 iptables 規則集
在嘗試將其用作防火牆之前,您必須創建新的 iptables 規則集。打開終端窗口,並確保您可以輸入sudo命令。如果您的用戶無法登錄,請使用su登錄 root 帳戶。
從這裡,使用iptables -F命令。此命令將刪除並刷新系統上 iptables 的所有先前規則。
sudo iptables -F
運行上述命令後,您可以運行iptables -L命令來檢查並確認規則已被刪除。
sudo iptables -L
一旦您確認 iptables 規則已刷新,請使用下面的iptables -P命令默認阻止傳入流量。
警告:如果您通過 SSH 編輯 iptables,請斷開連接並在物理機上進行編輯。運行以下命令將自動斷開您與 SSH 的連接,直到您允許它通過防火牆。
sudo iptables -P 輸入丟棄
接下來,您必須允許通過 iptables 從系統發出的流量。您可以通過輸入以下iptables -P命令來允許傳出流量通過 iptables 防火牆。
sudo iptables -P 輸出接受
禁用傳入流量並啟用傳出流量後,您可以繼續允許特定服務。
如何允許端口通過 iptables 防火牆
默認情況下,運行 iptables -P INPUT DROP 會禁用來自所有來源(SSH、HTTP 等)的傳入流量。要啟用這些服務,您需要添加到 iptables 規則中。
為了簡單起見,這裡列出了您可能希望在 iptables 防火牆中啟用的常見端口。複製與您希望通過 iptables 防火牆啟用的端口關聯的命令。
- HTTP(端口 80):
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
- HTTPS(端口 443):
sudo iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
- SSH(端口 22):
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
- FTP(端口 21):
sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
- SMTP(端口 25):
sudo iptables -A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
- DNS(端口 53):
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT用於 UDP 或sudo iptables -A INPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPTTCP
- DNS over TLS (DoT)(端口 853):
sudo iptables -A INPUT -p tcp --dport 853 -m state --state NEW,ESTABLISHED -j ACCEPT
- DNS over HTTPS (DoH)(端口 443):
sudo iptables -A INPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
- 遠程桌面協議 (RDP)(端口 3389):
sudo iptables -A INPUT -p tcp --dport 3389 -m state --state NEW,ESTABLISHED -j ACCEPT
- 虛擬網絡計算 (VNC)(端口 5900):
sudo iptables -A INPUT -p tcp --dport 5900 -m state --state NEW,ESTABLISHED -j ACCEPT
- 具有 X11 轉發的安全 Shell (SSH)(端口 6010):
sudo iptables -A INPUT -p tcp --dport 6010 -m state --state NEW,ESTABLISHED -j ACCEPT
- MySQL數據庫(端口3306):
sudo iptables -A INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
- PostgreSQL 數據庫(端口 5432):
sudo iptables -A INPUT -p tcp --dport 5432 -m state --state NEW,ESTABLISHED -j ACCEPT
當您允許所有您希望允許的端口時,您可以使用iptables -L檢查您的規則。
sudo iptables -L
最後,將 iptables 規則保存到文件中以供備份。您可以使用iptables-save命令來執行此操作。
sudo iptables-save > /path/tosave/where/you/wish/to/save/rules/iptable-rules-backup
如何恢復 iptables 備份
如果您需要在另一台計算機上重新部署 iptables 防火牆,請執行以下操作。首先,使用iptables -F命令刷新現有規則。
sudo iptables -F
接下來,將備份文件複製到系統。複製完畢後,恢復備份。
sudo iptables-restore <>