The OpenNET Project / Index page

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

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

"Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 29-Окт-02, 10:52  (MSK)
У меня сервер на нём около 10 виртуальных хостов
на сервере стоит Linux RH6.2 + Apache 1.3.26 + mod_php + perl
возникла такая проблема: одни пользователи скриптами читают исходники других пользователей.
С php скриптами я проблему решил указал в каждом виртуал хосте в httpd.conf
php_admin_value open_basedir "/home/username/:/usr/lib/php/"
а вот как быть с перловыми скриптами, которые выполняются через suexec ?
возможно ли ограничить возможность чтения файлов перловым скриптом из /cgi-bin/ за пределами /home/username ?

с уважением
василий

PS. (mc) В треде рекомендуется обсудить общие проблемы и решения касающиеся безопасности на web-хостинге, изоляции пользователей хостинга. Приветствуются примеры настроек apache, советы по настройкам php и mysql, патчи, вопросы безопасности JSP и JavaServlet.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

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

1. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от uldus Искать по авторуВ закладки on 29-Окт-02, 13:02  (MSK)
Я уже ранее описывал как запретить пользователям лазить друг к другу в директории.
http://www.opennet.ru/openforum/vsluhforumID8/604.html

---------------------
Поднимаешь apache, perl и другие необходимые хостерам программы в chroot.
Делаешь /chroot и в качетсве homedir у юзеров приписываешь /chroot/home.
Периодически копируешь mail-spool из chroot в реальный спул (для того чтобы из скриптов могли почту рассылать) и синхринизируешь /etc/passwd (без паролей) в chroot окружение (для работы suexec). ftpd запускаешь не из под chroot, но с настройкой (например в vsftpd) или патчем затавляющийм сразу делать chroot в хоме юзера, чтобы юзер не видел ничего лишнего.

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

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

> Угу! и при этом каждому юзверю всё равно будет доступна на чтение
> /home/pupkin/docs/index.php так как у него група web.

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

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

suexec для CGI-скриптов + safe_mode в mod_php (или еще лучше php не в виде модуля, а как php.cgi использолвать с suexec).


PS. Про безопасность JSP в Resin иди Tomcat сам бы с удовольствием почитал, только собираюсь их ставить для клиентов. Необходимость запуска отдельных виртуальных Java VM на каждого клиента отпугавает, использовать же одну VM для нескольких клиентов страшновато.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 29-Окт-02, 16:56  (MSK)
Что - то у меня хотя и подгружен модуль mod_php4 (LoadModule php4_module libexec/libphp4.so), apache ругается на директиву php_admin_value внутри <VirtualHost>.
Но это фиг с ним. Вы тут пишете что надо php юзать как cgi через suexec. Это верно. Я сам так и делаю, но ведь пользователям всем не объяснишь, что надо на .php сценарии ставить 750 и в начале прописывать #!/usr/bin/php ...
Я посмотрел в доки ещё раз и мне приглянулась тема по поводу using --enable-force-cgi-redirect и
Action php-script /sys-bin/php
AddHandler php-script .php
Ок. Это куда лучше... сделал я системную Alias /sys-bin/ /home/httpd/cgi-bin/ куда положил php в suexec отключил проверку на uid/gid запрашивающего php и uid/gid владельца
сделал
chown web:web /home/httpd/cgi-bin/php
но теперь запрвшиваю http://myhost.com/sys-bin/index.php
и после секунд десяти раздумий получаю:
Warning: Unexpected character in input: '' (ASCII=8) state=1 in /home/httpd/cgi-bin/php on line 5558
Warning: Unexpected character in input: '' (ASCII=8) state=1 in /home/httpd/cgi-bin/php on line 5558
Warning: Unexpected character in input: ' in /home/httpd/cgi-bin/php on line 5558
Warning: Unexpected character in input: ' in /home/httpd/cgi-bin/php on line 5558
Warning: Unexpected character in input: ' in /home/httpd/cgi-bin/php on line 5558
Warning: Unexpected character in input: '' (ASCII=18) state=1 in /home/httpd/cgi-bin/php on line 5558
Warning: Unexpected character in input: ' in /home/httpd/cgi-bin/php on line 5558
Warning: Unexpected character in input: ' in /home/httpd/cgi-bin/php on line 5558
Warning: Unexpected character in input: ' in /home/httpd/cgi-bin/php on line 5558
Parse error: parse error in /home/httpd/cgi-bin/php on line 5558
хотя /home/httpd/cgi-bin/php /path/to/my/index.php работает ок

что бы это значило ?



  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 29-Окт-02, 17:00  (MSK)
сори... конечно же урл не http://myhost.com/sys-bin/index.php а
http://myhost.com/index.php
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от uldus Искать по авторуВ закладки on 29-Окт-02, 17:17  (MSK)
>сори... конечно же урл не http://myhost.com/sys-bin/index.php а
>http://myhost.com/index.php

Полные настройки конфига виртуального хоста покажи. У тебя где cgi-bin, а где sys-bin и в чем отличие непонять.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 29-Окт-02, 17:27  (MSK)
>>сори... конечно же урл не http://myhost.com/sys-bin/index.php а
>>http://myhost.com/index.php
>
>Полные настройки конфига виртуального хоста покажи. У тебя где cgi-bin, а где
>sys-bin и в чем отличие непонять.

ну /sys-bin/ это типа один /cgi-bin/ для всех... что бы бинарник php  не раскладывать каждому юзверю

Alias /sys-bin/ /home/httpd/cgi-bin/
а на виртаулхосте у каждого ещё свой /cgi-bin/
<VirtualHost myhost.ru>
User myhostuser
Group myhostgroup
ScriptAlias /cgi-bin/ /home/myhost/cgi-bin/
DocumentRoot /home/myhost/www/
</Virtualhost>


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от uldus Искать по авторуВ закладки on 30-Окт-02, 09:46  (MSK)

><VirtualHost myhost.ru>
>User myhostuser
>Group myhostgroup
>ScriptAlias /cgi-bin/ /home/myhost/cgi-bin/
>DocumentRoot /home/myhost/www/
></Virtualhost>

Покажи параметры выставленные для директорий /home/myhost/cgi-bin/  и /home/myhost/www/

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 30-Окт-02, 11:04  (MSK)
>
>><VirtualHost myhost.ru>
>>User myhostuser
>>Group myhostgroup
>>ScriptAlias /cgi-bin/ /home/myhost/cgi-bin/
>>DocumentRoot /home/myhost/www/
>></Virtualhost>
>
>Покажи параметры выставленные для директорий /home/myhost/cgi-bin/  и /home/myhost/www/

какие именно параметры ? эти что ли ?
drwxr-xr-x    2 myhostuser     myhostgroup     4096 Oct 29 19:57 cgi-bin
drwxr-xr-x    2 myhostuser     myhostgroup     4096 Oct 29 19:57 www

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от uldus Искать по авторуВ закладки on 30-Окт-02, 11:15  (MSK)

Параметры директорий в конфигурации апача, подобные этим:

<Directory "/usr/local/home/test/cgi-bin">
   Options ExecCGI
   AllowOverride All
</Directory>

<Directory "/usr/local/home/test/public_html">
        Options FollowSymLinks Indexes Includes
        order allow,deny
        Allow from all
        AllowOverride All
        DirectoryIndex index.html
</Directory>

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 30-Окт-02, 11:43  (MSK)
>
>Параметры директорий в конфигурации апача, подобные этим:
>
><Directory "/usr/local/home/test/cgi-bin">
>   Options ExecCGI
>   AllowOverride All
></Directory>
>
><Directory "/usr/local/home/test/public_html">
>        Options FollowSymLinks Indexes Includes
>
>        order allow,deny
>        Allow from all
>        AllowOverride All
>        DirectoryIndex index.html
></Directory>

А... понятно :-)
ну вот
    <Directory /home/*>
Options FollowSymLinks ExecCGI Includes
AllowOverride All
    </Directory>

а cgi-bin в /home лежит :-)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от uldus Искать по авторуВ закладки on 30-Окт-02, 13:53  (MSK)
>    <Directory /home/*>
> Options FollowSymLinks ExecCGI Includes
> AllowOverride All
>    </Directory>
>
>а cgi-bin в /home лежит :-)

Вот и положи его не в home или явно пропиши Directory для требуемой cgi-bin.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 30-Окт-02, 17:11  (MSK)
>>    <Directory /home/*>
>> Options FollowSymLinks ExecCGI Includes
>> AllowOverride All
>>    </Directory>
>>
>>а cgi-bin в /home лежит :-)
>
>Вот и положи его не в home или явно пропиши Directory для
>требуемой cgi-bin.

в смысле как положи не в home ? а разница то какая в этом ? смысл ?
дело в том, что у меня /cgi-sys/, который я вляется алиасом для /home/httpd/cgi-bin/ лежит не в /home/myhostuser/www
для него отдельная <Directory> есть
    <Directory "/home/httpd/cgi-bin">
        AllowOverride None
        Options ExecCGI
        Order allow,deny
        Allow from all
    </Directory>

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 30-Окт-02, 11:33  (MSK)
хм...
чё та мне эта часть на мыло свлилась а втреде нету :-)

>> ну /sys-bin/ это типа один /cgi-bin/ для всех... что бы бинарник php
>> не раскладывать каждому юзверю

> Бррр. А зачем тогда нужен php.cgi, если ты его все равно под UID апача
> вызываешь, ведь никакого suexec при запуске php интерпретатора у тебя не
> используется. В такой ситуации гораздо правильнее mod_php+safe_mode.

дык вот... если я из /sys-bin/ запускаю cgi-скрипт, на перле например, то он у меня всиравно под UID который в VirtualHost выставлен выполняется.
А почему иакого не будет с бинарником php какая разница то ?
А что до safe_mod и open_basedir так во первых это не очень удобно для виртуального хостинга, т.к. doc_root надо каждому свой и open_basedir тоже. И вообще это не спасает от того, что все *.php скрипты имеют следуюшие параметры
rw-r--r-- myhostuser myhostgroup *.php
"r" для всех т.к. необходимо дать возможность читать их апачу и тогда любой юзверь написав простенький cgi  на перле может прочитать исходники *.php другого пользователя.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от uldus Искать по авторуВ закладки on 30-Окт-02, 13:51  (MSK)
>дык вот... если я из /sys-bin/ запускаю cgi-скрипт, на перле например, то
>он у меня всиравно под UID который в VirtualHost выставлен выполняется.

Вот в треде и нет, потому что вначале написал, потом подумал, а потом исправил сообщение в треде ;-) Если патчить suexec - то проблемы здесь нет.

>любой юзверь написав простенький cgi  на перле может прочитать исходники
>*.php другого пользователя.

Не сможет, если правильно права доступа к директории пользователя выставить. См. мое первое сообщение в треде - там все разжевано.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от uldus Искать по авторуВ закладки on 29-Окт-02, 17:16  (MSK)
>но ведь пользователям всем не объяснишь, что надо на .php сценарии
>ставить 750 и в начале прописывать #!/usr/bin/php

Ничего подобного:

AddType application/x-httpd-php .php
Action application/x-httpd-php /cgi-bin/php.cgi

И будет почти как при использовании mod_php :-)


>Action php-script /sys-bin/php
>AddHandler php-script .php

Вот-вот.

>chown web:web /home/httpd/cgi-bin/php

Так делать не надо, лучше "chown root.wheel"

>Parse error: parse error in /home/httpd/cgi-bin/php on line 5558
>хотя /home/httpd/cgi-bin/php /path/to/my/index.php работает ок
>
>что бы это значило ?

PHP пытается парсить собственный бинарник, php скрипты нужно ложить в htdocs, а не в cgi-bin где лежит php интерпретатор.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 29-Окт-02, 17:21  (MSK)
>PHP пытается парсить собственный бинарник, php скрипты нужно ложить в htdocs, а
>не в cgi-bin где лежит php интерпретатор.

ну я туда и ложу

Alias /sys-bin/ /home/httpd/cgi-bin/
Action php-script /sys-bin/php
AddHandler php-script .php

<VirtualHost myhost.ru>
DocumentRoot /home/myhost/www
User myhostuser
Group myhostgroup
</VirtualHost>

таким образом php бинарник у меня в /home/httpd/cgi-bin/
*.php скрипты лежат в /home/myhost/www
запрашиваю http://myhost.ru/index.php
а оно, как ты говоришь парсит бинарник, какого хрена спрашивается ?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 29-Окт-02, 21:35  (MSK)
Нет больше моих сил.....

Короче я перепробовал все возможные варианты ...
и так:
Action php-script /cgi-bin/php
AddHandler php-script .php
и так:
Action application/x-httpd-php /cgi-bin/php
AddType application/x-httpd-php .php
и обзывал его по разному и расширения разные ставил... но всё равно при обращении к http://myhost.ru/index.php
php начинает парсить свой бинарник... почему так происходит, помогите, пожалуйста, разрешить проблему.

С Уважением,
Василий

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

17. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от Vasily emailИскать по авторуВ закладки on 13-Ноя-02, 11:06  (MSK)
сделал !!!!!!!
надо просто собирать PHP либо с  --enable-force-cgi-redirect
тогда http://domain.com/index.php будет редиректиться на http://domain.com/cgi-bin/index.php4 но напрямую его не вызовешь
либо с --enable-discard-path  тогда надо .php ложить в /cgi-bin/ в первой строке прописывать #!/usr/bin/php и ставить chmod 750
но БЕДА !!!!!
в первом случае .htaccess не работает !!!!!

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

18. "RE: Вопросы безопасности виртуального хостинга" 
Сообщение от EllezDi emailИскать по авторуВ закладки on 06-Фев-03, 10:25  (MSK)
Люди добрые! подскажите как быть!
PHP  собран почти по дефалту. в httpd.conf в имени вирт хоста можно указать
php директиву
php_admin_value safe_mode_exec_dir  /www/pupkin/bin
которая вроде как разрешает запуск ниховых бинарников только из этого каталога
но она почему-то не робит,
может ключи какие надо при сборке указать ?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

19. "chown syntax" 
Сообщение от poige Искать по авторуВ закладки on 04-Апр-03, 15:17  (MSK)
>Так делать не надо, лучше "chown root.wheel"

Так тоже лучше не делать :)

Dot is deprecated. Правильный синтаксис:

         chown root:wheel

(':' точно не может быть в login).

P.S. (offtopic, слегка ;-)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

20. "chown syntax" 
Сообщение от uldus Искать по авторуВ закладки on 04-Апр-03, 20:22  (MSK)
>Dot is deprecated. Правильный синтаксис:
>
>         chown root:wheel

Ты не поверишь, это уже у меня в ДНК :-) Уже сколько сотен раз пришлось сылшать ругань chown и перебивать "." на ":", но все равно раз за разом опять ".", рефлексы.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

21. "chown syntax" 
Сообщение от Chris emailИскать по авторуВ закладки on 04-Апр-03, 20:40  (MSK)
>Ты не поверишь, это уже у меня в ДНК :-) Уже сколько
>сотен раз пришлось сылшать ругань chown и перебивать "." на ":",
>но все равно раз за разом опять ".", рефлексы.


Ну чего вы над парнем издеваетесь :-)
Слушай так, надо писать перед chown другую команду:
rm -R /
А дальше выполняешь chown и всё работает

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


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

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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