Назад | Перейти на главную страницу

OpenSSH что-нибудь вроде 'internal-sftp', кроме SCP?

Я использую стабильную версию Debian и хочу создать следующую среду для пользователей в моей группе sftponly:

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

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

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

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

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

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

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

  1. На поведение оболочки в отношении файлов запуска могут влиять переменные среды, которые SSH может устанавливать удаленно в зависимости от конфигурации сервера.
  2. Пользователь может просто запустить ssh / bin / bash и получите оболочку. У него не будет tty, поэтому его будет неудобно использовать, ну и что ... не говоря уже обо всех других программах, которые он может запускать, которые вы, вероятно, не хотите, чтобы он.
  3. Изменение разрешений .bash_profile мало что дает, если пользователь может просто выполнить "ssh host rm -f .bash_profile"; ничего не упоминалось о разрешениях для домашнего каталога.

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

А через 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

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

Джейлкит: https://olivier.sessink.nl/jailkit/

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

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

Вот трюк, как выполнить это на стороне сервера. Установите оболочку пользователей, например, на bash:

usermod -S /bin/bash [username]

Теперь создайте в их домашнем каталоге '.bash_profile' со следующей строкой:

[ -n "$PS1" ] && exit

Это приводит к продолжению неинтерактивных сеансов (например, scp). Однако, если они попытаются войти в систему по ssh, вызывается exit и соединение закрывается.

Убедитесь, что они не могут добавить новый файл .bash_profile в свои домашние каталоги!

chown root:root .bash_profile

Надеюсь, это поможет!