FTP- und FTPS-Server Filezilla

Aus LinuxUser 12/2023

FTP- und FTPS-Server Filezilla

© exploderasi / 123RF.com

Einfach FTP!

FTP-Server verwaltet man unter Linux meist auf der Kommandozeile. Einfacher geht es mit Filezilla Server und seiner übersichtlichen GUI.

Das File Transfer Protocol FTP ist ein klassisches Internet-Protokoll, über das Sie nach einer Anmeldung am Server remote auf freigegebene Ordner zugreifen. Die Zugangsdaten und die Dateien schickt der FTP-Client dabei im Klartext auf die Reise zum Server, weswegen sich eine FTP-Freigabe für das eigene Home-Verzeichnis heute verbietet: Es bestünde die Gefahr, dass Angreifer den Netzwerkverkehr überwachen, die Daten abgreifen und sich selbst auf der Maschine einloggen.

Es gibt aber Einsatzmöglichkeiten, bei denen die Sicherheitsaspekte keine übergeordnete Rolle spielen. Dazu gehört der Betrieb eines FTP-Mirrors mit gespiegelten Daten, etwa für die Repositories einer Linux-Distribution. Solche Mirror-Server lassen sich häufig auch über einen Webbrowser via HTTP oder HTTPS erreichen. Allerdings bietet FTP den Vorteil, dass Sie für den Zugriff einen kompakten Client im Terminalfenster nutzen können (Abbildung 1). Damit greifen Sie mit Befehlen wie cd und ls auf den Server zu, fragen Verzeichnis-Listings ab oder laden Daten herunter.

Abbildung 1: FTP-Clients stehen f&uuml;r alle Betriebssysteme bereit. Der Befehlssatz (etwa <code>cd</code> oder <code>get</code>) gestaltet sich dabei einheitlich.

Abbildung 1: FTP-Clients stehen für alle Betriebssysteme bereit. Der Befehlssatz (etwa cd oder get) gestaltet sich dabei einheitlich.

Es gibt zahlreiche FTP-Clients für alle Betriebssysteme, und auch viele Dateimanager beherrschen den Umgang mit dem Protokoll. Auf der Server-Seite fällt das Angebot deutlich dünner aus. Unter Linux gilt Vsftpd [1] als der bekannteste Vertreter, für dessen Einrichtung Sie Linux-typisch eine Konfigurationsdatei (/etc/vsftpd.conf) im Editor bearbeiten. Für das Verwalten separater Benutzerkonten kommt noch eine weitere Datei (typischerweise /etc/vsftpd.users) hinzu.

Einen alternativen Ansatz bietet Filezilla Server [2], dessen Entwickler Tim Kosse besser für den komfortablen grafischen FTP-Client Filezilla bekannt ist: Der Dienst setzt auf eine grafische Oberfläche und lässt sich ohne jeglichen Kontakt mit Konfigurationsdateien einrichten und administrieren.

Installation

Um Filezilla Server zu installieren, klicken Sie auf der Projektseite [2] auf Download Filezilla Server (All platforms) und dann unter Linux (64bit x86) auf Download Filezilla Server, um ein DEB-Paket für Debian 11 herunterzuladen. Das lief im Test problemlos auch unter Ubuntu 23.10.

Die Website versucht, Sie zum Kauf einer Version mit Handbuch zu überreden; klicken Sie hier einfach auf Download. Die so heruntergeladene DEB-Datei spielen Sie anschließend auf der Kommandozeile ein (Listing 1). Achten Sie dabei auf den Punkt und den Schrägstrich vor dem Dateinamen: Daran erkennt Apt, dass es sich um eine Pfadangabe handelt.

Listing 1

Installation

$ sudo apt install ./Filezilla_Server_1.7.3_x86_64-linux-gnu.deb

Im Rahmen der Einrichtung wählen Sie ein Administratorpasswort (Abbildung 2). Apt spielt neben dem heruntergeladenen Paket auch einige Abhängigkeiten ein, und dann startet der Dienst auch bereits im Hintergrund. Per Systemctl prüfen Sie, ob der Dienst läuft (Abbildung 3).

Abbildung 2: Bereits beim Einspielen des DEB-Pakets unter Ubuntu oder Debian setzen Sie ein Administratorpasswort f&uuml;r Filezilla Server.

Abbildung 2: Bereits beim Einspielen des DEB-Pakets unter Ubuntu oder Debian setzen Sie ein Administratorpasswort für Filezilla Server.


Abbildung 3: L&auml;uft der Service? Filezilla Server l&auml;uft auf Debian- und Ubuntu-Systemen unter der Kontrolle von Systemd.

