Debian-FTP-Server: So installieren und konfigurieren Sie Ihren eigenen Server

Wer regelmäßig größere Dateien auf einem Server ablegen und abrufen möchte, ist auf eine geeignete Übertragungstechnik angewiesen. Unter den möglichen Lösungen zählt der Dateitransfer via File-Transfer-Protocol (FTP) bis heute zu den gefragtesten. Das auf der Anwendungsschicht agierende Übertragungsprotokoll für IP-Netzwerke bietet dem Nutzer zusätzlich zum Transport von Daten über die TCP-Ports 20 und 21 auch die Möglichkeit, Verzeichnisse anzulegen und wunschgemäß zu strukturieren. Da Sie zu diesem Zweck lediglich mit einer Client-Software auf den FTP-Server zugreifen müssen und eine Vernetzung beider Komponenten über das Internet ausreicht, kommt die Übertragungstechnik oft beim Up- und Download von Dateien auf Webspaces zum Einsatz.

Als Mieter solcher Website-Ressourcen erhält man in der Regel spezifische Log-in-Daten, mit denen sich eine Verbindung zum FTP-Server des Hosting-Anbieters herstellen lässt. Als Selbst-Hoster kann man die Dateitransfertechnik aber natürlich ebenfalls nutzen, indem der eigene Server entsprechend installiert und eingerichtet wird. Dieser Ratgeber erklärt, wie Sie einen solchen FTP-Server unter Debian einrichten (inklusive TLS-Verschlüsselung).

Tipp

Sie möchten Daten speichern oder transferieren? Dann jetzt Secure FTP Server mieten bei IONOS. Sichere Übertragung dank SSH und SSL/TLS, sowie tägliche Back-ups inklusive.

Installation eines Debian-FTP-Servers

Bevor Sie sich mit der Einrichtung und Konfiguration auseinandersetzen können, müssen Sie zunächst die passende Server-Software finden und installieren. Für Linux existieren diverse FTP-Server, die größtenteils Open Source und in der Regel in den Paketverwaltungen der jeweiligen Distribution zu finden sind. Eine der bekanntesten Anwendungen ist das GPL-lizenzierte ProFTPD, das dank seines modularen Aufbaus hochgradig erweiterbar ist. Die Haupt-Konfigurationsdatei funktioniert auf Basis von Direktiven und Direktiven-Gruppen, die jedem Administrator vertraut vorkommen dürften, der sich mit Apache-Webservern auskennt. Auch Debian führt ProFTPD standardmäßig im Software-Repository. Die Installation erfolgt also auf dem üblichen Weg über das Terminal und mit folgendem Befehl:

sudo apt-get install proftpd

Um die Installation abzuschließen, gilt es, im Anschluss zu entscheiden, ob man ProFTPD im Servermodus (standalone) oder als einen von inetd gesteuerten Dienst nutzen möchte. In erstgenannten Fall kümmert sich der FTP-Server eigenständig um eingehende Anfragen. Bei der zweiten Variante nimmt der „Superserver“ inetd/xinetd die Anfragen entgegen und leitet diese an den FTP-Server weiter (das ist allerdings nur interessant, wenn sehr wenig FTP-Traffic erwartet wird).

Debian-FTP-Server-Tutorial: Die wichtigsten Konfigurationsschritte

Nach der Installation können Sie damit beginnen, ProFTPD einzurichten. Die hierfür notwendige Konfigurationsdatei proftpd.conf befindet sich im Verzeichnis /etc/proftpd/. Um sie zu bearbeiten, öffnen Sie sie einfach mit dem Editor Ihrer Wahl. Mit dem Debian-Standardprogramm nano gelingt dies beispielsweise durch folgendes Terminal-Kommando:

sudo nano /etc/proftpd/proftpd.conf

