Ist OpenSSH so etwas wie „internal-sftp“, aber für SCP?

Ist OpenSSH so etwas wie „internal-sftp“, aber für SCP?

Ich verwende Debian Stable und möchte für die Benutzer meiner Gruppe „sftponly“ die folgende Umgebung einrichten:

  • inhaftiert
  • kann mit SFTP übertragen
  • kann mit SCP übertragen
  • kann mich nicht interaktiv mit SSH anmelden

Aus meinen Experimenten und Untersuchungen geht hervor, dass ich mit der folgenden Strophe in sshd_config zu 90 % ans Ziel komme:

Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Dadurch erhalte ich Jailed SFTP und kein SSH, was gut ist. Allerdings wird dadurch auch SCP deaktiviert, was nicht gerade ideal ist, da es sich bei vielen Clients um veraltete, geskriptete Prozesse handelt, die SCP statt SFTP verwenden (der Server, den wir ersetzen, unterstützte beide Protokolle). Da diese Clients nicht unter unserer Kontrolle stehen und leicht geändert werden können, ist es wahrscheinlich nicht praktikabel, SCP vollständig zu deaktivieren.

Es ist sinnvoll, dass diese Konfiguration SCP deaktiviert, da eingehende SCP-Verbindungen dazu führen, dass sshd einen „scp“-Prozess über die Login-Shell des Benutzers als dieser Benutzer startet. Es scheint, dass das Gleiche normalerweise für SFTP gilt, wenn es nicht den speziellen „internal-sftp“-Handler gäbe.

Meine Frage lautet also: Gibt es eine Möglichkeit, denselben Effekt wie mit „internal-sftp“ für SCP zu erzielen, ohne auf Drittanbietertools wie scponly und rssh zurückgreifen zu müssen? Das wirklich Schöne an „internal-sftp“ ist, dass kein Jail mit Supportdateien eingerichtet werden muss und auch nicht mit potenziell ausnutzbaren Setuid-Binärdateien von Drittanbietern zu tun haben muss (insbesondere für rssh gibt es eine Geschichte von Exploits).

Antwort1

Schauen Sie sich anRSSDabei handelt es sich um eine alternative Shell, die eingeschränkten Zugriff auf ein System ermöglicht.

rssh ist eine eingeschränkte Shell, die einen begrenzten Zugriff auf einen Host via ssh(1) ermöglicht. Sie erlaubt einem Benutzer, dessen Shell auf rssh konfiguriert ist, die Verwendung eines oder mehrerer der Befehle scp(1), sftp(1), cvs(1), rdist(1) und rsync(1) und nur dieser Befehle.

Sie können konfigurieren, welche Befehle auf Benutzer- oder Systembasis verwendet werden können, indem Sierssh.confDatei

Alternativ können SieAbonnierenum zu tun, was Sie wollen. Es fungiert als Wrapper für die SSH-Suite und ermöglicht Dateiübertragung, aber keinen Shell-Zugriff.

Antwort2

Müssen Sie dies über SSH tun?

In diesem Fall können Sie versuchen, die Shell folgendermaßen einzustellen:

/usr/libexec/openssh/sftp-server

Und stellen Sie sicher, dass Sie das Obige in /etc/shells einfügen

Wenn Sie die Verwendung von integrierten Konten entkoppeln möchten, können Sie proftpd einrichten

Ich habe ein sicheres SFTP mit proftpd eingerichtet. proftpd wurde folgendermaßen kompiliert:

./configure --prefix=/usr --sysconfdir=/etc --with-modules=mod_sftp

Informationen zur Einrichtung finden Sie im folgenden Artikel und in weiteren Google-Artikeln:

http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html

Antwort3

Ich fürchte, mit OpenSSH ist nichts vergleichbar Einfaches oder Zuverlässiges möglich, da, wie Sie bemerkt haben, ein integrierter SFTP-Server vorhanden ist, aber kein integrierter SCP-Server.

Eine Warnung: Der Vorschlag in derAntwort von Vince Berkist aus mehreren Gründen schlecht:

  1. Das Verhalten der Shell in Bezug auf Startdateien kann durch Umgebungsvariablen beeinflusst werden, die SSH je nach Serverkonfiguration remote setzen kann.

  2. Der Benutzer kann einfach ssh /bin/basheine Shell ausführen und erhalten. Sie wird kein TTY haben und daher umständlich zu verwenden sein, aber was soll's ... Ganz zu schweigen von all den anderen Programmen, die er ausführen kann und die Sie vermutlich nicht möchten.

  3. Das Ändern der Berechtigungen von .bash_profilenützt wenig, wenn der Benutzer nur Folgendes tun kann ssh host rm -f .bash_profile. Über die Berechtigungen für das Home-Verzeichnis wurde nichts erwähnt.

… und so weiter. Diese Art von Ansatz ist einfach viel zu fragil.

Antwort4

Dies ist ein Tool eines Drittanbieters, das nicht in den Rahmen dieser Frage fällt, aber ich dachte, es verdient trotzdem eine Erwähnung.

Jailkit:https://olivier.sessink.nl/jailkit/

Es verfügt über eine Sammlung von Tools, die das Einrichten von Benutzer-Jails erleichtern – das Kopieren von Binärdateien und Bibliotheken in das Jail und das Einrichten der Protokollierung aus dem Jail in das Betriebssystem. Ich habe es zum Erstellen von SFTP-/SCP-/Rsync-Only-Chroots verwendet.

Es enthält außerdem eine jk_lsh(Jailkit Limited Shell), die außerhalb des Jails verwendet werden kann, um die Befehle zu begrenzen, die ein Benutzer ausführen kann, wenn Sie beispielsweise nur scp/sftp/rsync ohne chroot zulassen möchten.

verwandte Informationen