Ich führe Debian stable aus und möchte die folgende Umgebung für Benutzer in meiner 'sftponly'-Gruppe einrichten:
- eingesperrt
- kann mit SFTP übertragen
- kann mit SCP übertragen
- kann mich nicht interaktiv mit SSH anmelden
Aus meinen Experimenten und Recherchen geht hervor, dass mir die folgende Zeilengruppe in sshd_config 90% bringt:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Dies gibt mir eingesperrtes SFTP und kein SSH, was gut ist. Es deaktiviert jedoch auch SCP, was nicht optimal ist, da es sich bei einigen Clients um veraltete, skriptbasierte Prozesse handelt, die SCP anstelle von SFTP (den Server, den wir ersetzen, unterstützen beide Protokolle) verwenden und da diese Clients nicht von uns kontrolliert werden können geändert, ist es wahrscheinlich nicht praktisch, SCP insgesamt zu deaktivieren.
Es ist sinnvoll, dass diese Konfiguration SCP deaktivieren würde, da eingehende SCP-Verbindungen dazu führen, dass sshd als dieser Benutzer einen "scp" -Prozess über die Anmeldeshell des Benutzers erzeugt. Es scheint, dass dies normalerweise auch für SFTP gilt, wenn nicht der spezielle "Internal-SFTP" -Handler verwendet wird.
Ich nehme an, meine Frage lautet: Gibt es eine Möglichkeit, den gleichen Effekt wie bei 'internal-sftp' zu erzielen, jedoch für SCP, ohne auf Tools von Drittanbietern wie scponly und rssh zurückzugreifen? Das wirklich Schöne an 'internal-sftp' ist, dass es nicht erforderlich ist, ein Gefängnis mit Unterstützungsdateien einzurichten oder sich mit potenziell ausnutzbaren setuid-Binärdateien von Drittanbietern zu befassen (insbesondere rssh hat eine Geschichte von Exploits).
Antworten:
Schauen Sie sich rssh an , eine alternative Shell, die den eingeschränkten Zugriff auf ein System ermöglicht.
Mit der Datei rssh.conf können Sie konfigurieren, welche Befehle benutzer- oder systemweit verwendet werden können
Alternativ können Sie scponly verwenden , um das zu tun, was Sie wollen. Es fungiert als Wrapper für die ssh-Suite und ermöglicht die Dateiübertragung, jedoch keinen Shell-Zugriff.
quelle
Müssen Sie dies durch ssh tun?
WENN Sie also versuchen können, ihre Shell auf:
Und stellen Sie sicher, dass Sie die obigen Angaben in / etc / shells einfügen
Wenn Sie sich von der Verwendung integrierter Konten abkoppeln möchten, können Sie proftpd einrichten
Ich richte mit proftpd ein sicheres SFTP ein. proftpd so kompiliert:
./configure --prefix = / usr --sysconfdir = / etc --with-modules = mod_sftp
Kann diesen Artikel unten und einige mehr auf Google verwenden, um es einzurichten:
http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html
quelle
Ich befürchte, dass OpenSSH nicht so einfach oder zuverlässig ist, da es, wie Sie gesehen haben, einen eingebauten SFTP-Server, aber keinen eingebauten SCP-Server gibt.
Eine Warnung: Der Vorschlag von Vince Berk ist aus mehreren Gründen schlecht:
... und so weiter. Diese Art von Herangehensweise ist einfach zu fragil.
quelle
Dies ist ein Tool von Drittanbietern, das nicht in den Geltungsbereich der Frage fällt, aber meiner Meinung nach verdient es trotzdem eine Erwähnung.
Jailkit: https://olivier.sessink.nl/jailkit/
Es verfügt über eine Reihe von Tools, die das Einrichten von Benutzer-Jails vereinfachen - Kopieren von Binärdateien und Bibliotheken in das Jail und Einrichten der Protokollierung vom Jail-Inneren zum Betriebssystem. Ich habe es verwendet, um nur sftp / scp / rsync-Chroots zu erstellen.
Es kommt auch mit
jk_lsh
(Jailkit Limited Shell), die außerhalb des Jailkits verwendet werden kann, um die Befehle zu begrenzen, die ein Benutzer ausführen kann, wenn Sie z. B. scp / sftp / rsync nur ohne Chroot zulassen möchten.quelle
Hier ist ein Trick, wie man diese Serverseite ausführt. Stellen Sie die Shell der Benutzer zum Beispiel auf bash ein:
Erstellen Sie nun in ihrem Homedir ein '.bash_profile' mit der folgenden Zeile:
Dies führt dazu, dass nicht interaktive Sitzungen (wie 'scp') fortgesetzt werden. Wenn sie jedoch versuchen, sich mit 'ssh' anzumelden, wird der 'Exit' aufgerufen und die Verbindung wird geschlossen.
Stellen Sie sicher, dass sie kein neues .bash_profile in ihre Home-Verzeichnisse 'sftp' können!
Ich hoffe, das hilft!
quelle