Есть ли простой способ ограничить пользователя SCP / SFTP каталогом? Все методы, с которыми я сталкивался, требуют, чтобы я установил chroot-тюрьму, копируя двоичные файлы, но я не думаю, что это необходимо.
36
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 для получения дополнительной информации.
Subsystem sftp /usr/lib/openssh/sftp-server
строку наSubsystem sftp internal-sftp -f AUTH -l VERBOSE
Match
раздела.Chroot - это достаточно простой метод. Поскольку в операционной системе уже есть эта функция безопасности, создатели демонов, как правило, не пытаются переопределить ее.
Rssh поставляется с руководством по настройке chroot тюрьмы. Это в
CHROOT
файле в исходном дистрибутиве. В двух словах:/usr/bin/scp
,/usr/libexec/openssh/sftp-server
,/usr/bin/rssh_chroot_helper
{/usr,}/lib/lib*.so.[0-9]
), которые они используют, также скопированы/etc/passwd
(вполне возможно, не копия, но полученная от мастера)/dev/null
,/dev/tty
, а также/dev/log
разъем для регистрации (и вам нужно сообщить ваш демон системного журнала , чтобы слушать сокет)Дополнительный совет, которого нет в документации по rssh: если вам нужно, чтобы некоторые файлы были доступны в изолированной тюрьме chroot, вы можете использовать bindfs или Linux
mount --bind
для создания дополнительных иерархий каталогов за пределами тюрьмы.bindfs
позволяет перемонтированному каталогу иметь более строгие разрешения, например, только для чтения. (mount --bind
нет, если вы не примените патч к ядру; Debian включил этот патч с тех пор на востоке Ленни, но в большинстве других дистрибутивов его нет по состоянию на 2011 год.)источник
Возможно, вы захотите посмотреть на scponly (или совсем недавно, rssh ); по сути это оболочка входа в систему, которую можно использовать только для запуска scp или подсистемы sftpd. В
scponlyc
варианте он выполняет chroot перед активацией рассматриваемой подсистемы.источник