• Партнер

  • Это руководство повествует о том как установить и запустить OpenSSH с
    chroot-ограничением. При помощи такой настройки появляется возможность дать
    пользователю shell доступ без опасения, что он сможет порушить весь сервер.
    Таким образом "входящий" юзер будет заперт в своей домашней директории без
    возможности покинуть ее.

    В примере расстраивается система Debian Sarge (Debian 3.1), а SSH в chroot
    будет установлен так, что по прежнему будет использовать стандартный файл
    конфигурации /etc/ssh/ и останется возможность работать со старым скриптом /etc/init.d/ssh.

    1. Устанавливаем новую версию Zlib

    Для работы необходима новая версия архиватора, так как в старой была
    обнаружена ошибка, способная скомпрометировать систему:

    cd /tmp
    wget http://www.zlib.net/zlib-1.2.3.tar.gz
    tar xvfz zlib-1.2.3.tar.gz
    cd zlib-1.2.3
    make clean
    ./configure -s
    make
    make install

    2. Устанавливаем chroot-нутый SSH

    Это достаточно просто. Скачиваем пропатченные исходники OpenSSH, настраиваем
    директории (/usr для исполняемых файлов и /etc/ssh для конфигурационных файлов)
    и разрешаем PAM аутентификацию:

    cd /tmp
    apt-get install libpam0g-dev openssl libcrypto++-dev libssl0.9.7 libssl-dev ssh
    wget http://chrootssh.sourceforge.net/download/openssh-4.2p1-chroot.tar.gz
    tar xvfz openssh-4.2p1-chroot.tar.gz
    cd openssh-4.2p1-chroot
    ./configure --exec-prefix=/usr --sysconfdir=/etc/ssh --with-pam
    make
    make install

    3. Настрйока chroot

    Создаем среду для работы пользователя /home/chroot, это и будет та директория
    куда попадет SSH пользователь и откуда выхода он иметь
    не будет. Для работы потребуется создать ряд директорий и скопировать нужные
    бинарники с библиотеками:

    mkdir /home/chroot/
    mkdir /home/chroot/home/
    cd /home/chroot
    mkdir etc
    mkdir bin
    mkdir lib
    mkdir usr
    mkdir usr/bin
    mkdir dev
    mknod dev/null c 1 3
    mknod dev/zero c 1 5

    Для автоматизации можно использовать скрипт, который сделает все правильно и
    более быстро: create_chroot_env. Если есть
    потребность расширить список приложений, то их можно просто прописать в скрипте
    в параметр APPS.

    Затем делаем следующее:

    cp /lib/libnss_compat.so.2 /lib/libnsl.so.1 /lib/libnss_files.so.2 ./lib/
    echo '#!/bin/bash' > usr/bin/groups
    echo "id -Gn" >> usr/bin/groups
    touch etc/passwd
    grep /etc/passwd -e "^root" > etc/passwd

    Следует так же скопировать строчку с группой в которой создадим пользователя
    из /etc/group в /home/chroot/etc/group. В данном примере мы создадим
    пользователя в группе user и, соответственно, копирование будет выглядеть так:

    grep /etc/group -e "^root" -e "^users" > etc/group

    Рестартуем SSH:

    /etc/init.d/ssh restart

    4 Создаем пользователя для chroot

    Даже с SSH, запущенным в chroot среде, остается возможность зайти на машину
    вне ограничений, накладываемых средой. Как же SSH решить кого ограничивать, а
    кого нет? Это решается просто: "закрытая" SSH ищет заходящего пользователя в
    /etc/passwd и если домашняя директория пользователя содержит в названии ".", то
    пользователь подвергается ограничениям chroot.

    Пример:

    user_a:x:2002:100:User A:/home/user_a:/bin/bash
    user_b:x:2003:100:User B:/home/chroot/./home/user_b:/bin/bash

    Очевидно, что первый пользователь получит полные права, а второй будет
    ограничен. Для работы создадим пользователя testuser с домашней директорией /home/chroot/./home/testuser
    и зачислим его в группу users.

    useradd -s /bin/bash -m -d /home/chroot/./home/testuser -c "testuser" -g
    users testuser

    Зададим пароль:

    passwd testuser

    Скопируем пользователя из /etc/passwd в /home/chroot/etc/passwd:

    grep /etc/passwd -e "^testuser" >> /home/chroot/etc/passwd

    Группу мы уже скопировали, но если вы создали пользователя в другой группе, то
    необходимо скопировать запись о группе в /home/chroot/etc/group:

    grep /etc/group -e "^othergroup" >> /home/chroot/etc/group

    Теперь можно попробовать залогиниться в SSH под testuser. если все прошло
    правильно, то дальше /home/chroot выйти не получится.

    Ссылки:

     

    Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии