необходимые серверу в процессе работы. Кроме того, иногда приходится помещать в каталоги поддерева chroot некоторые системные файлы. Определить набор файлов, необходимых серверу, достаточно сложно. Для того чтобы выяснить, какие файлы требуются в процессе работы, надо прочитать документацию, а если нужные сведения там отсутствуют, вам придется проанализировать содержимое дистрибутивного пакета. Для получения информации о файлах, содержащихся в пакете, можно использовать инструменты tar, rpm или dpkg. Очевидно, что копировать в каталоги поддерева chroot надо не все файлы; например, для работы сервера не нужна документация. Чтобы выяснить, какие файлы необходимы серверу, можно использовать программу strace. Вызвав команду strace имя_серверной_программы, вы получите сведения о файлах, используемых в процессе работы сервера, в том числе имена файлов, которые сервер открывает самостоятельно.

На заметку

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

Копирование системных файлов

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

• Библиотеки. Во время работы многие серверы используют динамические библиотеки. Обычно они хранятся в каталоге /lib или /usr/lib. Выяснить, какие библиотеки нужны конкретному серверу, позволяет программа ldd. Например, чтобы определить, какие библиотеки использует сервер имен, надо выполнить команду ldd /usr/sbin/named. Файлы библиотек надо поместить в каталог поддерева chroot.

• Программы поддержки. Для работы некоторых серверов нужны дополнительные программы. Например, если Web-сервер поддерживает CGI-сценарии, ему могут понадобиться интерпретатор Perl (/usr/bin/perl) и файлы, обеспечивающие работу этого интерпретатора. Исполняемый файл Perl и дополнительные файлы надо скопировать в соответствующий каталог поддерева chroot. Кроме того, программы, необходимые для работы сервера, могут, в свою очередь, использовать файлы библиотек. В некоторых случаях объем данных, применяемых для поддержки языков сценариев, намного превышает объем Web-сервера.

• Файлы устройств. Ряд серверов непосредственно обращается к файлам устройств. Например, сервер резервного копирования взаимодействует с накопителем на магнитных лентах, а некоторым библиотекам и программам нужны специальные файлы устройств, такие как /dev/zero или /dev/null. Обычно файлы устройств располагаются в каталоге /dev. Копировать файлы из этого каталога бессмысленно, вместо этого надо повторно создать их в поддереве с помощью mknod. Соответствующая команда может выглядеть следующим образом: mknod /opt/chroot/dev/st0 с 9 0. Файлы устройств предоставляют доступ к ресурсам компьютера, поэтому создавать их в поддереве chroot следует только в том случае, когда они действительно необходимы.

• Специальные файловые системы. Иногда серверы используют специальные файловые системы или инструменты, предназначенные для работы с такими файловыми системами. Например, некоторые серверы обращаются к /proc. Подобные каталоги нельзя непосредственно копировать. Вместо этого надо создать дополнительную запись в файле /etc/fstab и смонтировать файловую систему в пределах поддерева chroot. Исходную систему /proc нельзя удалять, ее надо дублировать. Необходимо помнить, что при наличии доступа сервера к /proc взломщику автоматически предоставляются дополнительные возможности для контроля над системой.

• Базы данных с информацией о пользователях. Во время работы ряд серверов обращается к /etc/passwd, /etc/group, /etc/shadow и другим файлам, содержащим информацию о пользователях. Серверам, которые используют Pluggable Authentication Module, необходима инфраструктура РАМ, в частности, файл /etc/pam.conf, содержимое /etc/pam.d и /etc/security, а также библиотеки в файлах /lib и /lib/security (в именах файлов библиотек содержатся символы pam). Для того чтобы выяснить, какие файлы необходимо скопировать в каталоги поддерева chroot, надо проанализировать содержимое пакета РАМ.

• Файлы протоколов. Если сервер создает во время работы файлы протоколов, вам необходимо подготовить каталоги для их размещения. Некоторые серверы используют при создании файлов протоколов демон syslogd, в этом случае вам надо скопировать данную программу в поддерево chroot. Многие серверы можно сконфигурировать так, чтобы протоколирование выполнялось без использования syslogd.

Для серверов, самостоятельно вызывающих функцию chroot(), обычно приходится копировать в каталоги поддерева гораздо меньше файлов, чем для серверов, запускаемых с помощью программы chroot. Если сервер вызывает chroot(), то перед вызовом данной функции он обычно загружает библиотеки, системные файлы и остальные необходимы ему данные.

На заметку

Чтобы не создавать угрозу безопасности системы, помещайте в каталоги поддерева chroot лишь минимальный набор файлов. Копировать файл следует только в том случае, если вы твердо знаете, что этот файл используется в работе сервера. Что же касается остальных файлов, выяснить, необходимы ли они, можно, запустив сервер на выполнение (если в сервере предусмотрен режим отладки, желательно включить его). Если серверу недостает какого-либо файла, он сообщит об этом.

Настройка сервера для работы в рамках поддерева chroot

Создав поддерево chroot, можно приступать к его использованию. Для этого надо сконфигурировать сервер для работы в рамках поддерева, организовать запуск сервера и обеспечить контроль доступа к поддереву chroot извне. Решение этих задач рассматривается в данном разделе. Здесь же будет приведен пример запуска сервера имен в пределах поддерева chroot.

Запуск сервера в рамках поддерева chroot

Если сервер осуществляет вызов функции chroot(), вероятнее всего, что в его конфигурационном файле содержится одна или несколько опций, предназначенных для управления

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату