Безопасность веб-сервера: запретить сайту вылезти из своей папки

Добрый вечер!

Собственно сей вопрос: необходимо определённому сайту apache запретить вылезти дальше своей папки DocumentRoot

Имеем: сервер с debian, apache2-mpm-itk

Пользователь testuser
сделан chroot, через ssh в /home пользователь видит только себя.
testuser@debian:~$ ls /home
testuser


физически пользователь лежит в /home/jail/home/testuser

папка DocumentRoot для Apache — /home/jail/home/testuser/www

в конфиге apache виртуального хоста testuser прописано
AssignUserId testuser testuser,
что по-идее должно былол сделать, чтобы апач для сайта testuser запускался от его имени.

Однако, допустим, выполнивс сайта testuser скрипт
#!/usr/bin/perl
print "Content-type: text/html\n\n";
open FILE, "/etc/apache2/apache2.conf" or die $!;
print <"FILE">;

прекрасно видно содержимое конфига апача.

Как этого избежать? Как же всё-таки сделать, чтобы скрипты, запускаемые на сайте testuser не могли выйти дальше окружения testyuser?
  • Вопрос задан
  • 4405 просмотров
Пригласить эксперта
Ответы на вопрос 7
exIV
@exIV
Вы путаете кислое с горячим :) Без разницы где и что лежит, главное какие и у кого права на «это» :)

Если у вас есть права для всех пользователей на чтение файла /etc/apache2/apache2.conf, то он и будет читаться любым пользователем :) и причем тут вообще сайт?

Не хотите чтобы testuser читал /etc/apache2/apache2.conf снимите права и все :)
Ответ написан
hshhhhh
@hshhhhh
Во фре есть такая вещь как jail, в линуксе это, по-моему. можно решить через Selinux.
Ответ написан
@Jazzist
«Вылезти» нужно конкретизировать. exiv.habrahabr.ru прав.
Ответ написан
pentarh
@pentarh
Все это надо настраивать через apparmor/selinux. Гемор еще тот, но оно того стоит.

Апач в чрут ложить себе дороже. Надо всю локальную структуру бинарников и конфигов воссоздавать для каждого сайта. Проще уж сайты по контейнерам openvz раскидать.
Ответ написан
Комментировать
wartur
@wartur
В debian по умолчанию права на чтение неправильно настроены, надо поменять что чтение etc для всех кроме root запрещен — это все проблемы решит.

chroot использоваться для виртуальных хостов не требуется, он создан для другого, для этого есть mpm-itk собственно.
Ответ написан
Установите mod_chroot для apache если я правильно понял, что вы хотите
Ответ написан
SchrodingersCat
@SchrodingersCat
Пропишите open_basedir
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы