強化WordPress網站安全的 12 個方法

自從上次介紹了限制WordPress後台登入,倒是讓香腸擋了不少想要惡意入侵的駭客,不過這樣的安全仍然是不夠的,必須再搭配其他的防護措施來讓網站整體安全更高一層樓。目前要進行網站安全防護的方式都是透過Apache,利用.htaccess去對網站做設定、限制檔案存取,強化WordPress網站整體安全,不過使用者也別忘了要設定強一點的密碼。

接下來香腸要介紹的主要是透過.htaccess對網站做一個基礎的強化,保護wp-admin目錄、限制wp-includes目錄存取、防垃圾留言、禁止目錄索引、限制wp-config.php存取權限等等,算是很基礎的網站資安防護,不論你網站是否遭受攻擊,其實這些都是必要性的安全防護,有做防護不代表被不會被駭客入侵,而是可以是多一層保障、降低一些危險因子。

這幾天網站身旁很多朋友都遭到駭客的拜訪,當香腸寫文章、裝上後台封鎖外掛後,也發現自己也遭到被駭客嘗試登入的狀況,雖然是沒有被攻破,可是總有點怕怕的。根據log以及一些測試數據發現,這回的竄入應該是在存取wp-login.php,可是香腸都導掉了wp-login.php頁面,但外掛卻一直偵測到登入失敗的訊息,經過推測應該是他直接跑程式在try網站後台。

儘管封鎖了後台的IP存取,但是其他的問題未必以後不會被發現,所以下面我們列了十多項設定可以保護你的WordPress網站安全,避免駭客有更多的機會可以攻破你的網站。如同前面提到,如果你做了以下保護措施,香腸還是不能保證你可以安然度過,因為這樣的一些防護是基礎的,很難知道駭客是否有其他方式可以駭進網站,至少這些都可能維安的因子,趕快來修補安全漏洞吧!

教學目錄 

  1. 限制wp-admin目錄存取IP
  2. 限制存取wp-includes目錄
  3. 限制wp-login.php登入IP
  4. 限制上傳大小
  5. 保護wp-config.php設定檔
  6. 防垃圾留言攻擊
  7. 禁止目錄索引
  8. 變更資料表前綴
  9. 檔案權限
  10. 帳號安全
  11. 關閉後台佈景編輯功能
  12. 限制 .htaccess 存取權限

一、限制wp-admin目錄存取IP

這個方法可以限制直接存取wp-admin目錄,用NotePad++新增一個.htaccess檔案,將以下語法加入,並上傳到「wp-admin」目錄下。若FTP查看不到.htaccess,可以參考這篇文章解決問題。

其中的藍色部分請換成你的IP,這段語法的判斷流程簡言之就是先封鎖有所IP,然後開放允許的IP,所以藍色部分請改成你的IP,建議可以申請一個固定IP,會必較好。如果是一個網段,可以輸入「 xx.xx.xx. 」,記得最後有

詳細教學參考殺氣的說明。

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Wordpress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</LIMIT>

二、限制存取wp-includes目錄

wp-includes」這個目錄是系統的一些核心檔案,存在「/wp-admin/wp-includes」和,「/wp-includes」,通常這個目錄是被使用的,並沒有直接的頁面會連到這個地方,用以下這段語法可以限制存取的權限,請將語法加入到根目錄的.htaccess檔案。

此為官方建議設定。

# 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

如果沒有加入以上語法會顯示錯誤訊息,如果加了以上語法,會顯示WordPress的預設404頁面,告訴你檔案不存在,這樣是一個比較安全的防護措施。

強化WordPress網站安全的 12 個方法

三、限制wp-login.php登入IP

如果你網站沒有開放註冊,那你可以執行這項動作,限制允許存取wp-login.php這隻檔案的使用者,設定方法和前面的限制wp-admin存取IP方法類似,請將藍色部分改成你允許的IP或是網段。

<Files wp-login.php>
Order deny,allow
Deny from All
Allow from xx.xx.xx.xx
</Files>

四、限制上傳大小

