CodeGym /Adesua ahorow /Docker SELF /防火牆設定 (`ufw`, `iptables`)

防火牆設定 (`ufw`, `iptables`)

Docker SELF
等級 5 , 課堂 1
開放

防火牆設定 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 的基本概念

  1. — 用於處理網絡封包的功能集合。
    • filter: 處理與過濾封包(例如,允許或阻止)。
    • nat: 地址/端口轉換(例如用於路由器)。
  2. — 是應用於封包的規則。
    • INPUT: 針對入站流量。
    • OUTPUT: 針對出站流量。
    • FORWARD: 針對轉發的流量。
  3. 目標 (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 伺服器

  1. 確認 UFW 已安裝並啟用:
sudo ufw enable
  1. 允許 SSH 和 Web 伺服器的存取:
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
  1. 檢查已啟用的規則:
sudo ufw status

範例 2: 使用 iptables 封鎖不必要的流量

  1. 允許 SSH 存取:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  1. 允許 Web 流量:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  1. 封鎖所有其他流量:
sudo iptables -A INPUT -j DROP

今天你學到了如何使用 UFW 和 iptables 來保護伺服器。這兩個工具都很強大又實用,只需記住,UFW 是你的"日常好友",而 iptables 是"高手手中的利器"。設定防火牆,研究你的配置,讓你的伺服器成為堅固的堡壘,而不是一個隨便進出的地方。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION