OpenSSH что-то вроде «internal-sftp», но для SCP?

OpenSSH что-то вроде «internal-sftp», но для SCP?

Я использую Debian Stable и хочу создать следующую среду для пользователей моей группы «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' то, что он не требует настройки jail с файлами поддержки или работы с потенциально эксплуатируемыми сторонними бинарниками setuid (в частности, у rssh есть история эксплойтов).

решение1

Взгляни наршшкоторая представляет собой альтернативную оболочку, обеспечивающую ограниченный доступ к системе.

rssh — это ограниченная оболочка для предоставления ограниченного доступа к хосту через ssh(1), позволяющая пользователю, чья оболочка настроена на rssh, использовать одну или несколько команд scp(1), sftp(1), cvs(1), rdist(1) и rsync(1), и только эти команды.

Вы можете настроить, какие команды могут использоваться для каждого пользователя или для всей системы, используяrssh.confфайл

В качестве альтернативы вы можете использоватьscponlyчтобы делать то, что вы хотите. Он действует как оболочка для пакета ssh и позволяет передавать файлы, но не имеет доступа к оболочке.

решение2

Это нужно делать через ssh?

ЕСЛИ так, вы можете попробовать установить их оболочку на:

/usr/libexec/openssh/sftp-server

И обязательно добавьте вышеперечисленное в /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

решение3

Боюсь, с OpenSSH ничего столь же простого и надежного нет, поскольку, как вы заметили, там есть встроенный сервер SFTP, но нет встроенного сервера SCP.

Предупреждение: предложение вответ Винса Беркаплохо по ряду причин:

  1. На поведение оболочки в отношении файлов запуска могут влиять переменные среды, которые SSH может устанавливать удаленно в зависимости от конфигурации сервера.

  2. Пользователь может просто запустить ssh /bin/bashи получить оболочку. У нее не будет tty, и поэтому ее будет неудобно использовать, ну и что... Не говоря уже обо всех других программах, которые он может запустить, но вы, по-видимому, не хотите, чтобы он это делал.

  3. Изменение разрешений .bash_profileмало что даст, если пользователь может просто сделать ssh host rm -f .bash_profile. Ничего не было сказано о разрешениях для домашнего каталога.

… и т. д. Такой подход слишком хрупок.

решение4

Это сторонний инструмент, который не входит в сферу рассмотрения вопроса, но я посчитал, что он в любом случае заслуживает упоминания.

Тюремный комплект:https://olivier.sessink.nl/jailkit/

Он содержит набор инструментов, упрощающих настройку пользовательских джейлов — копирование двоичных файлов и библиотек в джейл и настройка ведения журнала изнутри джейла в ОС. Я использовал его для сборки chroots только для sftp/scp/rsync.

Он также поставляется с jk_lsh(ограниченной оболочкой jailkit), которую можно использовать за пределами тюрьмы, чтобы ограничить команды, которые может выполнять пользователь, например, если вы хотите разрешить только scp/sftp/rsync без chroot.

Связанный контент