URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 81975
[ Назад ]

Исходное сообщение
"Ограничение процессорного времени на вирт. хостинге"

Отправлено Harunaga , 15-Сен-08 09:45 
Организуется сервер для виртуального хостинга.

Схема простая. Виртуальный сервер - это просто процессы, работающие с правами пользователя-владельца вирт. хостинга в chroot. Каждый виртуальный сервер имеет apache, запущенный с правами пользователя в chroot.

Как можно сделать ограничение процессорного времени для каждого пользователя? Через классы и cputime не удается, так как в этом случае лимиты будут влиять и на постоянные процессы (будет, например, умирать apache или php в режиме fastcgi).


Содержание

Сообщения в этом обсуждении
"Ограничение процессорного времени на вирт. хостинге"
Отправлено angra , 15-Сен-08 15:30 
Есть очень много способов обойти чрут, так что не занимайтесь ерундой и перейдите сразу к нормальной виртуализации, например openVZ.


"Ограничение процессорного времени на вирт. хостинге"
Отправлено Harunaga , 15-Сен-08 20:43 
>Есть очень много способов обойти чрут, так что не занимайтесь ерундой и
>перейдите сразу к нормальной виртуализации, например openVZ.

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

Не знаю ни одного способа обойти chroot (ну если только есть какая-нибудь уязвимость и эксплоит, позволяющая поднять права или изменить каталог). Приведите пример.


"Ограничение процессорного времени на вирт. хостинге"
Отправлено angra , 15-Сен-08 22:39 
>Виртуализация - это из пушки по воробьям. В моем случае нужен простейший хостинг с минимальной безопасностью (чтобы пользовательские скрипты не могли читать файлы другого пользователя).

В простейшем варианте используют один сервис(апач, мускул итд) на всех клиентов, а не запускают в чруте, он вообще для другого сделан. Изоляция делается средствами сервиса. Между прочим оверхед при виртуализациях типа jail/zones/openvz/vserver минимален, а преимущества огромны, почитайте подробней ибо вы явно на неверном пути.

>Не знаю ни одного способа обойти chroot (ну если только есть какая-нибудь уязвимость и эксплоит, позволяющая поднять права или изменить каталог). Приведите пример.

Зависит от того, кто делал чрут. В простейшем случае mount. Вы твердо уверены что сможете предусмотреть все остальные варианты?


"Ограничение процессорного времени на вирт. хостинге"
Отправлено Harunaga , 16-Сен-08 07:21 
>В простейшем варианте используют один сервис(апач, мускул итд) на всех клиентов, а
>не запускают в чруте, он вообще для другого сделан. Изоляция делается
>средствами сервиса. Между прочим оверхед при виртуализациях типа jail/zones/openvz/vserver минимален, а
>преимущества огромны, почитайте подробней ибо вы явно на неверном пути.
>
>>Не знаю ни одного способа обойти chroot (ну если только есть какая-нибудь уязвимость и эксплоит, позволяющая поднять права или изменить каталог). Приведите пример.
>
>Зависит от того, кто делал чрут. В простейшем случае mount. Вы твердо
>уверены что сможете предусмотреть все остальные варианты?

Пользователю не нужен root, он не собирается устанавливать приложения. Максимум - сбросить в свой каталог несколько страничек  и php/perl скриптов. В простейшем варианте (один апач на всех) нет возможности обеспечить самую минимальную безопасность - изоляцию каталогов и выполнение скриптов от имени пользователся.

А с jail получим больше проблем, чем решим. Элементарно, нельзя динамически изменить дисковую квоту, в простейшем случае стандартных квот в файловой системе более чем достаточно. Как учитывать процессорное время в jail, тоже непонятно.


"Ограничение процессорного времени на вирт. хостинге"
Отправлено angra , 16-Сен-08 15:51 

>Пользователю не нужен root, он не собирается устанавливать приложения. Максимум - сбросить
>в свой каталог несколько страничек  и php/perl скриптов.

Я не сказал что привилегии рута это необходимое условие для обхода чрут :)
>В простейшем варианте (один апач на всех) нет возможности обеспечить самую минимальную безопасность - изоляцию каталогов и выполнение скриптов от имени пользователся.

Запуск скриптов от имени пользователя делается штатно через suexec. Полное разграничение возможно за счет дополнительных патчей

>А с jail получим больше проблем, чем решим. Элементарно, нельзя динамически изменить
>дисковую квоту, в простейшем случае стандартных квот в файловой системе более
>чем достаточно. Как учитывать процессорное время в jail, тоже непонятно.

Ну по jail я вам не отвечу, слишком много времени назад юзал фрю. А вот в openVZ и та и другая задача легко решаются. Кроме того за настоящий vps можно брать чуть большую денежку :)

Если уж так хочется обойтись без vps, то посмотрите на selinux, он скорее всего обеспечит все что вам нужно, хотя как по мне возни с openVZ значительно меньше, а результат удобней как для админа так и для конечного пользователя.



"Ограничение процессорного времени на вирт. хостинге"
Отправлено Harunaga , 16-Сен-08 20:22 

>>Пользователю не нужен root, он не собирается устанавливать приложения. Максимум - сбросить
>>в свой каталог несколько страничек  и php/perl скриптов.
>
>Я не сказал что привилегии рута это необходимое условие для обхода чрут
>:)

В смысле без привилегий рута chroot не обойти?
>>В простейшем варианте (один апач на всех) нет возможности обеспечить самую минимальную безопасность - изоляцию каталогов и выполнение скриптов от имени пользователся.
>
>Запуск скриптов от имени пользователя делается штатно через suexec.

Думал над этим, но тогда php скрипты придется запускать как cgi, что очень медленно, либо держать для каждого пользователя несколько процессов php в режиме fastcgi, что по накладным расходам тоже самое, что и запущеный apache с mod_php.
>
>>А с jail получим больше проблем, чем решим. Элементарно, нельзя динамически изменить
>>дисковую квоту, в простейшем случае стандартных квот в файловой системе более
>>чем достаточно. Как учитывать процессорное время в jail, тоже непонятно.
>
>Ну по jail я вам не отвечу, слишком много времени назад юзал
>фрю. А вот в openVZ и та и другая задача легко
>решаются. Кроме того за настоящий vps можно брать чуть большую денежку
>:)

В том то и дело, что клиенту не надо, ему нужен простой хостинг без излишеств.
>
>Если уж так хочется обойтись без vps, то посмотрите на selinux, он
>скорее всего обеспечит все что вам нужно, хотя как по мне
>возни с openVZ значительно меньше, а результат удобней как для админа
>так и для конечного пользователя.

К сожалению, заказчик хочет только FreeBSD, а под нее комерческие vps мне не известны.


"Ограничение процессорного времени на вирт. хостинге"
Отправлено angra , 16-Сен-08 23:19 
>В смысле без привилегий рута chroot не обойти?

И чему вас на уроках математики учат? Наличие привилегий рута не является необходимым для обхода чрут, оно его упрощает, но и без этого можно справится. Также рутовые привилегии не являются достаточным условием, даже с ними возможен непробиваемый чрут.
>В том то и дело, что клиенту не надо, ему нужен простой
>хостинг без излишеств.

Тогда ищите патч к апачу, позволяющий запускать каждый чайлд со сменой uid, не будет работать mod_worker, но он в любом случае несовместим с mod_php, так что без разницы. Такие патчи писались со времен 1.3 различными хостерами и отдельными разработчитками, попробуйте найти.
>К сожалению, заказчик хочет только FreeBSD, а под нее комерческие vps мне
>не известны.

Тогда стоит получше изучить jail, в любом случае возможностей больше чем в чруте :)



"Ограничение процессорного времени на вирт. хостинге"
Отправлено Аноним , 16-Сен-08 21:36 
>А с jail получим больше проблем, чем решим.

С чего бы это? jail == chroot + дополнительная изоляция


"Ограничение процессорного времени на вирт. хостинге"
Отправлено Harunaga , 17-Сен-08 19:57 
>>А с jail получим больше проблем, чем решим.
>
>С чего бы это? jail == chroot + дополнительная изоляция

Тем, что jail позволяет внутри "тюрьмы" запускать процессы с любым uid (включая root), а значит, нельзя для ограничения использовать стандартные средства ОС для лимитирования ресурсов, основанные на uid (квоты файловой системы, лимиты, фаервол).

Решение проблемы по учету процессорного времени - system accounting и стандартная утилита sa. К сожалению, для jail не подходит, так как измеряет на основе uid. Вполне подходит для chroot и разделению ресурсов на основе uid.