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

Das File-Transfer-Protocol (FTP) gehört zu den gefragtesten Dateiübertragungstechniken und kommt oft beim Up- und Download von Dateien auf Webspaces zum Einsatz. Wir zeigen Ihnen, wie Sie einen solchen FTP-Server inklusive TLS-Verschlüsselung unter Debian einrichten.

## 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](https://www.ionos.de/digitalguide/server/knowhow/ftp-file-transfer-protocol/)-Server, die größtenteils **[Open Source](https://www.ionos.de/digitalguide/server/knowhow/was-ist-open-source/)** und in der Regel in den Paketverwaltungen der jeweiligen [Linux-Distribution](https://www.ionos.de/digitalguide/server/konfiguration/linux-distributionen/) zu finden sind.

Eine der bekanntesten Anwendungen ist das GPL-lizenzierte [ProFTPD](http://www.proftpd.org/ "ProFTPD-Projekt: Startseite"), das dank seines modularen Aufbaus hochgradig erweiterbar ist. Die Haupt-Konfigurationsdatei funktioniert auf Basis von Direktiven und Direktiven-Gruppen, die allen Administrierenden vertraut vorkommen dürften, die sich mit [Apache-Webservern](https://www.ionos.de/digitalguide/server/knowhow/was-ist-apache/) auskennen. Auch [Debian](https://www.ionos.de/digitalguide/server/knowhow/debian-die-universelle-system-software/) führt **ProFTPD standardmäßig im Software-Repository**. Die Installation erfolgt also auf dem üblichen Weg über das Terminal und mit folgenden Befehlen:

```bash
sudo apt update
sudo apt install proftpd
sudo apt install proftpd-mod-crypto
```

Falls der FTP-Server bei einem System-Neustart automatisch starten soll, sollten Sie zusätzlich den folgenden Befehl ausführen:

```bash
sudo systemctl enable proftpd
```

Tipp Sie möchten Daten speichern oder transferieren? Dann jetzt [Secure FTP Server mieten](https://www.ionos.de/hosting/ftp-server-mieten "FTP Server mieten") bei IONOS. Sichere Übertragung dank [SSH](https://www.ionos.de/hilfe/hosting/ssh-zugaenge-einrichten-und-verwalten/was-ist-ssh/ "Was ist SSH?") und SSL/[TLS](https://www.ionos.de/digitalguide/server/sicherheit/tls-transport-layer-security/) sowie tägliche Backups inklusive.

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).

## FTP-Server auf Debian: 5 Szenarien und der passende IONOS Server-Tarif

Sie sind unsicher, welche Hardware- und Netzwerkkonfiguration Sie für Ihren Debian-FTP-Server benötigen? In der folgenden Tabelle haben wir drei mögliche Einsatzszenarien für einen FTP-Server aufgeführt und den jeweils am besten geeigneten Server-Tarif von IONOS vorgeschlagen.

<table>
  <thead>
    <tr>
      <th>FTP-Server-Szenario</th>
      <th>Passender IONOS-Tarif</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Kleiner Webserver</td>
      <td>VPS Linux M</td>
    </tr>
    <tr>
      <td>Größerer Webserver</td>
      <td>VPS Linux XL</td>
    </tr>
    <tr>
      <td>Enterprise-FTP-Server</td>
      <td>Dedicated Server AMD Ryzen XXL-128 NVMe</td>
    </tr>
  </tbody>
</table>

## 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 **mit dem Editor Ihrer Wahl**. Mit dem Debian-Standardprogramm *nano* gelingt dies beispielsweise durch folgendes Terminal-Kommando:

```bash
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 deaktiviert) 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**.

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-Hostnamens](https://www.ionos.de/digitalguide/hosting/hosting-technik/hostname/) 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-Nutzenden beziehen, wie in der folgenden Beispiel-Konfiguration deutlich wird:

```none
# 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 Nutzende zugreifen dürfen
    DefaultRoot    Verzeichnis-Path
</Global>
# Autorisierte Nutzende/Nutzergruppen für den FTP-Log-in definieren
<Limit LOGIN>
    # Anmeldung ist nur für Nutzende 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 Nutzenden 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 Nutzenden lediglich einen Speicherort für ihre Dateien zu bieten, sollten Sie ProFTPD so einrichten, dass der Zugriff auf das **Home-Verzeichnis** beschränkt ist:

```none
# Nutzenden lediglich den Zugriff auf ihr Home-Verzeichnis erlauben
DefaultRoot ~
```

### FTP-User erstellen

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

```bash
sudo sh -c 'echo "/bin/false" >> /etc/shells'
```

Anschließend können Sie ein erstes Nutzerkonto erstellen:

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

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

```none
<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 der besitzende Account mit allen Rechten ausgestattet. Andere Nutzende dürfen Dateien hingegen lediglich lesen und sie nur dann ausführen, wenn der besitzende Account 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 Accounts 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 Nutzende lediglich Dateien hochladen können. Eine ausführliche Übersicht über die verschiedenen Einstellungsmöglichkeiten finden Sie in den [Online-Manuals](http://www.proftpd.org/docs/howto/Limit.html "ProFTPD-How-tos: Konfiguration von „Limits“").

### 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 Nutzende **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:

```bash
sudo chmod 755 -R /home/ftpdownload
```

Der **Account, der das Verzeichnis besitzt**, hat also die **kompletten Rechte (7 = Lesen, Schreiben und Ausführen)**, während die Gruppenbenutzer und alle anderen Nutzenden **lediglich lesen und ausführen (5)** können. Sind die Rechte definiert, lässt sich der anonyme Zugriff in der *proftpd.conf*-Datei konfigurieren:

```none
<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:

```bash
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 alle zugänglich sein soll, ist es folglich empfehlenswert, den **Log-in zu verschlüsseln**. Dies können Sie mithilfe **der freien Software OpenSSL** einrichten. 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:

```bash
sudo apt 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:

```bash
sudo 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:

```bash
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. „*Bayern*“
- **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. Für die Aktivierung sind Anpassungen in der *tls.conf* von Nöten. Öffnen Sie die Konfigurationsdatei und suchen nach dem folgenden Eintrag:

```none
<IfModule mod_tls.c>
    TLSEngine    off
```

Weisen Sie der TLSEngine-Direktive den Wert „on“ zu und erweitern den Abschnitt darüber hinaus folgendermaßen (z. B. indem Sie Kommentar-Rauten löschen):

```none
<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:

```bash
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 Benutzende einen **FTP-Client, der den verschlüsselten Verbindungsaufbau unterstützt**. Einer der prominentesten Vertreter ist [FileZilla](https://www.ionos.de/digitalguide/server/konfiguration/filezilla-tutorial-zum-ftp-clientprogramm/), 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 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.

Falls die TLS-Verbindung in FileZilla nicht aufgebaut werden kann, könnte es eventuell notwendig sein, das mod\_tls-Modul manuell zu laden. Tragen Sie hierfür die folgende Zeile am Anfang von *proftpd.conf* ein:

```none
LoadModule mod_tls.c
```

Damit diese Änderung wirksam wird, müssen Sie anschließend den Server neu starten:

```bash
sudo systemctl restart proftpd
```

Tipp Das [SSH File Transfer Protocol](https://www.ionos.de/digitalguide/server/knowhow/sftp-ssh-file-transfer-protocol/) verwendet SSH statt TLS/SSL und stellt eine schlanke, nutzerfreundliche Alternative zu FTPS dar.

### 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](http://proftpd.org/docs/ "proftpd.org: Online-Manuals") 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.

## 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:

```none
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**:

```none
# 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:**

```bash
sudo service proftpd status
```

**2. Testen, ob der ProFTPD-Server auf dem [TCP-Port](https://www.ionos.de/digitalguide/server/knowhow/tcp-und-udp-ports/) 21 lauscht, um eingehende FTP-Anfragen zu registrieren**:

```bash
sudo netstat -tlp|grep proftpd
```

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

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

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

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

**5. Verbindungstests auf Port 21 mit telnet:**

```bash
sudo telnet [IP-Adresse] 21
```

**6. Verbindungstests auf Port 21 mit TLS:**

```bash
sudo openssl s_client -connect  [IP-Adresse]:21 -starttls ftp
```


This is a markdown version of: [https://www.ionos.de/digitalguide/server/konfiguration/eigenen-debian-ftp-server-mit-proftpd-einrichten/](https://www.ionos.de/digitalguide/server/konfiguration/eigenen-debian-ftp-server-mit-proftpd-einrichten/) for AI/LLM consumption.