−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

如何在 VPS 上設定 UFW 防火牆

用 UFW 搭建一個簡單有效的防火牆:先放行 SSH(這樣才不會把自己鎖在外面),只開放您需要的埠,然後啟用它。幾條指令就能得到一個乾淨的預設拒絕型防火牆。

防火牆決定伺服器上哪些埠接受外部連線。任何沒有被明確開放的埠都應該關閉——這就是預設拒絕,它把您的攻擊面縮小到您實際執行的那些服務。UFW 讓這件事變得很簡單。唯一要做對的是順序:在開啟防火牆之前先放行 SSH,否則您會把自己鎖在外面。

1. 安裝 UFW(通常已經預裝)

sudo apt update && sudo apt install -y ufw

2. 先放行 SSH——在做任何其他事情之前

這是防止被鎖在外面的關鍵一步。請在 enable 之前完成:

sudo ufw allow OpenSSH
# or, if you use a custom SSH port:
# sudo ufw allow 22/tcp

3. 只開放您需要的埠

sudo ufw allow 80/tcp     # HTTP, if you serve a website
sudo ufw allow 443/tcp    # HTTPS
# add app-specific ports only as needed, e.g.:
# sudo ufw allow 51820/udp   # WireGuard VPN

4. 設定預設策略並啟用

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable           # asks for confirmation

5. 驗證

sudo ufw status verbose

您應該能看到 SSH 和您選擇的埠處於允許狀態,其餘全部被拒絕。每次改動之後都檢查一下。

常見操作

sudo ufw allow 3000/tcp        # open a port
sudo ufw delete allow 3000/tcp # close it again
sudo ufw status numbered       # list rules with numbers
sudo ufw delete 2              # delete rule #2
sudo ufw disable               # turn the firewall off

誠實的提醒

  • 在 ufw enable 之前先放行 SSH。 這是把人們鎖在自己伺服器之外的頭號失誤。萬一發生,服務供應商控制台能讓您回來——EQVPS 為每台 VPS 都提供瀏覽器控制台。
  • 防火牆只是一層防護。 它控制哪些埠是開放的,而不是埠上發生了什麼。把它和 SSH 金鑰認證 以及 fail2ban 結合使用。
  • 在 NAT 方案上,對內埠的工作方式不同——伺服器本機的防火牆仍然有用,但只有獨立 IP 方案才能接受任意對內連線。

下一步

防火牆加上金鑰就完成了加固工作的大部分。用 新 VPS 安全清單 來收尾。要為 Web 應用開放 443?參見 如何設定帶 HTTPS 的 nginx 反向代理。

常見問題

什麼是 UFW?

UFW(Uncomplicated Firewall)是 Linux netfilter 防火牆的一個友好前端,是 Ubuntu 和 Debian 上的標配。您無需手寫 iptables 規則,只需說「放行 443」之類的話,UFW 就會處理剩下的一切。這是搭建一個合理的預設拒絕型防火牆最快的方式。

為什麼必須先放行 SSH 再啟用 UFW?

因為一旦啟用預設拒絕型防火牆,任何沒有被明確放行的埠都會被攔截——包括 22 埠。如果您沒有先放行 SSH 就啟用 UFW,目前連線不會斷開,但下一次登入會被拒絕,您就被鎖在外面了。務必在 `ufw enable` 之前先執行 `ufw allow OpenSSH`(或 `ufw allow 22/tcp`)。

我應該開放哪些埠?

只開放您真正用到的埠。用於管理伺服器的 SSH(22);如果您執行網站或反向代理則開放 80 和 443;再加上您的應用需要的具體埠。其餘全部保持關閉。開放的埠越少,攻擊面就越小。

UFW 能防住一切嗎?

不能——它控制哪些埠接受連線,這是安全工作中重要的一部分,但它不會檢查您已開放埠上的流量內容。請把它和 SSH 金鑰、用於防暴力破解的 fail2ban,以及及時打修補程式的軟體搭配使用。防火牆只是一層防護,不是全部。

如何檢視目前允許了哪些規則?

執行 `sudo ufw status verbose`。它會列出每一條生效的規則,以及 UFW 是否已啟用。每次改動之後都檢查一下,這樣您就始終清楚哪些埠是開放的。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。