在 linux 伺服器上隔離虛擬主機的最佳方法是什麼?
首先,我想知道將 Apache 的虛擬主機彼此隔離的最佳方法是什麼。我想這也與 Linux 文件系統有關,因為在同一個 Linux 使用者/組下擁有文件夾(
/var/www/site1.com/public_html
和文件)並不是一個好習慣。/var/www/site2.com/public_html
我發現了類似的文章:Isolating Apache virtualhosts from the rest of the system,但注意到這是關於將虛擬主機與系統隔離開來。一個很好的做法,但不是我所說的。
我不想要任何
site1.com
可以訪問文件的可能方式,site2.com
如果可能的話,除了它自己的目錄和子目錄之外,文件系統也沒有任何不必要的東西。其次,chmod 對使用者權限有什麼影響。假設兩個站點都在自己的使用者和使用者組中執行。但是
site1.com
有一個文件或目錄的 chmod 權限為 777。將site2.com
能夠使用該文件/目錄嗎?
不是最好的解決方案,但可能是其中的一部分,也是最簡單的:使用 suExec。
例如,使用 suExec,您可以輕鬆地為每個虛擬主機分配不同的 Unix 使用者(最常見的場景)。如果您將這些使用者的家設為私有(模式 0700),那麼一開始這是一個很好的隔離。
它們沒有被 chroot,並且仍將共享 /tmp,查看其他正在執行的程序等。但是您將至少比絕大多數配置非常糟糕的 LAMP 伺服器高出一級。
還有一些技術優點/缺點:
- 親:消除“ftp-user vs. www-data”使用者,許多人最終將他們所有的文件和文件夾chmod到全域寫入(模式0777),以便HTTP上傳工作;這裡shell登錄和Apache共享同一個使用者
- con :出於同樣的原因,Apache 現在可以從您的使用者帳戶中修改任何文件(數據、程式碼);對於那些希望從其後台更新 Wordpress 的人來說,這是一個先決條件,但如果你認真對待安全性並知道如何真正維護 webapps,那就不行了
- con : 當一個 Apache worker su 給某個使用者時,它不能被重用於下一個不同 vhost/user 的傳入 HTTP 請求;因此,如果您有很多虛擬主機/使用者(獨立於使用其 mpm-worker 和通過 FastCGI、HTTP 反向代理等在程序外執行程式碼的非常好的想法),該解決方案的擴展性不會很好
關於你的第二個問題:使用私人住宅,你得到你想要的(chmod 0700 ~toto),但如果她願意(執行 chmod 0777 ~toto),使用者本身可能會公開自己的住宅,甚至可以全域寫入。因此,這取決於您對伺服器使用者和應用程序的信任。