2011-07-27 92 views
2

最近我遇到了一些安全問題,一個黑客在網站代碼中發現一個利用漏洞上傳任意文件,其中一個是一個「PHP Shell」,它給了他們各種破解工具和Apache級別的訪問服務器。基於文件所有權禁用PHP

雖然漏洞被修復並且文件被移除,但爲了鎖定Linux服務器,我想讓它成爲apache擁有的文件(Apache運行的用戶)無法執行作爲PHP。所有合法的PHP文件都由不同的用戶擁有。

我們確實需要保持目錄可由apache寫入,因爲我們確實安裝了各種CMS,允許用戶上傳圖像和文檔。我知道我們可以做的另一個選擇是關閉php,用於可由apache寫入的目錄,但由於它需要發生到多個服務器上的數百個域,所以我希望做一個更「全局」的修復,這樣我就不會必須確保從PHP免除的目錄清單始終是最新的,等等。

想法?

+0

PHP作爲(快速)cgi或作爲模塊? – Wrikken

+0

PHP作爲模塊。 –

+1

如果你仍然允許上傳,那麼這個安全措施歸結爲溼紙巾...... –

回答

0

真的,在我看來,最安全的選擇可能是禁用PHP的任何目錄中的文件將被寫入,因爲任何其他方法似乎可能是脆弱的。你可以修改mod_php(或者,如果你正在使用FastCGI,FastCGI處理的方式會產生),儘管這些方法看起來相當複雜。

如果你打算使用這個使用所有者(和,我會建議,還有權限,以確保它不只是一個世界可寫的PHP文件有人發現),那麼你可以做的一個kludge是使用auto_prepend_filephp.ini

這可以讓你把一些PHP代碼放在一個文件中,這個文件在所有PHP腳本的開頭都是required。你可以用PHP編寫你需要的任何邏輯來驗證文件應該運行(否則強制退出)。您甚至可以向管理員發送電子郵件,或者在腳本不應運行的情況下采取其他適當的措施。

http://www.php.net/manual/en/ini.core.php#ini.auto-prepend-file

但正如我所說,這種做法是非常黑客攻擊。禁用Web服務器可寫的任何目錄中的PHP支持要好得多,而不是依靠所有權。

+0

謝謝 - 我將使用該方法,並禁用PHP在Web服務器可寫的任何目錄中。 –