5項必做:先做這些
- 保持WordPress核心、佈景主題和外掛更新。有漏洞的外掛是頭號攻擊向量。啟用次要版本的自動更新(WordPress 5.6+預設如此)。對於主要版本,在發布後7天內更新。對於外掛,為可信的開啟自動更新;手動查看關鍵外掛的版本說明。
- 為每個WordPress帳戶使用強且唯一的密碼。尤其是管理員帳戶。使用密碼管理器(1Password、Bitwarden)。停用「admin」這個使用者名稱:建立一個新管理員並刪除舊的。
- 啟用雙重身分驗證。使用Wordfence Login Security(免費)或我們的2FA QR Code產生器配合任意TOTP應用程式。2FA能挫敗超過99%的填充憑證攻擊。
- 安裝一款可信的安全外掛。Wordfence(免費版對大多數網站已足夠)或Solid Security。不要疊加多個:它們會衝突。該外掛會管理登入嘗試限制、檔案完整性監測和惡意軟體掃描。
- 每日異地備份。UpdraftPlus → Dropbox/Google Drive。在需要之前就先備好份。至少完整測試一次復原流程。
接下來的10項:額外的高影響措施
- 強制HTTPS。Let's Encrypt在每個現代主機託管上都免費。在伺服器級別把HTTP重新導向到HTTPS。
- 更改資料庫資料表前綴。WordPress預設使用wp_;在安裝時把它改成自訂的。這並不能阻止攻擊,但會使某些攻擊模式更困難。
- 如果不使用XML-RPC就停用它。XML-RPC是常見的暴力破解放大向量。如果你不使用Jetpack行動應用程式或遠端發布,就透過.htaccess或外掛停用它。
- 限制登入嘗試。Wordfence會自動這麼做。可阻擋暴力填充憑證。
- 輪換WordPress的認證金鑰/salt。使用我們的WordPress Salt產生器。在任何疑似入侵之後、在刪除被入侵的管理員之後,以及作為例行每6-12個月輪換一次。
- 使用SSH或SFTP傳輸檔案,絕不用明文FTP。FTP以明文傳輸憑證。
- 盡可能按IP限制對wp-admin的存取。如果你的團隊使用固定IP(辦公室、VPN),就把wp-admin僅限於這些IP。透過.htaccess或Nginx設定實現。
- 在wp-config.php中停用檔案編輯。加入:
define('DISALLOW_FILE_EDIT', true);這能防止攻擊者在入侵某個帳戶後從後台編輯佈景主題/外掛。 - 隱藏WordPress版本號。移除meta generator標籤。這並不能阻止攻擊,但能減少指紋識別。
- 鎖定檔案權限。檔案644,目錄755,wp-config.php設為600。大多數託管型主機託管會自動這麼做;在VPS上,請明確設定。
錦上添花:好但不關鍵
- 自訂登入URL(例如WPS Hide Login)。主要是減少機器人流量的雜訊;並非真正的安全。
- 登入表單上的CAPTCHA。對自動化攻擊造成輕微阻力。
- 在/uploads/中停用PHP執行。防止上傳的PHP shell被執行。
- 使用Cloudflare的WAF(免費等級)。在惡意流量到達你的伺服器之前將其過濾。
- 為外掛/核心更新設定一封管理員郵件提醒。
- 使用HSTS預先載入在瀏覽器級別強制HTTPS。
- 透過REST API停用使用者列舉(Solid Security或Wordfence會處理)。
- 使用內容安全政策(CSP)標頭。
- 停用目錄瀏覽(大多數主機託管預設如此)。
- 用外部服務監測正常運作時間+完整性(UptimeRobot免費等級+每週一次Sucuri SiteCheck)。
- 把使用者角色限制到最小權限。大多數貢獻者不需要編輯級別的存取權。
- 資料庫備份加密(UpdraftPlus Premium提供)。
- 透過CDN將圖片託管在主網域之外(減少攻擊面)。
- 定期審查安全稽核日誌。
- 如果網站產生可觀收入,每年做一次滲透測試。
WordPress安全迷思:跳過它們
若干被高度推薦的「安全」措施提供的實際保護微乎其微:(1)「隱藏WordPress版本」:知道你的版本會對定向攻擊稍有幫助,但真正的解決辦法是更新,而非隱藏。(2)「把wp-config.php移到public_html之上」:基本上帶來零安全收益;該檔案已受.htaccess保護。(3)「停用REST API」:會破壞許多外掛,卻擋不住多少東西。應改為限制特定端點。(4)「疊加多個安全外掛」:它們會衝突並重疊。一款可信的外掛(Wordfence或Solid Security)能涵蓋三款外掛所做的事。(5)「重新命名wp-login.php」:以隱蔽求安全;攻擊者很容易透過重新導向找到新URL。
如果你被駭了:復原清單
- 不要驚慌;不要立即刪除東西。先對目前狀態拍一份快照用於鑑識分析。
- 讓網站下線(維護模式外掛或用.htaccess重新導向到靜態頁面)。
- 更改所有管理員密碼並輪換WordPress的salt。
- 稽核使用者帳戶:立即刪除無法識別的管理員帳戶。
- 用Wordfence Premium或Sucuri掃描惡意軟體。
- 將目前檔案與一份乾淨的WordPress下載進行比對:diff會揭示被修改的核心檔案。
- 檢查資料庫的wp_options資料表是否有意外項目(其中常含被注入的JS)。
- 從最近的乾淨備份復原(這正是每日備份重要的原因)。
- 復原後,稽核每個外掛:刪除未使用的,全部更新,並替換任何有公開CVE的外掛。
- 將WordPress核心更新到最新版本。
- 重新啟用網站,並在30天內留意是否再次被感染。