У меня работает стабильная версия Debian, и я хочу создать следующую среду для пользователей из моей группы sftponly:
- в тюрьму
- можно передавать с SFTP
- может передавать с SCP
- не может войти в систему интерактивно с SSH
Из моих экспериментов и исследований кажется, что следующая строфа в sshd_config дает мне 90%:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Это дает мне тюрьму SFTP и никакого SSH, что хорошо. Но он также отключает SCP, что далеко не идеально, поскольку довольно много клиентов являются устаревшими сценариями, использующими SCP, а не SFTP (сервер, который мы заменяем, поддерживают оба протокола), и поскольку эти клиенты не находятся под нашим контролем и легко модифицированный, вероятно, нецелесообразно вообще отключать SCP.
Имеет смысл, что эта конфигурация отключит SCP, так как входящие соединения SCP приводят к тому, что sshd порождает процесс `scp 'через оболочку входа пользователя, как этот пользователь. Кажется, что то же самое обычно было бы верно для SFTP, если бы не специальный обработчик «internal-sftp».
Итак, я предполагаю, что мой вопрос: есть ли способ достичь того же эффекта, что и «internal-sftp», но для SCP, не прибегая к использованию сторонних инструментов, таких как scponly и rssh? Что действительно хорошего в 'internal-sftp', так это в том, что он не требует установки тюрьмы с файлами поддержки или работы с потенциально используемыми исполняемыми файлами сторонних разработчиков (в частности, rssh имеет историю эксплойтов).
Ответы:
Взгляните на rssh , альтернативную оболочку, которая позволяет ограниченный доступ к системе.
Вы можете настроить, какие команды можно использовать для каждого пользователя или всей системы, используя файл rssh.conf.
В качестве альтернативы вы можете использовать Scponly, чтобы делать то, что вы хотите. Он действует как оболочка для набора ssh и разрешает передачу файлов, но не доступ к оболочке.
источник
Вам нужно сделать это через SSH?
Если вы можете попытаться установить их оболочку:
И убедитесь, что вы добавили выше в / etc / shells
Если вы хотите отделить использование встроенных учетных записей, вы можете настроить proftpd
Я установил безопасный SFTP с помощью proftpd. скомпилированный proftpd примерно так:
./configure --prefix = / usr --sysconfdir = / etc --with-modules = mod_sftp
Можно использовать эту статью ниже, и еще немного о том, как настроить Google:
http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html
источник
Боюсь, в OpenSSH нет ничего проще и надежнее, поскольку, как вы заметили, встроенный SFTP-сервер есть, а встроенного SCP-сервера нет.
Предупреждение: предложение Винса Берк плохо по ряду причин:
... и так далее. Такой подход слишком хрупок.
источник
Это сторонний инструмент, который не входит в суть вопроса, но я подумал, что в любом случае заслуживает упоминания.
Jailkit: https://olivier.sessink.nl/jailkit/
В нем есть набор инструментов, упрощающих настройку пользовательских джейлов: копирование двоичных файлов и библиотек в тюрьму и настройка ведения журнала изнутри тюрьмы в ОС. Я использовал его для сборки chroot только для sftp / scp / rsync.
Он также поставляется с
jk_lsh
(оболочкой с ограничением jailkit), которую можно использовать за пределами тюрьмы для ограничения команд, которые может выполнять пользователь, если, например, вы хотите разрешить scp / sftp / rsync только без chroot.источник
Вот хитрость о том, как выполнить этот сервер. Установите оболочку пользователей, скажем, bash:
Теперь создайте в их homedir '.bash_profile' со следующей строкой:
Это приводит к продолжению неинтерактивных сеансов (например, «scp»). Однако, если они пытаются войти в систему через 'ssh', вызывается 'exit', и соединение закрывается.
Убедитесь, что они не могут 'sftp' новый .bash_profile 'в свои домашние каталоги!
Надеюсь, это поможет!
источник