Abbildung 3: Läuft der Service? Filezilla Server läuft auf Debian- und Ubuntu-Systemen unter der Kontrolle von Systemd.

Verwenden Sie eine nicht auf Debian basierende Distribution, dann laden Sie statt des DEB-Paktes einen Tarball herunter und entpacken ihn. In diesem Fall fehlt allerdings die Einbindung in Autostart-Mechanismen. Darüber hinaus müssen Sie das Binary filezilla-server im Ordner Filezilla_Server/ manuell mit Root-Rechten starten. Unter OpenSuse Leap 15.4 funktionierte das im Test ohne Probleme.

Verwaltung via GUI

Klicken Sie in der Übersicht der installierten Anwendungen auf Filezilla Server Administration, um das grafische Verwaltungsprogramm zu starten. Es zeigt beim ersten Mal einen leeren Bildschirm an, der nur die Schaltfläche Connect to Server anbietet. Klicken Sie darauf und übernehmen Sie die Vorgaben bei Host und Port (localhost und 14148). Geben Sie danach im Feld Password das bei der Installation festgelegte Admin-Passwort ein. Verwenden Sie den Server aus dem TAR-Archiv, fällt dieser Schritt weg. Sie starten dann die Verwaltungsoberfläche, indem Sie das Programm filezilla-server-gui im Ordner Filezilla_Server/ ausführen. Das funktioniert ohne Root-Rechte, und Sie können das Passwortfeld im Anmeldedialog leer lassen.

Über die grafische Oberfläche verwalten Sie bei Bedarf mehrere Instanzen des Servers. Verwenden Sie nur den lokal installierten Server, setzen Sie die Häkchen bei Save the password und Automatically connect to this server at startup, um sich künftig die Passworteingabe und die Auswahl des Servers zu sparen.

Beim ersten Verbindungsaufbau zeigt das Verwaltungsprogramm einen vom Server übertragenen Fingerprint an. Diese längere Folge aus Hexadezimalzahlen haben Sie bei der Installation bereits im Terminalfenster gesehen. Sie finden sie später aber auch unter /opt/filezilla-server/etc/certificates/ (Abbildung 4) respektive unter /root/.config/filezilla-server/certificates/, falls Sie den Tarball verwendet haben. Ein Vergleich hilft Ihnen, sich davon zu überzeugen, dass Sie wirklich eine Verbindung zum gewünschten Server aufbauen. Das spielt im Normalfall aber nur dann eine Rolle, wenn Sie entfernte Filezilla-Server administrieren möchten. Passt alles, klicken Sie auf Ja.

Abbildung 4: Einer der Ordner im Zertifikatsverzeichnis hei&szlig;t wie der Fingerprint des Servers (ohne Doppelpunkte).

Abbildung 4: Einer der Ordner im Zertifikatsverzeichnis heißt wie der Fingerprint des Servers (ohne Doppelpunkte).

Das Admin-Interface zeigt nun das Server-Protokoll an. Erscheinen die einzelnen Einträge rechts abgeschnitten, ziehen Sie das Fenster breiter oder klicken einen Eintrag an, kopieren den Text mit [Strg]+[C] in die Zwischenablage und fügen ihn dann in ein Editor-Fenster ein, um ihn zu lesen.

Konfiguration

Zum Öffnen der Server-Einstellungen drücken Sie [Strg]+[F] oder rufen den Menüpunkt Server | Configure auf. Das ist der richtige Ort, um generell Zugriffe zu erlauben, denn in der Grundeinstellung klappt das nicht. Zwar lauscht der Server bereits auf dem richtigen Port und nimmt Verbindungsanfragen von FTP-Clients entgegen, doch es gibt noch keine gültigen Zugangsdaten, mit denen ein Login gelingt.

Möchten Sie direkt Logins für schon vorhandene Benutzerkonten auf dem Linux-PC erlauben, klicken Sie in den Einstellungen auf Users und wählen unter Available users den Eintrag system user aus. Hier setzen Sie ein Häkchen vor der ersten Option User is enabled und klicken dann auf OK. Damit erhalten alle auf dem System angelegten Benutzer ohne weiteren Konfigurationsaufwand FTP-Zugang zu ihren Heimatverzeichnissen. Dieses unsichere Szenario ist allerdings nur akzeptabel, wenn der Rechner im lokalen Netzwerk arbeitet und der Server nicht von außen erreichbar ist, denn die Zugangsdaten werden im Klartext übertragen. Abbildung 5 zeigt, wie Sie mit dem Paket-Sniffer Wireshark [3] die Übertragung in zwei Schritten (USER test und PASS testpass) mitlesen.

Abbildung 5: Mit dem Paket-Sniffer Wireshark &uuml;berwachen Sie den Klartext-Netzwerkverkehr von FTP und anderen veralteten Diensten wie Telnet.

Abbildung 5: Mit dem Paket-Sniffer Wireshark überwachen Sie den Klartext-Netzwerkverkehr von FTP und anderen veralteten Diensten wie Telnet.

Separate Konten

Wenn Sie zwar Logins über das ungesicherte FTP-Protokoll erlauben, dabei aber nicht die normalen Zugangsdaten nutzen möchten, legen Sie in der Verwaltungsoberfläche separate Konten an. Nach einem Klick auf Add in der Nutzerverwaltung erscheint der neue Eintrag New User, in dem Sie als Erstes den Benutzernamen angeben. Auf der rechten Seite zeigt das Häkchen bei User is enabled bereits an, dass das neue Konto auch nutzbar sein soll. Die Frage ist nun, wie die Software zukünftig die Zugangsberechtigung überprüft: Voreingestellt ist die Option Require a password to log in, wofür Sie das Passwort im darunterliegenden Feld eintragen.

Falls Sie einen auch auf dem Linux-System bekannten Benutzernamen verwenden, können Sie die Anmeldemethode auf Use system credentials to log in umstellen. Dann verwendet der Server beim Login das unter Linux vergebene Passwort – was aber zum oben beschriebenen Sicherheitsproblem führt. Eine weitere Alternative bietet Do not require authentication. Wählen Sie diese Variante aus, benötigen Sie zum Anmelden gar kein Passwort. Das ist sinnvoll, wenn Sie einen Anonymous-Zugang einrichten (siehe Kasten “Anonymous-Zugang”).

Mit den Anmeldedaten ist die Kontoeinrichtung aber noch nicht abgeschlossen. Unter Mount points müssen Sie noch Ordner im lokalen Dateisystem zugänglich machen. Vergessen Sie diesen Schritt, gelingt zwar später die Anmeldung am Server, aber jeder Versuch, den Verzeichnisinhalt anzuzeigen, scheitert mit einer Fehlermeldung.

Anonymous-Zugang

Öffentliche FTP-Server erlauben den Zugriff ohne Zugangsdaten. Das Protokoll sieht aber die Abfrage von Username und Passwort vor, weswegen sich folgendes Prozedere durchgesetzt hat: Auf einem frei zugänglichen FTP-Server gibt es immer einen Benutzer namens anonymous, für den der Zugang ohne Passwortüberprüfung eingerichtet wurde.

Wenn Sie zum Beispiel mit Wget eine Datei von einem FTP-Server herunterladen, gibt das Tool bei der Anmeldung diesen Benutzernamen und ein Passwort an. Am übertragenen Passwort können Sie den Client erkennen: Wget schickt -wget@, Curl ftp@example.com. Das deutet schon auf eine weitere Konvention hin: Die Betreiber von FTP-Servern haben oft darum gebeten, dass man beim anonymen Login als Passwort die eigene E-Mail-Adresse angibt. So war es dann möglich, Nutzungsstatistiken zu erstellen. In Abbildung 1 sehen Sie, wie der Server der Uni Erlangen bei der manuellen Anmeldung mit dem FTP-Client um die Angabe der vollständigen E-Mail-Adresse bittet.

Um in Filezilla Server einen anonymen Zugang einzurichten, gehen Sie wie beim Anlegen eines normalen Benutzerkontos vor. Als Benutzernamen vergeben Sie anonymous, richten einen Mount Point (ein freigegebenes Verzeichnis) ein und setzen den Access mode auf Read only. Das ist besonders dann wichtig, wenn Sie den Server über das Internet erreichbar machen, denn FTP-Server mit anonymem Zugang und Schreibrechten wurden in der Vergangenheit oft für das Verteilen illegaler Dateien verwendet.

Wenn Sie im eingetragenen Freigabeordner eine Testdatei anlegen, können Sie mit Curl oder Wget direkt überprüfen, dass der passwortlose Zugang funktioniert (Abbildung 6).

Abbildung 6: Haben Sie einen anonymen Zugang eingerichtet, k&ouml;nnen Sie mit Wget und Curl Daten vom FTP-Server herunterladen.

Abbildung 6: Haben Sie einen anonymen Zugang eingerichtet, können Sie mit Wget und Curl Daten vom FTP-Server herunterladen.

Einhängepunkte

Die Software hantiert hier mit den Begriffen Virtual path und Native path. Diese Zuordnungen setzen die im Client benutzten Ordnernamen in lokale Verzeichnisse auf dem Server um. Wollen Sie etwa, dass ein Benutzer meier auf sein Home-Verzeichnis /home/meier/ zugreifen kann, dann fügen Sie mit Add eine neue Zeile zur Mount-Point-Liste hinzu und tragen als Virtual path das Wurzelverzeichnis / und als Native path den Ordner /home/meier/ ein.

Über weitere Zeilen lassen sich andere Bereiche des Dateisystems einblenden. Machen Sie beispielsweise das Home-Verzeichnis /home/schmidt/ der Kollegin Schmidt unter /kollegin zugänglich (Abbildung 7), überdeckt das beim Mounten die Inhalte in bereits vorhandenen, gleichnamigen Ordnern. Hat der Benutzer Meier in seinem Heimatverzeichnis einen Ordner kollegin/ angelegt, ist dieser in der beschriebenen Konfiguration nicht mehr sichtbar, denn im FTP-Client wäre der richtige Pfad dorthin /kollegin/. Der zweite Mount Point, der /kollegin dem Home-Verzeichnis /home/schmidt zuordnet, überlagert das jedoch.

Abbildung 7: Beim Anlegen eines Benutzerkontos tragen Sie mindestens einen Mount Point &ndash; also eine Ordnerfreigabe &ndash; ein.

Abbildung 7: Beim Anlegen eines Benutzerkontos tragen Sie mindestens einen Mount Point – also eine Ordnerfreigabe – ein.

Nach dem Anlegen aller Konten klicken Sie auf Anwenden, um die Einstellungen zu übernehmen. Um die neu angelegten Accounts nutzen zu können, bedarf es noch einer letzten Anpassung. Klicken Sie links auf Rights management. Auf der rechten Seite stellen Sie dann ein, mit welchen Benutzerrechten die FTP-Sessions laufen. Standardmäßig nutzt das Programm dafür den Account ftp, dem allerdings die erforderlichen Rechte fehlen, um in die privaten Home-Verzeichnisse unter /home/ zu verzweigen.

Haben Sie nur ein einziges FTP-Konto angelegt, können Sie den Eintrag unter Use other system user | Name auf Ihren eigenen Benutzernamen ändern. Dann startet der Server beim Verbindungsaufbau jeweils einen Kindprozess, der Ihnen gehört. Das funktioniert aber nicht, wenn Sie mehrere Konten anlegen, über die verschiedenen Home-Verzeichnisse erreichbar sind. In dem Fall besteht die einfachste Lösung darin, die Kindprozesse mit Root-Rechten laufen zu lassen, indem Sie im Namensfeld root eintragen. Diese äußerst unsichere Einstellung sollten Sie keinesfalls wählen, wenn sich der Server aus dem Internet erreichen lässt.

Status

Den Verbindungsstatus finden Sie unter den Protokolleinträgen. In Abbildung 8 sind zum Beispiel zwei Benutzer auf dem FTP-Server eingeloggt. Ob der Server überhaupt gerade eine aktive Verbindung unterhält, zeigt das Filezilla-Icon in der Statuszeile an: Bei mindestens einer Verbindung ist es grün, ansonsten rot. Das Icon färbt sich bereits beim Verbindungsaufbau grün, also noch bevor der Client gültige Zugangsdaten an den Server schickt.

Abbildung 8: Einen erfolgreichen Login-Versuch erkennen Sie am Dialog zwischen Client und Server, der mit <span class="ui-element">230 Login successful</span> endet. In der Statuszeile zeigt zudem ein gr&uuml;nes Filezilla-Icon, dass mindestens eine Verbindung besteht.

Abbildung 8: Einen erfolgreichen Login-Versuch erkennen Sie am Dialog zwischen Client und Server, der mit 230 Login successful endet. In der Statuszeile zeigt zudem ein grünes Filezilla-Icon, dass mindestens eine Verbindung besteht.

Aus der Liste der aktiven Verbindungen lassen sich auch einzelne Einträge anwählen. Ein Doppelklick zeigt Informationen zur Session. Mit einem Rechtsklick öffnen Sie das Kontextmenü, aus dem heraus Sie die Verbindung beenden (Kill session) oder die IP-Adresse auf eine Blacklist setzen (Ban IP Address).

FTPS

Verwenden Sie nicht nur den Server, sondern auch den Client des Filezilla-Projekts, versucht der beim Verbindungsaufbau, eine abgesicherte Version von FTP namens FTPS (FTP über SSL) zu nutzen. Mit klassischen FTP-Servern klappt das nicht, und der Client wechselt dann auf das ungeschützte Protokoll.

Der Client und Server von Filezilla sprechen aber beide FTPS, und beim ersten derartigen Verbindungsaufbau zeigt der Client Details zum Server und dessen Fingerabdruck an. Das ähnelt einem erstmaligen Login auf einem entfernten Rechner via SSH, auch wenn FTPS nicht auf SSH basiert (siehe Kasten “FTPS versus SFTP”).

FTPS versus SFTP

Filezilla unterstützt in der kostenfreien Variante nur FTPS. Dabei handelt es sich um eine Erweiterung des älteren FTP um eine auf SSL beziehungsweise TLS basierende Sicherheitsschicht. Das Protokoll verschlüsselt nicht nur Verbindungen und übertragene Login-Daten, sondern sichert sie optional auch über Zertifikate ab. Das macht es einem Angreifer schwerer, sich als der angesprochene Server auszugeben. Damit verhält sich FTPS zu FTP wie HTTPS zu HTTP.

SFTP hat damit aber nichts zu tun: Es basiert auf SSH. Ein SFTP-Client baut zunächst eine sichere SSH-Verbindung zum Server auf, die er dann für den Datentransfer verwendet. Damit nutzen Sie die üblichen Login-Mechanismen von SSH, was zum Beispiel auch eine passwortlose Anmeldung ermöglicht, sofern ein entsprechendes Schlüsselpaar existiert und der öffentliche Schlüssel mit ssh-copy-id auf den Server kopiert wurde. Auch das Secure-Shell-Tool Scp verwendet SFTP.

Für Verwirrung sorgt regelmäßig die Tatsache, dass FTPS gelegentlich auch als Secure FTP bezeichnet wird: Die dafür naheliegende Abkürzung SFTP führt dann aber zum falschen Protokoll.

Wenn Sie mit einem SFTP-Client auf einen Server zugreifen möchten, installieren Sie dort den OpenSSH-Server. Unter Ubuntu richten Sie dazu das Paket openssh-server ein, das automatisch auch das Paket openssh-sftp-server als Abhängigkeit nachzieht.

Statt mit dem Filezilla-Client können Sie auch über einen Kommandozeilen-Client eine FTPS-Verbindung zum Server aufbauen. Das Programm Lftp [4] steckt im gleichnamigen Paket, das Sie unter Ubuntu mit sudo apt install lftp einspielen. Beim Aufruf geben Sie Lftp dann in der Form lftp User@Server direkt den Login-Namen mit.

Falls Sie planen, nur mit FTPS-kompatiblen Clients auf den Server zuzugreifen, schalten Sie das unsichere alte Protokoll ab. Dazu rufen Sie die Einstellungen auf und passen die Einträge im Bereich Server listeners an: Sie stehen ab Werk auf Explicit FTP over TLS and insecure plain FTP. Stellen Sie stattdessen Require explicit FTP over TLS ein und klicken Sie auf OK (Abbildung 9). Ab sofort lehnt der Server unverschlüsselte FTP-Anfragen ab (Listing 2).

Abbildung 9: Es gen&uuml;gen wenige Klicks, um das unsichere FTP auf dem Server zu verbieten.

Abbildung 9: Es genügen wenige Klicks, um das unsichere FTP auf dem Server zu verbieten.

Listing 2

Zugriff nach FTP-Abschaltung

$ ftp esser@localhost
Connected to localhost.
220-Filezilla Server 1.7.3
220 Please visit https://filezilla-project.org/
503 Use AUTH first.
ftp: Login failed
ftp> ^D
221 Goodbye.
### Das ist FTPS!
$ lftp esser@localhost
Passwort:
lftp esser@localhost:~> dir
-rw-rw-rw- 1 ftp ftp    0 Oct 19 08:22 testdatei.txt
drwxrwxrwx 1 ftp ftp    0 Oct 19 20:33 kollegin
lftp esser@localhost:~>

Fazit

Der Filezilla-Server lässt sich komfortabel über eine grafische Oberfläche administrieren. Wer dem Autor 20 Euro zahlt, erhält neben der Software ein Handbuch im PDF-Format.

Das Programm hat noch weitere interessante Features. Unter anderem können Sie für Benutzer individuell die Up- und Download-Geschwindigkeit beschränken. Einzelne IP-Adressen lassen sich blockieren, auch automatisch nach einer einstellbaren Anzahl von fehlgeschlagenen Login-Versuchen.

Wenn Sie allerdings nur gelegentlich Dateien zwischen mehreren eigenen Rechnern übertragen möchten, kommen Sie mit einem einfachen Secure-Shell-Transfer schneller ans Ziel. (tle)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 12/2023 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben