мой вопрос был таким
"Каким образом вы ограничиваете 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, Вы говорите верно, но с позиции администратора ВПС, например, под 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.