kdj

Рейтинг
116
Регистрация
29.02.2008

мой вопрос был таким

"Каким образом вы ограничиваете chroot Apache?"

Ваши ответы:

1. open_basedir - решение для ПХП (спасибо myhand что указал на опечатку)

2. "А зачем ограничивать доступ к системным файлам? Там ге надо - и так все ужато" (верно, но я хочу запереть скрипт в пределах хоста где он запущен)

3. "Запрет доступа к файлам других сайтов - реализуется для "не mod_php" - достаточно стандартными средствами. Каждому сайту - свой пользователь для скриптов. В чужой хом он не суется." (под каким пользователем будет работать Апач?)

Вот с чем я экспериментировал

1. php_admin_value open_basedir - работает доступ. скрипт запирается. Как я понял у open_basedir есть некоторые уязвимости.

2. Установил mod_security

в apache2.conf

SecChrootDir /home/www/, т.е. для мы подменяем реальный путь /home/www/ -> /

Недостатки.

а) SecChrootDir общая настройка для всех вирт хостов апача. Изолируется файловая система сервера, но файлы других сайтов остаются доступными.

б) DocumentRoot /home/www/project1 - теперь нужно писать без /home/www/ - DocumentRoot /project1, иначе не хост работать не будет

в) при перезагрузке Warning: DocumentRoot [/project1/] does not exist, но хост работает.Пути начинаются с /project1/, системный файлы недоступны

г) при перезапуске процессы апач завещаются не корректно. Приходится прибивать вручную (тут допускаю косяк сборки, хотя все ставилось из пакетов дебиана)

(98)Address already in use: make_sock: could not bind to address 92.240.70.207:80

no listening sockets available, shutting down

Unable to open logs

failed!

3. установил mod_chroot.c

http://core.segfault.pl/~hobbit/mod_chroot/

написано mod_chroot makes running Apache in a secure chroot environment easy

но пока не разобрался как заставить его работать

получается самый оптимальный вариант php_admin_value open_basedir (когда нужно запереть в докруте)?

Каково ваше мнение?

sever_name      example.com *.example.com


if ($host ~* ^ ([a-z0-9-\.]+)\.example.com$") {
set $subdomain $1;
rewrite ^(.*)$ /index.php/enterprises/$subdomain/$request_uri last;
break;
}

уточняю вопрос

Сервер Debian - Apache+mod_php

Мне нужно запретить чтение любых файлов вне док-рута конкретного виртуального хоста.

Сейчас для чтения доступны все файлы сервера.

просмотр содержимого - /etc/passwd

- disable_functions - system, shell_exec, exec... не влияют на чтение системных каталогов, т.к. оно производится с помощью функции opendir

- у меня не получилось задать open_basedir. в конфиге вирт-хоста апача

php_admin_value openbase_dir "/home/www/project1" - это значение не загружается в ПХП

Работает только если openbase_dir объявить в php.ini, но мне для каждого виртуального хоста нужно установить свою директорию

в понедельник попробую предложенные Вами варианты.

Ahill.spb - думаю ТС изменил IP, и возможно из-за этого нам сложно понять в чем проблема.

На 95% проблема в невнимательности, из-за мелкой опечатки иногда тратишь уйму времени.

ОФФТОП

Zorge.Org:
Это неверный путь для решения.

Zorge, Вы говорите верно, но с позиции администратора ВПС, например, под SEO.

Когда ресурс посещают >100K и он работает на нескольких железках, то появляются подобные нюансы. Кроме того такие ресурсы чаще попадают под DDoS и к нужно быть готовым к этому.

Zorge.Org в апаче виртаул хосты можно настраивать к по именам доменов, так и по портам.

преимущества настройка NameVirtualHost-тов в том что

а) многим так привычнее

б) проще переход на nginx, конфиги апача в таком случае можно не трогать

Настройка по портам, например, позволяет отслеживать кол-ва подключений к каждому апачу с помощью nestat с большей производительностью.

OPC - я в таких случаях делаю запрос непосредственно к апачу, дабы на 100% удостоверится в работоспособности бекенда. В вашем случае http://forum.site.ru:81/. Если работает, то копаю нгинкс. В конфиге nginx у вас возможна опечатка в адресе директивы proxy_pass.

у вас при запросе поддомена открывается основной сайт?

в таком случае я рекомендую разнести по портам виртуальные хосты апача для сайта и его поддоменов

для site.ru - proxy_pass http://192.168.0.0:81;

forum.site.ru - proxy_pass http://192.168.0.0:82;

help.site.ru - proxy_pass http://192.168.0.0:83;

gosmart - ваш доп IP из той-же подсети что и основной или из разных?

Если подсети разные думаю возможен такой вариант

Запросить у провайдера шлюз для второго ИП.

На сервере настроить маршрутизацию route -p add <ИП сети куда нужно попадать под новым IP> mask 255.255.252.0 <новый шлюз>

Скорее всего это означает что ОС на сервере загрузилась и просит ввести имя пользователя и пароль для дальнейшего входа в систему.

Если это вебсервер (который нестроен правильно) то все необходимые вебсервисы Апач, пхп, мускл и т.д. к этому моменту запущены и ваши сайты должны работать.

Я использовал Sisulizer's Kaboom. Бесплатная утилита, позволяет конвертировать множество файлов.

Единственный минус. Ей нельзя указать директорию. Придется файлы из каждой папки перетаскивать в окно программы. Но так все равно быстрее чем конвертировать в Notepad++.

Прощу помощи с инвайтом на хабр.

Изучаю GIT. На хабре есть много статей о нем. Соответственно там есть знающие люди, очень хочется с ними пообщаться.

могу полезен в debian / nginx / php.

Всего: 151