Apache-2.4

Apache 和 PHP-FPM 安全與 mod_proxy_fcgi

  • May 29, 2020

我在共享主機配置中使用 PHP-FPM。每個 FPM 池作為不同的使用者執行。Apache 作為 www-data 執行。Apache 使用 mod_proxy_fcgi 通過套接字連接。我允許使用者使用 .htaccess 文件。

如何防止使用者連接到錯誤的 FPM 池?

虛擬主機看起來像這樣:

<VirtualHost *:80>
       ServerName foo.com
       DocumentRoot /var/www/sites/foo.com/html
       <FilesMatch "\.php$">
               SetHandler "proxy:unix:/var/run/foo-com-fpm.sock|fcgi://localhost"
       </FilesMatch>
</VirtualHost>

但是,foo-com 使用者可以輕鬆地從他的 .htaccess 中覆蓋該處理程序:

<FilesMatch "\.php$">
       SetHandler "proxy:unix:/var/run/bar-com-fpm.sock|fcgi://localhost"
</FilesMatch>

這將允許他以不同的使用者身份執行 PHP 腳本。在不禁止 FileInfo 覆蓋的情況下,如何防止這種情況發生?

AllowOverrideList允許進一步限制 .htaccess 指令到指定的列表。

從文件中引用:

當此指令設置為 None 並 AllowOverride 設置為 時 None,.htaccessfiles 將被完全忽略。在這種情況下,伺服器甚至不會嘗試讀取 .htaccess文件系統中的文件。

例子:

AllowOverride None
AllowOverrideList Redirect RedirectMatch

在上面的範例中,只允許使用 Redirect andRedirectMatch 指令。所有其他將導致內部伺服器錯誤。

例子:

AllowOverride AuthConfig
AllowOverrideList CookieTracking CookieName

在上面的範例中, AllowOverride 授予 AuthConfig 指令分組 AllowOverrideList 權限並僅授予指令分組中的兩個指令權限 FileInfo 。所有其他將導致內部伺服器錯誤。

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