All In One WP Security & Firewall 是一個適合想加強網站安全,但不知如何開始的初學者使用。
隨著網路攻擊問題日漸嚴重,當網站累積的資料愈來愈多,愈來愈有價值後,更易受到攻擊,因此一個好的網站,更應該注重網站安全性問題。
這個外掛的安全性功能非常廣泛,透過全方面 WordPress 安全性的簡單設定,不只能學習了解網站安全基礎,也可輕鬆完成網站保護,甚至很多人在懷疑為什麼這個好的外掛竟然完全免費。
All In One WP Security & Firewall 外掛特色介紹
帳號安全
- 檢測管理者名稱,避免使用 “admin” 當作管理者名稱。
- 檢測是否有登入名稱和管理者名稱相同。
- 提供密碼產生器,提升密碼強度。
- 帳號監控管理:
- 可新增或解除帳號黑名單。
- 強制惡意帳號登出。
- 監控帳號登入活動。
- 顯示目前已登入帳號清單。
登入安全
- 防護暴力破解
- 攻擊通知
- 自動封鎖 IP 範圍
- IP 白名單設定
- 監控帳號登入錯誤的 IP,名稱,時間等等
- 在登入表單新增 Google reCaptcha
- 在忘記密碼表單處新增 Google reCaptcha
註冊安全
- 提供審核帳號註冊功能
- 在帳號註冊表單處新增 Google reCaptcha
資料庫安全
- 設定 WordPress 預設資料庫名稱前贅字
- 自動排程資料庫備份,或一鍵即時資料庫備份
系統檔案安全
- 辨認檔案或目錄是否有不安全的權限設定
- 防止 PHP 程式修改
- 提供方便檢視系統 LOG
- 防止使用者讀取 readme.html, license.txt, wp-config-sample.php
.htaccess 和 wp-config.php 備份和還原
- 可以備份原始 .htaccess 和 wp-config.php
- 可以簡易修改 .htaccess 和 wp-config.php
黑名單功能
- 依據 IP 或範圍封鎖使用者
- 依據範圍封鎖使用者
- 依據瀏覽器代理 (User Agents) 封鎖
防火牆功能
WordPress 在執行任何程式,顯示網頁前,會先經過 .htaccess,防火牆規則主要設定在 .htaccess 檔案,以防止惡意程式執行 WordPress 程式,防火牆的功能非常多,以下僅列出部分:
- 存取控制機制
- 禁止讀取 debug log
- 拒絕錯誤或惡意的查詢 URL 字串
- XSS 防護
- 阻擋偽裝的機器人爬蟲
- 阻擋網站的圖檔被盜連
- 404 監控,也可以阻擋過多 404 的連線
暴力破解防護
- 即時阻擋暴力攻擊
- 可新增數學問題驗證碼在登入表單
- 可變更登入表單網址
- 可使用登入蜜罐
檔案安全掃描
- 監控任何檔案是否被變更或注入惡意代碼
評論與垃圾留言
- 監控最常發送垃圾留言的 IP 並阻擋
- 禁止不是從自己網域來的留言(留言機器人)
- 新增驗證碼在留言表單
- 自動阻擋超過留言限制的 IP
防止文章拷貝
- 禁止滑鼠右鍵,防止選擇挑選文字拷貝
其它特色功能
- 刪除 WordPress 版本訊息
- 刪除 WordPress Generator Meta information
- 防止網站被顯示在 iframe
- 備份/回復設定
要做到以上列出的所有安全性防護,不太容易,但 All In One WP Security 只需簡單設定就可完成。
All In One WP Security & Firewall 外掛設定說明
搜尋All In One WP Security, 安裝啟用。
Dashboard
安裝完後請進入左側選單 WP Security -> Dashboard
這裏顯示目前 WordPress 的安全狀態:
Security Strength Meter 顯示目前的安全分數,當一個一個安全設定啟動後分數就會提高。
Critical Feature Status – 這邊有四個主要的安全設定,建議都開啟 ON,這樣就有最低建議的基本安全了。
Security Points Breakdown – 顯示目前的各類安全設定比重
Settings
[General Settings]
- Disable All Security Features: 如果啟動了這個安全外掛導致不正常,可以先暫時禁用所有安全性功能,再看看是否回復正常。
- Disable All Firewall Rules: 如果認為有些防火牆規則造成其它外掛不正常,可以先禁用所有防火牆規則。
[.htaccess File]
備份或回復 .htaccess 檔案。
[wp-config.php File]
備份或回復 wp-config.php 檔案。
[WP Version Info]
- Remove WP Generator Meta Info: WordPress 會自動產生版本資訊等,並放在網頁的 meta 標籤中,這些資訊會有安全性隱憂,建議勾選提升安全性。
[Import/Export]
這裡用Export 功能備份或Import 功能回復外掛設定值。
User Accounts
[WP Username]
WordPress 預設以 admin 當作管理者登入名稱,為避免機器人用該帳號嘗試登入,最好使用不同的名稱可以降低安全疑慮。
[Display Name]
WordPress 文章會顯示作者 nickname,WordPress nickname 和 login name 在預設是一樣的,這樣就會讓人知道登入名稱,最好是變更不同的 nickname,降低安全疑慮。
[Password]
這裏提供密碼強度工具,可以預估你的密碼需要多少時間就可以破解。
User Login
[Login Lockdown]
- Enable Login Lockdown Feature: 建議勾選,自動封鎖登入錯誤次數太多的 IP。
- Max Login Attempts: 設定最多登入錯誤次數,預設 3 次。
- Login Retry Time Period: 這個設定值與 Max Login Attempts 配合,意思為設定幾分鐘內,錯誤次數最多為 N次。
- Time Length of Lockout: 設定 IP 鎖定時間(分鐘)。
- Instantly lockout invalid usernames: 這個設定開啟後,如果自動程式試圖以不存在你系統中的使用者名稱登入的話,會立即被封鎖。
另外可以設定 IP 白名單,也可以在這裡看到被鎖住的 IP 清單。
[Failed Login Records]
顯示登入錯誤的 IP 記錄
[Force Logout]
- Enable Force WP User Logout: 勾選後,會將登入者在指定的時間後強制登出。
- Logout the WP User After XX Minutes: 設定時間(分鐘),預設 60,登入時間超過設定時間就會強制登出。
[Account Activity Logs]
顯示最近 100 筆登入 LOG。
[Logged in Users]
顯示目前已登入帳號。
User Registration
[Manual Approval]
- Manually Approve New Registrations: 勾選後,新註冊的使用者帳號必須經由管理者審核才可以登入。
[Registration Captcha]
- Enable Captcha On Registration Page: 勾選後會在帳號註冊表單插入驗證碼。
[Registration Honeypot]
- Enable Honeypot On Registration Page: 啟用後會在註冊表單中新增一個隱藏欄位,這個欄位一般使用者是看不到的,這是為了防範機器人自動註冊的機制。
Database Security
[DB Prefix]
資料庫是 WordPress 最重要的部分,最簡單保護資料庫的方式就是不要使用預設的資料庫名稱,這裏可以簡單的修改資料庫名稱,請注意在使用這個功能前請先執行資料庫備份。
- Generate New DB Table Prefix: 自行設定或自動產生 6 個隨機字符當作資料庫名稱前缀字。
[DB Backup]
- Enable Automated Scheduled Backups: 啟用後系統會定期備份資料庫。
- Backup Time Interval: 備份間隔時間。
- Send Backup File Via Email: 將資料庫備份檔案寄到指定 Email 信箱。
Filesystem Security
[File Permissions]
WordPress 預設檔案與目錄讀寫權限設定,有可能因為其它外掛的安裝,或不小心修改了權限而造成安全疑慮,這邊會顯示一些重要檔案或目錄的權限,與建議的權限設定,依照建議的指示設定即可。
[PHP File Editing]
- Disable Ability To Edit PHP Files: 禁止從 WordPress Dashboard 編輯 PHP 檔案。
[WP File Access]
- Prevent Access To WP Default install Files: 禁止讀取 readme.html, license.txt, wp-config-sample.php。
[Host System Logs]
查看系統 LOG。
Blacklist Manager
[Ban Users]
設定 IP 黑名單,請注意這個功能可能會讓你也無法進入管理介面,當發生無法進入管理 WordPress 時,請先回復原始 .htaccess 檔案再試試看。更多資訊。
Firewall
防火牆規則主要是在 .htaccess 檔案新增規則,在啟用防火牆規則前請先備份原始檔案。
[Basic Firewall Rules]
- Enable Basic Firewall Protection: 啟用最基本的防火牆規則。
- Max File Upload Size: 設定上傳檔案的最大限制。
- Completely Block Access To XMLRPC: 如果沒有使用 XML-RPC 的話,建議啟用。
- Disable Pingback Functionality From XMLRPC: 如果有安裝 Jetpack 或其他外掛需要使用 XML-RPC,請啟用。
- Block Access to debug.log File: 禁止讀取 debug.log
[Additional Firewall Rules]
- Disable Index Views: 禁止瀏覽網頁目錄。
- Disable Trace and Track: 防止 HTTP Trace 攻擊。
- Forbid Proxy Comment Posting: 禁止經由代理發送留言。
- Deny Bad Query Strings: 防護 XSS 攻擊。
- Enable Advanced Character String Filter: 防護 XSS 攻擊。
[Internet Bots]
- Block Fake Googlebots: 禁止非 Google 的網路爬蟲機器人,就是只允許 Google 來爬網站,其它禁止。
[Prevent Hotlinks]
- Prevent Image Hotlinking: 禁止圖片盜連 。
[404 Detection]
攻擊者會猜測網站有哪些網址,並且頻繁的測試這些可能不存在的網址。
測試這些不存在的網址,會產生很多 404 回應,因此可以根據這些回應判讀您的網站可能正遭受攻擊。
- Enable 404 IP Detection and Lockout: 啟用後,自動阻擋產生過多 404 回應的 IP
[Custom Rules]
- Enable Custom .htaccess Rules: 啟用後可自訂防火牆規則。
- Place custom rules at the top: 自訂的規則放在檔案的最上面。
- Enter Custom .htaccess Rules: 啟用後,可以將自定義規則放在此插件使用的所有規則的開頭。
Brute Force
[Rename Login Page]
- Enable Rename Login Page Feature: 啟用後,預設登入網址會變為指定的網址。
- Login Page URL: 設定要變更的登入網址。
[Cookie Based Brute Force Prevention]
Enable Brute Force Attack Prevention: 啟用防護暴力破解攻擊,啟用這個選項可能為讓你無法登入管理者,請先備份 .htaccess 檔案。
[Login Captcha]
- Use Google reCAPTCHA as default: 預設使用 Google 圖形驗證。
- Site Key: Google 圖形驗證網站金鑰。
- Secret Key: Google 圖形驗證密鑰。
- Enable Captcha On Login Page: 在登入表單插入圖形驗證。
- Enable Captcha On Lost Password Page: 在忘記密碼表單中插入圖形驗證。
- Enable Captcha On Custom Login From: 在客製登入表單中插入圖形驗證 。
[Login Whitelist]
只有白名單內的 IP 可以使用網站。
- Login IP Whitelist Settings: 啟用 IP 白名單。
- Your Current IP Address: 目前的 IP。
- Enter Whitelisted IP Addresses: 開通後,可以設定一個或多個IP至白名單。
[Honeypot]
- Enable Honeypot On Login Page: 在登入頁中插入隱藏欄位,只有機器人看得到,阻擋機器人攻擊。
SPAM Prevention
[Comment SPAM]
- Enable Captcha On Comment Forms: 在留言表單中新增驗證碼。
- Block Spambots From Posting Comments: 自動阻擋垃圾留言機器人。
[Comment SPAM IP Monitoring]
- Enable Auto Block of SPAM Comment IPs: 自動阻擋發送垃圾留言的 IP。
- Minimum number of SPAM comments: 設定垃圾留言觸發的數量,若超過該設定值,將會封鎖發送的IP。
[BoddyPress]
必須安裝 BuddyPress 外掛才能設定。
[BBPress]
必須安裝 BBPress 外掛才能設定。
Scanner
[File Change Detection]
- Enable Automated File Change Detection Scan: 定期自動檢查檔案是否有變動。
- Scan Time Interval: 設定多久檢查一次。
Maintenance
[Vistor Lockout]
Enable Front-end Lockout: 禁止使用網站並顯示維護中的訊息,只有管理者帳號可正常登入。
Enter a Message: 設定維護中要顯示的訊息。
Miscellaneous
[Copy Protection]
Enable Copy Protection: 禁止滑鼠右鍵,保護內容被拷貝。
[Frames]
Enable iFrame Protection: 禁止你的網站被顯示在 frame 或 iframe 中。
User Enumeration]
Disable Users Enumeration: 禁止使用網址 /?author=1 這種方式取得使用者資訊。
[WP REST API]
Disallow Unauthorized REST Request: 禁止未登入使用者使用 REST API。
如果設定造成無法登入怎麼辦
如果不小心設定錯誤,連自己都沒辦法登入了,不用擔心,網站一樣正常在運作,只是管理者暫時無法登入。
有幾個解決的方式,可以試試看,首先還是先做一次網站備份,以免又出現失誤。
方法一
使用 cPanel 或 FTP 或是其它虛擬主機提供的檔案管理工具,將外掛目錄名稱改個名字:all-in-one-wp-security-and-firewall -> all-in-one-wp-security-and-firewall-disabled
這樣外掛就暫時關閉,就可以登入了,然後再把目錄名稱改回來,重新設定。
方法二
修改 .htaccess 檔案,把這兩行中間的設定都移除
# BEGIN All In One WP Security
...
# END All In One WP Security
登入看看,修改還原正確的設定。
如果登入時,網址會被轉到 127.0.0.1,可以搜尋有 127.0.0.1 的那一行,前面加上 # 號,就是註解的意思,如下範例:
#RewriteRule .* http://127.0.0.1 [L]
這樣通常就可以登入了。
最後
此外掛的設定多,為了以防萬一,在設定前建議先備份.htaccess 檔案,以免把自已也阻擋在門外。
最近的更新版本 (Version 4.4.11) 有個重置功能,可以重置所有設定選項,想要從頭從新設定,就到 WP Security – Settings,點擊【Reset Settings】,一切從來,你必須從頭開始設定一次。
All In One WordPress Security And Firewall Plugin 真的是一個功能非常多,而且是完全免費的外掛,在學習設定的過程也可以學到很多關於網站安全的知識。關於 WordPress 安全性外掛,真的是安裝這一個就很夠用了。
延伸閱讀: