The OpenNET Project / Index page

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

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

"Правильная настройка FreeBSD для хостинга"  +/
Сообщение от VArtem (ok) on 18-Дек-10, 10:51 
В общем с одной стороны тема достаточно банальная, так как поднималась  интернете не раз,но с другой стороны ответа на вопрос я так и не нашел.

Нужен хостинг Apache+PHP+MySql. Сразу оговорюсь, на нем должны хоститься не только мои сайты, но и сайты клиентов, а значит самое-то подумать о безопасности.

PHP как я понял, из статей валяющихся в интернете, лучше настраивать не модулем, а CGI.

Каким образом организовать то, что бы один клиент не смог даже прочитать содержимое каталога другого?

Первая мысль которая напрашивается: Каждый пользователь owner для своей папки, так же папка принадлежит группе пользователей apache. Вроде нормально, но если пользователю в php-скрипте нужно будет записать что-то в файл?  Окажется что у него нет доступа?

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

Вариант второй.
Есть такая приблуда (не помню как зовется), которая эмулирует собственную файловую систему для каждого пользователя, т.е. у каждого юзера есть свой root со своими /var /etc /bin и т.д. В данном случае за  root у него выйти никак не получиться. Можно даже давать доступ через ssh, т.к. он так же не выйдет за пределы своего дома.  Правда, мне почему-то кажется, что этот способ более ресурсоемкий и из-за своей нестандартности может создать разные проблемы с настройкой apache, php, proftpd и наверняка создаст проблемы с прикручиванием какой-то админки-юзерпанели.

Собственно буду очень признателен за различные мысли и рассуждения по этому поводу, к тому же думаю, что это будет полезно многим.

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

Оглавление

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


1. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от PavelR (??) on 18-Дек-10, 10:58 
google://"apache suexec fastcgi php"
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от VArtem (ok) on 18-Дек-10, 11:05 
> google://"apache suexec fastcgi php"

Вопрос был как-раз что не про fastcgi. Это для меня как-раз наиболее очевидный момент из всего этого

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

6. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от PavelR (??) on 18-Дек-10, 14:41 
>> google://"apache suexec fastcgi php"
> Вопрос был как-раз что не про fastcgi. Это для меня как-раз наиболее
> очевидный момент из всего этого

Совершенно непонятный ответ. Вы по-русски писать можете ?

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

3. "Правильная настройка FreeBSD для хостинга"  +1 +/
Сообщение от Phoenix email(??) on 18-Дек-10, 12:41 
> Есть такая приблуда (не помню как зовется), которая эмулирует собственную файловую систему
> для каждого пользователя, т.е. у каждого юзера есть свой root со
> своими /var /etc /bin и т.д. В данном случае за  
> root у него выйти никак не получиться. Можно даже давать доступ
> через ssh, т.к. он так же не выйдет за пределы своего
> дома.  Правда, мне почему-то кажется, что этот способ более ресурсоемкий
> и из-за своей нестандартности может создать разные проблемы с настройкой apache,
> php, proftpd и наверняка создаст проблемы с прикручиванием какой-то админки-юзерпанели.

Сложно сказать что имелось ввиду, но полные права пользователю и доступ через ssh можно дать только по средствам виртуальной среды на уровне ОС (Пример - Linux:OpenVZ, FreeBSD:Jail)
, ну или второй вариант по средствам chroot окружения, в нем можно создать все что душе угодно, я для доступа по ssh как раз удобно использовать OpenSSH у него достаточно удобно настраивается chroot окружение.

Но если есть еще какие варианты, то тоже хотелось бы услашать)


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

4. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от Phoenix email(??) on 18-Дек-10, 12:45 
>> Есть такая приблуда (не помню как зовется), которая эмулирует собственную файловую систему
>> для каждого пользователя, т.е. у каждого юзера есть свой root со
>> своими /var /etc /bin и т.д. В данном случае за
>> root у него выйти никак не получиться. Можно даже давать доступ
>> через ssh, т.к. он так же не выйдет за пределы своего
>> дома.  Правда, мне почему-то кажется, что этот способ более ресурсоемкий
>> и из-за своей нестандартности может создать разные проблемы с настройкой apache,
>> php, proftpd и наверняка создаст проблемы с прикручиванием какой-то админки-юзерпанели.

Еще раз перечитал первое сообщение и все же думаю что грамотно настроенный chroot решит поставленную задачу.


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

5. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от VArtem (ok) on 18-Дек-10, 13:17 
Виртуализация - несомненно хорошо, но это уже не совсем веб хостинг, а уже предоставление полноценной linux машины.

Как-раз про chroot я и говорил, просто не смог вспомнить как он называется. Из-за подобного распределения, нагрузка на ОС не сильно увеличится?

В принципе в моей задачи не так сильно важен ssh доступ. Его можно и не  давать, хотя его наличие всегда будет хорошим плюсом.  Мне нужно отделить друг от друга пользователей, что бы ни при каких обстоятельствах один юзер не смог получить доступ к директории другого.

Так же интересует, что бы один пользователь не смог вызвать крах системы в целом, из-за порождения большого числа процессов, или из-за чего-то подобного.

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

8. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от Pahanivo (ok) on 19-Дек-10, 21:46 
> Виртуализация - несомненно хорошо, но это уже не совсем веб хостинг, а
> уже предоставление полноценной linux машины.

мда, вы видимо совершенно не понимаете какую ерунду говорите ...
виртуализация, хостинг, фря, линукс, выделенный сервак - ацкая каша в голове
> Как-раз про chroot я и говорил, просто не смог вспомнить как он
> называется. Из-за подобного распределения, нагрузка на ОС не сильно увеличится?

вы видимо не только не помните, но и не понимаете суть механизма - оверхен незначительный

> В принципе в моей задачи не так сильно важен ssh доступ. Его
> можно и не  давать, хотя его наличие всегда будет хорошим
> плюсом.  Мне нужно отделить друг от друга пользователей, что бы
> ни при каких обстоятельствах один юзер не смог получить доступ к
> директории другого.

известны механизмы выхода из чрут окружения - jail в этом плане значительно надежней + безопасный рутовый ssh в песочницу - оверхед минимальный - проблема лишь с дисковым пространством

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

9. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от VArtem (??) on 21-Дек-10, 16:54 
Большое спасибо. Так и сделаем


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

7. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от mef (ok) on 19-Дек-10, 11:11 
Вы же апач через виртуал хосты настраиваете? Добавьте тогда для каждого виртуал хоста такую штуку.
 php_admin_value open_basedir "путь до сайта" 

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

10. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от VArtem (??) on 28-Дек-10, 14:09 
Смотрю что если ставить jail, то каждой клетке нужно назначать свой ip, хотя в моей задаче нужно что бы у сервака оставался один общий ip-адрес. Так же по всей видимости прийдется в каждую клетку ставить apache, mysql и т.д. т.е. никакого места не напасешся.

Может все-таки chroot в этом плане лучше? Только ессно надо убрать у пользователя с папки /bin /sbin лишние файлы

Моя задача разделить доступ к файлам пользователей, т.е. что бы один юзер не смог прочитать файлы другого. Если же каждый виртуалхост засовывать в отдельный jail - это же убиться можно


Кстати, если верить мануалам, то каждая клетка собирается достаточно долго.

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

11. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от DeadLoco (ok) on 28-Дек-10, 15:19 
> Если же каждый виртуалхост засовывать в отдельный jail - это же убиться можно
> Кстати, если верить мануалам, то каждая клетка собирается достаточно долго.

Феерично.

1. скопировать шаблон джейла и в него скопировать виртуалхост - дело пары минут
2. джейл под типовую задачу собирается лишь раз, затем копипастится

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

12. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от Pahanivo (ok) on 28-Дек-10, 16:31 
>> Если же каждый виртуалхост засовывать в отдельный jail - это же убиться можно
>> Кстати, если верить мануалам, то каждая клетка собирается достаточно долго.
> Феерично.
> 1. скопировать шаблон джейла и в него скопировать виртуалхост - дело пары
> минут
> 2. джейл под типовую задачу собирается лишь раз, затем копипастится

не только феерично, но и архи-глупо!
афтар видимо не понимает, что хоть в чруте, хоть в жейле - если будет запускаться несколько индейцев - то они не уживутся на одном порту одного айпи!

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

13. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от VArtem (ok) on 28-Дек-10, 16:40 
Автор действительно не много понимает в chroot и jail, т.к. до этого с этим не приходилось иметь дел.

На одном ай-пи уживаться не будут, тогда как-таки быть с хостингом, когда нужно что бы на одном сервере было много разных сайтов. У меня, конечно, есть пару внешних ипов от прова, но их хватит очень не на много

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

14. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от DeadLoco (ok) on 28-Дек-10, 16:50 
> На одном ай-пи уживаться не будут, тогда как-таки быть с хостингом, когда
> нужно что бы на одном сервере было много разных сайтов.

Решений есть множество. Например, настраивается ДНС так, чтобы в мир для всех джейлов отдавался один общий адрес, а внутри имена разруливались по серым адресам.

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

15. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от PavelR (??) on 28-Дек-10, 22:33 
>> На одном ай-пи уживаться не будут, тогда как-таки быть с хостингом, когда
>> нужно что бы на одном сервере было много разных сайтов.
> Решений есть множество. Например, настраивается ДНС так, чтобы в мир для всех
> джейлов отдавался один общий адрес, а внутри имена разруливались по серым
> адресам.

можно на FE поставить nginx, и пробрасывать запросы в jails по внутренним айпишникам...

-----------

а можно мозг не парить, и поставить apache + suexec + fastcgi и php через fastcgi крутить.

памяти конечно экземпляры php поедят прилично, но от этого никуда не деться, если по jails разделить, то они поедят её еще больше. (Но внятно настроенный fastcgi будет прибивать ненужные процессы ;-)

ну и далее настроить права доступа
750 siteuser:www-data  на /web/siteuser/,
750 root:siteuser  на /var/log/hosting/siteuser

(пользователь siteuser создается с группой siteuser, в www-data его включать не надо)

собственно, считаю что этого достаточно.

поставить nginx и перед этим "сервером приложений" - это по вкусу/по ситуации.


-------
можно схему поразвивать, например выделив несколько зон, в которых создавать такие апачи / пользовательские сайты, отделить внутреннние сайты-сервисы (вебмыло хостинга, пхпмайадмин и т п), вынести СУБДу отдельно, и т п....

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

16. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от VArtem (ok) on 29-Дек-10, 11:22 
Спасибо.  Думаю что придется отказаться от jail в пользу этого решения. Правда и от ssh доступа тоже.

Походу сделать хостинг на jail вроде бы хорошо (в плане секьюрности), но на каждую клетку свой ип - это накладно.

Я просто встречал такие хостинги, которые  дают доступ и по ssh тоже. Там по-всей видимости было настроено как-раз таки через jail, т.к. были каталоги типа /etc  /bin  

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

17. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от PavelR (??) on 29-Дек-10, 14:49 
> Спасибо.  Думаю что придется отказаться от jail в пользу этого решения.
> Правда и от ssh доступа тоже.

Я лично не вижу особых причин полностью отказываться от раздачи ssh. за вычетом дыр в ядре, особо критичного ничего не будет, при правильной раздаче прав и конфигурации сервера. Ну можно r снять с каталога /web, чтобы перечисления аккаунтов не было, как top ограничить чтобы показывал только процессы пользователя - тоже вопрос минимальный.
Не забудьте ограничения (лимиты) повыставлять на потребляемые пользователями ресурсы и память, (форк-бомбы, зажирание всей оперативы и тп).

> Походу сделать хостинг на jail вроде бы хорошо (в плане секьюрности), но
> на каждую клетку свой ип - это накладно.

ну так айпи - выдавайте внутренние, для доступа снаружи по ssh - проброс портов, естественно порт будет не 22. Про ftp доступ лучше забыть, как из-за того, что порты будут нестандартны и придет много головняка, так и из-за того, что это небезопасно.

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

> Я просто встречал такие хостинги, которые  дают доступ и по ssh
> тоже. Там по-всей видимости было настроено как-раз таки через jail, т.к.
> были каталоги типа /etc  /bin

Вариантов километры =)

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

18. "Правильная настройка FreeBSD для хостинга"  +/
Сообщение от VArtem (ok) on 29-Дек-10, 15:43 
Хорошо, на счет ssh с разграниченными правами

Предположим есть директория
/var/www

в ней есть папки юзеров

vasya_site
petya_site
masha_site

У каждой папки owner соответственно vasya, petya, masha

на директорию www стоит доступ      rwx r-x --x
На каждую директорию пользователя   rwx r-x ---

Соответственно каждый каталог для юзера является домашним. Т.е. начинает он свой путь именно оттуда. По-идее он не имеет возможности попасть в директорию /var/www  (проверял), но если он сделает chdir / или chdir /var  (/usr)  то он перейдет соответственно в соответствующую директорию.  Можно конечно отобрать права на чтение "для всех" на все директории, но боюсь что могут возникнуть вопросы у приложений. Во всяком случае папку /bin прийдется оставить, т.к. иначе он не сможет даже вызвать chdir, да и с /bin/sh у него будут проблемы. А в таком случае возникнут вопросы, что он сможет вызвать что-то, что не должен.  

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

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

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

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




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

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