多數人以為駭客會挑流量大、內容豐富的網站下手,實際上,絕大多數針對 WordPress 網站的攻擊根本不挑對象。那是自動化程式一路掃過整個網域清單,只要偵測到登入頁存在,就開始反覆嘗試帳號密碼,順便探測有沒有還沒補的漏洞。網站有沒有名氣、流量高不高,跟會不會被盯上,關聯其實不大。
Wordfence 就是為了應付這種常態化攻擊而生的外掛,把防火牆、惡意程式掃描、登入安全這三種防護做進同一個介面,開發商是資安公司 Defiant。跟分開裝三支外掛比,最大的差別是設定、通知、掃描紀錄全部集中在同一個後台頁面,不用在三套邏輯之間來回切換。它目前是 WordPress.org 上安裝數最高的資安外掛之一,超過 500 萬個網站在用,版本已經更新到 9.0.1。免費版並不是閹割版,防火牆、掃描、兩步驟驗證這幾項核心功能免費版本身就有,真正留給付費版的,只是規則更新速度與少數進階項目。
Wordfence 是什麼?防火牆、掃描、登入防護三合一的外掛
Wordfence 把網站防護拆成三層各自運作:防火牆對付的是還沒發生的攻擊,掃描抓的是已經發生、需要被揪出來的竄改,登入安全管的是攻擊者拿到帳密之後那一關能不能被擋下。三層合在一起,等於一支外掛涵蓋原本要裝三支才能做到的事,這也是它比拼裝式防護受歡迎的原因。

技術上,Wordfence 的防火牆跑在應用層,也就是 WordPress 已經開始處理請求、但頁面還沒真正產出的那個環節。這跟主機商在伺服器層級提供的防火牆是互補關係,不是取代。主機層防火牆擋的是網路層級的異常流量,Wordfence 負責的是「進到 WordPress 之後」這一段,兩者涵蓋的範圍不一樣,裝了主機防火牆不代表這層可以省略。
免費版有一個容易被忽略的前提,必須先用一個信箱換取免費授權金鑰,防火牆規則與惡意程式特徵碼才會持續更新;沒有這道授權,功能雖然裝上了,威脅情資卻不會跟著更新,等於只留了骨架、少了最新的彈藥。這個信箱同時也是之後所有安全通知的收件地址,值得留一個平常真的會看的信箱,而不是備用信箱,否則遇到真正的攻擊警示也會被晾在一邊。
外掛說明頁面近期也列出 Passkey 身分驗證作為功能項目,不過社群討論顯示這條路線仍在發展中,還沒有取代既有做法的成熟度。現階段最穩定、也最主流的登入防護,仍然是靠驗證器 App 產生動態密碼的兩步驟驗證,Passkey 目前只能算是一個正在鋪路的新方向。
免費版與付費版的差異,只集中在四個關鍵環節
多數人在意的是免費版夠不夠用,答案是,對大多數中小型網站,夠用。真正把免費版與付費版分開的,只有幾個關鍵環節,其餘功能兩邊幾乎一樣。
- 規則更新速度:免費版的防火牆規則與惡意程式特徵碼會延遲 30 天才推送,付費版則是即時更新。也就是說,遇到剛被公開的新型攻擊手法,免費版要晚一個月才擋得住,這是兩者之間最實質的落差。
- 國家層級封鎖:只有付費版可以直接把整個國家的流量擋在門外,免費版沒有這個選項。
- 即時 IP 黑名單:付費版會即時同步跨站共享的威脅情資,也就是其他使用 Wordfence 的網站偵測到攻擊來源後,這筆情資會即時同步給所有付費用戶;免費版沒有這層即時共享。
- 進階速率限制:付費版在速率限制的細節設定上比免費版更完整,能調的維度更多。
- 免費版本身就有的:完整防火牆、完整掃描、兩步驟驗證、reCAPTCHA、手動 IP 封鎖,這些都不是付費限定,裝免費版就用得到。

付費版採年繳訂閱制,實際金額請以官方頁面公告為準。真正該拿來判斷要不要升級的,不是價錢,而是網站有多在意「規則即時更新」跟「國家封鎖」這兩件事。內容型網站、部落格多半免費版就夠,電商、會員站,或曾經真的被攻擊過的網站,規則更新速度慢一個月造成的風險落差會更明顯。

防火牆擋在網頁真正被讀取之前
防火牆是這三層防護裡站在最前面的一層,擋的是網站還沒被讀取之前的攻擊;跟後面會談到的掃描不同,掃描處理的是已經發生的竄改,防火牆的任務則是讓竄改根本沒機會發生。這些設定收在 Wordfence 外掛後台的「Firewall」分頁裡,免費版可以動的主要就是防護層級與啟用狀態這兩塊。
多數教學容易把「防護層級」跟「啟用狀態」這兩件事混在一起講,其實它們是兩個各自獨立的維度,各自有各自的意義,其中一個決定攻擊被攔截的時間點早晚,另一個決定防火牆現在整體是不是在真的攔截。兩者都要注意到,才算真的把防火牆設對;只處理其中一邊,等於只做了一半。

