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

Исходное сообщение
"Как сделать chroot для cgi-bin при виртульном хостинге?"

Отправлено Defender , 02-Июл-02 18:45 
Ну вот написал я себе в httpd.conf:
RewriteEngine on
RewriteMap   lowercase  int:tolower

# define the map file
RewriteMap   vhost      txt:/usr/local/www/vhost.map

# deal with aliases as above
RewriteCond  %{REQUEST_URI}               !^/icons/
RewriteCond  %{REQUEST_URI}               !^/cgi-bin/
RewriteCond  ${lowercase:%{SERVER_NAME}}  ^(.+)$
# this does the file-based remap
RewriteCond  ${vhost:%1}                  ^(/.*)$
RewriteRule  ^/(.*)$                      %1/docs/$1

RewriteCond  %{REQUEST_URI}               ^/cgi-bin/
RewriteCond  ${lowercase:%{SERVER_NAME}}  ^(.+)$
RewriteCond  ${vhost:%1}                  ^(/.*)$
RewriteRule  ^/(.*)$                      %1/cgi-bin/$1

А в /usr/local/www/vhost.map:
www.def.gm.lan  /var/spool/datamail/gm.lan/def/ftp

Согласовал привилегии доступа и т.д. И всё заработало. Могу создав юзверя с почтовым я щиком и ftp доступом и виртуальным хостингом заполнив однк форму и всё!!!
Но вот вылезла другая фигня. Через php или cgi я могу добраться к любому файлу своей системы.... Сами понимаете - не хорошо это.
И честно говоря не могу даже представить себе как это запретить.... 8((
Может поделитесь опытом, или а мысль натолкнёте?


Содержание

Сообщения в этом обсуждении
"RE: Как сделать chroot для cgi-bin при виртульном хостинге?"
Отправлено uldus , 03-Июл-02 10:46 
Поднимаешь apache, perl и другие необходимые хостерам программы в chroot.
Делаешь /chroot и в качетсве homedir у юзеров приписываешь /chroot/home.
Периодически копируешь mail-spool из chroot в реальный спул (для того чтобы из скриптов могли почту рассылать) и синхринизируешь /etc/passwd (без паролей) в chroot окружение (для работы suexec). ftpd запускаешь не из под chroot, но с настройкой (например в vsftpd) или патчем затавляющийм сразу делать chroot в хоме юзера, чтобы юзер не видел ничего лишнего.

"RE: Как сделать chroot для cgi-bin при виртульном хостинге?"
Отправлено Defender , 04-Июл-02 19:25 
>Поднимаешь apache, perl и другие необходимые хостерам программы в chroot.
>Делаешь /chroot и в качетсве homedir у юзеров приписываешь /chroot/home.
>Периодически копируешь mail-spool из chroot в реальный спул (для того чтобы из
>скриптов могли почту рассылать) и синхринизируешь /etc/passwd (без паролей) в chroot
>окружение (для работы suexec). ftpd запускаешь не из под chroot, но
>с настройкой (например в vsftpd) или патчем затавляющийм сразу делать chroot
>в хоме юзера, чтобы юзер не видел ничего лишнего.

Да! Но при этом получается, что такая вот такой вот скриптик:
#!/usr/bin/perl          
open (f, "</chroot/home/pupkin/docs/index.php");
while (<f>)              
{                        
print;                    
}                        
close f;                  

примило даст на чтение всё что надо юзверю не "pupkin"-у....
В принципе тот же фтп можно заставить создавать файлы с одним пермишеном типа 700 но тогда апач не сможет работать.....
Вот ведь в чём дело!!!!


"RE: Как сделать chroot для cgi-bin при виртульном хостинге?"
Отправлено uldus , 04-Июл-02 22:56 
>Да! Но при этом получается, что такая вот такой вот скриптик:
>#!/usr/bin/perl
>open (f, "</chroot/home/pupkin/docs/index.php");

не /chroot/home/pupkin/docs/index.ph, а /home/pupkin/docs/index.ph апач в chroot'е вместе со всеми скриптами.

>примило даст на чтение всё что надо юзверю не "pupkin"-у....

А права нормальные на директории пользователей совесть не позволяет ?
Ставь оунером юзера, а группу web севрера - чтобы статику отдавать мог. Скрипты чужих юзеров туда доступ не получат так как скрипты запускаются через suexec, т.е. под UID  текущего пользователя.
drwx--x---    4 pupkin       web           4096 Дек 23  2001 pupkin


"RE: Как сделать chroot для cgi-bin при виртульном хостинге?"
Отправлено Defender , 08-Июл-02 17:27 
>>Да! Но при этом получается, что такая вот такой вот скриптик:
>>#!/usr/bin/perl
>>open (f, "</chroot/home/pupkin/docs/index.php");
>
>не /chroot/home/pupkin/docs/index.ph, а /home/pupkin/docs/index.ph апач в chroot'е вместе со всеми скриптами.
>
>>примило даст на чтение всё что надо юзверю не "pupkin"-у....
>
>А права нормальные на директории пользователей совесть не позволяет ?
>Ставь оунером юзера, а группу web севрера - чтобы статику отдавать мог.
>Скрипты чужих юзеров туда доступ не получат так как скрипты запускаются
>через suexec, т.е. под UID  текущего пользователя.
>drwx--x---    4 pupkin      
>web          
>4096 Дек 23  2001 pupkin
Угу! и при этом каждому юзверю всё равно будет доступна на чтение /home/pupkin/docs/index.php так как у него група web.
А если сдеть так что бы он не смог читать чужое то и апач не сможет.
Единственный выхот на мой взгляд - это пускать всё (даже php) под uid&gid конкретного юзверя, а вот как это сделать?????

"RE: Как сделать chroot для cgi-bin при виртульном хостинге?"
Отправлено uldus , 08-Июл-02 18:06 
>Угу! и при этом каждому юзверю всё равно будет доступна на чтение
>/home/pupkin/docs/index.php так как у него група web.

Юзер не в группе WEB, в группе WEB твой apache. Соответсвтенно все, что запускается под UID/GID юзера доступ к чужим директориям никак получить не может, apache же будет прекрасно отдавать статику от всех юзеров. Это касается cgi-скриптов запущенных из-под suexec и .php файлов обработанных mod_php с включенным safe_mode.


>Единственный выхот на мой взгляд - это пускать всё (даже php) под
>uid&gid конкретного юзверя, а вот как это сделать?????

suexec + safe_mode в mod_php.


"RE: Как сделать chroot для cgi-bin при виртульном хостинге?"
Отправлено Defender , 08-Июл-02 19:12 
>>Угу! и при этом каждому юзверю всё равно будет доступна на чтение
>>/home/pupkin/docs/index.php так как у него група web.
>
>Юзер не в группе WEB, в группе WEB твой apache. Соответсвтенно все,
>что запускается под UID/GID юзера доступ к чужим директориям никак получить
>не может, apache же будет прекрасно отдавать статику от всех юзеров.
>Это касается cgi-скриптов запущенных из-под suexec и .php файлов обработанных mod_php
>с включенным safe_mode.
>
>
>>Единственный выхот на мой взгляд - это пускать всё (даже php) под
>>uid&gid конкретного юзверя, а вот как это сделать?????
>
>suexec + safe_mode в mod_php.


Хмм...
Надо будет покопать на тему suexec + safe_mode в mod_php

Сенкс. Если что то отрапортую.... 8))


"RE: Как сделать chroot для cgi-bin при виртульном хостинге?"
Отправлено bluequad , 10-Июл-02 11:05 
А поставить группу и юзера pupkin/pupkin и пермишны 770 на хоумдир пупкина и включить в группу pupkin юзера апача идеология не позволяет? Да, естественно никаких mod_php - только php as cgi. И это - правильно, т.к. нельзя поставить лимитов на деток апача - соответственно ты никак mod_php лимитировать не сможешь.