Страница 1 из 1

chroot во FreeBSD

Добавлено: 2013-04-23 16:37:31
schmel
Есть хостинг Apache-mpm+nginx+Mysql+php на FreeBSD 9.1. Мне необходим chroot для виртуальных хостов, что бы пускать пользователей через ssh и полностью отказаться от ftp. Возможно ли как нибудь настроить пользователя, чтобы он не поднимался выше своей домашней директории? Сейчас если пользователю виртуального хоста апача vu2001 (к примеру) дать доступ по ssh, то он сможет просматривать список каталогов, выше своей директории, хотя и не сможет прочитать другие файлы, просто видит папки.

Re: chroot во FreeBSD

Добавлено: 2013-04-23 18:34:26
ChihPih
Тогда придется для каждого пользователя делать свое окружение (иерархия папок + системные тулзы в них). Оно вам надо?

Re: chroot во FreeBSD

Добавлено: 2013-04-23 21:19:19
schmel
Надо. Нашел статейку про chroot через ssh. http://www.lissyara.su/articles/freebsd ... tp+chroot/
Вот только как это сделать для моего случая? Если апач создает каждый раз пользователей и группу с одним названием. Например vu2003:vu2003

Re: chroot во FreeBSD

Добавлено: 2013-04-23 21:28:44
ChihPih
Апач создает или вы? Настройте так, чтоб по шаблоны создавало или еще как?

Re: chroot во FreeBSD

Добавлено: 2013-04-23 22:34:35
schmel
Апач создает по шаблону используемой панели ispcp omega.

Код: Выделить всё

APACHE_SUEXEC_USER_PREF = vu
APACHE_SUEXEC_MIN_GID = 2000
APACHE_SUEXEC_MAX_GID = 29999
APACHE_SUEXEC_MIN_UID = 2000
APACHE_SUEXEC_MAX_UID = 29999
APACHE_USER = www
APACHE_GROUP = www
Для начала хотелось бы сделать алгоритм действий хотя бы при ручном добавлении пользователей, вида vu200x:vu200x, потом буду искать как внедрить это в шаблоны.
Как можно задать

Код: Выделить всё

ChrootDirectory
для папок вида /usr/local/www/data/virtual/example.org (если example.org принадлежит vu2002:vu2002)?

Re: chroot во FreeBSD

Добавлено: 2013-04-24 0:01:40
Alex Keda
однако, я непонимаю - зачем chroot?
права на хомяки раздать и всё.
и пусть шарятся где хотят...
вот вам ссылочка: http://www.host-food.ru/
возьмите пробник, попросите ssh в тикетнице - его нет на пробнике по дефолту
пошарьтесь, посмотрите...

Re: chroot во FreeBSD

Добавлено: 2013-04-24 8:59:15
manefesto
suexec + fcgid в лапки

Re: chroot во FreeBSD

Добавлено: 2013-04-24 15:21:04
schmel
manefesto писал(а):suexec + fcgid в лапки
Уже и так использую suexec + FastCGI (fcgid панелью под фряху не рекомендуется).
однако, я непонимаю - зачем chroot?
права на хомяки раздать и всё.
и пусть шарятся где хотят...
С правами все впорядке, просто не хочу, чтобы юзер выходил за пределы своей виртуальной директории. Зачем ему видеть какие еще сайты хостятся рядом. Ну и полностью хочу перевести всех на sftp, дать возможность использовать tar, unzip и прочее.

Re: chroot во FreeBSD

Добавлено: 2013-04-24 18:12:17
ChihPih
С правами все впорядке, просто не хочу, чтобы юзер выходил за пределы своей виртуальной директории. Зачем ему видеть какие еще сайты хостятся рядом.
Все это правами решается.
Ну и полностью хочу перевести всех на sftp, дать возможность использовать tar, unzip и прочее.
Панелька какая-нибудь (тот же ISPmanager) для работы с архивами и т.п.

Re: chroot во FreeBSD

Добавлено: 2013-04-24 19:07:44
schmel
ChihPih писал(а): Все это правами решается.
Как? только не говорите, что chmod'ом =)
Как правами сделать так, чтобы пользователь при логине через ssh вообще не видел папки выше своей директории?

Ок, начну исследования, может кто нибудь подскажет.
И так...
В OpenSSH есть поддержка chroot.
То есть мне нужно сделать так, что бы пользователь подключившийся по ssh видел только свое домашнее окружение и не мог выйти в каталоги других пользователей.
Панель создает директории в /usr/local/www/data/virtual/name_site.ru
Тоесть для начала мне нужно назначить домашнюю директорию пользователю владельцу папки name_site.ru. Ок, назначу, в handbook видел где-то как это делается.

Исследую настройки в /etc/ssh/sshd_config.

AllowGroups wheel (и тут перечисляем названия групп vu2001 vu2002 vu2003 и тд.) Трудоемко, не правдали, возможно ли это автоматизировать или сделать алиас для всех этих vu?

мой /etc/group

Код: Выделить всё

...........
vu2018:*:2018:
vu2019:*:2019:
vu2020:*:2020:
vu2022:*:2022:
vu2023:*:2023:
..........
Далее, есть такой пункт как ChrootDirectory.

Match group vu2001 vu2002 vu2003 (в правильности этого пункта сомневаюсь)
ChrootDirectory %h (тут как я понял при логине будет использоваться домашняя директория в качестве корня, поправьте если не прав)
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

Далее по статье:
Создадим будущему пользователю домашний каталог, куда он и будет кидать свои файлы
# mkdir /usr/local/www/example
А внутри этого каталога еще один
# mkdir /usr/local/www/example/www
У меня панель и так создает каталог /usr/local/www/data/virtual/example.ru
Вместо /usr/local/www/example/www у меня /usr/local/www/data/virtual/example.ru/htdocs
Теперь надо правильно добавить пользователя через adduser. Надо включить его в группу sftponly, дать реальную оболочку(например sh),указать правильный домашний каталог(мы его уже создали), ну естественно, пароль.
Думаю это можно сделать шаблоном самой панели, поковырявшись в коде. Ок, допустим сделал.
# chown -R root /usr/local/www/example
# chown -R our_user /usr/local/www/example/www
А вот это не совсем понял, зачем ставить владельцем root? И давать права только на одну папку в домашней директории? Можно ли дать права на все папки? У меня там хранятся еще бекапы и логи, иногда это полезно пользователям.

Буду благодарен за любую помощь.

Re: chroot во FreeBSD

Добавлено: 2013-04-24 19:38:19
ChihPih
Как? только не говорите, что chmod'ом
Как правами сделать так, чтобы пользователь при логине через ssh вообще не видел папки выше своей директории?
На корневую папку для домашних директорий поставить права 751

Re: chroot во FreeBSD

Добавлено: 2013-04-25 11:24:39
schmel
ChihPih писал(а):На корневую папку для домашних директорий поставить права 751
Поставил, пользователь теперь просто не видит папки других сайтов, но по системе может шариться. И читать конфиги из /etc

Код: Выделить всё

[vu2010@hosting:/usr/local] $ls
bin     etc     info    libdata man     share   var
build-1 include lib     libexec sbin    src     www

Код: Выделить всё

[vu2010@hosting:/etc] $cat fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b             none            swap    sw              0       0
/dev/ad0s1a             /               ufs     rw              1       1
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0
Надо полностью изолированное окружение. А ставить на все права 751 черевато неизвестными последствиями.

Re: chroot во FreeBSD

Добавлено: 2013-04-25 11:37:28
ChihPih
то он сможет просматривать список каталогов, выше своей директории, хотя и не сможет прочитать другие файлы, просто видит папки.
Как бэ начальная задача вполне решаема chmod,ом. Юзверь не сможет узнать какие файлы/папки где есть, по сути этого хватит.
Если так сильно хочется поизвращаться то смотрите маны и доки на оф. сайте по MAC.

Re: chroot во FreeBSD

Добавлено: 2013-07-24 21:40:27
icb
Alex Keda писал(а):однако, я непонимаю - зачем chroot?
права на хомяки раздать и всё.
и пусть шарятся где хотят...
вот вам ссылочка: http://www.host-food.ru/
возьмите пробник, попросите ssh в тикетнице - его нет на пробнике по дефолту
пошарьтесь, посмотрите...
Разве можно правами ограничить чтение rc.conf passwd groups named.conf и т.п.?

Re: chroot во FreeBSD

Добавлено: 2013-07-25 10:37:20
dekloper
jail не?
там шас много че добавилось по части виртуализации стека..

Re: chroot во FreeBSD

Добавлено: 2013-08-29 13:08:00
icb
Т.е. как я понимаю нормально ограничить пользователя установкой прав нельзя?
Придется дальше копать chroot :(
jail не?
Более накладно (чем chroot) делать.
там шас много че добавилось по части виртуализации стека..
Там уже давно добавляют, правят и т.п. Но не совсем понятно на каком они этапе и какие перспективы.
jail - вика последний раз правилась в 2011 году (учитывая рынок VDS - похоже так оно и есть, многие предлагают только 8.х)
vImage - не очень понятно замена ли это jail и откажутся ли в ее пользу, но она вообще в 2010 зависла
Очень мало информации.

Да и вообще, в очередной раз наблюдается странное поведение админов проекта - информацию перестали выкладывать даже в вике по TODO релиза :(
Информация о 10.0 застыла по состоянию за май 2012 года.
А потом удивляются малой численностью сообщества - при таком подходе это не удивительно.

Re: chroot во FreeBSD

Добавлено: 2013-09-28 13:38:06
mikie
на все важные системные папки поставить права 750 (drwxr-x---) ну и не пускать простых пользователей в группу wheel + на каждую папку пользователя тоже поставить такие права, чтоб не могли лазить по папкам соседей (видить будут но зайти не смогут)... я не большой спец конечно, может это и чревато...но все же думаю что важные системные папки можна защитить таким способом

Re: chroot во FreeBSD

Добавлено: 2013-10-05 2:24:51
Ikinoki
icb писал(а):Т.е. как я понимаю нормально ограничить пользователя установкой прав нельзя?
Придется дальше копать chroot :(
jail не?
Более накладно (чем chroot) делать.
там шас много че добавилось по части виртуализации стека..
Там уже давно добавляют, правят и т.п. Но не совсем понятно на каком они этапе и какие перспективы.
jail - вика последний раз правилась в 2011 году (учитывая рынок VDS - похоже так оно и есть, многие предлагают только 8.х)
vImage - не очень понятно замена ли это jail и откажутся ли в ее пользу, но она вообще в 2010 зависла
Очень мало информации.

Да и вообще, в очередной раз наблюдается странное поведение админов проекта - информацию перестали выкладывать даже в вике по TODO релиза :(
Информация о 10.0 застыла по состоянию за май 2012 года.
А потом удивляются малой численностью сообщества - при таком подходе это не удивительно.
Нужда в vImage отпала, поцоны юзают vnet+zfs+jail...

Re: chroot во FreeBSD

Добавлено: 2013-10-14 14:27:30
icb
но все же думаю что важные системные папки можна защитить таким способом
Как таким способом защитить /etc/passwd и т.п.?
Нужда в vImage отпала
Почему?