Apache-2.4
Apache 和 PHP-FPM 安全與 mod_proxy_fcgi
我在共享主機配置中使用 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
。所有其他將導致內部伺服器錯誤。