WordPress最大的安全問題,在於它的登入頁面都是一樣的檔案 wp-login.php
只要有裝過 wordpress 的人,都知道這個登入頁面,都可以用這個檔案去測登入的帳號,更甚之可用字典攻擊去試出密碼來。(底下介紹的防護方法有二,視不同情況擇一用之。)
方法一:變更登入檔名
適用情況:登入者沒有固定IP,只有浮動IP的情況下。
所以,我們可以將此重要的登入檔案 wp-login.php 改成其它的名字,這樣一來,安全性就大大的提高了。這個方法步驟比較多,比較麻煩些,若你有固定IP會推薦你用下一個方法。
⑴ 改檔名
我們可以將 wp-login.php 改名成為 87654321.php
所以呢,原本的登入頁面是這樣的網址 http://blog.wordpress.tw/wp-login.php
改檔名之後的登入頁面的網址就要改成 http://blog.wordpress.tw/87654321.php
⑵ 修改檔案內容
改完檔名後,還要做一個動作,就是編輯 87654321.php 此檔 (最好先備份 wp-login.php此檔)
搜尋此檔內所有有關 wp-login.php 的字樣,要全部修改成 87654321.php
因為wp-login.php此檔已經沒有了,它還要去找這個檔名一定找不到的。
這樣是很安全沒錯,但是我每次登入時,難不成都要自己手動改網址嗎? 那不太麻煩了嗎?
有一個很好的解決方法:
⑶ 安裝火狐外掛 Redirector
火狐有一個外掛程式叫作 Redirector 它可以透過正規表示法,將某些特定的網址,固定轉成另一個網址連結過去。
⑷ 設定 Redirector
底下就介紹 Redirector
以此網址為例 http://blog.wordpress.tw/wp-login.php
此網址登入時後面會帶一些參數? 問號後面帶一堆參數,最後是個變數,隨機產生。
http://blog.wordpress.tw/wp-login.php?action=logout&_wpnonce=572536efc7
所以在 Redirector 裡我們要這麼設定,建立兩個規則,一個登出用,一個登入用。
① 新增第一個規則
Example url 用於測試的URL (這一欄可以不填沒關係,主要是用來測試你的語法正確否)
http://blog.wordpress.tw/wp-login.php?action=logout&_wpnonce=572536efc7
Include Pattern 使用規則
http://blog.wordpress.tw/wp-login.php\?action=logout&_wpnonce=(.*)
說明: 這裡的? 問號前面加一個倒斜線,是規避特殊付號。 wpnonce= 後面的變數用 .* 代表萬用字元,將它用括號包起來,則是一個變數 $1 所以底下就是這個規則的寫法。
Redirect to 重定向到
http://blog.wordpress.tw/87654321.php?action=logout&_wpnonce=$1
Pattern Type 規則類型: Regular Expression 正規表示法
② 新增第二個規則
Include Pattern 使用規則: http://blog.wordpress.tw/wp-login.php
Redirect to 重定向到: http://blog.wordpress.tw/87654321.php
Pattern Type 規則類型: Regular Expression 正則表達式
註:其實還有更簡單的方法,只要將
http://blog.wordpress.tw/wp-login.php(.*)
直接轉址成
http://blog.wordpress.tw/87654321.php$1
這樣一條規則就可搞定
方法二:鎖固定IP
適用情況:登入者有固定IP。
此做法比較簡單,就是利用 apache2 的檔案權限設定
在 apache2 的設定檔內加入底下內容
Order deny,allow
deny from all
allow from 192.168.3.5 192.168.4.0/24
AllowOverride None
Order deny,allow
deny from all
allow from 192.168.0.0/24
以上設定內容的意思是
限制 wp-login.php 此檔名只能由 192.168.3.5 這個 IP 和 192.168.4.0 這個網段的IP存取此檔
限制 wp-admin 此目錄只能由 192.168.0.0/24 這個網段進入
[note]參考資料: 10招提高你的WordPress安全性、[/note]