Безопасность 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?

1 ответ

Решение

AllowOverrideList позволяет дополнительно ограничить директивы.htaccess указанным списком.

Цитата из документов:

Если для этой директивы задано None, а для AllowOverride задано None, файлы.htaccess полностью игнорируются. В этом случае сервер даже не попытается прочитать файлы.htaccess в файловой системе.

Пример:

AllowOverride Нет AllowOverrideList Redirect RedirectMatch

В приведенном выше примере разрешены только директивы Redirect и RedirectMatch. Все остальные вызовут внутреннюю ошибку сервера.

Пример:

AllowOverride AuthConfig AllowOverrideList CookieTracking CookieName

В приведенном выше примере AllowOverride предоставляет разрешение для группировки директив AuthConfig, а AllowOverrideList предоставляет разрешение только двум директивам из группы директив FileInfo. Все остальные вызовут внутреннюю ошибку сервера.

Другие вопросы по тегам