避免駭客透過Dos攻擊,利用傳輸大檔案來衝爆你的流量,所以可以透過限制單檔大小來阻絕這樣的一個狀況發生,將以下語法加入到根目錄的.htaccess檔案即可,預設是10MB設定。

LimitRequestBody 10240000

五、保護wp-config.php設定檔

用過WordPress都知道「wp-config.php」這隻檔案攸關整個系統的營運,少了他連不上資料庫、設定無法套用網站就沒了,所以說,這隻檔案內保存了MySQL的帳號與密碼,為了保護這隻檔案,WorPress官方有個建議作法,就是先將此檔案權限設定為「400」,也就是只允許擁有人權讀取。不過設400可能會讓一些外掛例如wp super cache要寫入設定值發生錯誤(儘管主機啟用了 suPHP),所以請各位斟酌設定。

不過保護wp-config.php重頭戲是設定.htaccess檔案,修改根目錄的.htaccess檔案,加入以下語法,這語法意思是:禁止所有人瀏覽(主機內的程式是可以正常讀取的)。

此為官方建議設定。

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

六、防垃圾留言攻擊

以下這段語法是保護你的留言防止被機器人垃圾流言攻擊,主要是擋沒有referrer的請求,但香腸使用過後發現成效有限,建議再加裝Akismetquiz保護會更好。若要添加語法,請加入到根目錄的.htaccess檔案,其中的「yourblog.com」請換成您的網站網址。

RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*yourblog.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

七、禁止目錄索引

如果你的虛擬主機沒有開啟禁止目錄索引功能,請您務必加上此語法以保護沒有index檔案的目錄,避免被惡意人士將網站內容全部下載。

更詳細的說明請參考這裡

Options -Indexes

八、變更資料表前綴

資料表前綴詞其實在一開始安裝的時候就務必做一個修正的動作,避免使用預設wp的名稱,如果你現在想要做變更,可以參考:如何修改WordPress資料表的前綴名稱?

修改請務必小心,否則可能造成網站錯誤,做任何調整前務必先行備份,備份可以參考BackWPup這隻自動資料庫、檔案備份的外掛。

九、檔案權限

網站內該設定的權限務必調整好,例如wp-config.php就不可以設定為777。

官方建議設定是所有目錄設定755,所有檔案設定644

此為官方建議設定。

十、帳號安全

WordPress系統預設安裝是採用admin帳號,不過後來的版本允許使用者自行選擇網站管理員帳號,以避免惡意人士想要嘗試admin登入網站。如果你本身已經使用admin,請趕快換帳號吧!不然駭客輕易的就可以猜到你帳號,接下來猜出密碼應該很快了。另外記得再加裝Limit Login Attempts強化登入安全,當然您也要設一個不易猜出的密碼。

教學文章:如何更改WordPress預設的admin帳號?

十一、關閉後台佈景編輯功能

WordPress後台的佈景主題一旦權限開放就可以在後台直接編輯,如果沒有開放則只可瀏覽。主機若有安裝suPHP預設就是可以編輯。如果你覺得這項功能用不到,建議您可以關閉它,畢竟直接暴露在後台可以編輯是一件很危險的事情,除了可能因為駭客入侵亂改,也可能自己改錯造成網站出錯。請將以下語法加入倒wp-config.php適當位置,就可以關閉修改的權限了。

define('DISALLOW_FILE_EDIT', true);

此為官方建議設定。

強化WordPress網站安全的 12 個方法

 

十二、限制 .htaccess 存取權限

當以上的東西調整完之後,別忘了強化你的.htaccess檔案本身權限。將以下語法加入到.htaccess檔案內已啟用自我保護。語法是禁止所有人直接瀏覽該檔案,但是系統使用讀取是允許的。

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

最後各位還是要做好個人的帳號密碼管控,另外也別在不明的網路、電腦亂登入網站,這都可能造成帳密外洩,除此之外,再次提醒,使用以上方法只會加強WordPress安全,但無法保證百毒不侵,仍有機會遭受到駭客入侵,通常狀況可能是您帳密外洩、網站外掛、佈景有漏洞、系統有不明的漏洞,還有檔案權限設定不正確等等的狀況,各位還是要多多注意。