web-dev-qa-db-ja.com

mod_proxy_fcgiを使用したApacheおよびPHP-FPMセキュリティ

共有ホスティング構成で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のオーバーライドを禁止せずに、これを防ぐにはどうすればよいですか?

1
Sander Marechal

AllowOverrideList は、.htaccessディレクティブを指定されたリストにさらに制限できます。

ドキュメントからの引用:

このディレクティブがNoneに設定され、AllowOverrideがNoneに設定されている場合、.htaccessfilesは完全に無視されます。この場合、サーバーはファイルシステム内の.htaccessfilesを読み取ろうとさえしません。

例:

AllowOverrideなしAllowOverrideListRedirect RedirectMatch

上記の例では、RedirectディレクティブとRedirectMatchディレクティブのみが許可されています。他のすべては、内部サーバーエラーを引き起こします。

例:

AllowOverride AuthConfig AllowOverrideList CookieTracking CookieName

上記の例では、AllowOverrideはAuthConfigディレクティブグループへのアクセス許可を付与し、AllowOverrideListはFileInfoディレクティブグループからの2つのディレクティブへのアクセス許可を付与します。他のすべては、内部サーバーエラーを引き起こします。

1
fuero