Linux

LAMP 堆棧,僅對特定目錄進行讀/寫訪問

  • February 20, 2017

我正在考慮設置一個 AWS 微實例,我可以從中執行許多不同的、不相關的網站。

我在共享主機上遇到的一個問題是,我的一些客戶執行 Wordpress 網站,這些網站有時不會像我希望的那樣及時更新到最新版本,從而使他們容易受到安全漏洞的攻擊。以前,當其中一個 Wordpress 網站遭到入侵時,我共享主機上的所有其他網站都會受到影響,包括非 Wordpress 網站。

如果它再次發生,我至少想控制它。有沒有一種方法,在一個 Linux 實例上,我可以擁有多個 PHP“使用者”(使用非常寬鬆的術語),每個使用者的讀寫權限不高於網站的根級目錄?

我已經看到了有關OpenVZ的建議,但這似乎會對性能產生很大的影響而收效甚微。

抱歉,如果以前有人問過這個問題 - 這是那些難以簡潔地用於Google搜尋的事情之一,但又足夠明顯,以至於以前一定有人問過同樣的事情。

您可以使用文件權限在單個虛擬機(EC2 實例)上隔離事物。您可以擁有單獨的 PHP 池,並且它們可以根據本DO 教程以不同的使用者身份執行。該教程幾乎是您需要做什麼的指南,並且可能會比使用 ECS 更好。

您應該查看t2 instances, t2.micro 可能有點小,有多個池,但小型或中型可能適合您。當然,您必須進行一些測試。您可以將虛擬記憶體添加到 EC2 實例,但也有缺點,特別是因為磁碟在 t2 實例上跨網路。其他實例類型具有本地磁碟,上一代 M3/C3 實例,但您可能最好使用具有足夠 RAM 的 t2 或目前一代實例。

或者查看AWS EC2 容器服務,也就是託管 docker。這將使您將事物完全分開,但代價是執行多個資源密集型應用程序副本,例如使用大量記憶體的 PHP。微型實例可能不會適用於許多容器,但t2.large或類似的可能是合適的。

更新 - 後續問題 Nginx 是一個快速、高效的 Web 伺服器和反向代理,它使用非常少的記憶體並且相對容易配置。Apache 更大,可用的模組更多,但使用的資源更多。

我在 t2.nano 上託管了 5 個網站和 MySQL,但我偶爾會用完 RAM 進行大的 yum 更新。t2.micro 最初可能適合您,但這取決於您擁有多少 PHP 池 - 它們可能會佔用大量記憶體。我有一個關於如何配置 MySQL 以使用最少 RAM 的指南。從免費層上的 t2.micro 和 RDS 服務開始,這樣您的數據庫就可以在單獨的機器上執行,從而節省 RAM。如果由於 RAM 要求而不得不增加更大的實例大小,請不要感到驚訝。

來自評論 @tero Kilkanen 的更新指出了以下非常有價值的觀點

如果您希望 PHP 工作者之間有更多的分離,您可以考慮使用 PHP-FPM 的 chroot 功能。使用 chroot,每個 PHP 程序只能看到訪問其 chroot 中的目錄。但是,它需要更多的工作來設置,我不知道是否有任何指南可以做到這一點

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