大約一個月前,這個部落格被黑客入侵(編按:Amit Agarwal 的網站)。而其餘託管於相同主機商的網站像是 ctrlq.org 和2hundredzeros.com 也深受其害,黑客成功從網路上拿下了這些網站。php
託管網站的主機商表示這可能發生於某些使用舊版的 WordPress 網站,致使密碼不幸洩漏,這段時間雖然歷經一些艱難,但幸運的是被刪除的網站已經回復,且流量也回到正常。html
如下是我所作的變動,用來提升個人 WordPress 網站安全性,縱使這樣的意外可能再次發生。瀏覽器
#1 使用你的 Email 做爲登入賬號安全
當你安裝完一個 WordPress 網站時,預設的第一位用戶爲 「admin」。你應該創建不一樣的使用者名稱來管理你的 WordPress 網站,並將預設使用者 「admin」 刪除,或是將它的權限從「系統管理員」降級爲「讀者」。服務器
你也能夠創建一個徹底亂數(難以被猜中)的使用者名稱,而後使用你的 Email 來登入 WordPress。外掛 WP-Email Login 能夠加入此支援,使用你的 Email 取代賬號登入。cookie
#2 不要向全世界展現你的 WordPress 版本wordpress
WordPress 網站會在原始碼顯示版本號,讓其餘人可以知道你正在執行舊的 WordPress。post
要從網頁裏移除 WordPress 版本是狠簡單的一件事,但你須要作一些額外的補強,從你的 WordPress 目錄將 readme.html 檔案刪除,由於它也會把你所使用的 WordPress 版本展現給全世界。網站
#3 別讓其餘人擁有」寫入」你 WordPress 目錄的權限日誌
登入你的 WordPress 網站 Linux 系統列,執行如下指令來取得全部「公開」、其餘用戶皆能寫入的目錄清單。
find . -type d -perm -o=w
你也許能夠執行如下兩行指令,來將你 WordPress 內的檔案和目錄設定爲正確的權限。
find /your/wordpress/folder/ -type d -exec chmod 755 {} \;
find /your/wordpress/folder/ -type f -exec chmod 644 {} \;
對目錄來講,755(rwxr-xr-x) 意味著只有擁有者具有寫入權限,其餘人只有讀取和執行的權限。對檔案來講,644 (rw-r–r–) 意味著只有檔案擁有者具有讀取和寫入權限,其餘人爲惟讀。
#4 從新命名你的 WordPress 資料表前綴
若是你使用預設選項來安裝 WordPress 的話,你的 WordPress 資料表應該會像是 wp_posts 或 wp_users。將資料表的前綴(wp_)更改成其餘隨機值是比較好的做法,外掛2Change DB Prefix2可讓你在彈指之間從新命名你的資料表前綴。
#5 防止使用者瀏覽你的 WordPress 目錄結構
這狠重要。開啓你 WordPress 根目錄底下的 .htaccess 檔案,而後在最上方加入這行。
Options -Indexes
這可以防止其餘人在能創建檔案清單時看到你資料夾內的全部檔案。例如目錄下缺乏預設的 index.php 或 index.html 時。
#6 更新 WordPress 安全密鑰
開啓此網頁來爲你的 WordPress 網站產生八組安全密鑰。開啓 WordPress 目錄下的 wp-config.php 檔案,將預設的密鑰以產生的密鑰取而代之。
這些隨機的字串能使你儲存於 WordPress 的密碼更加安全,另外一個好處是,當有人在你不知情的情抗下登入 WordPress,他們將會被當即登出,使他們的 cookies 失效。
#7 保留 WordPress PHP 和資料庫錯誤記錄
從錯誤記錄有時候能夠發現針對你 WordPress 所發出的無效資料庫查詢或檔案查詢。我更喜歡外掛 Error Log Monitor,由於它能按期透過 Email 發送錯誤日誌到你的信箱,也能顯示於你的 WordPress 控制檯。
要在 WordPress 啓用錯誤日誌功能,將如下程式碼加入你的 wp-config.php 檔案,記得要把2/path/to/error.log 替換爲你的日誌文件實際路徑。error.log 應該放在沒法直接從瀏覽器存取獲得的目錄。
- define('WP_DEBUG', true);
- if (WP_DEBUG) {
- define('WP_DEBUG_DISPLAY', false);
- @ini_set('log_errors', 'On');
- @ini_set('display_errors', 'Off');
- @ini_set('error_log', '/path/to/error.log');
- }
#8 以密碼保護 Admin 控制檯
使用密碼來保護 wp-admin 目錄是一個不錯的方法,由於瀏覽你的公開 WordPress 網站並不須要用到這目錄下的任何檔案。一旦設定完成,即便是受權的用戶也須要輸入兩道密碼才能登入他們的 WordPress 控制檯。
#9 追蹤你的 WordPress 服務器登入動態
你能夠在 Linux 下使用 「last -i」 指令來列出全部登入你 WordPress 服務器的使用者,包括他們的 IP 位址。若是你發現清單內有未知的 IP 來源,那確定要修改密碼了。
此外,下面的指令將顯示較長時間區間的登入動態,並使用 IP 位址分組(將 USERNAME 改成你的使用者名稱)。
使用外掛來監控你的 WordPress 網站
WordPress.org 外掛庫包含很多好用的安全相關外掛,能夠持續監控你的 WordPress 網站是否有被入侵,或是其餘可疑活動。這些是我會建議使用,也較爲基本的安全外掛。
Exploit Scanner – 它會迅速掃描你的全部 WordPress 檔案和文章,並列出潛藏惡意程式碼的。例如垃圾鏈結可能會使用 CSS 或 IFRAME 方式隱藏在你的 WordPress 網誌文章裏,而這個外掛能夠將它們找出來。
- WordFence Security – 這是一個很是強大、且應該使用的安全外掛。它會比對你 WordPress 的核心檔案和原始檔案間是否已被修改。並且,該外掛會鎖定嘗試登入你的網站卻失敗的使用者。
- WordPress Sentinel – 另外一個實用的外掛,能夠監控你的 WordPress 檔案,當有任何檔案被加入、刪除或修改時會發出警告。
- WP Notifier – 若是你不常登入你的 WordPress 控制檯,那這外掛適合你。它會在你安裝的背景主題、外掛和 WordPress 核心有新的更新時以 Email 通知你。
- VIP Scanner – 「官方」安全外掛將掃描你的 WordPress 背景主題有無任何問題,它也能檢測出有無任何的廣告程式碼被注入你的 WordPress 背景主題裏。
小技巧:你也可使用如下 Linux 指令來列出近三天被修改的檔案清單。將 mtime 改成 mmin 能夠看到 「n」 分鐘前被修改的檔案清單。
提升 WordPress 登入頁面安全性
- 你的 WordPress 登入頁面是每一個人均可以存取的,但若是你想防止未受權的使用者登入 WordPress,你有如下三種選擇。
- 使用 .htaccess 加入密碼保護 – 在 WordPress 認證之外加入另外一道帳號密碼來保護你的 wp-admin 目錄。
- Google Authenticator – 這出色的外掛能為你的 WordPress 加入兩步驟驗證功能。除了輸入正確的密碼外,還必須搭配手機應用程式來輸入隨機產生的驗證碼。
- Login Dongle – 這個外掛使用一個很是獨特的方法來保護你的 WordPress。它能產生一個書籤列(加上祕密問題),你能夠將它加入瀏覽器。當你要登入 WordPress 時,輸入你的密碼並按下書籤列才能登入 WordPress – 登入頁面的按鈕將無法使用。