防火牆設定 ufw
, iptables
1. UFW: Uncomplicated Firewall
防火牆有什麼用?
想像一下,你的伺服器就像是一間房子,裡面充滿了各種有價值的東西(當然是指數據啦)。如果你把門敞開,任何人都可以進來隨便翻你的數據,還可能順手留下髒碗盤(或者更糟糕的東西)。防火牆就像那扇可以被控制的門:你可以決定誰能進來,通過哪些大門,以及在什麼條件下進來。
Linux 提供了兩個主要工具來設置防火牆:ufw (Uncomplicated Firewall,也就是「簡單不複雜的防火牆」) 和 iptables。讓我們來看看它們是如何工作的,以及有什麼差異。
什麼是 UFW?
UFW 是一個用來設定防火牆的工具,設計理念是「讓這件事變得簡單」。非常適合那些想要快速設置基本訪問規則,但不想陷入複雜細節的朋友。
安裝與啟動 UFW
UFW 通常預設安裝在大多數基於 Debian/Ubuntu 的發行版中。如果你的系統沒有它,請安裝:
sudo apt update
sudo apt install ufw
啟動 UFW:
sudo ufw enable
檢查狀態:
sudo ufw status
在第一次啟動時,狀態可能是 "inactive"。啟動後它會變成 "active"。
設定 UFW 規則
現在最有趣的部分來了 —— 設定規則,這些規則決定了哪些流量可以通過,哪些必須被阻止。
允許 SSH 訪問 (端口 22):
sudo ufw allow 22
開放網頁伺服器訪問 (端口 80):
sudo ufw allow 80
開放 HTTPS (端口 443):
sudo ufw allow 443
關閉不需要的端口 (例如,8080):
sudo ufw deny 8080
刪除規則:
如果你突然改主意了,可以用 sudo ufw status numbered
命令看到的編號刪除規則。例如:
sudo ufw delete 1
檢查與測試
為了確認一切都正常運行,你可以再次檢查狀態:
sudo ufw status
你會看到所有啟用規則的列表。
2. IPTABLES: 更多控制,更強大的功能
什麼是 iptables?
如果 UFW 是「簡單的帶鎖的門」,那麼 iptables 就是「聰明的保安」,可以讓你設定一切!它提供了對流量的完全控制,包括路由、根據不同條件過濾,甚至可以修改封包。
iptables 的基本概念
- 表 — 用於處理網絡封包的功能集合。
filter
: 處理與過濾封包(例如,允許或阻止)。nat
: 地址/端口轉換(例如用於路由器)。
- 鏈 — 是應用於封包的規則。
INPUT
: 針對入站流量。OUTPUT
: 針對出站流量。FORWARD
: 針對轉發的流量。
- 目標 (targets) — 對封包執行的動作。
ACCEPT
: 允許封包。DROP
: 丟棄封包。REJECT
: 丟棄封包並發送通知。
來看看如何設定 iptables 規則。
查看當前規則
要查看已設定的規則,請執行:
sudo iptables -L
可以另外加上 -v
或 -n
,以獲取關於封包和 IP 位址的詳細資訊。
使用 iptables 建立規則
簡單規則:允許 SSH (端口 22):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
阻止訪問端口 8080:
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
限制按 IP 位址訪問:
如果你希望只有具有特定 IP 位址的電腦能連接到你的服務器,而其他都不行:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
刪除規則
要刪除規則,你需要知道它的編號。使用以下命令找到它:
sudo iptables -L --line-numbers
然後刪除:
sudo iptables -D INPUT <規則號碼>
保存規則
iptables 規則默認在系統重啟後會「忘記」。為了避免這種情況,請保存規則:
sudo iptables-save > /etc/iptables/rules.v4
然後可以這樣恢復規則:
sudo iptables-restore < /etc/iptables/rules.v4
3. UFW vs IPTABLES:選哪個好?
UFW 和 iptables 的功能是一樣的——保護你的伺服器。那麼該選擇哪一個工具?
- UFW ——是一個簡單的工具,用於基礎的安全設置。如果你不想深入了解底層細節,或者只是想快速設置防火牆,那麼選擇 UFW。
- Iptables ——這是一個用於更複雜設置的強大工具。如果你的基礎架構比較複雜(例如 NAT、路由),那麼你會需要 iptables。
順帶一提,UFW 實際上是工作在 iptables 的"上層"。它只是為你生成了 iptables 規則。所以,如果你學會了 iptables,你也就自動理解了 UFW 的內部運作方式。
4. 實作範例:伺服器保護
範例 1: 使用 UFW 保護 SSH 和 Web 伺服器
- 確認 UFW 已安裝並啟用:
sudo ufw enable
- 允許 SSH 和 Web 伺服器的存取:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
- 檢查已啟用的規則:
sudo ufw status
範例 2: 使用 iptables 封鎖不必要的流量
- 允許 SSH 存取:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 允許 Web 流量:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- 封鎖所有其他流量:
sudo iptables -A INPUT -j DROP
今天你學到了如何使用 UFW 和 iptables 來保護伺服器。這兩個工具都很強大又實用,只需記住,UFW 是你的"日常好友",而 iptables 是"高手手中的利器"。設定防火牆,研究你的配置,讓你的伺服器成為堅固的堡壘,而不是一個隨便進出的地方。
GO TO FULL VERSION