VPS 大門誰來守? UFW 防火牆設定指南,讓你的 WordPress 固若金湯!
☰ 目錄 table-of-contents.md
VPS 大門誰來守?UFW 防火牆設定指南,讓 WordPress 固若金湯
從共享主機搬到 VPS,你拿回了完整的掌控權,卻也同時扛起了「自己顧大門」的責任。本文直接給你結論:用 UFW 設定一道網路層防火牆,遵循「預設拒絕所有進入連線、只開放必要連接埠」的最小權限原則,就能在數分鐘內擋掉絕大多數自動化掃描與暴力破解。
對標準的 WordPress 站台來說,你只需要開放三個門:SSH(管理用)、HTTP(80)、HTTPS(443),其餘一律關閉。再加上限制 SSH 來源 IP 與速率限制,曝險面積就會大幅縮小。以下是完整、可直接照做的步驟,外加一個關鍵提醒:啟用防火牆「之前」一定要先放行 SSH,否則你會把自己鎖在伺服器外面。
為什麼 WordPress VPS 一定要設防火牆?
「我已經裝了安全外掛,還需要伺服器防火牆嗎?」答案是:需要,因為兩者守的是不同層次。
- WordPress 安全外掛 / WAF:像是你家門口的保全,逐一檢查每個訪客的意圖(例如 HTTP 請求是否夾帶惡意程式碼)。但前提是——訪客已經走到你家門口了。
- 伺服器防火牆(UFW):像是社區圍牆與管制進出的大門。不在允許名單上的「車輛」(網路封包)根本進不了社區,連靠近你家的機會都沒有。
網際網路上有無數自動化機器人(Bots)24 小時不停掃描有漏洞的伺服器,逐一試探常見連接埠,例如 SSH(22)、FTP(21)、Telnet(23),尋找入侵點。沒有防火牆的伺服器,就像在黑暗中發光的標靶。UFW 的價值,就是在網路層級先攔掉這些不必要的流量,只放行你真正需要的服務。
UFW 與 iptables 是什麼關係?
UFW 全名 Uncomplicated Firewall,設計初衷是簡化 Linux 上功能強大但語法繁瑣的 iptables。實際上 UFW 是 iptables 的前端介面:你下的每一條 UFW 規則,最終都會被轉譯成底層的 iptables 規則。對大多數 WordPress 站長來說,UFW 的直觀指令已經綽綽有餘,不必直接面對 iptables 的複雜語法。
UFW 基礎:檢查安裝與設定預設規則
第一步:檢查 UFW 狀態
動手前,先確認 UFW 是否已安裝以及目前狀態。打開 SSH 終端機,輸入:
sudo ufw status
如果回傳 Status: inactive,表示 UFW 已安裝但尚未啟用。若系統提示找不到指令,就先安裝它(多數現代 Ubuntu 發行版已內建):
sudo apt-get update
sudo apt-get install ufw
第二步:建立最安全的「預設規則」
這是防火牆設定的黃金法則:預設全部拒絕,只允許必要的連線。這樣能確保你不會因一時疏忽,漏掉某個本該關閉的連接埠。執行以下兩條指令:
sudo ufw default deny incoming
sudo ufw default allow outgoing
deny incoming:拒絕所有「進來」的連線請求,這是最重要的安全防線。allow outgoing:允許所有「從伺服器出去」的連線,確保 WordPress 能正常對外更新、呼叫 API 等。
設定完這兩條,你的伺服器就像一個密室:外人進不來,但裡面的人可以自由與外界溝通。接下來,我們開幾扇必要的門。
核心規則:為 WordPress 量身打造的防火牆策略
重頭戲來了。我們依序開啟 WordPress 運作所必需的連接埠。先用一張表釐清標準站台到底需要哪些門:
| 服務 | 連接埠 | 用途 | 是否必開 |
|---|---|---|---|
| SSH | 22/tcp(建議自訂) | 遠端管理伺服器 | 是(建議限來源 IP) |
| HTTP | 80/tcp | 一般網頁瀏覽、HTTPS 導向與憑證驗證 | 是 |
| HTTPS | 443/tcp | 加密的安全網頁瀏覽 | 是 |
第一道門(最重要):放行 SSH
這一步是生死關頭。如果你先啟用防火牆,卻沒有設定放行 SSH 的規則,下一秒就會被踢出伺服器、再也連不進去。半夜把自己鎖在伺服器外面,絕對不是什麼好玩的經驗。
所以,在啟用 UFW 之前,務必先執行:
sudo ufw allow ssh
這個指令會放行 SSH 預設的 22 連接埠。如果你為了安全把 SSH 連接埠改過(這是好習慣),例如改成 2222,就要明確指定:
sudo ufw allow 2222/tcp
第二、三道門:放行 Web 伺服器流量
網站要被看見,當然要打開 HTTP(80)與 HTTPS(443)。UFW 內建了常用應用程式的設定檔(application profiles),可以直接用名稱套用。
如果你用的是 Nginx:
sudo ufw allow 'Nginx Full'
Nginx Full 會同時開啟 80 與 443。你也可以分開設定:
sudo ufw allow 'Nginx HTTP' # 只開 80
sudo ufw allow 'Nginx HTTPS' # 只開 443
如果你用的是 Apache,指令類似:
sudo ufw allow 'Apache Full'
你也可以不靠設定檔,直接指定連接埠號碼,效果相同:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
想知道系統上有哪些可用的應用程式設定檔,可以用:
sudo ufw app list
最後一步:啟用 UFW 並檢查狀態
確認以上規則都設定好了,深呼吸,啟用 UFW:
sudo ufw enable
系統會警告這可能中斷現有的 SSH 連線,輸入 y 後按 Enter。因為我們已先放行 SSH,連線並不會中斷。啟用後,立刻檢查目前規則是否正確:
sudo ufw status verbose
你應該會看到類似下面的輸出,清楚列出預設政策與放行規則:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
進階防禦工事:讓防火牆更聰明
基礎設定已經能擋掉絕大多數自動化攻擊,但若想做得更好,還有三招值得加上。
1. 限制 SSH 登入來源 IP
如果你的工作地點或家裡有固定 IP,強烈建議只允許從這些 IP 連線到 SSH,安全性會直接提升好幾個檔次——因為對其他所有來源而言,SSH 這個門根本不存在。
# 先刪除原本允許所有 IP 的規則
sudo ufw delete allow ssh
# 新增只允許特定 IP 的規則
sudo ufw allow from 123.123.123.123 to any port 22 proto tcp
記得把 123.123.123.123 換成你自己的 IP 位址。要留意:如果你是使用浮動式(動態)IP,IP 一變動就會把自己擋在外面,這招比較適合有固定 IP 的環境。
2. 防止暴力破解(Rate Limiting)
對 SSH 這類重要服務,可以啟用 UFW 的速率限制。當同一個來源 IP 在短時間內(UFW 預設為 30 秒內 6 次以上)反覆嘗試連線,就會被暫時封鎖:
sudo ufw limit ssh
這是一招非常簡單卻極其有效的防禦,能有效遏止自動化的密碼猜測攻擊。如果你已經做了「限制來源 IP」,再疊加速率限制會更穩;若無法固定來源 IP,速率限制就是退而求其次的好選擇。
3. 開啟日誌(Logging)
有紀錄才能追蹤。開啟 UFW 日誌,能在出問題時回溯「誰在什麼時候嘗試連線到哪個連接埠」:
sudo ufw logging on
日誌檔通常存放在 /var/log/ufw.log。平常不會去看它,但需要時它就是破案的關鍵線索。
總結:地基打穩,才能安心蓋大樓
設定好 UFW,就像為 WordPress 網站打下堅實地基。它無法防禦所有類型的攻擊(例如應用程式層級的 SQL Injection 或 XSS),但能完美完成它的任務:在網路層級過濾掉絕大多數惡意流量與掃描,讓伺服器更安靜、更安全。
請牢牢記住核心思想——最小權限原則:只開絕對必要的門,其餘一律關閉。這套 UFW 設定不只適用於 WordPress,更是所有自行管理伺服器的基本功。打穩這道防線之後,你才能把心力放回內容創作與網站經營,而不是整天提心吊膽。
防火牆只是「縱深防禦」的第一層。網路層守好之後,接下來該往應用層強化:WAF 與 Bot 防護、防範 SQL Injection / XSS / CSRF 等攻擊。把每一層都補齊,才能真正滴水不漏。
如果你在設定過程中遇到問題,或希望有更全面、更客製化的企業級伺服器安全規劃,浪花科技的團隊隨時準備好提供專業協助。👉 立即聯繫浪花科技,讓我們為你的網站安全保駕護航!
延伸閱讀
常見問題
已經裝了 WordPress 安全外掛,還需要設定伺服器防火牆嗎?
一個標準的 WordPress VPS 防火牆要開放哪些連接埠?
用 UFW 設定 WordPress 防火牆的正確順序是什麼?
啟用 UFW 後不小心把自己鎖在伺服器外面怎麼辦?
UFW 要如何防止 SSH 暴力破解?
訂閱免費電子報
把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。