Это руководство повествует о том как установить и запустить 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 выйти не получится.

Ссылки:

 

Оставить мнение

Check Also

Жизнь без антивируса. Как побороть малварь голыми руками и обезопасить себя на будущее

На вопрос «Какой антивирус вы используете на своей виндовой машине?» многие безопасники (в…