昨天接到了一個 VPS 遷移的小單,本來以為是個簡單輕松的活兒,沒有想到從昨天開始折騰到今天晚上才算是徹底的完成,主要原因還是出在使用 WordPress 插件不當造成的麻煩,可以說 WordPress 插件這把“雙刃劍”已經成了 WordPress 安全問題非常突出的一個方面了,濫用 WordPress 插件造成的危害是非常的大的,這次要不是因為碰到我了,估計站點數據丟失幾乎是必然的。
事情的經過是這樣的:用戶發現他的 VPS 總是因為對外發送數據包過大被服務商禁用服務,在購買了流量包后沒有幾天又再次因為同樣的問題被服務商關停服務,這時候用戶就找到我想做 VPS 遷移,更換個運營商。我在通過 SSH 遠程登錄 VPS 簡單的做了一個了解后發現問題可能并不是出在 VPS 服務商那里,憑經驗一般都是插件、主題被植入惡意代碼造成的。因為這位用戶的服務器端生產環境的部署非常的混亂(PHP、MySQL、Nginx 版本都嚴重滯后),一時半會兒我也無法進行精確的問題排查,只能將 WordPress 的 Plugins 目錄進行更名來確定我的判斷(插件目錄更名其實就是變相的禁止了 WordPress 所有的插件),沒想到還真是插件出的問題,禁用了所有的插件后,服務器的負載立馬穩定了下來。問題找到了就好解決了,這時候就給用戶建議做好文件、數據庫備份后重置 VPS,重新部署生產環境后恢復站點數據,這樣增強了服務器的穩定性同時也便于后期的運維服務。
歷經了千辛萬苦(主要是原 VPS 的服務器生產環境太亂了)終于將數據庫和站點文件都備份好了,重置了 VPS 后部署好新的生產環境,PHP、MySQL、Nginx 都用上了最新穩定版。進行到數據庫備份導入的時候發現無論如何都是 500 錯誤,排除了服務器環境的問題,只有一個可能就是當時導出備份的 SQL 文件有問題,使用 EditPlus 本地打開 SQL 文件后發現竟然有幾十萬條數據庫記錄,怪不得導入會出現 500 錯誤!通過對 SQL 文件的分析發現數據庫里被寫入了幾十萬條垃圾記錄以及 WordPress 站點用戶信息,沒辦法只能手動借助 EditPlus 強大的文本處理能力來清理了,清理完成這個 SQL 文件的大小縮小了 90%左右,可想而知里面被寫入了多少垃圾內容,恢復導入清理后的 SQL 文件,站點完美的恢復了正常。
對這次經歷進行了簡單的分析后發現造成數據庫被寫入巨量垃圾記錄的罪魁禍首就是 WordPress 插件造成的,加上服務器生產環境的應用版本都嚴重滯后自然漏洞百出,這時候用戶又跟風使用了 WP Super Cache 緩存插件(關于緩存插件建議大家參考『我為什么放棄了緩存插件?』、『WordPress 博客什么時候才需要緩存插件』等文章來了解),這樣不干凈的插件里被植入的惡意代碼借助緩存插件在本地的緩存文件配合服務器生產環境下老版本應用的漏洞就會輕松的獲取到相應的權限,于是人家就在數據庫里任意寫入各種垃圾信息了,上述案例開頭所說的對外發送大量數據包其實就是把這個 VPS 當做向外發送黑鏈、惡意評論等等行為的中轉服務器了,通俗點講就是在你家的地里被被人播了種還發芽、成熟并被人家給收獲了,你還得給人家支付地租。
目前就這兩年所碰到的各種 WordPress 站點、服務器故障幾乎 99%都是不干凈的插件、主題造成的,甚至有時候 WordPress 官方的插件庫里的插件也會出現遠程激活的后門和木馬,可以說 WordPress 安全的重災區就是插件、主題了,所以對于讓我托管的網站、服務器用戶都再三告誡不要隨意使用插件,就算是要使用也要提前告之我一下,以便我做好防范措施時刻觀察。
如果你是一個經常使用各種免費、破解主題、插件的站長建議你一定要重視服務器生產環境的部署,及時的更新和修復漏洞是很有必要的,服務器運維期間要多注意負載變化,發現負載出現大幅度的變化就要及時的排查造成的原因,來歷不明的插件和主題能少用還是少用為妙,你的站點對別人可能是沒有價值的,但你的服務器可是自己花錢購置的,別人盯得可能就是你付費的東西。你付費的服務被別人免費使用,我想能接受的人很少吧,當然“土豪”不算在內了,:-)
新聞熱點
疑難解答
圖片精選