針對 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 後台,這樣子你覺得是不是安全多了?
如果你的網站需要高登來協助的話,請利用「關於高登」頁面的連絡表單提出,祝大家的網站都平安!
延伸閱讀
- Mass WordPress Brute Force Attacks? – Myth or Reality
- WordPress Brute-Forced!
- Wide-scale attack against WordPress blogs reported
- Brute Force Attacks and Their Consequences
- Hackers Point Large Botnet At WordPress Sites To Steal Admin Passwords And Gain Server Access
- Huge attack on WordPress sites could spawn never-before-seen super botnet
- Global Brute Force Attack on WordPress Blogs
- Brute Force Attacks Build WordPress Botnet
用Wordpress Google Authenticator手機驗證功能,登入之前除了要輸入帳密以外,還要到手機收驗證碼,包安全.
那個設定有一點難度哦
不過真的更安全
讚啦!
就是要這個,
之前看過許多的網站介紹都沒有高登兄講得清楚與明白。
之前早就說過了,書裡面講的更清楚,只可惜書已經買不到了
我用的Windows主機+IIS,可以設定後台啟用 Windows 身份驗證來解決,更厲害的辦法就是啟用SSL,然後進行使用者憑據驗證,沒有安裝電子憑據的人一律不能登入後台,硬要登入的話,直接提示403.7。現在微軟的Windows 2012作業系統+IIS8.0對於SSL進行了改良,多個網站可以共用一個SSL連接埠。
用 Windows 主機來架 WordPress 不在官方的建議配備中,因為要花錢買 OS 的版權,感覺跟開源的理念格格不入
不過你的作法真的是最安全的,我或許也會採用,謝謝您!
現在也不知道開源的網站伺服器軟體是不是已經支援多個SSL站台使用同一個IP位址以及連接埠,因為小弟研究的是微軟的作業系統,因此對此了解不多。順便問一下,考MCSA在中華民國找工作有沒有幫助?
MCSA系列證照已經是許多工作的必備條件,而且在全世界都通用
我想問一下我的網站為何點閱任何文章仍會出現 404 的情況?
有什麼地方是我可能作錯了?
以下是我從網路上 ( 包含高登您的 ) 所收集整理的 .htacess 內容 ( 如需我的其它資料請告之喔 ^^ )
# Do not remove this line, otherwise mod_rewrite rules will stop working
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Wordpress Admin Access Control"
AuthType Basic
order deny,allow
deny from all
allow from 114.38.
allow from 114.41.
# Block the include-only files.
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
# BEGIN WordPress
order deny,allow
deny from all
allow from 114.38.
allow from 114.41.
LimitRequestBody 10240000
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*healthhome.hostoi.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
# 禁止瀏覽目錄
Options -Indexes
order allow,deny
deny from all
allow from 114.38.
allow from 114.41.
#擋掉百度
SetEnvIfNoCase User-Agent "^Baidu" bad_bot
SetEnvIfNoCase User-Agent "^sogou" bad_bot
SetEnvIfNoCase User-Agent "^Bloghoo" bad_bot
SetEnvIfNoCase User-Agent "^Scooter" bad_bot
Deny from env=bad_bot
# 去除在頁尾會自動附加的 JavaScript
php_value auto_append_file none
請先把所有的鎖解開(不要鎖)再一個一個加,這樣就知道是哪一個的問題了
你不是什麼大站人家不懂你想擋什麼?
http://www.ylsnuha.com/000webhost-com-free-web-hosting/
在下方的 2.000webhost錯誤頁404505設置 找到了我的文章為何點下去會出現 404 的解決方法 ( 感動ing )
剛剛找到這個方法供大家參考 ^^
恭喜你!
有一樣問題的人可以參考看看
最近這問題好像吵很兇,
一開始還沒特別去管,想說應該不重要…
後來還是想說防護一下好了。
我是自己手動改一下程式,
登入頁面那裡設計一些只有自己才知道的進入方式。
然後就算進到登入頁面,除了原本的密碼欄之外,
我又多做了一個欄位當第二層密碼來驗證。
如圖http://i.imgur.com/HUFxzIB.png
(雖然網站很小,人氣不高
好像是一個不錯的方法,要不要分享給大家知道啊?
只要讓人家找不到你的門以及讓人家不知道你用的是wordpress,就可以防止9成以上專門找wordpress麻煩的人了。
連門都找不到的時候,可以阻隔暴力登入的部分。因為沒門就不會有暴力測試密碼,還可以防止因為太多的attempt,導致的當機。
讓人家不知道你用的是wordpress 更是一勞永逸的方法。
http://www.sohokakadong.com/Lana/
這不是打廣告,只是我自己要做的測試網站。之後要當成portofolio的。
他完完全全就是wordpress. 但是 沒人敢說他是wordpress , 因為根本看不出來他是wordpress.
連門在哪邊都找不到了,更何況暴力破門?
所有顯示的頁面程式碼,都不是wordpress的樣子。
做到了這樣,接著就是自己的主機的帳號密碼的保護了。
做網站先學會看網頁原始碼再說吧
查不出是 WordPress 的架的?那先把你的原始碼裡面的 wp- 藏起來吧
而且人家也不用查,直接用程式試你的帳密
還有你以為顯示 404 就不會對主機造成負擔?這樣 DDoS 怎麼會有效呢?
話說回來,你這樣的作法是正確的,但不是這樣就可以免於被駭,你太小看駭客了
還有你的主機是租 Linode 的,知道不久前他們整個母雞被駭過的事吧?
已設定成功,謝謝高登老師
高登老師您好,感謝您的網站清楚的教導,想請教您,我已經依照這個頁面的說明設定自己的電腦IP為白名單,但還是有駭客嘗試登入,他們應該看不到我的登入頁面了,但又可以嘗試登入,這是什麼原因呢?希望能得到您的回覆,謝謝
你可以自己用不是白名單的 IP 試試看是不是能有效阻擋