基本防護與延伸防護的攔截時機不一樣
基本防護跟延伸防護的差別,不是「有沒有保護」,而是「什麼時候攔」。基本防護跟著其他外掛一起被 WordPress 載入,運作時機跟一般外掛差不多;延伸防護則是搶在 WordPress 核心、外掛、主題都還沒開始載入之前就先啟動,能擋到更早期的攻擊型態,例如那種試圖搶在其他程式碼執行前就塞入惡意程式的手法。單看攔截範圍,延伸防護明顯更全面。

由於延伸防護需要在伺服器層級寫入設定,比方在常見的 Apache 環境寫入 .htaccess 這類設定檔,Wordfence 在切換到這個模式時會先自動偵測目前的伺服器環境,並且保留一份原本設定的備份,避免新規則跟主機既有的設定互相衝突。多數主機環境下,系統自動偵測出來的預設值就已經合適,只有少數共用主機的特殊設定,才需要另外留意有沒有衝突。
學習模式觀察一週後才切換成防護中
防火牆的啟用狀態預設不會一裝好就立刻全力攔截,而是先進入「學習模式」,觀察網站正常流量的樣態,時間大約一週。這麼設計的理由很直接,一啟用就用最嚴格的規則攔截,很容易連自己網站本來就會用到的正常請求都一起誤擋,學習模式就是先摸清楚「這個網站平常長什麼樣子」,再決定要擋什麼。
有一點很容易被誤會,學習模式期間並不是「完全不設防」,暴力破解防護、登入安全、IP 封鎖這些其他防火牆功能仍然全部正常運作,只有部分看起來可疑、但其實是網站自己會用到的請求會被陸續加進白名單。一週之後,系統會自動把狀態切換成「啟用並防護中」;也可以自己決定要不要提前切換。這段期間如果能把網站常用的功能都操作過一輪,例如發文、換佈景、裝外掛,之後被誤判擋下的機率就會低很多。
不建議永久停留在學習模式,因為停在學習模式代表威脅不會被真正攔截下來,等於防火牆一直在觀察、卻沒有真的出手。如果網站當下已經被入侵、或正在被攻擊,也不該用學習模式慢慢觀察,這種情況應該直接切到防護模式,先把攻擊擋下來再說。
暴力破解防護和速率限制擋的是自動化程式
登入頁是整個網站被攻擊最頻繁的地方,暴力破解防護與速率限制就是專門對付這件事的兩組機制,免費版都有,也都預設啟用,不需要額外安裝或購買。這些設定收在防火牆的「Brute Force Protection」與速率限制相關區塊裡。
登入失敗和忘記密碼,各自有獨立的鎖定機制
暴力破解攻擊常見的手法有兩種,一種是對著同一個帳號連續亂猜密碼,另一種是濫用「忘記密碼」功能,反覆測試哪些帳號名稱真的存在,藉此摸清楚攻擊目標。Wordfence 把這兩種情境拆成兩組各自獨立的鎖定邏輯,不是共用同一套門檻在管。
這幾組門檻本質上都在做同一件事的取捨,門檻設得越緊,越能提早擋下攻擊,但也越容易誤鎖到真的忘記密碼、多打錯幾次的正常使用者;門檻設得寬鬆,誤鎖的風險降低,但防禦效果也會打折扣。這裡沒有一組放諸四海皆準的標準答案,流量規模、遭遇攻擊的頻率不同的網站,適合的門檻本來就不一樣。另外有一個比較特別的機制值得單獨說,嘗試用系統裡根本不存在的帳號名稱登入,幾乎可以確定是自動化程式在亂槍打鳥,這種情況可以直接鎖定,不必等到失敗次數累積到門檻才動作。
速率限制防的是爬蟲式攻擊與資源濫用
暴力破解防護之外,還有一層速率限制,針對的是像登入頁這類容易被鎖定的路徑,只要同一個來源在短時間內發出的請求次數超過上限,就先暫時擋下來,避免伺服器資源被消耗殆盡,也避免自動化工具用高頻率掃描弱點。
WordPress 內建的 XML-RPC 遠端發佈介面,是速率限制特別會照顧到的一個路徑,因為它是攻擊工具長年鎖定的目標,但多數網站其實根本用不到這個功能,一旦被存取就直接封鎖,也不會影響正常使用。至於搜尋引擎的爬蟲流量,這層設計會先驗證這個請求是不是真的來自該爬蟲,而不是看到高頻請求就一律封鎖,這個分寸拿捏得好不好,直接關係到網站在搜尋結果的收錄會不會被誤傷。
掃描比對官方版本,揪出被竄改的檔案
掃描負責找出已經發生、需要被揪出來的問題,做法是把網站檔案跟 WordPress.org 上的官方版本逐一比對,找出被改動過的核心檔案,也比對已知的惡意程式特徵碼、找出可疑的重新導向、後門程式碼,以及上傳目錄裡不該出現的可執行檔案。免費版預設每天跑一次快速掃描、每 72 小時跑一次完整掃描,這個排程是固定的,免費版無法自行調整;能自訂掃描頻率是付費版才有的彈性。相關選項收在後台「Scan」頁面。

四種掃描類型,對應不同的主機資源
掃描類型分成四種,各自對應不同的情境。「有限」是給資源比較吃緊的入門主機準備的,只做基本檢測,適合主機資源本來就有限、又想避免掃描拖垮效能的網站。「標準」是預設值,也是多數網站適用的等級,涵蓋範圍與效能之間取得平衡。「高敏感」掃得最徹底,適合懷疑網站已經被入侵、需要地毯式檢查的情況,代價是比較容易把安全的東西誤判成可疑。「自訂」則是使用者動過一般掃描選項之後,系統自動歸類成的類別。

共用主機是台灣多數中小型網站常見的環境,多個網站共用同一台伺服器資源,完整掃描一次會耗掉不少運算資源,掃描時段甚至可能拖慢整台主機。設定裡有一個用時間換資源的選項,開啟後掃描時間會拉長,換來的是對伺服器負載的衝擊變小,這對共用主機或資源方案較低的網站特別重要;如果是 VPS 或資源比較充裕的主機,維持預設反而能讓掃描更快跑完。
掃描結果的四個嚴重程度,代表不同的處理方式
掃描完成後,結果會依嚴重程度分成嚴重、高、中、低四個層級,不是每一筆結果都要立刻緊張,也不是每一筆都能直接忽略,判斷方式因結果類型而不同。
核心檔案被改動這件事,如果不是自己刻意調整過,基本上就是被竄改的訊號,系統本身提供把它還原回官方版本的修復功能。上傳目錄裡出現不該存在的可執行檔案,通常是明確要清除的訊號,因為正常情況下這個目錄只會放圖片、文件這類非執行內容。外掛或主題的檔案跟官方版本不符,情況比較模糊,可能只是自己客製化調整留下的差異,也可能是真的被動過手腳,這類結果值得點開比對差異,不能自動當成誤判就略過。版本過舊單純是提醒該更新,不算安全事件,但長期放著不管,等於留了一個已知的破口。
兩步驟驗證和 reCAPTCHA 補的是登入這一關本身
防火牆與掃描擋的是外部攻擊,兩步驟驗證與 reCAPTCHA 補的是登入這個環節本身。光靠密碼不夠的原因很直接,密碼會外洩、會被重複使用在多個網站,一旦其中一個外洩,攻擊者就能拿去別的網站試。兩步驟驗證防的是密碼外洩之後被冒用,reCAPTCHA 擋的則是自動化程式對登入頁狂打帳密,兩者處理的是不同層面的問題。這兩項功能都在「Login Security」分頁,免費版就有,不是付費限定。

有一個容易被舊教學誤導的地方,Wordfence 已經停用透過簡訊發送兩步驟驗證碼的舊做法,現在一律靠驗證器 App 產生動態一次性密碼,也就是業界通稱的 TOTP 標準。這代表如果看到教你用簡訊收驗證碼的教學,那多半是停用之前寫的舊內容。
備援碼是這項功能裡最容易被忽略、卻最關鍵的東西。系統本身會給一組一次性的備援碼,這組碼是手機遺失或重灌導致驗證器資料不見時,唯一還能把帳號救回來的東西,平常就該保存在手機以外的地方,而不是等到真的遺失手機才想到要找。除此之外,也可以指定哪些角色,例如管理員,強制要求開啟兩步驟驗證,不是靠自覺;還有寬限期的設計,讓新加入的使用者有幾天時間完成綁定,適合開帳號給外部協力人員、但只想開放有限時間的情境。

