Howto: Chroot SFTP Zugang mit openssh ohne shell (ssh) Zugang

Hallo Besucher, schön dass du hier hergefunden hast. Ich hoffe dir gefällt was du hier liest und schaust ab sofort öfter vorbei. Viel Spass! Daniel

Manchmal kann es sinnvoll sein Prozesse via SFTP zu automatisieren oder man möchte anderen Usern die Möglichkeit geben Dateien abzulegen. Um zu verhindern, dass sie das ganze Dateisystem durchbrowsen können müssen wir eine Chroot-Umgebung für diese Benutzer etablieren. Ich zeige Dir wie.

Benötigt wird hierzu ein Ubuntu oder Debian System (bei anderen Distributionen mag der Lösungsweg identisch sein) und openssh ab Version 4.9p1. Ab dieser Version hat openssh bordeigene Mittel um die Chroot-Umgebung umzusetzen.

openssh konfigurieren

Zu allererst müssen wir openssh mitteilen, dass es den SFTP Zugang für Benutzer der Gruppe “sftp” anders behandeln soll, als den Zugang anderer User. Hierzu nehmen wir in der Datei /etc/ssh/sshd_config 2 Einstellungen vor:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
 
Match Group sftp
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no

Die erste Konfigurationsanweisung ändert das SFTP-Subsystem auf den internen SFTP-Server der für das Chrooting besser funktioniert. Hierbei entfällt auch das Installieren bestimmter Bibliotheken im Chroot-Verzeichnis.

Die zweite Anweisung greift jedes mal wenn sich ein Benutzer der Gruppe sftp authentifiziert. Er wird in sein Home-Directory (%h) eingesperrt und es wird nochmal explizit der internal-sftp geforced. TCP-Forwarding wollen wir auch deaktiviert wissen.

Usereinstellungen für den Chroot-SFTP-Zugang

Um das ganze nun zu testen legen wir den User “sftptest” an. Es soll sein Home-Dir automatisch angelegt werden (-m), er soll keinen Shell-Zugang bekommen (-s /bin/false) und er soll der Gruppe sftp angehören (-G sftp):

addgroup sftp
useradd -m -s /bin/false -G sftp sftptest

Ein Passwort sollte der User sftptest auch bekommen:

passwd sftptest

Es folgt ein Prompt bei dem ein Passwort angegeben werden muss. Anschließend muss das Passwort nochmal bestätigt werden.

Hast Du bereits einen User angelegt und möchtest diesem sftp-Zugang gewähren führst Du folgendes aus:

usermod -G sftp sftptest
usermod -s /bin/false sftptest

Das Home-Dir

Hier müssen wir noch eine Änderung durchführen, die untypisch für das Home-Dir ist. Wir müssen dem root-User den Besitz über das Home-Dir übertragen, andernfalls wird ein Login nicht möglich sein:

chown root:root /home/sftptest/
chmod 0755 /home/sftptest/

Damit der User Dateien samt Ordnern hochladen kann, müssen wir ihm noch ein Verzeichnis anlegen das ihm gehört.

mkdir /home/sftptest/upload
chown sftptest:sftptest /home/sftptest/upload

Das wars. Nun kannst Du die Logindaten ohne Probleme weitergeben.

Viel Spass beim konfigurieren!

Fragen, Kritik oder Anregungen bitte in die Kommentare!

Beiträge die für dich ebenfalls interessant sein können:

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">