In den verschiedenen Zeilen finden Sie die wichtigsten Einstellungsmöglichkeiten und Funktionen des Debian-FTP-Servers. Jede Komponente erhält dabei eine eigene Zeile und erfordert fest definierte Werte: Geht es beispielsweise darum, ob eine Funktion genutzt werden soll, sind entweder der Wert „on“ (Funktion aktiviert) oder der Wert „off“ (Funktion deaktivert) möglich. Zusätzlich kann einer Zeile das Rautezeichen (#) vorangestellt werden, um sie „auszukommentieren“. Der ProFTPD-Server ignoriert die Zeile dann komplett, weshalb diese Notation auch eine weitere Option darstellt, um Funktionen zu deaktivieren. Hauptsächlich dient das Rautezeichen aber dazu, Kommentare zu den verschiedenen Einstellungsmöglichkeiten zu machen, um die Lesbarkeit der proftpd.conf zu verbessern.

Tipp

Statt der proftpd.conf-Datei können Sie auch eine eigene Konfigurationsdatei nutzen und im Verzeichnis /etc/proftpd/conf.d/ ablegen. Dieses Verzeichnis bleibt bei Aktualisierungen der FTP-Software unberührt – Sie verringern also durch einen einfachen Schritt das Risiko, dass Ihre Einstellungen verlorengehen. Per Include-Direktive lassen sich die im conf.d-Ordner hinterlegten Server-Spezifizierungen dann problemlos in die Hauptdatei einbinden (geschieht mit der Standardkonfiguration automatisch).

Grundeinstellungen: Servername, FTP-Verzeichnis und Co.

Bevor Sie bei der der Konfiguration Ihres Debian-FTP-Servers ins Detail gehen, müssen Sie zunächst das Grund-Setup anpassen. Dabei handelt es sich um elementare Einstellungen wie die Angabe des Server-HostnamensHostname oder des Verzeichnisses, das Sie für den Upload und Download der Dateien bereitstellen wollen. Ferner haben Sie diverse Konfigurationsmöglichkeiten, die sich auf die potenziellen FTP-Nutzer beziehen, wie in der folgenden Beispiel-Konfiguration deutlich wird:

# Angabe von Hostname und Willkommensnachricht
ServerName  "hostname/ip-adresse"
DisplayLogin  "Ihre Anmeldung auf dem Debian-FTP-Server war erfolgreich!"

# Allgemeingültige Log-in-Richtlinien
<Global>
  # Nur den Zugriff mit Shells zulassen, die in /etc/shells definiert sind
  RequireValidShell  on
  # Root-Log-in verweigern
  RootLogin  off
  # Angabe des FTP-Verzeichnisses, auf das der Nutzer zugreifen darf
  DefaultRoot  Verzeichnis
</Global>

# Autorisierte Nutzer/Nutzergruppen für den FTP-Log-in definieren
<Limit LOGIN>
  # Anmeldung ist nur für Nutzer der beispielhaften Gruppe ftpuser möglich
  # Anstelle einer langen Auflistung wird einfach die zugelassene Gruppe negiert (!)
  DenyGroup  !ftpuser
</Limit>

In dieser Basis-Konfiguration wird den Nutzern der Zugriff auf ein spezifisches Verzeichnis verliehen. Das ist unter anderem dann sinnvoll, wenn diese beispielsweise an der Pflege eines Webauftritts beteiligt sind und daher weitreichende Zugriffsrechte benötigen. Besteht die Funktion des Linux-FTP-Servers hingegen darin, den Usern lediglich einen Speicherort für ihre Dateien zu bieten, sollten Sie ProFTPD so einrichten, dass der Zugriff auf das Home-Verzeichnis beschränkt ist:

# Nutzern lediglich den Zugriff auf ihr Home-Verzeichnis erlauben
DefaultRoot ~

FTP-User erstellen

Wenn Sie einen neuen ProFTPD-User anlegen, sollten Sie immer /bin/false als Log-in-Shell definieren. Auf diese Weise sorgen Sie dafür, dass der User nur auf den FTP-Server und nicht auf das gesamte System zugreifen kann. Tragen Sie also mit folgendem Terminal-Befehl zunächst /bin/false in die Datei zugelassener Shells ein:

sudo echo "/bin/false" >> /etc/shells

Anschließend können Sie einen ersten Benutzer erstellen:

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

In diesem Beispiel erstellen Sie einen Nutzer-Account mit dem Namen „user1“ und legen im gleichen Schritt auch sein Home-Verzeichnis an. Abschließend vergeben Sie für den neuen Nutzer-Account ein Passwort und bestätigen das Profil. Damit dieser neu angelegte Benutzer sich nun auch wirklich mit dem Debian-FTP-Server verbinden und Dateien in sein exklusives Verzeichnis hochladen (und später wieder aus diesem herunterladen) kann, geben Sie sein Home-Verzeichnis in der proftpd.conf an:

<Directory /home /user1>
  Umask 022 
  AllowOverwrite off
  <Limit LOGIN>
    AllowUser user1
    DenyAll
  </Limit>
  <Limit ALL>
    AllowUser user1
    DenyAll
  </Limit>
</Directory>

Dieses Code-Beispiel schränkt das Verzeichnis auf verschiedene Arten ein, um es zum privaten Ablageort für die Dateien von user1 zu machen: Mit dem Umask-Befehl (022) wird zunächst der Verzeichnisbesitzer mit allen Rechten ausgestattet. Andere Nutzer dürfen Dateien hingegen lediglich lesen und sie nur dann ausführen, wenn der Besitzer die notwendige Berechtigung erteilt. Die deaktivierte Direktive AllowOverwrite verhindert, dass beim Upload von Dateien bereits gespeicherte Daten überschrieben werden können. Schließlich sind der FTP-Log-in (Limit LOGIN) und das Ausführen von FTP-Befehlen (Limit ALL) für alle Benutzer außer user1 blockiert.

Tipp

Anstatt das Ausführen sämtlicher FTP-Befehle zu verbieten, können Sie auch einzelne Operationen unterbinden. Auf diese Weise lässt sich beispielsweise auch ein Verzeichnis erzeugen, in das Nutzer lediglich Dateien hochladen können. Eine ausführliche Übersicht über die verschiedenen Einstellungsmöglichkeiten finden Sie in den Online-Manuals.

Anonymen Zugriff erlauben

Wenn Sie Ihren Debian-FTP-Server so einrichten wollen, dass dieser als Server für öffentliche Downloads dient, möchten Sie in den meisten Fällen auch, dass Benutzer anonym auf die bereitgestellten Dateien zugreifen können. Hierfür definieren Sie zunächst mithilfe von chmod die notwendigen Zugriffsrechte für das spätere Download-Verzeichnis, das wir hier beispielhaft /home/ftpdownload genannt haben:

sudo chmod 755 -R /home/ftpdownload

Der Besitzer des Verzeichnisses hat also die kompletten Rechte (7 = Lesen, Schreiben und Ausführen), während die Gruppenbenutzer und alle anderen Benutzer lediglich Lesen und Ausführen (5) können. Sind die Rechte definiert, lässt sich der anonyme Zugriff in der proftpd.conf-Datei konfigurieren:

<Anonymous ~ftp>
User  ftp
Group  ftpgroup

# Mögliche Log-in-Profile für Clients
UserAlias  anonymous  ftp

# Nutzer- und Gruppeneigenschaften verschleiern und maximale Client-Zahl
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell  off
MaxClients  10

<Directory *>
  <Limit WRITE>
    DenyAll
  </Limit>
</Directory>
</Anonymous>

Damit nun die Anmeldung auf dem Debian-FTP-Server mit dem Profil ftp gelingt, müssen Sie es der Gruppe ftpuser hinzufügen:

sudo adduser ftp ftpgroup

SSL/TLS-Verschlüsselung einrichten

Das FTP-Protokoll überträgt sowohl Anmeldeinformationen als auch die versendeten Daten im Klartext. Wenn Sie einen privaten ProFTPD-Server einrichten wollen, der nicht für jedermann zugänglich sein soll, ist es folglich empfehlenswert, den Log-in zu verschlüsseln. Die meistgenutzte Lösung ist die Verschlüsselung via SSL/TLS, die Sie mit wenig Aufwand und mithilfe der freien Software OpenSSL einrichten können. Das Kryptographie-Toolkit ist standardmäßig in der Debian-Paketverwaltung enthalten und bereits installiert. Alternativ lässt sich die Installation auf dem bekannten Weg durchführen:

apt-get install openssl

Schritt 1: Zertifikat und Schlüssel generieren

Anschließend nutzen Sie OpenSSL, um ein Zertifikat zu erstellen. Da Sie dieses irgendwo ablegen müssen, legen Sie zunächst den passenden Ordner im ProFTPD-Verzeichnis an:

mkdir /etc/proftpd/ssl

Zertifikat (proftpd.cert.pem) und Schlüssel (proftpd.key.pem) mit einer Lebensdauer von einem Jahr für Ihren Linux-FTP-Server generieren Sie nun unter Angabe dieses Ablageortes mit folgendem Befehl:

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

Zusätzlich ist die Angabe einiger Informationen notwendig, um das Zertifikat ordnungsgemäß zu registrieren:

  • Country Name (2 letter code): Ländercode, z. B. „DE“ für Deutschland
  • State or Province Name (full name): Bundesland/Region, z. B. „Berlin
  • Locality Name (eg, city): Stadt, z. B. „München
  • Organization Name (eg, company): Name des Unternehmens bzw. Ihr Name
  • Organizational Unit Name (eg, company): Angabe der Abteilung (insofern vorhanden), z. B. „IT
  • Common Name (eg, YOUR name): Angabe der zu schützenden Domain, z. B. „ftp.example.com.
  • Email Address: E-Mail-Adresse

Schritt 2: SSL/TLS in ProFTPD aktivieren

Nachdem Sie Ihr eigenes Zertifikat samt Private-Key erstellt haben, müssen Sie die Verschlüsselungstechnik für den ProFTPD-Server aktivieren. Hierfür hält die Debian-FTP-Server-Software das Modul mod_tls bereit, das standardmäßig zwar installiert, aber ausgeschaltet ist. Für die Aktivierung sind einmal mehr Anpassungen in der proftpd.conf von Nöten. Öffnen Sie die Konfigurationsdatei und suchen nach dem folgenden Eintrag:

<IfModule mod_tls.c>
  TLSEngine  off
</IfModule>

Weisen Sie der TLSEngine-Direktive den Wert „on“ zu und erweitern den Abschnitt darüber hinaus folgendermaßen:

<IfModule mod_tls.c>
  TLSEngine      on
  TLSLog        /var/log/proftpd/tls.log
  TLSProtocol      TLSv1 TLSv1.1 TLSv1.2
  TLSRSACertificateFile    /etc/proftpd/ssl/proftpd.cert.pem
  TLSRSACertificateKeyFile  /etc/proftpd/ssl/proftpd.key.pem
  TLSVerifyClient      off
  TLSRequired      on
</IfModule>

Auf diese Weise haben Sie nicht nur die SSL/TLS-Verschlüsselung für Ihren Debian-FTP-Server aktiviert, sondern im gleichen Schritt auch die wichtigsten Einstellungen gemacht. So ist die Log-Datei für die Aufzeichnungen der FTP-Verbindungen (TLSLog) ebenso definiert wie die Pfade zu Zertifikat (TLSRSACertificateFile) und Schlüssel (TLSRSACertificateKeyFile). Ferner sind auch die möglichen Protokoll-Versionen (TLSProtocol) angegeben. Die letzten beiden Zeilen bewirken, dass das Modul die vom Client präsentierten Zertifikate nicht verifiziert (TLSVerifyClient) und dass die Verschlüsselung Grundvoraussetzung für den Verbindungsaufbau ist (TLSRequired). Nach einem Neustart des ProFTPD-Servers sind die Neueinstellungen wirksam:

sudo /etc/init.d/proftpd restart

Schritt 3: Via SSL/TLS auf dem ProFTPD-Server anmelden

Wenn Sie SSL/TLS für ProFTPD (wie in diesem Debian-FTP-Server-Tutorial empfohlen) aktiviert haben, benötigen die Benutzer einen FTP-Client, der den verschlüsselten Verbindungsaufbau unterstützt. Einer der prominentesten Vertreter ist FileZilla, der nicht nur für Debian und andere Linux-Distributionen, sondern auch für macOS und Windows verfügbar ist. Damit stellt das Open-Source-Programm für Sie und alle anderen Benutzer die optimale Lösung dar, um von verschiedenen Plattformen auf den FTP-Server zuzugreifen.

Im Servermanager von FileZilla geben Sie bei der Auswahl des Servertyps statt FTP die gesicherte Variante FTPS („FTP durch explizites TLS/SSL“) an. Beim ersten Verbindungsaufbau mit dem Server ist es zudem notwendig, das Zertifikat zu akzeptieren.

ProFTPD-Konfiguration – Tipps und Tricks

Bei den hier vorgestellten Konfigurationsmöglichkeiten handelt es sich nur um eine kleine Auswahl. Die facettenreiche FTP-Software lässt noch wesentlich spezifischere und komplexere Szenarien für die Konfiguration des eigenen Servers zu. Die offizielle Website von ProFTPD bietet zu diesem Thema zahlreiche nützliche Infos. Die frei verfügbare Online-Dokumentation beinhaltet unter anderem einige Beispiel-Setups, ausführliche How-tos, FAQs sowie Erklärungen zu den einzelnen Direktiven. Ferner gibt es dort Informationen zu den verschiedenen Standard- und Zusatzmodulen.

Debian FTP-Server einrichten leichtgemacht: Konfiguration via GUI

Im Tutorial haben wir gezeigt, wie Sie mit ProFTPD einen FTP-Server über die Kommandozeile und manuelle Änderungen in der Konfigurationsdatei einrichten. Wie für viele Linux/Unix-Programme gibt es jedoch auch für die FTP-Server-Software verschiedene grafische Benutzeroberflächen, die es ermöglichen, den Server ohne Einsatz des Terminals zu konfigurieren. Unter anderem enthält auch die GUI-Sammlung Gadmintools ein solches User-Interface, das sich problemlos über die Paketverwaltung installieren lässt. Die Oberfläche mit dem Namen gadmin-proftpd unterstützt Sie dabei, Ihren Debian-FTP-Server zu starten, Nutzer-Profile anzulegen oder Änderungen in der proftpd.conf vorzunehmen. Letzteres funktioniert, ohne dass Sie die Konfigurationsdatei dafür öffnen müssen – neue oder veränderte Einträge werden automatisch in diese übertragen.

Hinweis

Die Nutzung einer grafischen Nutzeroberfläche schließt die parallele Konfiguration und Verwaltung des Servers über die Kommandozeile nicht aus.

Mögliche Fehler bei der Server-Konfiguration

In einigen Fällen kann ein Neustart des ProFTPD-Servers dazu führen, dass Sie folgende Fehlermeldung erhalten:

„mod_tls_memcache/0.1: notice: unable to register 'memcache' SSL session cache: Memcache support not enabled“

In diesem Fall besteht das Problem darin, dass das Cache-Module mod_tls_memcache bei der Kompilation von ProFTPD automatisch als SSL/TLS-Bestandteil aktiviert wurde. Wenn Sie die SSL/TLS-Verschlüsselung eingerichtet haben, sorgt das Modul in der Theorie (und sofern gewünscht) für die Zwischenspeicherung der verschlüsselten FTP-Sitzungen. Da Sie das Session-Caching jedoch standardmäßig nicht benötigen, haben Sie auch nicht die notwendigen Einstellungen getätigt, damit das Modul funktioniert – was wiederum zu der Fehlermeldung durch ProFTPD führt. Die Lösung dieses Problems ist simpel: Sie kommentieren das Modul bzw. den Ladeprozess des Moduls in der Konfigurationsdatei aus:

# LoadModule mod_tls_memcache.c

Neben dem Caching-Modul-Problem zählt auch ein fehlerhafter Verbindungsaufbau zu den Komplikationen, die nach der Einrichtung des Debian-FTP-Servers auftreten können. Um diesem Problem auf den Zahn zu fühlen, können Sie auf verschiedene Analyse-Optionen zurückgreifen:

1. Testen, ob der ProFTPD-Server läuft:

sudo service proftpd status

2. Testen, ob der ProFTPD-Server auf Port 21 lauscht, um eingehende FTP-Anfragen zu registrieren:

sudo netstat -tlp|grep proftpd

3. Fehlermeldungen im ProFTPD-Log überprüfen:

sudo tail -20 /var/log/proftpd/proftpd.log

4. Fehlermeldungen im TLS-Log überprüfen:

sudo tail -20 /var/log/proftpd/tls.log

5. Verbindungstests auf Port 21 mit telnet:

sudo telnet 192.0.2.10 21

6. Verbindungstests auf Port 21 mit TLS:

sudo openssl s_client -connect 192.0.2.10:21 -stattls ftp