Задать вопрос
@5exi

Вопрос по настройке pool в среде Apache + php-fpm?

Здравствуйте.

Пытаюсь разделить сайты по разным pool'ам, чтобы взлом одного сайта не приводил к автоматическому доступу к другим через вебшелл.

Тренируюсь пока на 2-х сайтах из нескольких.
Мои конфиги:
/etc/apache2/mods-enabled/fastcgi.conf
<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
  FastCgiIpcDir /var/lib/apache2/fastcgi
  AddHandler php-fcgi .php .php5
    <FilesMatch \.php$>
        SetHandler php5-fcgi
  </FilesMatch>
  <Location "/fastcgiphp">
        Order Deny,Allow
        Deny from All
        # Prevent accessing this path directly
        Allow from env=REDIRECT_STATUS
  </Location>
Action php5-fcgi /fastcgiphp
Action php5-fastcgi /fastcgiphp
</IfModule>


/etc/php5/fpm/pool.d/eva.conf
[eva]
user = eva-pool
group = eva-pool
listen =  /var/run/eva-php5-fpm.sock
listen.owner = eva-pool
listen.group = www-data
listen.mode = 0660


/etc/php5/fpm/pool.d/rec.conf
[rec]
user = rec-pool
group = rec-pool
listen =  /var/run/rec-php5-fpm.sock
listen.owner = rec-pool
listen.group = www-data
listen.mode = 0660


/etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
ServerName test.ru
DocumentRoot /var/www/eva
<IfModule mod_fastcgi.c>
        FastCgiExternalServer /usr/local/bin/eva-fpm -socket eva-php5-fpm.sock
        Alias /fastcgiphp /usr/local/bin/eva-fpm
</IfModule>
</VirtualHost>

<VirtualHost *:80>
ServerName test2.ru
DocumentRoot /var/www/rec
<IfModule mod_fastcgi.c>
        FastCgiExternalServer /usr/local/bin/rec-fpm -socket rec-php5-fpm.sock
        Alias /fastcgiphp /usr/local/bin/rec-fpm
</IfModule>


ls -la /var/run/*.sock
srw-rw---- 1 eva-pool www-data 0 Jul 25 11:23 /var/run/eva-php5-fpm.sock
srw-rw-rw- 1 www-data www-data 0 Jul 25 11:23 /var/run/php5-fpm.sock
srw-rw---- 1 rec-pool www-data 0 Jul 25 11:23 /var/run/rec-php5-fpm.sock

/var/run/php5-fpm.sock - это стандартный пул www, который, как я понял, сейчас все сайты и используют по умолчанию. Ни в какие конфигурации виртуальных хостов я его специально не прописывал.

Как видно, пулы создались под нужными пользователями.
Тестирую. Заливаю шелл на сайт test2.ru и получаю доступ ко всем сайтам. Такое чувство что test2.ru даже и не пытается использовать пул, который прописан в конфиге, или что-то с правами.

Можете подсказать где ошибся и в какую сторону двигаться? Можно ли как-то убедиться что сайт работает именно в нужном пуле? Если из конфига Apache убираю проверку на ifModule mod_fastcgi.c то всё отрабатывает, что говорит о том что модуль включён и работает.

Спасибо.
  • Вопрос задан
  • 290 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@5exi Автор вопроса
Закомментировал весь /etc/apache2/mods-enabled/fastcgi.conf
Поставил proxy_fcgi
В соотвествующем виртуальном хосте прописал:
<FilesMatch ".*\.php$">
SetHandler "proxy:unix:/var/run/rec-php5-fpm.sock|fcgi://localhost/"
</FilesMatch>

Удалил конструкцию с IfModule mod_fastcgi.c
На папку /var/www/rec дал права 750 и сменил владельца rec-pool:www-data
По моему теперь всё работает как надо.

Дадите рекомендации?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы