WordPress安全 有效提升的基本實務方略(附28點建議)

WordPress安全性對每個網站都是一個非常重要的主題。

在本文中,我整理了一系列關於 WordPress的安全 設置的重點,這一篇內容是根據許多網路的文章以及我的實際經驗,提供給管理WordPress的朋友,針對WordPress安全性議題有進一步的了解,幫助你能夠保護你的網站免受駭客和惡意軟件的入侵。


A.WordPress安全基礎知識

在開始前,請先注意幾個基本的操作習慣與設定。

01.為什麼你需要注意WordPress的安全性?

首先採用WordPress系統的使用者必須要正視的問題就是,WordPress是目前使用量最大的CMS系統,同時,它也經常受到駭客的關照,每天可能有數以萬計的爬蟲在找尋WordPress以及它的漏洞。

根據Sucuri網站的統計報告,三個最常被感染的CMS系統分別是WordPress(83%),Joomla!(13.1%)和Magento(6.5%)。這些數據並不意味著這些平台比其他平台更安全或更不安全。

受感染的CMS系統平台比例分佈。本圖基於Sucuri Remediation Group(RG)收集和分析的數據,其中包括事件響應小組(IRT)和惡意軟件研究小組(MRT)。
受感染的CMS系統平台比例分佈

在大多數情況下,受到感染的原因更多是由於網站管理員的不當部署,配置和整體維護。在Sucuri所分析的數據中,受到駭客攻擊的WordPress網站中,39.3%的人在入侵事件發生時,仍然使用舊的WordPress核心版本。

安裝過時的系統平台導致駭客入侵
由於安裝過時的系統平台,導致駭客入侵

根據WPScan漏洞數據庫,他們記錄的已知漏洞中約有74%是在WordPress核心軟件中。漏洞最多的版本可以追溯到WordPress 3.X。

02.保持WordPress更新,包括核心、外掛與佈景主題

WordPress是一個定期維護和更新的開源軟件。預設情況下,WordPress會自動安裝次要更新。對於主要版本,您需要手動啟動更新。WordPress安全團隊在快速修復WordPress核心軟件中的問題方面做得非常出色。如果您立即應用所有安全更新,則您的網站極不可能因核心漏洞而遇到任何問題。

根據WPScan漏洞數據庫,越舊的 WordPress版本,曝露了越多的漏洞,通常新版本的釋出很多是為了解決上一版本被發現的問題。

WPScan紀錄的Wordpress漏洞
WPScan紀錄的Wordpress漏洞,這些漏洞提醒使用者,請保持系統更新

WordPress還附帶了數以千計的外掛和主題,您可以在您的網站上安裝。這些插件和主題由第三方開發人員維護,並定期發布更新。這些WordPress更新對於WordPress網站的安全性和穩定性非常重要。請務必確保你的WordPress核心、外掛和佈景主題是最新的。

Wordpress常見外掛與佈景主題漏洞
WordPress常見外掛與佈景主題漏洞

WordFence 在採訪了1000多名遭受攻擊的WordPress網站所有者後提出一份統計數據,外掛漏洞 占駭客已知漏洞的55.9%。透過更新外掛,你可以確保不是這些受害者之一。

要在WordPress中設置自動更新:

  1. 通過SFTP或SSH登錄服務器。
  2. 找到wp-config.php文件,該文件通常位於文檔根文件夾public_html中
  3. 將以下代碼段添加到文件中:
define('WP_AUTO_UPDATE_CORE',true);

要在WordPress中手動應用更新:

  1. 通過SFTP或SSH登錄服務器。
  2. 手動刪除wp-admin和wp-includes目錄
  3. 將核心文件替換為根目錄,/ wp-admin /和/ wp-includes /使用官方提供的WordPress下載檔。
  4. 以管理員身份登錄WordPress – 您可能會看到更新數據庫的提示。
  5. 點擊“ 更新WordPress資料庫”
  6. 資料庫更新後,導航到控制台>更新
  7. 確認沒有任何未更新。
  8. 打開網站以驗證其是否正常運行。

03.使用SSL / HTTPS

為 WordPress 站台安裝SSL,讓網址在https下連線,確保用戶瀏覽器與主機之間的數據安全傳輸。要將網址強制轉到以”https連線方式”,可以將根目錄內的.htaccess檔加上以下程式碼

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

傳輸後,也別忘記在WordPress控制台的一般/設定內,找到WordPress位址&網站位址,將網址改為https的連結。

04.WordPress備份解決方案

備份是抵禦任何WordPress攻擊的第一道防線。請記住,沒有什麼是100%安全的。如果政府網站可以被駭客攻擊,那麼你的網站也可以被黑客攻擊

備份允許你快速恢復你的WordPress網站,以防發生不好的事情,例如網址被重定向損失SEO權重、被GOOGLE標記為不安全等。這些危害發生後,雖然能夠恢復,但需要耗費的心神,絕對會讓你對駭客痛恨。

您可以使用許多免費或付費的WordPress備份外掛。在備份時,您需要知道的最重要的事情是你必須定期將全站點備份保存到遠程位置(而不是您的主機帳戶)。

我建議可以使用類似UpdraftPlus外掛,可以免費備份到Google雲端硬碟 ,備份的頻率則需要依照主機性能與需求而定。

05.SFTP / SSH連接

在傳輸檔案到主機時,請以加密方式,可確保傳送時的任何數據免受駭客監控。

因此建議你可以使用以下方法之一連接到你的主機:

SSH:安全套接字Shell是一種安全的網絡協議,是安全管理遠程服務器的最常用方法。使用安全套接字Shell,任何類型的身份驗證(包括密碼身份驗證和文件傳輸)都是完全加密的。

SFTP: SSH文件傳輸協議是SSH的擴展,允許通過安全通道進行身份驗證。如果你使用的是FileZilla或其他FTP用戶端,則可以選擇SFTP。大多數FTP服務中SFTP的預設端口為22。

B.保護WordPress登錄頁面來防止暴力攻擊

06.強密碼和用戶權限

最常見的WordPress駭客攻擊之一就是猜測使用者密碼。管理者可以設定更難猜測的密碼(強密碼) 來解決這個問題。

強密碼應符合以下標準:

  • 至少1個英文大寫字符
  • 至少1個英文小寫字符
  • 至少1位阿拉伯數字
  • 至少1個特殊字符
  • 至少10個字符,連續不超過兩個相同的字符

根據 SplashData’s 2018 annual list 的報告,最受歡迎的密碼列表如下(按受歡迎程度排序),一般人為了方便,經常設定簡單好記的密碼。

  • 123456
  • password
  • 123456789
  • 12345678
  • 12345
  • 111111
  • 1234567
  • sunshine
  • qwerty
  • iloveyou

駭客嘗試使用GWDb來嘗試登錄(猜測工作資料庫,也就是用來猜測用戶名稱和密碼的資料庫;例如用戶名:admin和密碼:123456 …有數百萬這樣的組合,透過程式來進行測試)。

因此設定密碼時,請勿使用習慣的密碼,或是雖然複雜但卻重複使用的密碼,駭客通常可以根據個人的基本資料組合出可能的猜測組合,從而破解,甚至危及到你的其他使用系統。現在大部分主機都會在需要輸入密碼時,自動產生一組很難記憶的密碼,Wordpress也有類似的設計。

由於大部分的人都不喜歡使用強密碼,因為很難記住,而且有太多需要記憶的帳號密碼。因此建議你可以使用密碼管理器,有一個可以推薦使用的免費工具是 KeePass 。或參考線上密碼管理器,例如1Password或  LastPass

07.更改WordPress登錄網址

將登入網址更改可避免駭客或有心人士攻擊入侵,因WordPress登入網址都是固定的「網址加上wp-login.php」,因此可以使用外掛WPS Hide LoginPerfmatters,來自行設定Login網址,而原本預設的登入網址會顯示「This has been disabled」,防止駭客嘗試登入網站。

使用Perfmatters隱藏WordPress登錄URL

不過為了減少外掛的安裝數量,我建議你可以選用一套完整的安全性外掛,這些外掛能協助你完成本文的許多設定,減少你的時間,請參考本文的最後建議。

請注意,如果你是電子商務網站或採用會員的網站,可能不能做這個社訂,因為會員登錄的位置與控制台管理相同。

08.更改預設的“admin”用戶名

WordPress安裝時,預設管理員用戶名稱是“admin”,因此容易被駭客進行攻擊。管理者應該設定不同使用者名稱來管理網站,並且將預設的使用者Admin刪除或改為訂閱者權限。

就WordPress而言,永遠避免使用預設的“admin”用戶名。你可以為管理員帳戶設置一個唯一的WordPress用戶名,然後再刪除“admin”用戶(如果存在)。操作方式是在控制台的“帳號”下新增帳號,在角色選單中選擇“管理員”,這樣就能有一個可以完整控制 WordPress 的帳號。完成後再將預設的帳號刪除。

新增帳號,並且將角色設定為管理員
新增帳號,並且將角色設定為管理員

為新帳號設置管理員角色後,再返回刪除原始“管理員”用戶。確保在點擊“刪除”時選擇“將所有內容歸屬於”選項並選擇新的管理員帳號。這將指定此人作為這些帖子的作者。

你也可以使用以下命令在phpMyAdmin中手動重命名當前的管理員用戶名。確保在編輯表之前備份數據庫。

UPDATE wp_users SET user_login = 'newcomplex-adminuser' WHERE user_login = 'admin';

09.限制登錄錯誤次數

預設況下,WordPress允許用戶多次進行登錄。這使您的WordPress站點容易受到攻擊,駭客可以嘗試用多種方式來猜測密碼。限制用戶可以進行的失敗登錄次數,可以解決此問題。

免費的Cerber Limit Login Attempts外掛可以設定持續時間,登錄錯誤次數以及IP白名單和黑名單。

限制WordPress中的登錄次數
限制WordPress中的登錄次數

10.啟用雙重登入驗證功能

雙重登入驗證涉及兩個步驟,不僅需要登錄密碼,還需要第二種方法。它通常是簡訊(SMS)、電話呼叫或逾時失效的一次性密碼(TOTP)。在大多數情況下,這可以100%有效地防止對你的WordPress網站的暴力攻擊。為什麼?因為攻擊者幾乎不可能同時擁有你的密碼和手機。

當有駭客取得你的帳密時還需透過第二階段認證才能登入,WordPress並沒有提供登入時雙重登入驗證功能,推薦可以透過外掛「authy-for-wp」來安裝,或以下的外掛也能實現相同的功能。

11.長時間閒置,自動登出

當你登錄WordPress時,有可能因為離開螢幕而帶來安全風險。有人可以接著進行更改密碼或更改帳戶。你可以安裝並啟用Inactive Logout插件。

你可以使用BulletProof Security之類的外掛進行設置。此外掛允許你為帳號設置自定義時間限制,超過自定時間後,會自動登出。

12.加上CAPTCHAs

這個功能你應該不陌生,就是在送出資料、加入會員、結帳前,通常都會有的驗證碼,主要用於區分「人」跟「機器人」。CAPTCHAs其實是這串英文的簡寫:Completely Automated Public Turing test to tell Computers and Humans Apart,事實上簡寫還是很難記。

著名的我不是機器人就是由google所開發出來的。此功能對於阻止機器人程式拜訪你的WordPress控制台以及通過表單送出不需要的垃圾郵件非常有用,尤其是垃圾迴響。

Google所推出的我不是機器人驗證碼
Google所推出的我不是機器人驗證碼

在你的WordPress登錄頁面添加CAPTCHA的常用外掛,例如:CaptchaReally Simple Captcha

C.管理檔案目錄來保護你的WordPress網站

13.禁用文件編輯

WordPress附帶一個內置的代碼編輯器,允許您直接從WordPress管理區域編輯主題和外掛文件。若你不熟悉程式,我建議將其關閉。

如果你的WordPress網站被黑客攻擊,他們可能會做的第一件事是嘗試通過外觀編輯器編輯PHP文件或主題。這是他們在你的網站上執行惡意代碼的快捷方式。

你可以透過在wp-config.php文件中加入以下程式碼來輕鬆完成此操作。

// Disallow file edit
define( 'DISALLOW_FILE_EDIT', true );

14.某些WordPress目錄下禁用PHP

另一種強化WordPress安全性的方法是在不需要的目錄中禁用PHP文件,例如/ wp-content / uploads /

你可以利用文字編輯器新增以下程式碼

<Files *.php>
deny from all
</Files>

然後將此文件另存為.htaccess,並使用FTP將其上傳到您網站上的 / wp-content / uploads / 資料夾。

15.密碼保護WP-Admin和登錄(htpasswd保護)

透過虛擬主機提供的功能,你可以針對WordPress的特定目錄與登錄網址設定密碼,進一步防止駭客。

如果您使用的是cPanel主機操作軟體,可以直接從其控制面板啟用受密碼保護的目錄。

cPanel 設定目錄密碼保護
cPanel 設定目錄密碼保護

要手動設置,首先需要創建一個  .htpasswd文件。您可以使用這個方便的生成器工具。然後將文件上傳到wp-admin文件夾下的目錄,例如:

home/user/.htpasswds/public_html/wp-admin/htpasswd/

然後.htaccess使用以下代碼創建一個文件並將其上傳到您的/wp-admin/目錄。確保更新目錄路徑和用戶名。

AuthName "Admins Only"
AuthUserFile /home/yourdirectory/.htpasswds/public_html/wp-admin/htpasswd
AuthType basic
require user yourusername

這可能會造成網站前端的AJAX(admin-ajax)無法運作,導致某些外掛無法使用。因此,請特別將以下代碼添加到上面的.htaccess文件中。

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

16.禁用目錄索引和瀏覽

開啟WordPress根目錄底下的.htaccess 檔案>在最上方加入下列的程式碼,就能夠防止他人在建立清單檔案時,看到你資料夾內所有檔案。

Options All -Indexes

17.仔細設置目錄權限

錯誤的目錄權限相當危險,特別是如果你在虛擬主機的環境中運作。因此請務必更改文件和目錄權限,將目錄權限設置為“755”,將文件設置為“644”可保護整個文件系統、目錄、子目錄和單個文件。

這可以通過主機控制面板內的文件管理器手動完成,也可以透過ftp完成。

  • 所有文件權限應設為644或640。例外:wp-config.php應為440或400,以防止服務器上的其他用戶讀取它。
  • 所有目錄應設為755或750。
  • 不應該給777目錄,甚至上傳目錄。

有關更多資料,你可以閱讀有關WordPress的正確權限方案或安裝iThemes Security外掛以檢查你目前的權限設置。

WordPress文件權限掃描
WordPress文件權限掃描

18.防止熱鏈接

熱鏈接的概念就是你在網路上找到了一張圖片,用複製連同html將圖片與html語法全部貼上自己的網站,這樣圖片的位置仍然在其他人的網站上,但卻顯示在你的網站,無形中你占用了他人的頻寬資源。

這可能看起來不是什麼大問題,但它可能會產生很多額外的成本。要防止Apache中的熱鏈接,只需將以下代碼添加到您的.htaccess文件中即可。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://dropbox.com/hotlink-placeholder.jpg [NC,R,L]

如果您想生成一些更複雜的規則,請查看此htaccess熱鏈接保護生成器

D.透過保護資料庫來保護你的WordPress網站

19.更改WordPress數據庫前綴

wp-config.php是 WordPress 重要的系統檔,預設前綴字都是WP_開頭,建議更改其他名字,不然容易被駭客找到檔名進而利用。如果你正要安裝,你可以在安裝過程看到這個選項,並且改輸入其他英數字;如果你已經安裝且正在使用WordPress,那麼你可利用外掛程式「Change Table Prefix」來改所有的前綴文字。

這類外掛安裝完,修改好前綴文字,就可以移除不用。完成修改後的資料庫的每個資料表名稱前面都會增加前綴文字設定的字元。

例如輸入gdfr四個隨意的英文,每個資料表就會對應出現gdfr英文字。用這個方式避免駭客直接用預設的wp_來暴力猜測帳號密碼。

你可以在修改完時,再下載根目錄下的 wp-config.php 檔案,打開後可以看到 $table_prefix 這個也同時更改成功。

/**
 * WordPress 資料表前綴。
 *
 * 若您為每個 WordPress 設定不同的資料表前綴,則可在同個資料庫內安裝多個 WordPress。
 * 前綴只能使用半型數字、字母和底線!
 */
$table_prefix  = 'gdfr';

20.為資料庫設定強密碼

對於安裝過程設定資料庫密碼或是日後管理資料庫, WordPress 的資料庫都應該使用強密碼設定。

若你發現網站疑似被入侵的痕跡,第一個要進行的當然是使用備份資料將網站重新安裝,除此之外,你也應該更改資料庫的使用者帳號、密碼,甚至資料庫名稱

21.監控審核日誌

WP安全審核日誌
WP安全審核日誌

主機會紀錄網站發生修改、更動的事件紀錄,這些紀錄會儲存在主機的日誌(log)檔案中。透過log檔案去監控網站的變動是否有異常,是程式設計師用來追查網站被入侵的重要手段。要有效簡便的監控日誌可以透過外掛來進行。

推薦使用WP Security Audit Log來進行管理的工作。 這套外掛匯保存日誌的每個事件,包含:

  • 發生時間的日期和時間(和毫秒),
  • 執行更改的用戶的用戶和角色,
  • 發生更改的IP地址。
WP Security Audit Log 安裝導引
WP Security Audit Log 安裝導引

安裝完成後啟動,會在控制台選單出現 Audit Log 選項,列出多種記錄,提供管理者隨時檢視。


WP Security Audit Log 網友登入記錄
WP Security Audit Log 網友登入記錄

22.選擇安全性著稱的主機解決方案

大多數主機通常會提供一些基本的安全設定,需要使用者自己設定。有些廠商提供額外付費的安全軟體或防火牆等,但通常發生問題還是需要自行解決,畢竟他們提供工具,但使用者是網站管理者本身。

通常我們會將 WordPress安裝在四種主要的主機類型:

共享主機環境 Shared Hosting,一般為虛擬主機。

有些廠商會特別針對Wordpress推出特用的主機,但多半只是提供一鍵安裝或聲稱進行效能調整,可是卻沒有進一步詳細說明作了哪些改變。台灣本土主機廠商針對 WordPress 的特殊主機有捕夢網特別提供針對WAF軟體防火牆,不過實際效果如何並無資料可循,有興趣的朋友可以電詢該公司設置的WAF軟體評估。

至於其他廠商,則未見有特別說明 WordPress 主機特殊之處,則難以評估。這些廠商多半都提供免費試用,我建議可以申請後,安裝 WordPress,並迅速利用一個商用佈景架設好網站進行測試。包含不同時間的運作速度等作比較。

相對於台灣 WordPress 主機的功能少,海外提供的 WordPress 主機則有多種功能,這部份日後有時間再補充分享。這裡提醒的是,如果你的 WordPress 主機打算運作電子商務,那麼我會強烈建議,具有特別安全功能的主機一定要列入考量,千萬別因為小錢在日後損失大錢與商譽。

虛擬專用服務器(VPS)環境

效能與自主性較高的主機,可以設定更多內容。有些會提供防火牆可以直接鎖定主機的ip,安全性更高,但操作上需要有專業技術。

主機代管與獨立主機

這已經是專業等級主機,當你採用這種主機,意味著網站的運作已經達到一定成熟度,可能也有經費支應專業技術人員的薪資,因此本文就不再特別討論。這類主機你可以考慮海外主機廠商提供的專業環境,並且可以選擇亞洲,例如東京、香港與新加坡這三地的機房,提供台灣機房的海外廠商不多,但仍可以找尋試用。

不管採用哪種主機,你都能夠進一步確認以下問題,以便你作決策。

他們採取了哪些安全預防措施來保護您的網站(而不僅僅是他們的服務器)?
如果在你的某個網站上發現惡意軟件,他們會採取什麼行動?
多久會掃描一次惡意軟件?
他們提供事件處理服務嗎?
如果網站遭到駭客入侵,是否需要與第三方技術廠商聯繫?還是主機廠商能提供服務?

23.基本.htaccess配置

.htaccess文件是大多數供應商在加強環境時會修改的文件。這個文件作用於Apache上運行的Web伺服器。如果你是使用Apache在LAMP環境上安裝WordPress,那麼以下將.htaccess文件作了整理,你可以一次掌握。

覆寫規則

這個規則在設定固定網址時,會由WordPress產生。如果它不在您的文件頂部,請放在.htaccess文件的一開始。任何其他規則應該在#BEGIN WordPress和#END WordPress語句之後。

# BEGIN WordPress
# Rewrite rule
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

強制轉向https

如果網站已經安裝SSL,那麼你可以用這個規則讓瀏覽者一定導入SSL的保護。

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

將登錄限制為IP範圍

將對wp-login.php的訪問限制為IP,以防止在其他位置進行未經授權的登錄嘗試。即使您沒有固定IP,仍然可以將登錄限制在ISP的常用範圍內。你也可在/ wp-admin使用這個規則。

# Block IPs for login Apache 2.2
<files /wp-login.php>
order deny, allow
allow from MYIP
allow from MYIP2
deny from all
</files>
# Block IPS for login Apache 2.4
<Files "wp-login.php">
Require all denied
</Files>

保護wp-config.php

限制訪問者訪問您的wp-config.php文件,該文件包含有關資料庫的敏感信息,包括名稱,主機,用戶名和密碼。

# Protect wp-config Apache 2.2
<files wp-config.php>
order allow,deny
deny from all
</files>
#Protect wp-config Apache 2.4
<Files "wp-config.php">
Require all denied
Require ip 1.1.1.1
</Files>

阻止目錄瀏覽

防止攻擊者查看您網站的文件夾內容,限制他們能在網站掌握的信息。

# Prevent directory browsing
Options All -Indexes

防止圖像熱鏈接

防止其他網站使用您網站上的圖片。雖然熱鏈接不會使您的網站遭到駭客攻擊,但它可能會導致對主機資源造成破壞性利用。將yoursite.com更改為您的網站。

# Prevent image hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} \
!^http://(www\.)yoursite.com/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|png)$ - [NC,F,L]

保護.htaccess

防止攻擊者訪問以“hta”開頭的任何文件 – 這可確保.htaccess文件在服務器的所有目錄中受到保護。

# Protect htaccess Apache 2.2
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow, deny
deny from all
satisfy all
</files>
# Protect htaccess Apache 2.4
<FilesMatch "^.*\.([Hh][Tt][Aa])">
Require all denied
</FilesMatch>

資料夾鎖定

阻止駭客將惡意文件插入在四個主資料夾中的任何一個:

  • /wp-admin/includes/
  • /wp-includes/
  • /wp-includes/js/tinymce/langs/
  • /wp-includes/theme-compat/
# Block Includes
<IfModule mod_rewrite.c>
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]
</IfModule>

防止PHP後門

防止駭客將PHP後門放置在/ wp-includes /和/ wp-content / uploads /文件夾中,這是兩個用於惡意文件上載的常用位置。

# Backdoor Protection Apache 2.2
<Files *.php>
deny from all
</Files>
# Backdoor Protection Apache 2.4
<FilesMatch ".+\.php$">
Require all denied
</FilesMatch>

E.安裝外掛保護您的WordPress網站

24.刪除WordPress版本號

你可以很容易找到目前的WordPress版本號碼。你也可以在控制台的底部看到它(但這在嘗試保護您的WordPress網站時無關緊要)。 如果駭客知道你使用哪個版本的WordPress,他們就更容易制定攻擊方式。

 WordPress版本號碼讓駭客更容易制定攻擊方式
WordPress版本號碼讓駭客更容易制定攻擊方式

WordPress版本顯示的另一個位置readme.html是每個WordPress版本中包含的預設文件。它位於你的安裝的根目錄中domain.com/readme.html。可以通過FTP刪除此文件。如果你安裝的是WordPress 5.0或更高版本,則已經不再包含版本號。

另外一提的是,為了安全的理由,也可以將 WordPress 運作的主機安裝的PHP版本以及主機系統隱藏。但依照主機的環境不同,需要進一步詢問主機商。

PHP版本隱藏最簡單可以在wp-config.php檔案中加入以下的程式碼,但有些主機商設定不同,也有可能無效,你可以透過線上檢測得知。

header_remove('X-Powered-By');

25.禁用WordPress中的XML-RPC

XML-RPC 是 WordPress 的 API,提供開發者開發手機 Apps、桌面應用程式或其他服務時,可以跟 WordPress 溝通,從遠端能達到很多需要登入 WordPress 後台才能做的工作。xmlrpc.php 則是負責這個 API 的檔案,很多針對 WordPress 的 DDOS 攻擊也是針對這個檔案。

WordPress 3.5中啟用了XML-RPC,因為它有助於將WordPress網站與Web和APP連結。駭客很容易利用XML-RPC的特性,例如,傳統上如果駭客想要在您的網站上嘗試500個不同的密碼,他們將不得不進行500次登錄,這些嘗試將被登錄鎖定外掛阻擋。

但是使用XML-RPC,黑客可以使用system.multicall函數來嘗試數千個密碼,例如20或50個請求。這就是為什麼如果你不使用XML-RPC,我建議你禁用它。

禁用XML-RPC 最簡單的方式就是透過.htaccess。將以下程式碼貼到 .htaccess檔案。

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from 你的IP
</Files>

26.掃描WordPress的惡意軟件和漏洞攻擊

如果你安裝了WordPress安全外掛,那麼這些外掛將定期檢查惡意軟件和安全漏洞的跡象。如果你發現網站流量或搜索排名突然下降,那麼您可能需要手動運行掃描。您可以使用WordPress安全插件,也可以使用另一篇文章推薦的惡意軟件和安全掃描程序來進行掃描。

如果需要免費,你也可以考慮使用半官方開發的Jetpack外掛。除了備份功能外,它還可以通過手動解決方案對惡意軟件和威脅進行日常掃描。或者,你也可以選擇使用CodeGuard或  Sucuri SiteCheck

27.安裝安全性外掛

如果你去 WordPress官方網站搜尋外掛,有關安全(Security)的外掛可能高達數千個。在了解安全性外掛之前,你應該有個基本概念,就是沒有100%完整的解決方案能夠保護任何系統不被入侵。因此程式開發者必須思考各種手段與方式來提供防禦,也就是因為這樣才有各種五花八門的外掛功能。

在選擇之前,根據這些外掛的功能,大概可以分成:預防、檢測、審計、實用工具等主要四類。

預防型安全外掛

這種外掛可以提供某種程度的預防,也可以稱為你網站的外圍防禦,目標是過濾進入網站的流量來阻擋駭客攻擊。

預防型外掛通常僅限於在應用程序層工作,意思就是駭客的攻擊手段必須觸及WordPress程式才能回應。但這也導致這種外掛無法阻止對伺服器的攻擊。

檢測型安全外掛

