Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #93, СЕНТЯБРЬ 2006 г.

Под защитой песочного демона

Евгений Зобнин ака j1m

Хакер, номер #093, стр. 093-118-1


(j1m@list.ru)

Особенности функционирования ssh в chroot-окружении

Когда возникает вопрос организации доступа к удаленной машине, лучшего решения, чем ssh, не найти. Как волшебная палочка, ssh делает друзей гостями, а недругов выставляет за дверь. Но в неумелых руках волшебство может превратиться в черную магию и обернуться против своего хозяина. Добрый волшебник Мэрлин расскажет, как не допустить такое превращение и уберечь себя от того, что скрывается внутри ящика Пандоры.

[предисловие]

Продолжая тему изолированных окружений времени исполнения или попросту "песочниц", предлагаю твоему вниманию очередную статью в этом, уже можно сказать, цикле. В прошлый раз мы рассмотрели преимущества технологии jail, средства для создания виртуальных серверов в ОС FreeBSD. В том материале акцент был сделан на самой технологии виртуализации, а пример с ssh приведен только для демонстрации практической пользы jail-окружений. Сегодня мы немного изменим круг наших интересов (если, конечно, никто не против) и поместим в его центр сам ssh-сервер, а chroot-окружение будем использовать только как средство достижения заветных целей. Кроме того, в качестве рабочей платформы сегодня будет выступать Linux, лидер по количеству продаж и установок :).

Перед нами стоит задача организации удаленного доступа к нашей машине. Мы должны раздавать аккаунты недоверенным пользователям в большом количестве и без проверки личной информации. Само собой, предоставление доступа такому контингенту потребует особых мер защиты, потому как трудно определить истинные намерения человека только по его имени и IP-адресу :). Правильной настройки ssh-сервера и брандмауэра в данном случае не достаточно, необходимо ограничение пользователя уже внутри самой системы. Поэтому лучшим решением будет помещение юзеров в изолированную среду, chroot-окружение, с обрезанием всего, что может быть использовано в корыстных целях.

[свобода свободе рознь]

Итак, вооружившись знаниями и взяв в руки флаг "Не допустим браконьерства!", отправляемся на защиту наших рубежей. Во-первых, следует определить, какие команды могут понадобиться пользователям после того, как они окажутся внутри chroot. В зависимости от того, для каких целей организовывается доступ, это может быть предоставление доступа клиентам хостинга к их страничкам, хранение важной информации или банальный прокси, вариантов много. Поэтому стоит сразу обдумать, какие компоненты ОС будут доступны клиентам.

Создание chroot-окружения начинается с организации минимальной каталоговой структуры внутри выделенного каталога и копирования туда программ, о которых мы уже подумали, а также необходимых для их нормальной работы библиотек (проверяется с помощью /usr/bin/ldd). Кроме того, понадобятся некоторые элементы каталога /dev. Копировать все это руками крайне неинтересно, поэтому мы воспользуемся небольшим скриптом, который сделает грязную работу за нас:

# vi ~/bin/mkchroot

#!/bin/sh

CHROOT=$1

# какие команды мы хотим предоставить пользователям?

CMDS="/bin/sh /bin/bash /bin/ls /bin/cp /bin/mv /bin/rm /bin/mkdir /usr/bin/id"

Содержание  Вперед на стр. 093-118-2