如何加強 WordPress 網站的安全性
前些時間,有個朋友說她的部落格突然出現一些色情網站的彈出廣告,也不知道是怎麼回事,我一看就想說問題大條,應該是被安置了廣告程式,只是還不清楚是怎麼被入侵的,不過第一時間還是先把不正常的php 檔案找出來並刪除,然後WordFence 掃了一下總算是沒問題了。
會發生這樣的問題可能是自己操作上的疏忽導致被駭客入侵但也可以能是自己安全性不注意好,如果想避免同樣問題再發生,相關的資安知識還是要有的。
挑選值得信賴的主機
為什麼
比較差的的主機之所以不靠譜,是因為投資少。物理機放在低端機房,拿個裸機掙錢,要防火牆沒防火牆,系統不更新,軟體不更新,漏洞不補,維護的技術不夠甚至長期放羊吃草,根本無人維護。
現在網站上的Wordpress攻擊已經高度自動化,再小的網站都是目標,主機公司更是大目標。世界上有哪些主機公司,位置,IP段,防護措施,黑客人手一份,主機公司一水,黑客自動腳本一掃,一死一大片。
怎麼做
永遠不用“ 免費 ”主機,挑選用具備安全措施的主機,沒錢就用基本款,對普通網站也夠,如國外的Fastcomet,SiteGround,有費用就用全托管主機如國外的WPEngine。
自動更新WordPress核心,插件和主題
為什麼
WordPress安全嗎?安全。WordPress完美嗎?不完美。越流行,越容易被盯上,越被盯上暴露的問題越多,這既是壞事也是也是好事。
重要的是保持更新。
核心代碼,流行插件和主題,幾乎每天都在迭代,不少都是修復安全漏洞,曾經就有極速修復的例子。
長期不更新,版本落後會留下安全隱患,理論上被黑只是時間問題。保持核心,插件,主題自動更新,能防患於未然,更新不只填補漏洞本身,有時還強迫黑客程序重寫,更改攻擊機制,從而增加攻擊難度。
怎麼做
安裝自動更新插件Companion Auto Update,可實現無人值守的WordPress核心,插件和主題自動更新。
配置自動備份
為什麼
作最壞打算,定期自動備份整站,一旦網站被黑,至少有數據可以恢復,留得青山在。
最糟糕的情況是受了攻擊,網站徹底變雞,卻發現無法備份,之前也沒有留任何備份。
怎麼做
安裝自動備份插件UpdraftPlus。
可設置日備,並將備份數據加密上傳到多種第三方存儲平台。
自動安全掃描
為什麼
黑客程序搞定你的網站後,是不會發郵件通知你的。
網站有沒有安全滲透,不能靠肉眼,因為很多滲透沒有現像也沒有徵兆,更不能靠感覺。
安全滲透應該用專業的工具“掃”出來。
怎麼做
裝安全插件如WordFence。安全插件能做的事,除了自動掃描還有很多,可以仔細查看插件配置頁面。
用掃描工具如漏洞測試工具。
沒事掃一掃。
過濾垃圾評論
為什麼
多數垃圾評論的目的並非打廣告這麼簡單,而是把評論內容寫得像廣告,實際嵌入了惡意代碼進行XSS攻擊,這樣的評論如果流入正常用戶的瀏覽器,就有可能帶來危害,如果是權限較高的用戶,網站就可能被滲透。
怎麼做
裝好WordPress立即打開Akismet插件。
審核用戶評論,在設置->討論中可以配置。
降低插件使用風險
為什麼
非官方的插件危險係數高,不可隨便下載安裝,先確認插件源可信。
安裝的插件不激活,不代表沒有風險,因為代碼漏洞不依賴插件是否激活。
怎麼做
盡量從官網安裝插件,避免從不明來歷第三方網站下載插件。
及時刪除不用的插件,盡量避免在生產環境測試插件,控制插件使用數量。
用安全性更高的管理員帳號
為什麼
你的網站有了一點流量,每天幾百IP,如果有請求監控,你會發現總有幾個熟悉的IP反复訪問/wp-admin,這些訪問一般來自黑客的肉雞,請求是肉雞上的自動腳本在猜你的登陸帳號密碼。
為什麼這些自動腳本這麼有信心有恆心?
這是我隨便google到的地球上用得最多的密碼組合,2016年“123456”的風頭蓋過了“password”:
怎麼做
千萬不要用預設的“admin”作為管理員賬號,這是黑客程序必試的賬號,用只有自己知道的賬號名,這個小小的改變,能讓猜密碼的黑客程序頭痛指數增加N倍,理論上猜賬號和猜密碼一樣難。
用安全性更高的密碼,不復用密碼。
限制密碼嘗試次數,安裝登陸重試次數限制插件Login LockDown。
保護wp-admin目錄,再設一道密碼保護,在你的虛擬主控制面板裡找“目錄密碼保護”的選項。
替換默認登錄入口
為什麼
WordPress默認登錄地址為/wp-admin 和/wp-login.php,網上大量駭客程序以它們為滲透目標。
怎麼做
安裝WPS Hide Login插件,可以禁止/wp-admin和/wp-login.php訪問,並把登錄入口修改成自定義URL。
強制用戶使用https協議
為什麼
後台登錄輸入的用戶名密碼不應明文傳輸,尤其當你使用代理時,敏感信息可能被中間人截獲。
怎麼做
配置web服務器,打開SSL證書,虛擬主機一般都提供免費SSL證書,點點鼠標就能搞定。如果用VPS也可以用Let’s Encrypt生成,把所有http流量自動重定向到https。
避免使用默認數據庫前綴
為什麼
有一類工具叫SQL注入,黑客利用某個插件輸入框的安全漏洞,通過惡意SQL語句直接修改網站數據庫。這類語句通常假設數據庫表前綴為wp_,這是WordPress安裝時的默認前綴。
怎麼做
安裝WordPress時,避免使用默認的wp_數據表前綴,可以使大量SQL注入工具失效。
關閉文件編輯
為什麼
WordPress默認允許管理員帳號修改主題或插件源文件,一旦管理員帳號被滲透,理論上黑客可以通過這個功能修改這些文件,執行任何他想執行的代碼,比如注入木馬,留後門。
怎麼做
徹底關閉這個功能,通過在wp-config.php中加入:
define('DISALLOW_FILE_EDIT', true);
關閉.php文件直接訪問權限
為什麼
一旦黑客發現某個php源文件有漏洞,就可以通過直接訪問之反复嘗試滲透,尤其是上傳文件夾這樣的敏感位置(/uploads)。如果關閉,那麼即使漏洞存在,黑客也無能為力。
怎麼做
在.htaccess文件裡添加針對敏感目錄的規則,禁止直接訪問.php文件:
<Directory "/var/www/wp-content/uploads/">
<Files *.php>
Order Allow, Deny
Deny from all
</Files>
</Directory>
關閉XML-RPC
為什麼
XML-RPC是WordPress向外暴露的調用,Pingback和Trackback功能依賴這組調用,但會被黑客程序拿來來做蠻力攻擊或者DDos。
怎麼做
安裝Disable XML-RPC插件,可徹底關閉XML-RPC。普通網站Pingback和Trackback功能意義不大,所以關掉XML-RPC也沒有關係,除非你確定它需要打開。
總結
WordPress安全最重要的事,一是保持自動更新,二是使用安全插件定期掃描,三是備份。做到這三點,基本可保網站不被滲透。剩下的措施可以根據網站情況決定是否配置。