Apache-2.2

在 linux 伺服器上隔離虛擬主機的最佳方法是什麼?

  • May 10, 2016

首先,我想知道將 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),使用者本身可能會公開自己的住宅,甚至可以全域寫​​入。因此,這取決於您對伺服器使用者和應用程序的信任。

引用自:https://serverfault.com/questions/775839