檢測型外掛主要是對網站檔案完整檢查以識別入侵者,或掃描潛在危害或兩種機制的組合。這些外掛的有效性取決於安裝順序。例如,如果外掛是進行完整性檢查,那麼它需要先對安裝的網站掃描,然後作為基準,以便它可以比對網站檔案是否被更改。

某些外掛可能會將較知名的佈景主題和外掛與其外掛自己預先保存的資料進行比較,以便與已經被入侵的網站比對,但這些網站與自定義或鮮為人知的外掛可能不相容。

審計型安全外掛

與主流的防禦方式相反,這種外掛認為安全並不只設定完就沒事,而是你必須在網站作過程中掌握正在網站發生的事件:誰登錄、誰做了甚麼事。這些正在發生的變化,以及何時進行變更是發現異常的重要根本。這種外掛主要是監控LOG檔案,讓管理者能隨時掌握異常事件。

實用工具型安全外掛

這可能是整個WordPress安全外掛生態系統中最多樣化的一部分。

這些外掛會提供多樣而詳細的 WordPress 安全設置選項,適合喜歡修改或希望能夠設置特定細節以滿足使用需求的用戶。例如,某些安全外掛只是禁用XML-RPC或將登錄頁移動或提供備份或維護外掛等功能,以解決特定的安全功能。

WordPress 的外掛很多是具有二種以上類型的完整功能,提供許多針對安全性的功能,這些外掛多半會為你的 WordPress 網站進行本文提到的部分設定與調整,有些更進一步提供完整的防火牆,以及病毒掃描等。以下是一些常見的 WordPress 安全性外掛,有些外掛需要付費,適合利用 WordPress 提供電子商務的用戶,對於網站的安全性有較高的要求。若你想要使用免費的,那麼我推薦iThemes SecurityWordfence Security這兩個外掛。

  1. Sucuri Security – Auditing, Malware Scanner and Security Hardening
  2. iThemes Security
  3. Wordfence Security
  4. WP fail2ban
  5. All In One WP Security & Firewall
  6. Jetpack
  7. SecuPress
  8. BulletProof Security
  9. VaultPress
  10. Google Authenticator – Two Factor Authentication
  11. Security Ninja
  12. Defender
  13. Astra Web Security
  14. Shield Security

這些安全外掛的一些常見功能和用法:

  • 設置用戶配置文件時,生成並強制使用強密碼
  • 強制密碼過期並定期重置
  • 用戶操作記錄
  • 更新WordPress安全密鑰
  • 惡意軟件掃描
  • 雙重登入驗證
  • reCAPTCHAs
  • WordPress安全防火牆
  • IP白名單
  • IP黑名單
  • 文件更改日誌
  • 監控DNS更改
  • 阻止惡意網路
  • 查看有關訪問者的WHOIS信息

F.其他

這是與以上幾點不太相同的安全性設置,通常一般使用者並不會注意,但提出來讓WordPress的狂熱者參考。

28.設置 http headers

如果有可以增強網站的基本安全,而且不需要花錢,又可以不用大幅度變更程式,那應該就是 HTTP headers 。目前各家瀏覽器 (Google Chrome、Firefox、Safari、IE) 已經支援許多種資安相關的 HTTP headers。開發人員若在伺服器設定加入某些headers,瀏覽器收到 response 時就會執行相對應的防禦機制,如此一來可直接提升網頁應用程式的基本安全性。
HTTP headers 到底是甚麼我們日後再來討論,這裡先簡單說明 WordPress 如何進行設定。我推薦安裝 HTTP Headers

http headers外掛
httpheaders外掛可以設定多個項目

安裝後到設定,找到 HTTP headers 點擊進入這個外掛,請點入第一項SECURITY,你可以依照我簡單設定的幾個來進行設定。部分設定需要依照你的網站進行調整,如果你不熟悉,則需要進一步搜尋相關設定方式。

 HTTP headers 安全性設定
HTTP headers 安全性設定

完成後,請記得清除cache,重整網頁,然後你可以到這裡來進行檢測,看看你的網站能得到怎樣的成績。

發佈留言