apache php как защитить директории сервера

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
shuk007
рядовой
Сообщения: 45
Зарегистрирован: 2009-02-05 12:19:38

apache php как защитить директории сервера

Непрочитанное сообщение shuk007 » 2009-03-04 17:19:29

Здраствуйте!

У меня на серваке на одном ip стоит несколько сайтов (VirtualHost)
И проблемма в том что с помощю функции dir() в пхп я смогу сканировать все каталоги сервера.
Я вкючил безопасный режим в пхп но не чего не изменилось.
ПОЖАЛУЙСТА помогите как сделать чтобы скрипт вне корневого каталога сайта не срабатывало, не сканировало....

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: apache php как защитить директории сервера

Непрочитанное сообщение zg » 2009-03-04 17:25:08


Аватара пользователя
shuk007
рядовой
Сообщения: 45
Зарегистрирован: 2009-02-05 12:19:38

Re: apache php как защитить директории сервера

Непрочитанное сообщение shuk007 » 2009-03-04 17:33:10

я включил safe_mode НО к сожалению ничего не изменилось или я что то не то сделал

В php.ini изменил вот такие строчки:
были Off изменил их на

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

safe_mode = On
safe_mode_gid = On

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: apache php как защитить директории сервера

Непрочитанное сообщение zg » 2009-03-04 17:36:29

не не не, сэйф моде работает только с владельцами и группой, а есть ещё

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

open_basedir string 

Ограничивает список файлов, которые могут быть открыты в PHP, указанным деревом директорий независимо от того, используется защищенный режим или нет. 

Каждый раз, когда скрипт пытается открыть файл, например, при помощи функции fopen() или gzopen(), проверяется месторасположение файла. В случае, если он находится вне указанного дерева директорий, PHP отказывает в открытия файла. Все символические ссылки распознаются и преобразуются, поэтому обойти это ограничение при помощи символических ссылок невозможно. 

Специальное значение . указывает, что базовой следует считать директорию, в которой расположен сам скрипт. В этом случае следует быть осторожным, так как рабочую директорию скрипта можно легко изменить при помощи функции chdir(). 

Опция open_basedir может быть отключена в конфигурационном файле httpd.conf (например, для некоторых виртуальных хостов) точно таким же образом как и любая другая директива: "php_admin_value open_basedir none". 

Для Windows-систем разделителем списка директорий служит точка с запятой. Для всех других операционных систем в качестве разделителя используется двоеточие. В случае, если PHP работает как модуль веб-сервера Apache, все указания open_basedir для родительских директорий наследуются. 

Указанное значение в действительности является префиксом, а не названием директории. Это означает, что запись "safe_mode_include_dir = /dir/incl" позволяет открывать файлы, находящиеся в директориях "/dir/include" и "/dir/incls", в случае, если они существуют. Если вы хотите указать доступ к конкретной директории, используйте завершающий слеш, например: "safe_mode_include_dir = /dir/incl/".
это написано в http://ru.php.net/manual/ru/ini.sect.safe-mode.php

Аватара пользователя
shuk007
рядовой
Сообщения: 45
Зарегистрирован: 2009-02-05 12:19:38

Re: apache php как защитить директории сервера

Непрочитанное сообщение shuk007 » 2009-03-04 17:45:18

Огромное вам спасибо!!
Вы не могли бы одну пример привести пожалуйста
У меня в httpd.conf VirtualHost ы таким образом сконфигурированы:

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

<VirtualHost xxx.xxx.xxx.xx:80>
    ServerName example.com
    ServerAlias texample.com www.example.com
    ServerAlias www.exampleftp.com
    DocumentRoot /data/home/public_html/example.com
    ServerAdmin webmaster@example.com
    UseCanonicalName off
    <IfModule mod_suphp.c>
        suPHP_UserGroup www www
    </IfModule>
 </VirtualHost>
<VirtualHost xxx.xxx.xxx.xx:80>
    ServerName example2.com
    ServerAlias texample.com www.example2.com
    ServerAlias www.exampleftp2.com
    DocumentRoot /data/home/public_html/example2.com
    ServerAdmin webmaster@example2.com
    UseCanonicalName off
    <IfModule mod_suphp.c>
        suPHP_UserGroup www www
    </IfModule>
 </VirtualHost>
вот таким образом я использовал:

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

<VirtualHost xxx.xxx.xxx.xx:80>
    ServerName example2.com
    ServerAlias texample.com http://www.example2.com
    ServerAlias http://www.exampleftp2.com
    DocumentRoot /data/home/public_html/example2.com
    ServerAdmin webmaster@example2.com
    UseCanonicalName off

   php_admin_flag safe_mode on
   php_admin_flag safe_mode_gid on
   php_admin_value open_basedir /data/home/public_html/example2.com

    <IfModule mod_suphp.c>
        suPHP_UserGroup www www
    </IfModule>
 </VirtualHost>

НО при перезагрузки Apachа пишет что модуль не включен:

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

root# /usr/local/etc/rc.d/httpd restart
Invalid command 'php_admin_flag', perhaps mis-spelled or defined by a module not included in the server configuration
Invalid command 'php_admin_value', perhaps mis-spelled or defined by a module not included in the server configuration

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: apache php как защитить директории сервера

Непрочитанное сообщение zg » 2009-03-04 18:26:24

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

<VirtualHost *:80>
    ServerName dva.com
    ServerAlias www.dva.com dva.ru www.dva.ru dva
    ServerAdmin some@admin
    DocumentRoot "/usr/local/www/apache22/data/dva"
    <Directory "/usr/local/www/apache22/data/dva">
         AllowOverride All
         Order Deny,Allow
         Allow from all
         Options All
    </Directory>
    <IfModule mod_php5.c>
        AddType application/x-httpd-php .php
        DirectoryIndex index.php index.html index.htm
        php_admin_value open_basedir "/usr/local/www/apache22/data/dva"
    </IfModule>
</VirtualHost>

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

zg# apachectl configtest
Syntax OK
zg#

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

zg# php "/usr/local/www/apache22/data/dva/index.php"
Root directory
Array
(
    [0] => /COPYRIGHT
    [1] => /bin
    [2] => /boot
    [3] => /cdrom
    [4] => /compat
    [5] => /dev
    [6] => /dist
    [7] => /etc
    [8] => /home
    [9] => /lib
    [10] => /libexec
    [11] => /media
    [12] => /mnt
    [13] => /proc
    [14] => /rescue
    [15] => /root
    [16] => /sbin
    [17] => /sys
    [18] => /tmp
    [19] => /usr
    [20] => /var
)
zg# links -dump http://dva
   Root directory
zg#

Аватара пользователя
shuk007
рядовой
Сообщения: 45
Зарегистрирован: 2009-02-05 12:19:38

Re: apache php как защитить директории сервера

Непрочитанное сообщение shuk007 » 2009-03-04 18:45:19

а как установить mod_php5.c в Apache, у меня он не установлена

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: apache php как защитить директории сервера

Непрочитанное сообщение zg » 2009-03-04 19:12:50

shuk007 писал(а):установить mod_php5.c в Apache

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

zg# grep php /usr/local/etc/apache22/httpd.conf
LoadModule php5_module libexec/apache22/libphp5.so
zg#

Аватара пользователя
shuk007
рядовой
Сообщения: 45
Зарегистрирован: 2009-02-05 12:19:38

Re: apache php как защитить директории сервера

Непрочитанное сообщение shuk007 » 2009-03-13 15:03:48

у меня не получилось :st: