# chrooted SFTP als Ersatz für FTP? - Fragen



## Zatic (10. Juli 2005)

Hallo Community,

ich bin gerade dabei einen Webserver aufzusetzen. Der soll für einige Nutzer die Möglichkeit bieten, Dateien auf ihren Webspace hochzuladen. 
Hochladen via FTP möchte ich auf jeden Fall vermeiden, da viele über WLAN Netze zB an der Uni online gehen, und dann ja die Passwörter bei sonst wem landen können.

Ich brauche also eine Alternative. Ich möchte, dass es für die Benutzer aber genauso einfach ist, Dateien hochzuladen, sie im Prinzip dem Unterschied kaum merken.

Ich habe also SFTP versucht. Vorraussetzung ist, dass die User in ihre htdocs chrooted werden. Da klappt soweit (mit scponly als Shell). Nur folgende Probleme bleiben:

In die chrooteten Umgebung müssen die binaries und libraries für die von SFTP benutzen Funktionen kopiert werden. Das ist einmal hoher Aufwand und für die Benutzer verwirrend, wenn sie plötzlich usr/ lib/ etc.. in ihren htdocs liegen haben.
Ist der Zugang zu dem Server per SSH nur via public key Authentifizierung erlaubt. Jedem Benutzer beizubringen, wie er sich ein Zertifikat erstellt usw würde schlichtweg nicht funktionieren (das sind Webdesigner auf Windows, die streiken wenn ich mit sowas käme).

Authentifizierung per Passwort will ich nicht erlauben, jedenfalls nicht für gewöhnliche Systemuser.
Frage:

Kann man die Authentifizierung per Passwort nur für bestimmte User/Gruppen erlauben, für andere verbieten?
Kann man mit SFTP einen "richtigen" 1-zu-1 Ersatz für FTP überhaupt erreichen? Also dass der User sich einfach per Passwort einloggt, in einer chrooteten Umgebung, zb in /var/www/ichmagftp.net/ landet, aber nichts als / sieht, und auch keine usr/ lib/ etc/ Verzeichnisse?

Es würde mich auch nicht stören, wenn zb ein weiterer Daemon auf dem Server läuft, der die Shell Funktionalität für chrootete User bereitstellt. 

Freue mich auf Anregungen!

Viele Grüße,
Manuel


----------



## Arne Buchwald (10. Juli 2005)

Gucke dir mal proFTPd an. Einerseits kannst du Chrooted User mit einer Zeile aktivieren und weiterhin beherrscht proFTPd perfekt SFTP, d.h. du baust mit openssl ein eigenes Zertifikat und installierst es in proFTPd. Anschließend musst du die FTP-Clients (z.B. SmartFTP) nur noch einstellen, dass es die SSL-Verschlüsselung benutzen soll.

Passwörter werden nun nur noch verschlüsselt übertragen. Die Lösung ist sehr schnell implementiert.


----------



## Zatic (10. Juli 2005)

Nur damit ich nicht durcheinanderkomme: 

Das wäre dann das, was man landläufig auch als FTPS bezeichnet, oder? Also gewöhnliches FTP über eine SSL-gesicherte Verbindung, und nicht alles über SSH, wie bei SFTP, richtig?

Und es wird dabei nur der Kontrollfluss (Port 21?) und nicht der Datenfluss (Port 20?) verschlüsselt, richtig?

Ich werde mir das auf jeden Fall anschauen, vielen Dank!


----------



## JohannesR (10. Juli 2005)

Zatic hat gesagt.:
			
		

> Das wäre dann das, was man landläufig auch als FTPS bezeichnet, oder? Also gewöhnliches FTP über eine SSL-gesicherte Verbindung, und nicht alles über SSH, wie bei SFTP, richtig?


Wenn ich mich recht erinnere, ist Secure FTP auf dem Kommando-Port SSH-Getunnelt, der Datenport wird weiterhin im Klartext übertragen, allerdings auf einem zufälligen Port. SSH-FTP (SFTP) basiert garnicht auf FTP sondern auf SCP, alles wird verschlüsselt übertragen - was allerdings etwas CPU-Intensiver ist.

War es das, was du wissen wolltest?


----------



## Zatic (10. Juli 2005)

Ja, das war nur nochmal, um Misverständissen vorzubeugen.

Also, was ich haben möchte ist das scp basierte SFTP, komplett über SSH verschlüsselt. Allerdings eben unter den oben genannten Voraussetzungen: gechrootet, und ohne für gewöhnliche Shell-Nutzer die Passwort-Authentifizierung anschalten zu müssen.

Also nochmal: Ist das überhaupt möglich (ähm, und wenn ja, wie ? 

Wenn nicht, kann ich immer noch auf FTPS ausweichen, das ist für mich aber wirklich nur zweite Wahl.


----------



## JohannesR (11. Juli 2005)

Klar, du kannst, theoretisch, alles chrooten. Man muss halt nur einen vollständigen Userspace in das chroot bauen - und das willst du ja nicht.  Leider kann man, soweit ich weiß, keine Gruppen- oder Userbasierten regeln für den sshd aufstellen. /var, /lib u.ä. aus dem chroot entfernen geht auch nicht.  Wieso willst du eigentlich den sshd chrooten? Der Sicherheitsgewinn dürfte marginal ausfallen. Wichtiger wäre der httpd. Die Datenverzeichnisse kann man auch mit ext3-ACLs oder ch{mod,own} schützen.


----------

