декабря 20 2008 04:29 пп

Запуск web сервера apache2 в среде chroot в Debian и Ubuntu.

vault-bank-backup-safe.jpg

Для начала давайте разберемся что такое chroot и для чего оно нам надо. Обратимся в wikipedia для разъяснения.

chroot в Unix-подобных операционных системах — это операция изменения корневого каталога. Программа, запущенная с изменённым корневым каталогом, будет иметь доступ только к файлам, содержащимся в данном каталоге. Поэтому, если нужно обеспечить программе доступ к другим каталогам или файловым системам (например, /proc), нужно заранее примонтировать в целевом каталоге необходимые каталоги или устройства.

Изменение корневого каталога производится при помощи системного вызова chroot(2). Изменение корневого каталога затрагивает только текущий процесс (то есть процесс, сделавший системный вызов chroot(2)) и всех его потомков. Если требуется запустить некоторую программу с изменённым корневым каталогом, но в данной программе не предусмотрено выполнение вызова chroot(2), используют программу chroot(8). Эта программа принимает в качестве параметров новый корневой каталог и путь к программе. Она сначала сама выполняет вызов chroot(2) для изменения собственного корневого каталога на указанный, а затем запускает программу по заданному пути. Так как изменённый корневой каталог наследуется потомками процессов, программа запускается с изменённым корневым каталогом.

Сам по себе термин chroot может относиться или к концепции изменений корневого каталога, или к системному вызову chroot(2), или к программе chroot(8), что обычно понятно из контекста.

Программа, корень которой был перенесён в другой каталог, не может обращаться к файлам вне этого каталога. Это обеспечивает удобный способ помещения в «sandbox» («песочницу») тестовой, ненадёжной или любой другой потенциально опасной программы. Это также простой способ механизма «jail» («тюрьмы»). Но наиболее часто chroot используется для сборки дистрибутивов или отдельных программ как бы в «чистой» среде.

Теперь можно начинать настройку нашего вебсервера, помещение его в среду chroot мы будем делать при помощи mod_chroot.

Установим и включим mod_chroot выполнив пару команд

Код:


apt-get install libapache2-mod-chroot
a2enmod mod_chroot
/etc/init.d/apache2 force-reload

Теперь настроим наш веб сервер, для chroot будет использоваться директория /var/www. По цмолчанию файл поцесса apache хранится в /var/run/apache2.pid, но после помещения apache в chroot он будет перемещен в /var/www/var/run/apache2.pid, необходимо создать эту директорию

Код:


mkdir -p /var/www/var/run
chown -R root:root /var/www/var/run

Затем надо указать в конфиге apache что мы хотим использовать директорию /var/www как среду chroot, для этого отредактируем файл /etc/apache2/apache2.conf, найдите там строку в которой указан путь для хранения файла pid и добавьте ниже строку, так как показано ниже.

Код:


[...]
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
PidFile /var/run/apache2.pid
ChrootDir /var/www
[...]

Далее надо заменить в конфигурационных файлах виртуальных хостов пути DocumentRoot, так как например путь /var/www/ теперь будет для apache директорией /, но есть второй способ, который позволит не изменять конфигурацию, а просто создать символические ссылки на нужные директории. Например нам надо оставить в качестве DocumentRoot директорию /var/www, ниже приведен пример правильного создания символических ссылок.

Код:


mkdir -p /var/www/var
cd /var/www/var
ln -s ../../ www

Теперь остановите apache и создайте символическую ссылку на pid файл, затем снова запустите apache

Код:


/etc/init.d/apache2 stop
ln -s /var/www/var/run/apache2.pid /var/run/apache2.pid
/etc/init.d/apache2 start

Теперь ваш веб сервер работает в chroot среде, и должен без проблем показывать html и php страницы, но у вас могут возникнуть проблемы с ипользовванием CGI или SUphp, для этого надо скопировать в chroot среду файлы интерпритаторов (/usr/bin/perl, /usr/sbin/suphp) и необходимые для их работы библиотеки. Узнать какие файлы нужны для работы например suphp можно командой ldd

Код:


server2:/var/www/web1/log# ldd /usr/sbin/suphp
linux-gate.so.1 => (0xffffe000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e34000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7e0f000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7e03000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7cd2000)
/lib/ld-linux.so.2 (0xb7f23000)

Скопируйте все неоходимое в среду chroot, проблемы должны исчезнуть.
Для более подробной инфрмации и решения некоторых проблем рекомендуется посетить ресурс http://core.segfault.pl

Оригинал статьи (англ) http://www.howtoforge.com

Надеюсь эта статья поможет вам и будет полезна.

Популярность: 43%

2 Комментариев »

1 звезда2 звезд3 звезд4 звезд5 звезд (Еще не оценили)
Загрузка ... Загрузка ...
Дай же, не жадничай!
ЯндексЯндекс. ДеньгиХочу такую же кнопку

2 Responses to “Запуск web сервера apache2 в среде chroot в Debian и Ubuntu.”

  1. MatroskinCat on 29 Дек 2008 at 01:20 #

    Позвольте поинтересоваться вашим личным мнением на счёт чрутинга.
    1. Обязательная ли это деталь?
    2. Что из следующего вы бы предпочли отправить в chroot среду: radius (в том чиле клиент), apache, bind9, ну и так далее по вашему усмотрению. Или быть может всё это?

    Просто интересно узнать ваше мнение на самом деле.

  2. Stepanoff on 07 Янв 2009 at 12:46 #

    Насчет необходимости чрутинга каждый решит для себя, надо ли ему это или нет, ведь Вы же не станете ставить в чрут например интранет сайт офиса на 15 человек. Помещение в чрут апача, и бинд9 надо если есть реальная угроза взлома, тоесть популярный ресурс, с использованием скриптов которые могут быть уязвимы и тд. Насчет радиус клиента так же, все зависит лишь от важности сервиса, передаваемых его посредством данных.

Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.


Самые популярные статьи

  • Установка почтового сервера Postfix + Dovecot + MYSQL и виртуальных доменов
  • Установка и настройка DNS сервера bind9 Ubuntu-Debian HOWTO
  • Установка Samba сервера на Ubuntu или Debian за 5 минут
  • Подборка wide-screen обоев высокого разрешения
  • Mail.ru Агент в Linux
  • Установка и настройка DHCP сервера
  • Подробное руководство по настройке wifi соединения с шифрованием разных типов
  • Удаленное подключение к рабочему столу Linux из Windows с помощью Xming и SSH
  • Настройка ограничения и распределения канала (HTB Shaper)
  • Создание загрузочной флэшки с Ubuntu 8.04 Live или Server
  • Настройка маршрутизации в Ubuntu Linux для начинающих
  • Настройка вебкамер Genius и Acer Crystal Eye в Ubuntu 8.04
  • Редактирование текста при помощи SED
  • Сотня лучших полезных программ с открытым исходным кодом.
  • Небольшая подборка обоев "Linux like"
  • Установка VMware Server на Ubuntu 8.04
  • Блокировка нежелательных URL с помощью iptables
  • Запуск виртуальных хостов Apache2 от разных пользователей
  • Виртуализация с помощью Qemu
  • Вышел пакет PlayOnLinux 3.0 для запуска Windows игр в Linux
  • Установка драйвера MADWIFI для сетевого адаптера Atheros 5xxx
  • Установка сервера голосового общения TeamSpeak
  • Установка и настройка SSHD в среде chroot при помощи makejail
  • HDR обои на рабочий стол 1920x1200
  • Настройка маршрутизации с помощью Quagga (zebra)
  • Установка системы резервного копирования BackupPC
  • Установка и настройка L2TP сервера xl2tpd или l2tpd
  • Настройка поддержки мультимедиа в Ubuntu 8.04
  • Релиз Midnight Commander 4.6.3
  • Что такое Zeroconf и с чем его едят

  • « Включение звука в FreeBSD | Релиз Midnight Commander 4.6.3 »

    Рейтинг блогов Rambler's Top100
    службы мониторинга серверов