WordPress

針對 WordPress 的暴力攻擊正在進行中

密碼暴力攻擊 (Brute Force Attack),是駭客常用的一種手法,它是利用程式來猜密碼,因為程式執行的速度很快,如果又遇上你所使用的密碼是很簡單或是很容易猜得到的話,那歹徒成功的機率就很高

就算是猜不到你的密碼,但是有人整天有人拿著鑰匙來試你家的大鎖,我想任何人都不應該置之不理

從昨天開始,國外許多網站紛紛發出 WordPress 暴力攻擊的警訊,請大家小心這一波的暴力攻擊(詳見文章最後的延伸閱讀)

為什麼暴力攻擊會找上 WordPress?

如果你是跟我一樣使用 WordPress 自己架站的人,一定會好奇駭客為什麼會找上你呢?就讓我來告訴你為什麼:

  • WordPress 是全世界最多人使用的架站程式
  • 在 3.0 版以前安裝的 WordPress 後台管理的名稱都會叫 admin
  • WordPress 後台的網址一律是 你的網址/wp-admin/
  • 沒有特別限定的網站主機,全世界每個人都可以到你後台登入頁面玩猜猜看的遊戲
  • 如果是沒有安全觀念的 WordPress 網站主,人家猜了你密碼一年你都還不知道呢!
  • 很多 WordPress 網站主都電腦或網站方面的知道都不夠又沒找專業人員代管
  • 看了以上的理由,你是不是也會想試試看啊?

本人對 WordPress 從一開始就比別人付出更多的心力在安全這方面,而且早在四年前就發過 幫WordPress後台築城牆

 這篇文章,教大家安裝 Limits Login Attempts 這個外來知道有誰在試你的 WordPress 後台密碼

但是很不幸的在這一篇文章發表了一年之後,我的網站還是被駭了,由此可見上面這個外掛的邏輯還是不對,裝了這個外掛網站還是無法高枕無憂

WordPress 後台是機房重地

很多機關都會有「機房重地、閒人勿入」,那你的 WordPress 機房重地(wp-admin 後台)有這樣的安全措施嗎?

而這些機房重地是只放一張警告牌在那裡,壞人就會止步了嗎?還是要用圍籬甚至鐵絲網圍起來才能阻止壞人?

雖然我也早就三年前被駭之後提出了解決方案(詳見 被駭全記錄),甚至也不只一次在 WordPress 相關的社團提出這個解決方案,但是大家好像一直都看不懂我在說什麼,所以今天就再把這個方法說個明白

黑名單 vs 白名單

前面提到的機房重地要進入的時候是不是要有身份辨識?現在一般都是用刷卡管制,所以就算歹徒知道機房(wp-admin)在那裡也是不得其門而入

所以 WordPress 要安全第一要件就是限制可以進入 wp-admin 目錄的 IP 位址,昨天還有國外重量級的資安網站列出前30名惡意登入後台的 IP 位址,意思是叫大家封鎖這些 IP 位址,這樣就安全了嗎?

在以前這一招或許有用,但是這一次駭客是利用超過10萬台電腦的殭屍電腦網路 (botnet) 來發動暴力攻擊的,就算你是自己架設獨立主機的,應該也不可能把這些 IP 全部封鎖,更何況這些 IP 大部份都是一般上網的民眾,可能也是你網站本來的訪客哦!

與其建立超過10萬名的「黑名單」,為什麼不改用只有你自己一個的「白名單」呢?

而一般人會覺得白名單的方法不可行是因為大家都告訴你:你要先有固定 IP 才可以用白名單,因為你每次上網的 IP 都不固定!

這個說法並不完全對,因為跟據我的觀察,一般人上網的浮動 IP 會是特定的幾組範圍,你只要把這幾組都列入白名單就可以達成類似的效果,雖然還有可能同一網段的壞人會搞鬼,但至少比起全世界所有 IP 範圍少得多了,對吧?

如何知道你上網的 IP?

所以請你到下列的網站:

網頁顯示就是你上網的 IP 位址

然後網路斷線重撥重新取得 IP,多試幾次你就會有一份你上網 IP 的清單,公司以及家裡都這樣記錄

不過手機上網的 IP 就比較沒有規則可言,所以建議用手機就不要進網站的後台(用家裡或是公司的 WiFi 則不在此限,因為那也是用 ADSL/光纖的 IP 上網)

限制 WordPress 後台存取 IP

我們有了自己的白名單之後,把它設定到網站的 .htaccess 檔案就可以限制這些 IP 才能存取 WordPress 後台,其他的人會被網站主機拒絕

我們要設定的有兩個地方,首先是你的網站根目錄的 .htaccess 請加上,請用主機後台(cPanel)或是FTP來編輯這個檔案

<Files .htaccess>
order allow,deny
deny from all
</Files>

<Files wp-config.php>
order allow,deny
deny from all
</Files>

<Files wp-login.php>
order deny,allow
deny from all
allow from 123.123
</Files>

把 allow from 123.123 換成你自己的查到的 IP 位址,我只設前兩個 IP 數字是假設你查到的 IP 前兩個數字都一樣

如果有不只一組 IP 範圍的話,再加一列 allow from 112.123

接下來要在 wp-admin 目錄裡面的 .htaccess 檔案加上以下內容(如果沒有這個檔案請自行新增)

AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET POST>
order deny,allow
deny from all
allow from 173.231.39.82
allow from 122.123
</LIMIT>

<Files admin-ajax.php>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

設定的 IP 範圍跟根目錄的相同,再加上網站主機的 IP(例如我現在的 IP 是 173.231.39.82)

就這麼簡單別人再也進不到你的後台了

註:高登發現某些主機的這個 .htaccess 的設定,可能會讓你的後台進不去(HTTP 403 Error),如果是這樣那 wp-admin 這邊的 .htaccess 就不要設了

會不會把自己也封鎖了?會的!不過你的主機 cPanel 後台以及 FTP 都還可以進去把新的 IP 加到白名單,這樣知道怎麼做了吧?

但是還有一個漏洞聰明的您想到了嗎?

沒錯!就是可以去改白名單的 cPanel 後台還有 FTP,這兩個就不是一般租用主機的人可以防範的,但是我是自己架設的 VPS 就可以哦!不信你可以試試看!

以上的白名單方法只會比你去封鎖一大堆黑名單,或是讓人玩猜猜看,猜錯3次再封鎖你都還有效,甚至駭客不是用後台駭入你的網站(例如直接改你的 MySQL 資料表),就算他已經知道帳號密碼也是一樣進不到你的 WordPress 後台,這樣子你覺得是不是安全多了?

如果你的網站需要高登來協助的話,請利用「關於高登」頁面的連絡表單提出,祝大家的網站都平安!

延伸閱讀