Wordpress

Wordfence 免費版夠不夠用?升級前得先弄懂的那條界線

多數人以為駭客會挑流量大、內容豐富的網站下手,實際上,絕大多數針對 WordPress 網站的攻擊根本不挑對象。那是自動化程式一路掃過整個網域清單,只要偵測到登入頁存在,就開始反覆嘗試帳號密碼,順便探測有沒有還沒補的漏洞。網站有沒有名氣、流量高不高,跟會不會被盯上,關聯其實不大。

Wordfence 就是為了應付這種常態化攻擊而生的外掛,把防火牆、惡意程式掃描、登入安全這三種防護做進同一個介面,開發商是資安公司 Defiant。跟分開裝三支外掛比,最大的差別是設定、通知、掃描紀錄全部集中在同一個後台頁面,不用在三套邏輯之間來回切換。它目前是 WordPress.org 上安裝數最高的資安外掛之一,超過 500 萬個網站在用,版本已經更新到 9.0.1。免費版並不是閹割版,防火牆、掃描、兩步驟驗證這幾項核心功能免費版本身就有,真正留給付費版的,只是規則更新速度與少數進階項目。

Wordfence 是什麼?防火牆、掃描、登入防護三合一的外掛

Wordfence 把網站防護拆成三層各自運作:防火牆對付的是還沒發生的攻擊,掃描抓的是已經發生、需要被揪出來的竄改,登入安全管的是攻擊者拿到帳密之後那一關能不能被擋下。三層合在一起,等於一支外掛涵蓋原本要裝三支才能做到的事,這也是它比拼裝式防護受歡迎的原因。

防火牆、掃描、登入安全三層整合在一支外掛,分別對應攻擊進站前、登入時、竄改發生後三個時間點
Wordfence 把防護拆成三層,一支外掛就涵蓋原本要裝三支才能做到的事。

技術上,Wordfence 的防火牆跑在應用層,也就是 WordPress 已經開始處理請求、但頁面還沒真正產出的那個環節。這跟主機商在伺服器層級提供的防火牆是互補關係,不是取代。主機層防火牆擋的是網路層級的異常流量,Wordfence 負責的是「進到 WordPress 之後」這一段,兩者涵蓋的範圍不一樣,裝了主機防火牆不代表這層可以省略。

免費版有一個容易被忽略的前提,必須先用一個信箱換取免費授權金鑰,防火牆規則與惡意程式特徵碼才會持續更新;沒有這道授權,功能雖然裝上了,威脅情資卻不會跟著更新,等於只留了骨架、少了最新的彈藥。這個信箱同時也是之後所有安全通知的收件地址,值得留一個平常真的會看的信箱,而不是備用信箱,否則遇到真正的攻擊警示也會被晾在一邊。

外掛說明頁面近期也列出 Passkey 身分驗證作為功能項目,不過社群討論顯示這條路線仍在發展中,還沒有取代既有做法的成熟度。現階段最穩定、也最主流的登入防護,仍然是靠驗證器 App 產生動態密碼的兩步驟驗證,Passkey 目前只能算是一個正在鋪路的新方向。

免費版與付費版的差異,只集中在四個關鍵環節

多數人在意的是免費版夠不夠用,答案是,對大多數中小型網站,夠用。真正把免費版與付費版分開的,只有幾個關鍵環節,其餘功能兩邊幾乎一樣。

  • 規則更新速度:免費版的防火牆規則與惡意程式特徵碼會延遲 30 天才推送,付費版則是即時更新。也就是說,遇到剛被公開的新型攻擊手法,免費版要晚一個月才擋得住,這是兩者之間最實質的落差。
  • 國家層級封鎖:只有付費版可以直接把整個國家的流量擋在門外,免費版沒有這個選項。
  • 即時 IP 黑名單:付費版會即時同步跨站共享的威脅情資,也就是其他使用 Wordfence 的網站偵測到攻擊來源後,這筆情資會即時同步給所有付費用戶;免費版沒有這層即時共享。
  • 進階速率限制:付費版在速率限制的細節設定上比免費版更完整,能調的維度更多。
  • 免費版本身就有的:完整防火牆、完整掃描、兩步驟驗證、reCAPTCHA、手動 IP 封鎖,這些都不是付費限定,裝免費版就用得到。
免費版就有完整防火牆、掃描與兩步驟驗證,付費版才多出規則即時更新、國家封鎖等四個環節
免費版與付費版真正的界線只有這幾項,其餘功能兩邊幾乎一樣。

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

Wordfence 免費版防火牆後台顯示使用社群版威脅情資、規則更新延遲 30 天、即時 IP 封鎖清單停用
免費版防火牆本身已啟用,界線落在規則更新延遲 30 天與即時 IP 封鎖清單,這兩項要升級高級版才有。

防火牆擋在網頁真正被讀取之前

防火牆是這三層防護裡站在最前面的一層,擋的是網站還沒被讀取之前的攻擊;跟後面會談到的掃描不同,掃描處理的是已經發生的竄改,防火牆的任務則是讓竄改根本沒機會發生。這些設定收在 Wordfence 外掛後台的「Firewall」分頁裡,免費版可以動的主要就是防護層級與啟用狀態這兩塊。

多數教學容易把「防護層級」跟「啟用狀態」這兩件事混在一起講,其實它們是兩個各自獨立的維度,各自有各自的意義,其中一個決定攻擊被攔截的時間點早晚,另一個決定防火牆現在整體是不是在真的攔截。兩者都要注意到,才算真的把防火牆設對;只處理其中一邊,等於只做了一半。

Wordfence 防火牆選項頁的網頁應用程式防火牆狀態下拉選單與保護等級設定,都是免費版可自行調整的項目
防火牆狀態可在學習模式與啟用並保護中之間切換,保護等級也能從基本升到延伸,這些免費版都調得到。

基本防護與延伸防護的攔截時機不一樣

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

延伸防護在核心與外掛載入前就攔截、範圍更全面,基本防護則跟外掛一起載入時才攔
差別不在有沒有保護,而在請求處理流程的哪一段就出手,延伸防護攔得更早。

由於延伸防護需要在伺服器層級寫入設定,比方在常見的 Apache 環境寫入 .htaccess 這類設定檔,Wordfence 在切換到這個模式時會先自動偵測目前的伺服器環境,並且保留一份原本設定的備份,避免新規則跟主機既有的設定互相衝突。多數主機環境下,系統自動偵測出來的預設值就已經合適,只有少數共用主機的特殊設定,才需要另外留意有沒有衝突。

學習模式觀察一週後才切換成防護中

防火牆的啟用狀態預設不會一裝好就立刻全力攔截,而是先進入「學習模式」,觀察網站正常流量的樣態,時間大約一週。這麼設計的理由很直接,一啟用就用最嚴格的規則攔截,很容易連自己網站本來就會用到的正常請求都一起誤擋,學習模式就是先摸清楚「這個網站平常長什麼樣子」,再決定要擋什麼。

有一點很容易被誤會,學習模式期間並不是「完全不設防」,暴力破解防護、登入安全、IP 封鎖這些其他防火牆功能仍然全部正常運作,只有部分看起來可疑、但其實是網站自己會用到的請求會被陸續加進白名單。一週之後,系統會自動把狀態切換成「啟用並防護中」;也可以自己決定要不要提前切換。這段期間如果能把網站常用的功能都操作過一輪,例如發文、換佈景、裝外掛,之後被誤判擋下的機率就會低很多。

不建議永久停留在學習模式,因為停在學習模式代表威脅不會被真正攔截下來,等於防火牆一直在觀察、卻沒有真的出手。如果網站當下已經被入侵、或正在被攻擊,也不該用學習模式慢慢觀察,這種情況應該直接切到防護模式,先把攻擊擋下來再說。

暴力破解防護和速率限制擋的是自動化程式

登入頁是整個網站被攻擊最頻繁的地方,暴力破解防護與速率限制就是專門對付這件事的兩組機制,免費版都有,也都預設啟用,不需要額外安裝或購買。這些設定收在防火牆的「Brute Force Protection」與速率限制相關區塊裡。

登入失敗和忘記密碼,各自有獨立的鎖定機制

暴力破解攻擊常見的手法有兩種,一種是對著同一個帳號連續亂猜密碼,另一種是濫用「忘記密碼」功能,反覆測試哪些帳號名稱真的存在,藉此摸清楚攻擊目標。Wordfence 把這兩種情境拆成兩組各自獨立的鎖定邏輯,不是共用同一套門檻在管。

這幾組門檻本質上都在做同一件事的取捨,門檻設得越緊,越能提早擋下攻擊,但也越容易誤鎖到真的忘記密碼、多打錯幾次的正常使用者;門檻設得寬鬆,誤鎖的風險降低,但防禦效果也會打折扣。這裡沒有一組放諸四海皆準的標準答案,流量規模、遭遇攻擊的頻率不同的網站,適合的門檻本來就不一樣。另外有一個比較特別的機制值得單獨說,嘗試用系統裡根本不存在的帳號名稱登入,幾乎可以確定是自動化程式在亂槍打鳥,這種情況可以直接鎖定,不必等到失敗次數累積到門檻才動作。

速率限制防的是爬蟲式攻擊與資源濫用

暴力破解防護之外,還有一層速率限制,針對的是像登入頁這類容易被鎖定的路徑,只要同一個來源在短時間內發出的請求次數超過上限,就先暫時擋下來,避免伺服器資源被消耗殆盡,也避免自動化工具用高頻率掃描弱點。

WordPress 內建的 XML-RPC 遠端發佈介面,是速率限制特別會照顧到的一個路徑,因為它是攻擊工具長年鎖定的目標,但多數網站其實根本用不到這個功能,一旦被存取就直接封鎖,也不會影響正常使用。至於搜尋引擎的爬蟲流量,這層設計會先驗證這個請求是不是真的來自該爬蟲,而不是看到高頻請求就一律封鎖,這個分寸拿捏得好不好,直接關係到網站在搜尋結果的收錄會不會被誤傷。

掃描比對官方版本,揪出被竄改的檔案

掃描負責找出已經發生、需要被揪出來的問題,做法是把網站檔案跟 WordPress.org 上的官方版本逐一比對,找出被改動過的核心檔案,也比對已知的惡意程式特徵碼、找出可疑的重新導向、後門程式碼,以及上傳目錄裡不該出現的可執行檔案。免費版預設每天跑一次快速掃描、每 72 小時跑一次完整掃描,這個排程是固定的,免費版無法自行調整;能自訂掃描頻率是付費版才有的彈性。相關選項收在後台「Scan」頁面。

Wordfence 掃描後台顯示掃描類型為標準、惡意程式特徵碼是社群版且更新延遲 30 天、掃描結果未發現問題
免費版掃描預設用標準等級,惡意程式特徵碼是社群版、更新延遲 30 天,其餘檢測項目都跑得動。

四種掃描類型,對應不同的主機資源

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

掃描分有限、標準、高敏感、自訂四種,掃得越徹底越耗主機資源,多數網站用預設的標準即可
四種掃描類型對應不同主機資源,標準是預設值,也是多數網站適用的等級。

共用主機是台灣多數中小型網站常見的環境,多個網站共用同一台伺服器資源,完整掃描一次會耗掉不少運算資源,掃描時段甚至可能拖慢整台主機。設定裡有一個用時間換資源的選項,開啟後掃描時間會拉長,換來的是對伺服器負載的衝擊變小,這對共用主機或資源方案較低的網站特別重要;如果是 VPS 或資源比較充裕的主機,維持預設反而能讓掃描更快跑完。

掃描結果的四個嚴重程度,代表不同的處理方式

掃描完成後,結果會依嚴重程度分成嚴重、高、中、低四個層級,不是每一筆結果都要立刻緊張,也不是每一筆都能直接忽略,判斷方式因結果類型而不同。

核心檔案被改動這件事,如果不是自己刻意調整過,基本上就是被竄改的訊號,系統本身提供把它還原回官方版本的修復功能。上傳目錄裡出現不該存在的可執行檔案,通常是明確要清除的訊號,因為正常情況下這個目錄只會放圖片、文件這類非執行內容。外掛或主題的檔案跟官方版本不符,情況比較模糊,可能只是自己客製化調整留下的差異,也可能是真的被動過手腳,這類結果值得點開比對差異,不能自動當成誤判就略過。版本過舊單純是提醒該更新,不算安全事件,但長期放著不管,等於留了一個已知的破口。

兩步驟驗證和 reCAPTCHA 補的是登入這一關本身

防火牆與掃描擋的是外部攻擊,兩步驟驗證與 reCAPTCHA 補的是登入這個環節本身。光靠密碼不夠的原因很直接,密碼會外洩、會被重複使用在多個網站,一旦其中一個外洩,攻擊者就能拿去別的網站試。兩步驟驗證防的是密碼外洩之後被冒用,reCAPTCHA 擋的則是自動化程式對登入頁狂打帳密,兩者處理的是不同層面的問題。這兩項功能都在「Login Security」分頁,免費版就有,不是付費限定。

兩步驟驗證防的是密碼外洩後被冒用,reCAPTCHA 擋的是自動化程式狂打帳密,兩者免費版都有
兩步驟驗證與 reCAPTCHA 各防一個不同層面的問題,都收在 Login Security、免費版就有。

有一個容易被舊教學誤導的地方,Wordfence 已經停用透過簡訊發送兩步驟驗證碼的舊做法,現在一律靠驗證器 App 產生動態一次性密碼,也就是業界通稱的 TOTP 標準。這代表如果看到教你用簡訊收驗證碼的教學,那多半是停用之前寫的舊內容。

備援碼是這項功能裡最容易被忽略、卻最關鍵的東西。系統本身會給一組一次性的備援碼,這組碼是手機遺失或重灌導致驗證器資料不見時,唯一還能把帳號救回來的東西,平常就該保存在手機以外的地方,而不是等到真的遺失手機才想到要找。除此之外,也可以指定哪些角色,例如管理員,強制要求開啟兩步驟驗證,不是靠自覺;還有寬限期的設計,讓新加入的使用者有幾天時間完成綁定,適合開帳號給外部協力人員、但只想開放有限時間的情境。

Wordfence 登入安全的兩步驟驗證設定頁,用驗證器 App 掃描 QR 條碼綁定帳號,並另存一組備援碼
兩步驟驗證免費版就能開,用驗證器 App 掃描條碼綁定,另存一組備援碼以防手機遺失。

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 其實是把「網站外部的攻擊」「登入這道關卡」「已經發生的異常」三種情境各自準備了對應的防護,不是單一功能撐起整個防護傘。免費版已經涵蓋大多數中小型網站需要的東西,要不要往付費版走,回到前面那句話,看的是規則即時更新與國家封鎖這兩件事,對自己的網站重不重要。裝好只是第一步,掃描紀錄跟通知信裡有沒有異常,還是得偶爾回頭看一眼,這比一次把所有選項都調到最嚴格更實際。

資料來源
  1. Wordfence Security – Firewall, Malware Scan, and Login Security — WordPress.org