Под защитой песочного демона Евгений Зобнин ака 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" |