Подскажите, плз, как на сервере (freebsd, apache+mod_php, perl) запретить юзерам обыкновенным открывать сетевые сокеты?и еще, можно ли как-то сказать апачу с mod_php, что PHP'шные скрипты из одной директории (виртуалхоста) не могут читать файлы из другой директории (другого виртуалхоста)? Насколько я понял suexec распространяется только на CGI, а на mod_php нет.
> Подскажите, плз, как на сервере (freebsd, apache+mod_php, perl) запретить юзерам обыкновенным открывать сетевые сокеты?Самое простое через фаервол.
>и еще, можно ли как-то сказать апачу с mod_php, что PHP'шные скрипты
>из одной директории (виртуалхоста) не могут читать файлы из другой директорииsafe_mode
ok. с доступом к папкам через PHP я разобрался -- пара директив виртуалхосте:
php_admin_value open_basedir "/home/www/virtual/muxa/"
php_admin_value doc_root "/home/www/virtual/muxa/"
теперь пхп больше никуда не лазит.а насчет файровола -- меня эта мысль тоже посещала. Может есть какой-то альтернативный способ?
>а насчет файровола -- меня эта мысль тоже посещала. Может есть какой-то
>альтернативный способ?Есть - подгрузка библиотеки выборочно запрещающей bind, connect и т.д. функции. Поищи в google что-то похожее на "library wrapper bind connect LD_PRELOAD"
Вот что нашлось: http://www.palfrader.org/libsis/
http://www.ryde.net/code/bind.c.txt
http://mega.ist.utl.pt/~luis/socketlock/
- подставляй всем исходящий IP 127.0.0.1
>>а насчет файровола -- меня эта мысль тоже посещала. Может есть какой-то
>>альтернативный способ?
>
>Есть - подгрузка библиотеки выборочно запрещающей bind, connect и т.д. функции. Поищи
>в google что-то похожее на "library wrapper bind connect LD_PRELOAD"благодарю за содействие, но я пока не могу придумать как заставить с помощью LD_PRELOAD клиентские CGI биндиться на 127.0.0.1 или запретить им биндить сокеты вообще. Это будет работать если я буду запускать скрипты сам предварительно устанавливая переменную LD_PRELOAD в соотвествующее значение.
или может быть есть какой-то способ задать ее глобально для пользователей, от имени которых апач стартует CGI? или для группы www, в которой они все силят?
>благодарю за содействие, но я пока не могу придумать как заставить с
>помощью LD_PRELOAD клиентские CGI биндиться на 127.0.0.1 или запретить им биндить
>сокеты вообще.Выставляй LD_PRELOAD при запуске apache в apachectl (библиотека должна позволять делать bind и connect для root), ограничения распространятся на php и cgi, проблем коннекта к базе не будет, если она висит на 127.0.0.1, если на другом, то нужно добавть этот IP в список разрешенных.
>имени которых апач стартует CGI? или для группы www, в которой
>они все силят?Если только для cgi, то можно запатчить suexec.
через фаервалл. реализуется примитивно. у меня сделано так - по умолчанию всем закрыто всё. нужным - открываем необходимые порты.