Raspberry Pi als FTP-Server betreiben

Der Raspberry Pi eignet sich wegen seines minimalen Stromverbrauchs bestens um über das File Transfer Protokol ( FTP) Dateien auszutauschen oder über das Internet zwischen FTP-Servern zu übertragen. In diesem Artikel zeige ich euch wie ihr euren Raspberry Pi unter Raspbian zum FTP-Server macht und über das Internet Dateien hoch- bzw. runterladen könnt.

Raspberry Pi als FTP-Server betreiben

Der Ftp Server ProFTPD

Als FTP-Server Software möchte ich ProFTP verwenden, der Server ist ein sehr weit verbreiteter FTP-Server für Linux und Unix-Plattformen, der die Standards FTP, SFTP, und FTPS unterstützt. ProFTPD besitzt im Vergleich zu anderer FTP-Server Software vielfältige Konfigurationsmöglichkeiten und eignet sich daher auch für komplexere Projekte. Zusätzlich ist ProFTP in den Standard-Quellen von Raspbian verfügbar sodass keine extra Arbeit notwendig ist.

FTP-Server auf dem Raspberry Pi installieren

Nachdem wir uns via SSH auf dem Raspberry Pi angemeldet haben aktualisieren wir via APT erst mal die Quellen und veraltete Pakete.

Danach installieren wir direkt das ProFTPD Paket

Nach dem Start der Installation wird direkt abgefragt ob der FTP-Server als Dienst von inet.d oder als eigenständiger Dienst (Standalone) gestartet werden soll, ich wähle in diesem Beispiel die Methode via Standalone. Der unterschied ist das beim Standalone Betrieb der FTP-Server alle Verbindungen selber handhabt anstelle über den inet.d zu gehen und für jede Verbindung einen neuen Prozess zu starten. Des Weiteren müssen wir keine anderen Konfigurationen anpassen.

Raspberry Pi als FTP-Server betreiben

Nach Abschluss der Installation unseres FTP-Servers können wir mit der Konfiguration beginnen, alle Konfigurationsdateien befinden sich unter /etc/proftd/, auch die wichtigste proftpd.conf in welcher wir die Basiseinstellungen vornehmen.

Raspberry Pi als FTP-Server betreiben

Wir öffnen also die Konfigurationsdatei proftpd.conf mit dem Editor Nano

Ich deaktiviere den IPv6 Support indem ich das on durch off ersetze, da ich in meinem Heimnetz kein IPv6 verwende ändere ich den ServerName in raspberrypi

Raspberry Pi als FTP-Server betreiben

Gespeichert wird bei Nano wie immer mit STRG+X, Y und Enter. Weitere Parameter könnt ihr nach Bedarf anpassen eine Beschreibung der Parameter findet ihr auf der Projektseite.

Da wir bei einem Update von proFTPD nicht möchten das unsere speziellen Konfigurationen überschrieben oder verändert werden legen wir hierfür eine extra Konfigurationsdatei unter /etc/proftd/conf.d/ an, diese werden bei einem Update nicht überschrieben.

In die proftp-custom.conf fügen wir folgenden Inhalt ein. Das bewirkt das Benutzer keine valide Shell benötigen und Mitglied der Gruppe ftpuser sein müssen um sich anmelden zu dürfen.

Dann erstellen wir uns noch einen Benutzer für den FTP Zugriff, da wir nicht mit dem Benutzer pi zugreifen möchten. Wir erstellen ein eigenen Benutzer, ohne gültiger Login Shell und mit dem Homeverzeichnis /var/www/upload/ . Folglich landen alle Dateien die dieser Benutzer hochgeladen hat unter /var/www/upload/ ein Zugriff auf andere Dateien und Verzeichnisse ist in dieser Konfiguration nicht möglich (anders würde ich das via Internet auch nicht empfehlen).

Tragt notwendige Informationen ein und wählt ein sicheres Passwort für den neuen Benutzer ftpuser

Raspberry Pi als FTP-Server betreiben

Solltet ihr einen Fehler erhalten dass das Modul memcache nicht geladen werden kann "unable to register 'memcache' SSL session cache: Memcache support not enabled" müsst ihr noch das Memcache Modul deaktivieren. Öffnet hierzu die Datei Modules.conf in nano

Fügt vor die Zeile "LoadModule mod_tls_memcache.c" eine Raute ein (diese findet ganz am Ende der Datei).

Wieder speichern mit STRG+X,Y und Enter.

Danach starten wir unseren Server einmal neu um die Änderungen zu übernehmen.

Die Einrichtung ist nun abgeschlossen und Ihr könnt euch innerhalb eures Heimnetzes mit dem erstellten Benutzer ftpuser und dem vergebenen Passwort Dateien hochladen und von dort abholen. Die Dateien landen wie erwähnt in /var/www/upload/. Der Port ist der Standard FTP Port 21.

Ich verwende FileZilla als FTP Client, die IP-Adresse müsst ihr natürlich mit der IP-Adresse eures Raspberry Pi ersetzen.

Raspberry Pi als FTP-Server betreiben

FTP-Server absichern

Bevor wir den FTP-Server über das Internet erreichbar machen sollten wir noch sicherstellen das die Übertragung verschlüsselt stattfindet, Problem bei FTP ist das im Standard Benutzer und Passwort als auch die Daten im Klartext übertragen werden und so für jeden lesbar sind. Wir sichern unseren Server daher mit einem eigens generierten SSL Zertifikat ab um dies zu verhindern.

Als erstes installieren wir die Tools um unser eigenes selbst signiertes Zertifikat erstellen zu können (die Methode mag Ubuntu Benutzern bekannt vorkommen)

Wir generieren dann ein Zertifikat (auch snakeoil genannt)

Euer privater Schlüssel des Zertifikats wird unter /etc/ssl/private/ssl-cert-snakeoil.key gespeichert, der öffentliche Teil für den FTP-Server landet unter /etc/ssl/certs/ssl-cert-snakeoil.pem. Euer privater Schlüssel muss unter allen Umständen geheim bleiben, das gewährleistet das nur der FTP-Server selbst die übertragenen Daten entschlüsseln kann.

Jetzt aktivieren wir noch das TLS Modul um FTP-Server um die Verschlüsselung zu aktivieren.

Wir fügen folgenden Inhalt ein. Das aktiviert die verschlüsselte Übertragung und sagt dem FTP-Server wo er die notwendigen Dateien findet.

Wir starten unseren Server einmal neu um die Änderungen zu übernehmen.

Wichtig! Da wir TLSRequired On gesetzt haben werden nur noch gesicherte Verbindungen angenommen, unverschlüsselte sind nicht möglich. Nicht alle FTP-Clients unterstützen FTP mit TLS, bei FileZilla müsst ihr einen neuen FTP-Server anlegen und folgendes einstellen um euch verbinden zu können.

Raspberry Pi als FTP-Server betreiben

Klappt das nicht könnt ihr TLSRequired auch auf off setzen, das kann ich aber nicht empfehlen!

FTP-Server über das Internet erreichbar machen

Euren FTP-Server auf dem Raspberry Pi könnt ihr nun über das Internet erreichbar machen. Hierzu sind zwei Schritte notwendig

Viel Spaß!


wallpaper-1019588
3D-Kompakt-Workshop für Einsteiger und Fortgeschrittene
wallpaper-1019588
Das sind die Gewinner beim Deutschen Computerspielpreis 2019!
wallpaper-1019588
World Semicolon Day – Welttag des Semikolons
wallpaper-1019588
Die eigene Überlastung vs. genau richtig erkennen
wallpaper-1019588
Nikolaus Gewinnspiel | Die Schwestern von Mitford Manor – Gefährliches Spiel von Jessica Fellowes
wallpaper-1019588
Krosse Gänsekeulen
wallpaper-1019588
Adventskalender 2019 🎄Türchen Nr. 6
wallpaper-1019588
Adventskalender 2019: 6. Türchen