reCAPTCHA 採用的是 Google 的服務,目前建議使用對使用者體驗干擾最小的 v3 版本,不像舊版需要勾選圖片方塊。這道驗證除了套用在登入頁,也可以延伸到會員註冊與忘記密碼頁,對於接了會員系統、容易被自動化程式濫用註冊功能的電商網站特別有用。
另外還有兩個常被忽略、但實戰上很有用的搭配設定。一個是白名單 IP,把自己常用的固定 IP 加進去之後,登入時可以跳過兩步驟驗證與 reCAPTCHA,省下每次登入都要多驗證一道的麻煩,只是要留意,如果自己的網路是動態 IP,這組白名單過一段時間可能就失效了。另一個是把這層防護延伸到前台,如果網站有會員系統,兩步驟驗證與 reCAPTCHA 不必只設在後台,也可以一併套用到前台的會員註冊與登入頁面。
即時流量監控,掌握敲你登入頁的每一個來源
即時流量監控不是裝飾功能,而是網站出現異常時的第一線工具,功能入口在「Tools」底下的「Live Traffic」。它記錄兩種模式,一種是只記錄跟安全判斷有關的真人流量,另一種是把包含搜尋引擎機器人在內的所有請求都記下來。沒有特別需求時建議維持預設的前者,因為記下所有流量會累積大量資料,也會消耗比較多伺服器資源。
記錄清單會顯示每一筆請求的地理位置、IP 位址、造訪的頁面、時間,以及使用的瀏覽器或裝置,資訊算相當完整。更實用的是可以直接對清單裡的某個 IP 採取動作,包括直接封鎖、查詢這個 IP 的 WHOIS 網域註冊資訊,或者篩選看這個 IP 最近還做過哪些請求。進階篩選還能只顯示登入失敗、被鎖定、被防火牆擋下的流量,用來快速抓出正在嘗試攻擊的來源,比起大海撈針式地翻看整份紀錄有效率得多。
通知信件的設計,決定你會不會乾脆全部忽略
Wordfence 預設會寄不少通知信,設定不當很快就會讓人乾脆全部忽略,結果真正重要的警示反而被淹沒在一堆瑣碎通知裡。這幾項設定收在「All Options」裡的「Email Alert Preferences」,核心是在「多知道一點」跟「不被信件淹沒」之間找到自己網站適合的平衡點。
可以設定掃描結果要達到什麼嚴重程度才通知,門檻設太高容易漏掉該注意的問題,設太低則信件量會大到讓人麻痺,一般建議至少涵蓋中等以上的等級。管理員登入是否要通知也可以調整,只有一兩位管理員的網站可以開啟,方便掌握誰在登入;但多人協作、管理員本來就常態登入的網站,開著這項通知只會被灌爆信箱,建議關閉,一般使用者登入的通知也是類似邏輯,多數情況建議關閉。另外還可以設定每小時最多寄送幾封通知信,這是遇到攻擊高峰期的一道保護,避免帳號短時間內遭遇大量攻擊時,信箱瞬間被灌爆。想省下每天緊盯後台的習慣,也可以開啟每週摘要信,用一封信總結一週的掃描結果與被擋下的攻擊次數。
額外處理時間落在毫秒等級,快取外掛也能正常搭配
裝了這麼多層防護,網站會不會變慢,是多數人在意但不常被誠實回答的問題。Wordfence 因為要檢查每一個進站的請求,本質上確實會增加一些處理時間,但在正常主機資源下,這個增加的時間量級落在毫秒等級,對多數網站來說感受不到明顯變慢。前面提到的延伸防護模式,實際上反而比基本防護更有效率,因為它不需要跟著完整的 WordPress 初始化流程一起跑。
即時流量監控如果開啟「所有流量」模式,會對每一個請求都寫入紀錄,流量大的網站這會增加一定的磁碟與資料庫負擔,比較建議只在需要排查問題時暫時開啟,平常維持只記錄安全相關流量就好。「General Options」裡也可以設定掃描紀錄佔用磁碟空間的上限,避免歷次掃描紀錄無限累積,反過來拖慢資料庫。
Wordfence 跟主流快取外掛,例如 WP Rocket、W3 Total Cache、LiteSpeed Cache 這類國際通用的快取工具是相容的,兩者不會互相衝突。快取外掛負責把已經產生好的頁面直接送給訪客,跳過大部分程式處理過程;Wordfence 仍會在請求進來的最前端做檢查,兩者各自對應不同環節,也不需要額外把快取目錄排除在 Wordfence 的檢查範圍之外。
把這幾層拼起來看,Wordfence 其實是把「網站外部的攻擊」「登入這道關卡」「已經發生的異常」三種情境各自準備了對應的防護,不是單一功能撐起整個防護傘。免費版已經涵蓋大多數中小型網站需要的東西,要不要往付費版走,回到前面那句話,看的是規則即時更新與國家封鎖這兩件事,對自己的網站重不重要。裝好只是第一步,掃描紀錄跟通知信裡有沒有異常,還是得偶爾回頭看一眼,這比一次把所有選項都調到最嚴格更實際。
