Итак, давайте рассмотрим принцип работы защиты служб. Для этого создается директория, которая является для программы корневой. В Linux для этого существует команда chroot
, которая создает chroot-окружение. Получается псевдокорневая файловая система внутри существующей.
Выше этой директории программа, работающая в окружении chroot, попасть не может. Посмотрите на рис. 4.1. Здесь показана часть файловой системы Linux. Во главе всего стоит корневая директория /. В ней находятся /bin, /usr, /var, /home. В папке /homeрасположены каталоги пользователей системы. Мы создаем здесь новую директорию, для примера назовем ее chroot, и она станет корнем для службы. В ней есть свои каталоги /bin, /usrи т.д., и сервис должен работать с ними, а все, что выше /home/chroot, будет недоступно.

Рис. 4.1. Схема работы chroot-окружения
На рис. 4.1 в рамку обведены папки, которые видны службе. Именно в этом пространстве будет работать сервис, считая, что это и есть реальная файловая система сервера.
Если хакер проникнет в систему через защищенную службу и захочет просмотреть директорию /etc, то он увидит каталог /home/chroot/etc, но никак не системный /etc. Чтобы взломщик ничего не заподозрил, в папке /home/chroot/etcможно расположить все необходимые файлы, но содержащие некорректную информацию. Злоумышленник, запросив файл /etc/passwdчерез уязвимый сервис, получит доступ к /home/chroot/etc/passwd, потому что служба видит его системным.
Так, например, файл /home/chroot/etc/passwdможет содержать ложную информацию. На работу системы в целом это не повлияет, потому что ОС будет брать пароли из файла /etc/passwd, а службе реальные коды доступа в систему не нужны, поэтому в файл /home/chroot/etc/passwdможно засунуть все, что угодно.
Встроенная в Linux-систему программа chroot для создания "Виртуальное пространство" виртуальных пространств на сервере сложна и не очень удобна для применения. Нужно выполнить слишком много операций. Именно поэтому администраторы больше любят использовать программу jail, которую можно найти в Интернете по адресу http://www.jmcresearch.com/projeсts/jail/. Скачайте ее и поместите архив в свой каталог. Для того чтобы разархивировать его, нужно выполнить следующую команду:
tar xzvf jail.tar.gz
В текущей директории появится новый каталог jailс исходным кодом программы. Да, именно с исходным, потому что она открыта и поставляется в таком виде.
Теперь нужно перейти в каталог jail/src( cd jail/src
) и отредактировать файл Makefile (например, редактором МС). В самом начале файла идет множество комментариев, и их мы опустим. После этого вы сможете увидеть следующие параметры:
ARCH=__LINUX__
#ARCH=__FREEBSD__
#ARCH=__IRIX__
#ARCH=__SOLARIS__
DEBUG = 0
INSTALL_DIR = /tmp/jail
PERL = /usr/bin/perl
ROOTUSER = root
ROOTGROUP = root
Вначале задается тип ОС, по умолчанию установлен LINUX
. А следующие три строки для FreeBSD, Irix и Solaris закомментированы. Оставим все, как есть. Что нужно изменить, так это директорию для установки (параметр INSTALL_DIR
). В последней версии (на момент написания книги) по умолчанию используется каталог /tmp/jail. Не знаю, зачем это сделали, ведь этот каталог предназначен для временных файлов и должен быть доступен для чтения абсолютно всем. Раньше по умолчанию был /usr/local, и именно его я советую здесь указать. Больше ничего менять не надо.
Для выполнения следующих директив вам понадобятся права root, поэтому войдите в систему как администратор или получите нужные права, запустив команду su root
.
Перед компиляцией и установкой убедитесь, что у файла preinstall.sh есть права на выполнение. Если нет, то воспользуйтесь следующей командой:
chmod 755 preinstall.sh
Теперь все готово к установке. Находясь в директории jail/src, выполните команды:
make
make install
Если все прошло успешно, то в каталоге /usr/local/binдолжны появиться программы: addjailsw, addjailuser, jail и mkjailenv.
4.7.3. Работа с программой jail
Для начала создадим каталог /home/chroot, который станет корневым для программы, на которой мы будем испытывать систему. Для этого выполним команду:
Читать дальше
Конец ознакомительного отрывка
Купить книгу