sFTP-Zugang einrichten

Mit restriktiven Nutzer-Zugang (chroot jail)



sFTP vs FTP 

Das sFTP (Secure FTP) -Protokoll wird anders als das FTP-Protokoll verschlüsselt übertragen. Dies geschieht standardmäßig via Port 22, welcher ebenso für die "entfernte Anmeldung", also dem SecureShell (SSH) genutzt wird. sFTP sollte gegenüber FTP klar vorgezogen werden, da bei FTP-Transfers nicht nur die Daten, sondern auch der Login unverschlüsselt übertragen werden! 


sFTP Nutzer-Zugang unter OSx 

Mit OSx bzw. dem OSX Server ist die Einrichtung eines sFTP-Dienstes ohne Probleme machbar: Um einen sFTP Service anbieten zu können, muss in den Systemeinstellungen unter "Freigaben" die "Entfernte Anmeldung" aktiviert sein.
Bei Benutzer & Gruppen wird in diesem Fall eine Benutzergruppe "sftpusers" für eben diesen Zugang erstellt. 
Alle Nutzer, die später Mitglied dieser Gruppe sind, habe dann die Rechte für den sFTP-Zugriff. 


Der sFTP-Ordner und die erforderlichen Berechtigungen 

In unserem Beispiel würde sich der sFTP-Zugangsordner "sftp" auf oberster Ebene unserer Festplatte "Macintosh HD"  befinden. Der komplette Systempfad lautet sodann wie folgt:

/Volumes/Macintosh HD/sftp

Nun das Programm Terminal auf dem sFTP-Server-Rechner öffnen und den o.g. Ordner erstellen:

$ sudo mkdir "/Volumes/Macintosh HD/sftp"

Goldene Regel für den späteren erfolgreichen Zugang: Alle Ordner in jenem Pfad, inklusive dem sftp Ordner müssen als Besitzer "root" aufweisen und nur "root" darf Schreibrechte besitzen!

$ sudo chmod g-w /
sudo chmod g-w /Volumes
sudo chmod g-w "/Volumes/Macintosh HD/"
sudo chown root "/Volumes/Macintosh HD/"

Nun noch die Lese-Rechte für den sftp-Ordner alleine auf die Mitglieder der Gruppe sftpusers beschränken:

sudo chown root:sftpusers "/Volumes/Macintosh HD/sftp"
sudo chmod 750 "/Volumes/Macintosh HD/sftp"

Um bei Anmeldung via sFTP die Nutzer auf den sftp Ordner weiterzuleiten, müssen in der Datei sshd_config auf dem Server-Rechner noch Änderungen vorgenommen werden.
Aber vorab machen wir eine Sicherungskopie:

$ sudo cp /etc/sshd_config /etc/sshd_config.bkup

Dann die Datei sshd_config zum Bearbeiten auf den Schreibtisch kopieren:

$ sudo cp /etc/sshd_config ~/Desktop/sshd_config

Diese Datei auf dem Schreibtisch in einem Texteditor öffnen und die Zeile 

Subsystem       sftp    /usr/libexec/sftp-server

wie folgt ändern:

#Subsystem       sftp    /usr/libexec/sftp-server
Subsystem       sftp    internal-sftp


sowie am Ende der Datei folgende Zeilen hinzufügen:

Match Group sftpusers
      ChrootDirectory /sftp
      ForceCommand internal-sftp
      AllowTcpForwarding no

Durch ForceCommand internal-sftp werden alle Nutzer der Gruppe sftpusers bei Anmeldung via Port 22 (ssh und sFTP) auf den sFTP-Zugriff beschränkt und können sich nicht mehr im Terminal via ssh anmelden. Daher sollte der Admin-User in jener Gruppe nicht aufgenommen werden. Macht ja auch keinen Sinn, dem Admin nur Zugriff auf den Ordner sftp zu ermöglichen.

Nun die originale sshd_config Datei mit der geänderten Version ersetzen:

$ sudo cp ~/Desktop/sshd_config /etc/sshd_config

und die Rechte vorsichtshalber korrigieren:

$ chown root /etc/sshd_config

Fertig!
Jetzt nur noch testen:

$ sftp user@domain.adress

Der User wäre hier ein Mitglied der Gruppe sftpusers auf dem Server.
Wenn alles klappt, wird man nach dem Password gefragt und hat eben auf nur jenen, für den sFTP-Transfer freigegebenen Ordner Zugriff. Et voilà.

Da der oberste Ordner (in unserem Fall "sftp") ja nur Leserechte besitzt, lassen sich aber vorher via Serveradmin sodann Unterordner mit entsprechenden Schreib- & und Lesebrechtigungen erstellen.





Der Form halber der Haftungsausschluss: 
Ich übernehme keinerlei Gewähr für die Aktualität, Korrektheit, Vollständigkeit oder Qualität der hier bereitgestellten Informationen. Haftungsansprüche, welche sich auf Schäden materieller oder ideeller Art beziehen, die durch die Nutzung oder Nichtnutzung der hier angebotenen Informationen bzw. durch die Nutzung fehlerhafter und unvollständiger Informationen verursacht wurden, sind grundsätzlich ausgeschlossen.

Keine Kommentare:

Kommentar veröffentlichen