The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Помещение SSH пользователей в изолированное окружение. (ssh security chroot patch limit)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: ssh, security, chroot, patch, limit,  (найти похожие документы)
From: Misha Volodko <pablo@honey.org.ua.> Newsgroups: email Date: Mon, 15 May 2007 14:31:37 +0000 (UTC) Subject: Помещение SSH пользователей в изолированное окружение. Вступление Периодически возникает необходимость дать ограниченный доступ пользователям по протоколу ssh. Например это может быть пользователь хостинга, которому необходима возможность вносить исправления непосредственно на сервере или же загружать контент используя безопасные протоколы. К сожалению классический ftp передает логин и пароль пользователя в открытом виде, что не всегда устраивает. 1. Установка Все происходящее проверялось на Debian Etch и Suse Ent. 9 Необходимо загрузить последнюю версию пакета openssh с chroot патчем с сайта http://chrootssh.sourceforge.net/download/ Я использовал пакет openssh-4.5p1-chroot.tar.bz2. Дополнительно могут понадобится пакеты: zlib1g-dev libssl-dev Это относится к Debian, в случае другого дистрибутива, пакеты могут называться иначе. Я использовал переменную &#8211;prefix при сборке, для того, чтобы не затереть тот openssh, который поставляется с системой. Новый пакет я размещаю в отдельной директории. Это упростит обслуживание в дальнейшем. Соответственно команда конфигурации: ./configure --prefix=/usr/local/chrooted-openssh Далее собираем и устанавливаем пакет: # make && make install 2. Создание chroot окружения Немного ручной работы, необходимо создать окружение chroot. Допустим пользовательский сайт находится в директории: /var/www/client-site.com Создадим дерево директорий: # pwd /var/www/client-site.com # mkdir -p dev bin usr/local Создадим псевдоустройства: # mknod ./dev/zero c 13 12 # mknod ./dev/null c 13 2 Заполним окружение chroot. Файлы необходимые в директории /var/www/client-site.com/bin: cp, ls, mkdir, mv, rm, rmdir, bash Файлы необходимые в директории /var/www/client-site.com/usr/lib: ld-linux.so.2 libc.so.6 libdl.so.2 libncurses.so.5 Это тот минимум, который необходим для запуска /bin/bash Опять таки, это в случае использования Debian, в любом другом случае перед копирование какого либо исполняемого файла в /var/www/client-site.com/bin необходимо проверить, от каких библиотек зависит его выполнение и скопировать их также. Например: # ldd /bin/sh linux-gate.so.1 => (0xffffe000) libncurses.so.5 => /lib/libncurses.so.5 (0xa7f3c000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xa7f38000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xa7e06000) /lib/ld-linux.so.2 (0xa7f84000) Для проверки работоспособности chroot можно выполнить команду: # chroot /var/www/client-site.com/ /bin/sh После этого текущим корневым каталогом станет /var/www/client-site.com/, это можно проверить с помощью команд ls и pwd (если конечно, скопированы необходимы их библиотеки). :) В случае если запуск chroot выдает что-то вроде: chroot: cannot run command `/bin/sh': No such file or directory Необходимо проверить все ли библиотеки скопированы в chroot окружение. Проверьте с помощью ldd. 3. Настройка chrooted ssh Необходимо изменить порт который будет слушать новый демон. По умолчанию 22, но у нас же уже есть один ssh, который слушает 22 порт. Я использую порт 8022. Добиться этого можно добавив в файл /usr/local/chrooted-openssh/etc/sshd_config строку: Port 8022 Следующий шаг добавление пользователя который будет использовать эту тюрьму. :) Стандартными средствами необходимо добавить пользователя. Следует учесть, что если пользователь использует не bash, а какой-либо другой shell, необходимо скопировать shell и все необходимы ему библиотеки в chroot окружение. # adduser --home /var/www/client-site.com --shell /bin/bash --no-create-home --gecos Test_chrooted chrooted Adding user `chrooted' ... Adding new group `chrooted' (1002) ... Adding new user `chrooted' (1002) with group `chrooted' ... Not creating home directory `/var/www/client-site.com'. Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully На данном этапе пользователь chrooted имеет обычный доступ по ssh (не chrooted). Демон openssh определяет необходимость запихнуть в chroot пользователя по наличию у него в поле home точки. Точка указывает каталог от которого начинается chroot. Т.е. поддиректорими точки должны быть bin/, usr/ и прочие. Т.е. в нашем случае необходимо изменить значение home пользователя на что-то вроде /var/www/client-site.com/./ После этого можно пробовать зайти по ssh (используя порт 8022) под пользователем chrooted. Пользователь должен быть заперт в домашней директории. После этого у пользователя остается возможность зайти с своим логином/паролем на стандартный ssh который слушает 22 порт. Возможных решений два: не использовать стандартный ssh и полностью перейти на chrooted ssh. Либо же продолжать использовать оба запретив пользователю вход с помощью директив: DenyGroups или DenyUsers в файле конфигурации sshd_config. P.S. Часто возникают вопросы по поводу функциональности sftp-сервера в chroot. К сожалению имеющаяся на данный момент версия не реализует этого функционала. Точнее возможно и реализует, но я не нашел способа. Зато нашел большое количество желающих это сделать. :) Подробнее можете посмотреть в листе рассылки архив которой доступен на сайте http://chrootssh.sourceforge.net/

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, raver (??), 10:20, 17/05/2007 [ответить]  
  • +/
    По поводу sftp сервера с chroot окружением имеется решение - называется - scponly - помоему где-то на sf.net лежит. Устанавливается уже на готовую систему и начинает работать в соответствии с home директорией созданного пользователя :)
     
  • 1.2, IIapa3uT (?), 08:41, 18/05/2007 [ответить]  
  • +/
    Наверное проще сделать шелл который чрутится,
    чем использовать отдельный ssh сервер,
    причем я так думаю и программы типа sftp и scp будут также работать в чруте
     
     
  • 2.4, xeon (??), 23:58, 12/06/2007 [^] [^^] [^^^] [ответить]  
  • +/
    если не секрет - как?
     

  • 1.3, garamail.ru (?), 16:40, 24/05/2007 [ответить]  
  • +/
    Чета под Free некорректно работает.....
     
  • 1.5, Neolite (?), 12:52, 14/03/2008 [ответить]  
  • +/
    Согласен, с автором последнего поста: под фрей не chroot'ит =\
     
  • 1.6, kodein (?), 22:37, 24/05/2008 [ответить]  
  • +/
    "Наверное проще сделать шелл который чрутится,
    чем использовать отдельный ssh сервер,
    причем я так думаю и программы типа sftp и scp будут также работать в чруте"

    И правда - как ? было бы очень полезно.

     
     
  • 2.7, Z0RG (?), 05:29, 04/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Писали уже выше. scponly
    http://sublimation.org/scponly
     

  • 1.8, василий (??), 10:45, 29/12/2010 [ответить]  
  • +/
    если у кого есть зеркало с http://chrootssh.sourceforge.net/download/

    поделитесь а ???

    там почему-то пусто

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру