Raspberry Pi - FTP Server installieren

Raspberry Pi Apr. 16, 2020
https://my.makesmart.net/topic/63/tutorial-ftp-server-installieren

FTP steht für File Transfer Protocol und ist ein Netzwerkprotokoll zur Übertragung von Dateien. FTP wird meistens dafür benutzt, um Dateien vom Client auf den Server hochzuladen, oder Dateien vom Server auf den Client herunterzuladen.

Der Server hinter dem FTP kann hierbei als alles Mögliche dienen:

  • als Webserver
  • als Dateiserver
  • als Downloadserver
  • oder einfach nur als ein Server zuhause, zum rumspielen und basteln

Ich für meinen Teil nutze meinen lokalen Server als Testserver und möchte meine Webanwendungen leichter bearbeiten können. Hierzu soll der FTP-Server dienen. Der FTP-Server ermöglicht es mir unter anderem, die Dateien direkt auf dem Server zu bearbeiten. Damit ist das runterladen - bearbeiten - hochladen, was mir so hart auf die Eier geht, endlich vorbei. 🍾

Als Software verwende ich ProFTPD.

ProFTPD is a high-performance, extremely configurable, and most of all a secure FTP server, featuring Apache-like configuration …

Installation

ProFTPD installieren

sudo apt install proftpd-basic

Konfiguration

Nach der Installation erstellen wir eine Konfigurationsdatei. Die Konfiguration bleibt von Updates der Software unberührt. Wir sind also auf der sicheren Seite. Der Inhalt des Verzeichnisses conf.d, in dem wir die Konfiguration speichern, wird von der Software immer automatisch importiert.

sudo nano /etc/proftpd/conf.d/myftp.conf

Die Konfiguration bekommt folgenden Inhalt. Die Zeilen sind in der Konfiguration erklärt.

# Das Home-Verzeichnis ~  ist das Stammverzeichnis der Benutzer in den Gruppen myftp und rootDefaultRoot ~ myftp,root# Login wird nur Benutzern der Gruppe myftp erlaubt<Limit LOGIN>    DenyGroup !myftp</Limit>

Damit diese Änderungen wirksam werden, muss der FTP-Server einmal neugestartet werden.

sudo systemctl restart proftpd

Gruppe “myftp” erstellen

Nachdem nur Benutzer der Gruppe myftp Zugriff auf den FTP-Server erhalten, werden wir diese Gruppe als nächstes auf unserem Server anlegen.

sudo addgroup myftp

Nutzer der Gruppe hinzufügen

Alle Nutzer, die Zugriff erhalten sollen, müssen dann im nächsten Schritt der Gruppe hinzugefügt werden. Bei mir ist das der einzige Nutzer des Servers: makesmart.

sudo adduser makesmart myftp

Login FTP

Schon jetzt kann man sich mit einem FTP-Client, wie FileZilla, auf dem Server einloggen. Die Daten für den FTP-Login sind die gleichen, wie die Daten die man für den SSH-Login verwendet. In meinem Fall lauten die Zugangsdaten:

HostnameBenutzernamePasswortPort
makesmart-servermakesmartmakesmart21

ftp_tls.png

Auch wenn eine Verschlüsselung in einem geschlossenen lokalem Netzwerk nicht unbedingt notwenidg wäre, werden wir uns darum gleich noch kümmern. 👍


Nach dem Einloggen befinden wir uns im Home-Verzeichnis des Nutzers, mit dem wir uns eingeloggt haben. ✔

/home/makesmart

In dem Verzeichnis können wir Daten ablegen und bearbeiten, Ordner anlegen und löschen.


Erweitere Rechte

In meinem Fall wollte ich den FTP-Server installieren, um die Dateien meiner Webanwendungen direkt auf dem Server bearbeiten zu können. Das Verzeichnis befindet sich unter /var/www/html. Wenn ich diesen Pfad über den FTP-Client aufrufe, kann ich die Dateien zwar sehen, aber weder löschen, noch bearbeiten oder gar neue erstellen …

Status:	  Lösche "/var/www/html/index.html"Befehl:	  DELE index.htmlAntwort:  550 index.html: Permission denied

Der Grund dafür sind die fehlenden Berechtigungen für den Ordner. Die Lösung ist sehr simple:
Wir machen unseren Nutzer makesmart einfach zum Eigentümer den Ordners.

sudo chown -R makesmart:makesmart /var/www/html

Jetzt können wir, neben dem Home-Verzeichnis, auch die Daten im Ordner /var/www/html frei verwalten.

Status:	Lösche "/var/www/html/index.html"Status:	Empfange Verzeichnisinhalt für "/var/www/html"...Status:	Anzeigen des Verzeichnisinhalts für "/var/www/html" abgeschlossen

Verbindung verschlüsseln

Wie bereits erwähnt, ist eine Verschlüsselung im lokalen Netzwerk nicht unbedingt erforderlich. Wer aber auf der sicheren Seite sein möchte, kann die folgende Anleitung verwenden, um die Verbindung zu verschlüssen.

Für die Verschlüsselung wird ein SSL-Zertifikat benötigt. Wie man ein solches Zertifikat selbst generieren, und für einen Apache2-Webserver verwenden kann, habe ich bereits in einem Tutorial gezeigt.

Die gleichen Befehle können genutzt werden, um ein eigenes Zertifikat für den FTP-Server zu erstellen.


OpenSSL installieren

sudo apt-get install openssl

Ordner für die Zertifikate anlegen

sudo mkdir /etc/ssl/localcerts

Zertifikat erstellen

sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/proftpd.pem -keyout /etc/ssl/localcerts/proftpd.key

Der Parameter -days 365 bedeutet, dass das Zertifikat 1 Jahr lang gültig ist.
Die beiden Pfade bestimmen den Speicherort und den Namen der Zertifikate.

Es wird nach euren Daten gefragt, die ihr Eingeben müsst. Es spielt dabei keine Rolle, ob die Daten der Wahrheit entsprechen, oder nicht. Sie dienen nur zum Füllen der Informationen des Herausgebers des Zertifikats (ihr).

Rechte der Zertifikate anpassen

sudo chmod 600 /etc/ssl/localcerts/proftpd*

Anschließend muss nochmal die zu Beginn erstellte .conf-Datei myftp.conf bearbeitet werden.

sudo nano /etc/proftpd/conf.d/myftp.conf

Fügt am Ende folgende Zeilen ein. Die Zeilen bestimmten die Pfade der Zertifikate und einige Einstellungen zu TLS. Unter anderem wird mit der Zeile TLSRequired on die Verbindung via TLS erzwungen.

<IfModule mod_tls.c>    TLSEngine on    TLSLog /var/log/proftpd/tls.log    TLSProtocol TLSv1.2    TLSRSACertificateFile /etc/ssl/localcerts/proftpd.crt    TLSRSACertificateKeyFile /etc/ssl/localcerts/proftpd.key    TLSVerifyClient off    TLSOptions NoSessionReuseRequired    TLSRequired on</IfModule>

Wenn alles soweit eingerichtet wurde, kann der FTP-Server neugestartet werden.

sudo systemctl restart proftpd

Login SFTP

Absofort ist zum Login der Port 22 erforlderlich, ansonsten wird die Verbindung abgelehnt.

HostnameBenutzernamePasswortPort
makesmart-servermakesmartmakesmart22

ftp_tls_2.png

Status:	Verbinde mit makesmart-server...Status:	Connected to makesmart-serverStatus:	Eming directory /home/makesmartStatus:	Anzeigen des Verzeichnisinhalts für "/home/makesmart" abgeschlossen

Auch hier gilt: Da wir das Zertifikat selbst ausgestellt haben, gelten wir … leider … als nicht vertrauenswürdige Quelle. Das Zertifikat ist aber vollwertig und macht das was es soll. 👌


Zusammenfassung

Wir haben also einen FTP-Zugang geschaffen, für alle Nutzer in der Gruppe myftp.
Um einem Nutzer Zugriff zu gewähren, muss man ihn einfach zur Gruppe hinzufügen.

sudo adduser makesmart myftp

Das Standardverzeichnis ist das Home-Verzeichnis des jeweiligen Nutzers. /home/makesmart

Falls der Nutzer root-Rechte hat, hat er ebenfalls Zugriff auf das Wurzelverzeichnis /.
Ein Login mit dem Benutzer root nicht möglich.


Um einem Nutzer den Zugang zum FTP-Server zu entziehen, muss man ihn einfach aus der Gruppe myftp entfernen.

sudo deluser makesmart myftp

Viel Spaß bei euren Projekten,

cooper

Community

Die makesmart Community ist der Ort, an dem du deine Ideen mitteilen und deine Erfahrungen austauschen kannst.

Großartig! Das Abonnement wurde erfolgreich abgeschlossen.
Großartig! Schließe als Nächstes die Kaufabwicklung ab, um vollen Zugriff zu erhalten.
Willkommen zurück! Du hast dich erfolgreich angemeldet.
Erfolg! Dein Konto ist vollständig aktiviert, du hast jetzt Zugang zu allen Inhalten.