Benutzer-Werkzeuge

Webseiten-Werkzeuge


raspberry_pi_ftp-server

Raspberry Pi FTP-Server Einrichtung VSFTPD

In diesem Artikel erkläre ich dir die Einrichtung eines FTP-Servers auf dem Raspberry Pi. FTP steht für File Transfer Protocol, ist ein Netzwerkprotokoll und ermöglicht es Dateien zwischen einem Client und einem Server auszutauschen.

Im Beispiel des Raspberry Pi’s wäre also denkbar, dass du zum Beispiel Dateien in deinem Homeordner auch von anderen Geräten, wie einem PC, Tablet oder Smartphone etc. abrufen kannst. Im weiteren Sinne also auch ein NAS (Network Attached Storage) ohne zusätzliche Software wie zum Beispiel Openmediavault.

Installation FTP-Server

Zuerst einmal aktualisierst du das System wie gewohnt:

sudo apt-get update && sudo apt-get upgrade

Anschließend installierst du den den FTP-Server:

sudo apt-get install vsftpd

Nach der Installation musst du noch die Konfigurationsdatei anpassen, damit der FTP-Server auch Verbindungen annehmen kann. Dazu hast du zwei Möglichkeiten. Entweder, du passt die Konfiguration selbst an deine Bedürfnisse an, oder du verwendest eine bereits von mir erstellte Konfiguration.

In meiner Konfiguration ist der anonyme Zugang deaktiviert, die User werden in Ihren FTP Verzeichnissen gebunden und können keine Ebene höher in der Ordnerstruktur und IpV6 ist deaktiviert. In der Regel reicht diese Konfiguration in den meisten Fällen aus.

Konfiguration

Wenn du die Konfiguration lieber selbst bearbeiten möchtest, musst du lediglich die Konfigurationsdatei öffnen:

sudo nano /etc/vsftpd.conf

In welcher du dann folgenden Inhalt hinzufügst:

write_enable=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO
local_umask=022
anonymous_enable=NO
local_enable=YES
ssl_enable=NO

Die Änderungen werden mit STRG + O und Enter gespeichert und der Editor mit STRG + X verlassen.

Du solltest dabei unbedingt darauf achten, dass einige der hinzugefügten Einträge schon in der Konfigurationsdatei vorhanden sind. Diese solltest du mit einer # auskommentieren, damit Sie nicht berücksichtigt werden.

Abschließend musst du den FTP-Server neu starten, womit die Konfiguration dann abgeschlossen wäre:

sudo service vsftpd restart

Einen neuen Benutzer anlegen

Soll für den FTP Server ein neuer Benutzer verwendet werden, musst du diesen zunächst einmal anlegen:

sudo adduser kohta --home /home/kohta/ --shell /bin/false

In diesem Beispiel verwende ich den Benutzernamen „kohta“. Diesen ersetzt du einfach durch deinen eigenen Benutzernamen. Der Homepfad dient gleichzeitig als Pfad für den FTP-Server. Wie du oben im Code siehst, ist das der Homeordner des Benutzers kohta. Du kannst aber einen beibiegen anderen Pfad wählen. Der Zusatz –shell /bin/false verhindert zudem, dass der Benutzer kohta sich über SSH am System anmelden kann, wodurch nur eine Verbindung über FTP möglich ist.

Denkbar wäre auch der Homeordner /var/www/html/, damit du später Inhalte über eine Weboberfläche aufrufen kannst.

Bei der Benutzerstellung werden einige Informationen zusätzlich zum Passwort abgefragt. Diese kannst, musst du aber nicht ausfüllen.

FTP-Ordner erstellen und Rechte vergeben

Aus Sicherheitsgründen darf der neue Benutzer im Hauptverzeichnis des FTP-Ordners keine Dateien hochladen. Man könnte dies mit dem Eintrag allow_writeable_chroot=YES in der Konfiguration zwar umgehen, das ist aber nicht zu empfehlen, da es ein Sicherheitsrisiko mit sich bringt. Die Dateien werden deshalb einfach in einem Unterordner abgelegt.

Zuerst einmal änderst du die Rechte des „FTP-Ordners“, welcher du oben bei der Benutzererstellung als Homeverzeichnis gewählt hast. In meinem Beispiel /home/kohta/. Der Pfad ist dann natürlich auf das eigene gesetzte Verzeichnis anzupassen!

sudo chmod a-w /home/kohta

Anschließend erstellst du den eigentlichen FTP-Ordner, in welchem zukünftig die Dateien hochgeladen werden sollen.

sudo mkdir /home/kohta/uploads/

Abschließend überträgst du noch die Eigentumsrechte für den neu erstellten Ordner:

sudo chown -R kohta:kohta /home/kohta/uploads/

Der neue FTP-Ordner ist eingerichtet und du kannst dich jetzt das erste mal mit dem FTP-Server verbinden.

Zum FTP-Server verbinden via Filezilla

Wenn du bis hier hin die Anleitung richtig umgesetzt hast, kannst du einen ersten Verbindungsversuch zum FTP-Server starten. Du kannst dich über die Konsole zum FTP-Server verbinden aber auch ein Programm wie Filezilla verwenden. Folgende Daten trägst du dafür in Filezilla ein:

Server: Die IP-Adresse des Raspberry Pi Benutzername: Der gewählte Benutzername Passwort: Das gewählte Passort für den Benutzer Port: 21 (TCP)

Nach dem Login auf dem FTP-Server solltest du den erstellten Unterordner sehen können, in welchem du nun die Dateien ablegen kannst. Der FTP-Server ist damit fertig eingerichtet und du kannst Ihn nun in vollen Zügen nutzen. Es ist möglich und macht Sinn, dass du die Verbindung zum FTP-Server verschlüsselst, damit keine Passwörter oder Dateien im Klartext übertragen werden. Wie das genau funktioniert, erkläre ich dir ausführlich in den folgenden Zeilen.

FTP-Verbindung verschlüsselt über TLS (FTPS)

In der obigen Konfiguration wird der FTP-Server über den Port 21 erreicht und die Kommunikation ist nicht verschlüsselt. Das hat den Nachteil, das Passwörter und Dateien in „Klartext“ übertragen werden. Das wäre spätestens kritisch, wenn sich ein Man in the Middle dazwischen schaltet. Dieser könnte dann den Traffic abfangen und auswerten. In deinem lokalen Netzwerk ist eine Verschlüsslung nicht zwingend notwendig, vorausgesetzt du weist, wer sich in deinem lokalen Netzwerk befindet und du vertraust diesen Personen. Spätestens, wenn du den FTP-Server aber außerhalb des lokalen Netzwerks betreiben möchtest, kommst du an einer Verschlüsselung nicht vorbei.

Das Einrichten der Verschlüsselung ist recht simpel. Zuerst einmal erstellst du ein SSL-Zertifkat mit einer Gültigkeit von 365 Tagen:

sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

Das Zertifikat wird erstellt und du wirst aufgefordert einige Informationen zum Zertifikat einzugeben. Du kannst diese eingeben, oder die Felder leer lassen und mit Enter die Eingabe der einzelnen Informationen überspringen.

Das erstellte Zertifikat befindet sich nach Abschluss des Vorgangs im Ordner /etc/ssl/private/, welches du nun in die Konfigurationsdatei des FTP-Servers eintragen musst. Du kannst entweder die Konfiguration fertig vom Server laden oder diese manuell bearbeiten.

Konfiguration

Wenn du die Konfiguration lieber selbst bearbeiten möchtest, musst du lediglich die Konfigurationsdatei öffnen:

sudo nano /etc/vsftpd.conf

In welcher du dann folgenden Inhalt hinzufügst:

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Die Änderungen werden mit STRG + O und Enter gespeichert und der Editor mit STRG + X verlassen.

Du solltest dabei unbedingt darauf achten, dass einige der hinzugefügten Einträge schon in der Konfigurationsdatei vorhanden sind. Diese solltest du mit einer # auskommentieren, damit Sie nicht berücksichtigt werden.

Abschließend musst du den FTP-Server neu starten, womit die Konfiguration dann abgeschlossen wäre:

sudo service vsftpd restart

Der FTP-Server ist nun über TLS verschlüsselt und die Dateien können sicher übertragen werden.

raspberry_pi_ftp-server.txt · Zuletzt geändert: 2019/09/27 21:33 von kohtachan