不安全的 Apache + mod_userdir 配置

不安全的 Apache + mod_userdir 配置

長話短說:如何以安全的方式啟用 mod_userdir? (意思是:每個使用者應該能夠在 ~/public_html 中創建和提供他們的內容,但他們不應該被允許讀取彼此的內容,也不能直接讀取 - cat /home/userX/public_html/file- 也不能透過 PHP 函數 ( file_get_contents('/home/userX/public_html/file'))

細節: 我已經使用 mod_userdir 配置了 Apache,以便為我的用戶提供在 ~/public_html 資料夾中放​​置檔案的選項。為了保護文件存取並避免任何使用者可以讀取其他人的文件,我配置了以下權限:

/home/userA user.user drwx--x--x (711)  
/home/userA/public_html  user.user drwxrwx--x  (771)

我已新增www-data至每個使用者的群組:( usermod -a -G user www-data 它也可以建立一個群組並將所有使用者新增至www-data其中,包括 )

所有配置都按預期工作。任何使用者都可以從 https://server/~user 存取其內容,並且無法讀取任何其他人的檔案:

userA@ubuntu:/home$ cat userB/public_html/index.php 
cat: userB/public_html/index.php: Permission denied

到目前為止,一切都很好。但問題是,由於 Apache 正在運行並且www-data它可以對 /home/* 內的任何文件進行群組訪問,因此任何用戶都可以使用 、 、 等函數創建 PHP 文件來讀取其他人execsystem內容file_get_contents

我知道我可以禁用這些函數來執行將它們添加到disable_functions區塊中的操作php.ini,但我認為這是一個補丁,而不是解決方案。所以在我看來應該有其他更安全的方法來設定這個啟用 userdir 的 Apache 設定。我已經尋找一種方法來正確執行此操作,但尚未找到合適的解決方案。

相關內容