Итак, настройка chroot для SSH требует включения SFTP (SSH File Transfer Protocol), который является частью OpenSSH. Читайте ниже для точных шагов.
Кстати, если вы видите ИМЯ ПОЛЬЗОВАТЕЛЯ во всех заглавных буквах, замените ИМЯ ПОЛЬЗОВАТЕЛЯ именем пользователя, которое вы пытаетесь изменить.
Включение Chrooted SFTP
Включить SFTP очень просто. Откройте /etc /ssh /sshd_config ...
vi /etc/ssh/sshd_config
и убедитесь, что в нем есть следующая строка:
Subsystem sftp /usr/lib/openssh/sftp-server
Затем добавьте следующую строфу в конец файла (добавьте такую строфу для каждого пользователя, для которого вы хотите выполнить chroot):
Match User USERNAME
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Вместо добавления раздела для каждого пользователя вы также можете использовать группы chroot, например, следующим образом:
Match Group users
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Это приведет к тому, что все члены группы пользователей будут переведены в каталог /home.
Перезапустите OpenSSH:
/etc/init.d/ssh restart
Если вы привязываете несколько пользователей к одному и тому же каталогу, но не хотите, чтобы пользователи просматривали домашние каталоги других пользователей, вы можете изменить разрешения для каждого домашнего каталога следующим образом:
chmod 700 /home/USERNAME
После этого вы можете войти в систему с помощью SFTP-клиента, такого как FileZilla или WinSCP.
Включение Chrooted SSH
Включение chrooted SSH немного сложнее, потому что мы должны настроить среду chroot со всеми программами / инструментами (например, / bin / bash, / bin / cp и т.д.), Которые должны быть в состоянии использовать пользователи. Это означает, что мы также должны скопировать все библиотеки, которые нужны этим программам, в chroot-тюрьму. Вы можете сделать это вручную с помощью команды cp, и вы можете узнать, какие библиотеки нужны инструменту, с помощью команды ldd, например:
ldd /bin/bash
Мы также должны создать некоторые устройства, такие как /dev /null, /dev /zero, /dev /tty и /dev /urandom внутри тюрьмы chroot с помощью команды mknod.
Однако это может быть утомительным занятием. К счастью, есть сценарий, который может сделать это для нас.
Для начала нам нужно установить некоторые предварительные условия:
apt-get install sudo debianutils coreutils
Затем мы загружаем make_chroot_jail.sh в /usr /local /sbin и делаем его исполняемым для пользователя root:
cd /usr/local/sbin
wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh
chmod 700 /usr/local/sbin/make_chroot_jail.sh
Прежде чем использовать скрипт, вы можете захотеть добавить некоторые программы (например, /usr /bin /vi) в строку APPS вашего дистрибутива в этом скрипте, чтобы эти инструменты автоматически добавлялись в chroot-тюрьму:
vi /usr/local/sbin/make_chroot_jail.sh
elif [ "$DISTRO" = DEBIAN ]; then
APPS="/bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh /bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync /usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd /usr/bin/vi"
else
Затем мы добавляем символическую ссылку /home /home, которая указывает на /home:
cd /home
ln -s . home
Теперь мы уже можем использовать скрипт. Использование заключается в следующем:
make_chroot_jail.sh username [/path/to/chroot-shell [/path/to/chroot]]
chroot-shell - это специальная оболочка, созданная скриптом для пользователей chroot. Поскольку OpenSSH теперь поддерживает chroot по умолчанию, нам не нужен скрипт для создания специальной оболочки; вместо этого мы можем использовать /bin /bash или /bin /sh.
Неважно, если пользователь уже существует или нет. Если он существует, он будет обновлен; если нет, он будет создан.
make_chroot_jail.sh USERNAME /bin/bash /home
Это создаст / обновит пользователя USERNAME с помощью chroot jail / home.
Чтобы обновить все файлы / библиотеки в тюрьме chroot, запустите
make_chroot_jail.sh update /bin/bash /home
Теперь нам нужно настроить OpenSSH, который похож на конфигурацию SFTP. Откройте /etc /ssh /sshd_config ...
vi /etc/ssh/sshd_config
И добавьте следующую строфу в конце файла (добавьте такую строфу для каждого пользователя, для которого вы хотите выполнить chroot):
Match User USERNAME
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
Вместо добавления раздела для каждого пользователя вы также можете использовать группы chroot, например, следующим образом:
Match Group users
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
Это приведет к тому, что все члены группы пользователей будут переведены в каталог /home.
Отличие от конфигурации SFTP заключается в том, что на этот раз мы не должны использовать строку ForceCommand /usr /lib /openssh /sftp-server в строфах Match! Это позволяет пользователям по-прежнему использовать chrooted SFTP (при условии, что у вас также есть строка Subsystem sftp /usr /lib /openssh /sftp-server в /etc /ssh /sshd_config), но также есть chrooted SSH.
Перезапустите OpenSSH
/etc/init.d/ssh restart
Если вы привязываете несколько пользователей к одному и тому же каталогу, но не хотите, чтобы пользователи просматривали домашние каталоги других пользователей, вы можете изменить разрешения для каждого домашнего каталога следующим образом:
chmod 700 /home/USERNAME
После этого вы можете войти с помощью SSH-клиента, такого как PuTTY.