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 sftptestEs 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!