The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"теоретический вопрос по chroot"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (Квоты, ограничения)
Изначальное сообщение [ Отслеживать ]

"теоретический вопрос по chroot"  +1 +/
Сообщение от 1 (??) on 14-Июл-11, 16:56 
Добрый день.

Сразу предупрежу, что не совсем понимаю технику chroot, поэтому вопрос может показаться странным.
В общем есть связка nginx + php-fpm и два проекта, обслуживаемые ей. Хочу сделать так, чтобы каждый проект был зачручен в своей домашней директории, например /var/www/project1 и /var/www/project2.
У меня это в общем получилось, путем указания chroot = /var/www/project1 в настройках пула php-fpm и копирования в /var/www/project1 всяких библиотек и бинарников.
Но, во-первых, хочется отделить файлы собственно проекта, от файлов системы в chroot. А во-вторых, хочется использовать один набор системных файлов chroot, а не копировать их для каждого проекта.

Т.е. пример. есть директория /chroot, в ней все нужные конфиги и библиотеки (резолвер, date итд),
а есть директории проектов в /var/www, которые используют для своей работы файлы из /chroot, но при этом не позволяют пользователю выходить за пределы /var/www/projectX.

Так может работать chroot, или я хочу чего-то фантастического?
Заранее благодарю за ответ.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "теоретический вопрос по chroot"  +/
Сообщение от erera22 (ok) on 14-Июл-11, 17:16 
К примеру, CentOS.
1) Создаем директорию
mkdir /home/domain
2) Инициализируем RPM
rpm --root=/mnt/domain --initdb
3) Суем костяк системы
wget http://mirror.yandex.ru/centos/5.6/os/x86_64/CentOS/centos-r...
rpm -ivh --root=/mnt/domain centos-release-5-6.el5.centos.1.x86_64.rpm
4) Копируем самое необходимое, как то resolv.conf, возможно hosts...
5) Если в chroot-е предполагается не только держать сервис, но и заходить туда, то
yum --installroot=/mnt/domain install bash binutils coreutils
6) Ставим требуемое ПО
yum --installroot=/home/domain nginx
7) Монтируем proc, devpts

По сути все. Осталось записать последовательность в простенький скрипт.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "теоретический вопрос по chroot"  +/
Сообщение от 1 (??) on 14-Июл-11, 19:51 
> По сути все. Осталось записать последовательность в простенький скрипт.

Ну т.е. это придется проделать для каждого проекта?
Нельзя как я спрашивал, сделать все в одной директории и "подсовывать"
ее нужным проектам?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "теоретический вопрос по chroot"  +/
Сообщение от erera22 (ok) on 14-Июл-11, 21:46 
>> По сути все. Осталось записать последовательность в простенький скрипт.
> Ну т.е. это придется проделать для каждого проекта?
> Нельзя как я спрашивал, сделать все в одной директории и "подсовывать"
> ее нужным проектам?

Сделать один чрут для веб-сервера и поместить туда домены. Не понимаю, в чем суть вопроса? Либо плодить чруты, либо выделять их логически.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "теоретический вопрос по chroot"  +/
Сообщение от 1 (??) on 14-Июл-11, 22:47 
>>> По сути все. Осталось записать последовательность в простенький скрипт.
>> Ну т.е. это придется проделать для каждого проекта?
>> Нельзя как я спрашивал, сделать все в одной директории и "подсовывать"
>> ее нужным проектам?
> Сделать один чрут для веб-сервера и поместить туда домены. Не понимаю, в
> чем суть вопроса? Либо плодить чруты, либо выделять их логически.

Если один чрут для веб-сервера, то "домены могут лазить" друг к другу в пределах чрута? Так?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "теоретический вопрос по chroot"  +/
Сообщение от erera22 (ok) on 15-Июл-11, 01:11 
>>>> По сути все. Осталось записать последовательность в простенький скрипт.
>>> Ну т.е. это придется проделать для каждого проекта?
>>> Нельзя как я спрашивал, сделать все в одной директории и "подсовывать"
>>> ее нужным проектам?
>> Сделать один чрут для веб-сервера и поместить туда домены. Не понимаю, в
>> чем суть вопроса? Либо плодить чруты, либо выделять их логически.
> Если один чрут для веб-сервера, то "домены могут лазить" друг к другу
> в пределах чрута? Так?

Ничего не мешает их разделить. И дело тут уже совсем не в чруте ;-) На этом построена модель любого адекватного linux-хостинга: один чрут, в котором живет веб-сервер, фтп... и в котором сидят все пользователи.
Пример:
1) создаем vsftpd директорию юзера
2) вяжем к ней virtual host apache
Вот и все. Никто никуда "не бегает".

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "теоретический вопрос по chroot"  +/
Сообщение от troopertm (ok) on 15-Июл-11, 10:04 
>[оверквотинг удален]
> Но, во-первых, хочется отделить файлы собственно проекта, от файлов системы в chroot.
> А во-вторых, хочется использовать один набор системных файлов chroot, а не
> копировать их для каждого проекта.
> Т.е. пример. есть директория /chroot, в ней все нужные конфиги и библиотеки
> (резолвер, date итд),
> а есть директории проектов в /var/www, которые используют для своей работы файлы
> из /chroot, но при этом не позволяют пользователю выходить за пределы
> /var/www/projectX.
> Так может работать chroot, или я хочу чего-то фантастического?
> Заранее благодарю за ответ.

если вам нужен chroot, то делайте как говорит erera22. chroot'тить каждого пользователя нет смысла. сделайте chroot для веб-сервисов, а для пользователей используйте apache + mod_userdir + phpsuexec + fcgid и будет вам счастье.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "теоретический вопрос по chroot"  +/
Сообщение от PavelR (??) on 18-Июл-11, 07:36 
> chroot'тить каждого пользователя нет смысла.

Я, по крайней мере, знаю про симлинк-атаку, когда один пользователь создает симлинк в каталоге своего сайта на файл другого пользователя на сервере. Если у веб-сервера хватает прав на чтение целевого файла, то существует ненулевая вероятность получить содержимое этого файла запросом к симлинку (в прямую прочитать симлинк у пользователя прав не будет).
Предсказать имя файла в каталоге другого пользователя, зная структуру хостинга особой сложности не представляет.

Чрут, конечно, тут не поможет, но это тоже вопрос безопасности хостинга.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "теоретический вопрос по chroot"  +/
Сообщение от troopertm (ok) on 28-Июл-11, 09:21 
>> chroot'тить каждого пользователя нет смысла.
> Я, по крайней мере, знаю про симлинк-атаку, когда один пользователь создает симлинк
> в каталоге своего сайта на файл другого пользователя на сервере. Если
> у веб-сервера хватает прав на чтение целевого файла, то существует ненулевая
> вероятность получить содержимое этого файла запросом к симлинку (в прямую прочитать
> симлинк у пользователя прав не будет).
> Предсказать имя файла в каталоге другого пользователя, зная структуру хостинга особой сложности
> не представляет.
> Чрут, конечно, тут не поможет, но это тоже вопрос безопасности хостинга.

да, согласен с вами. об этом я как-то не подумал.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

8. "теоретический вопрос по chroot"  +/
Сообщение от 1 (??) on 18-Июл-11, 10:32 
Ясно. Спасибо все за ответы. Буду думать, чего именно я хочу :)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру