Як правильно розділити права на одному vps для кількох сайтів і користувачів

Як правильно розділити права на одному vps для кількох сайтів і користувачів
  • Nginx
  • PHP-FPM
  • VDS / VPS

Проблема така:
Орендували хороший VPS навпіл з одним. На сервері буде кілька сайтів. Половина сайтів моя, половина - друга.

З метою безпеки я хочу правильно налаштувати зв'язку nginx + php5-fpm, так щоб власник одного сайту не міг зайти на інший сайт. Сильно ніхто ломитися в чужі папки не збирається, але отримати доступ до сайту умовно може розробник іншого сайту, розміщеного на тому ж VPS або хтось, хто зламає будь-який з сайтів на VPS. Всякі віртуалізації городити не хочеться, інакше сенсу в розділення хостингу на двох немає.













Поки у мене рішення таке (але воно вирішує тільки частина завдань).

Для кожного сайту створюю свій окремий пул php5-fpm, вішаю його на окремий порт і запускаю від окремого користувача.
наприклад:

Далі nginx в залежності від server_name в локейшенах робить редирект на проксі. наприклад:


Ті питання, з якими вже зіткнувся.

Друга проблема користувач USER2 може зробити симлінк, наприклад в корені сайту, наприклад something.css -> /$homedirs/user1/$site/config.php. І тоді nginx буде легко віддавати "чужі секретні файли", що містять в тому числі і паролі. Можна заборонити nginx'у ходити по симлінк, але це збільшує навантаження на нього і лінки іноді використовуються і в "законних" цілях.

Частково мені могло б допомогти використання chroot в налаштуваннях пулу php5-fpm. Чи вирішить це питання з симлінк, я не знаю. Але у мене виникла інша проблема. Один із сайтів (форум на phpbb) при використанні chroot видав наступну помилку

Сенс зрозумілий, що php не може отримати доступ до сокету за межами chroot. Значить у мене залишається вибір або не використовувати chroot або вирішити проблему з підключенням до Mysql. Хоча в налаштуваннях phpbb вказано підключення до Mysql через localhost на порт 3306 (про сокети ніде налаштувань немає), чому то повідомлення видається про помилку доступу до сокету. Змусити Phpbb підключатися саме через порт у мене не виходить.







Схожі статті