1

На моем Synology NAS я создал пользователя SSH, домашний каталог которого - /volume1/USERNAME . Однако этот пользователь может получить доступ к другим каталогам.

Есть ли способ ограничить его, чтобы он не мог получить доступ к чему-либо за пределами его домашнего каталога?

1 ответ1

1

Итак, настройка 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .