it-swarm-ru.tech

Ограничение пользователя SSH / SCP / SFTP каталогом

Есть ли простой способ ограничить пользователя SCP/SFTP каталогом? Все методы, с которыми я сталкивался, требуют, чтобы я установил chroot-тюрьму, копируя двоичные файлы, но я не думаю, что это необходимо.

37
user4518

SSH изначально поддерживает синхронизацию SFTP-пользователя. Вам просто нужно поставить

ChrootDirectory

В вашем конфигурационном файле sshd и перезапустите sshd.

Если вы просто делаете sftp, вам больше ничего не нужно делать. К сожалению, это не работает для scp. Для интерактивной оболочки вам необходимо скопировать двоичные файлы и/dev узлы в chroot.

Пример конфигурации для одного пользователя, testuser:

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

Несколько вещей, о которых следует знать, со страницы руководства sshd_config:

 Все компоненты пути должны быть корневыми каталогами, которые 
 Не доступны для записи любому другому пользователю или группе. После chroot sshd (8) меняет рабочий каталог 
 На домашний каталог пользователя. 

Ищите ChrootDirectory в man sshd_config для получения дополнительной информации.

30
gabe.

Chroot - достаточно простой метод. Поскольку в операционной системе уже есть эта функция безопасности, создатели демонов, как правило, не пытаются переопределить ее.

Rssh поставляется с руководством по настройке chroot-тюрьмы. Он находится в файле CHROOT в исходном дистрибутиве. В двух словах:

  • Несколько бинарных файлов, скопированных из корня: /usr/bin/scp, /usr/libexec/openssh/sftp-server, /usr/bin/rssh_chroot_helper
  • Библиотеки ({/usr,}/lib/lib*.so.[0-9]) что они используют, также скопированы
  • A /etc/passwd (вполне возможно, не копия, но полученная от мастера)
  • Несколько устройств: /dev/null, /dev/tty, а также /dev/log сокет для регистрации (и вы должны указать демону syslog прослушивать этот сокет)

Дополнительный совет, которого нет в документации по rssh: если вам нужно, чтобы некоторые файлы были доступны в chroot-тюрьме, вы можете использовать bindfs или Linux mount --bind для создания дополнительных иерархий каталогов за пределами тюрьмы. bindfs позволяет перемонтированному каталогу иметь более строгие разрешения, например, только для чтения. (mount --bind не будет, если вы не примените патч к ядру; Debian уже включил этот патч в East Lenny, но в большинстве других дистрибутивов его нет по состоянию на 2011 год.)

12
Gilles 'SO- stop being evil'

Возможно, вы захотите посмотреть на scponly (или совсем недавно rssh ); по сути это оболочка входа в систему, которая может только использоваться для запуска scp или подсистемы sftpd. В варианте scponlyc он выполняет chroot перед активацией рассматриваемой подсистемы.

7
Shadur