ProFTPD

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Installation von Programmen

  2. ⚓︎ Einen Editor öffnen

  3. ⚓︎ Ein Terminal öffnen

  4. ⚓︎ Dienste starten und beenden

  5. ⚓︎ Den Internet-Superserver einrichten optional

Inhaltsverzeichnis
  1. Installation
  2. Konfiguration
    1. Einrichtung inetd
    2. Einen Anonymous-FTP-Zugang einrichten
    3. Virtuelle User verwenden
    4. ProFTPD neu starten
  3. Grafische Bedienoberfläche
  4. Links

Wiki/Icons/service.png ProFTPD 🇬🇧 ist ein weit verbreiteter FTP-Server für UNIX-Plattformen, der die Standards FTP, SFTP, und FTPS unterstützt. Im Vergleich mit anderen Programmen zeichnet er sich insbesondere durch vielfältige Konfigurationsmöglichkeiten aus. Speziell bei Ubuntu muss man berücksichtigen, dass die Version aus den offiziellen Paketquellen der Sektion universe zugeordnet ist und damit – im Gegensatz zum vsftpd – keine Sicherheitsupdates erhält.

Wer den ProFTPD trotzdem für einen aus dem Internet erreichbaren, öffentlichen FTP-Server nutzen möchte, sollte daher eine Kompilation aus dem Quelltext in Betracht ziehen.

Installation

Der ProFTPD ist in den offiziellen Paketquellen enthalten und kann daher einfach installiert [1] werden. Folgendes Paket ist erforderlich:

Befehl zum Installieren der Pakete:

sudo apt-get install proftpd-basic 

Oder mit apturl installieren, Link: apt://proftpd-basic

Ferner besteht die Möglichkeit, folgende Erweiterungen zu installieren:

Konfiguration

Mit dem ProFTPD wird schon eine sehr gut kommentierte Konfigurationsdatei /etc/proftpd/proftpd.conf mitinstalliert, die man dann gegebenenfalls anpassen [2] muss. Standardmäßig läuft proFTPD standalone (also ohne inetd), nutzt IPv4 und IPv6 und erlaubt den Login für auf dem System vorhandene Benutzer, welche nicht gechrootet werden, sie können anhand der Dateisystemrechte alle Verzeichnisse erreichen, die sie auch sonst im System erreichen können.

Einrichtung inetd

Die Nutzung mit dem Internet-Superserver wird empfohlen, wenn der Dienst selten genutzt wird. So können Ressourcen eingespart werden, da der Dienst erst beim Zugriff gestartet wird. Bei stark ausgelasteten Servern ist der Internet-Superserver jedoch langsamer und es sollte der standalone-Betrieb genutzt werden.

Möchte man ProFTPD mit inetd nutzen, so ist ein inetd-Server zu installieren. Anschließend ist in der Datei /etc/proftpd/proftpd.conf die Zeile

ServerType                              standalone

in

ServerType                              inetd

zu ändern.

Danach muss der Dienst neu gestartet werden. Er lauscht nun nicht mehr auf dem TCP-Port 21, da dies der inetd tun wird und die Datenpakete an den Prozess weitergibt.

In der Datei /etc/inetd.conf müssen folgende Zeilen hinzugefügt werden.

ftp    stream  tcp6     nowait  root    /usr/sbin/tcpd  /usr/sbin/proftpd #für IPv6 bei openbsd-inetd und für IPv4 und IPv6 bei inetutils-inetd
ftp    stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/proftpd #für IPv4 bei beidem, kann bei inetutils weggelassen werden, wenn tcp6 genutzt wird.

Hier wird zusätzlich tcpd als Zugriffskontrolle genutzt, hier können zusätzliche IP-basierte Zugriffsregeln definiert werden, welche in diesem Artikel nicht weiter behandelt werden. Danach muss der Internet-Superserver neugestartet werden.

sudo service inetd restart #für openbsd-inetd
sudo service inetutils-inetd restart #für inetutils-inetd 

Einen Anonymous-FTP-Zugang einrichten

Oft möchte man einen FTP-Server als Download-Server für die Öffentlichkeit betreiben. Die Benutzer sollen in diesem Fall anonym zugreifen können. Dafür muss folgender Abschnitt am Ende der Konfigurationsdatei angehängt werden. Dabei haben alle Benutzer Leserechte für den Ordner /srv/ftp/, jedoch keine Schreibrechte:

<Anonymous ~ftp>
  User                        nobody
  Group                       nogroup
  UserAlias                   anonymous ftp
  DirFakeUser on ftp
  DirFakeGroup on ftp
  RequireValidShell           off
  MaxClients                  10
  DisplayLogin                welcome.msg
  DisplayChdir           .message
  <Directory *>
    <Limit WRITE>
      DenyAll
    </Limit>
  </Directory>
</Anonymous>

Dem Ordner /srv/ftp/ müssen natürlich auch die benötigten Zugangsrechte gegeben werden [3]:

sudo chmod 755 -R /srv/ftp/ 

Virtuelle User verwenden

Wenn man den nicht-anonymen Benutzern nur den FTP-Zugang gestatten will, aber nicht die Nutzung anderer Dienste wie SSH, ist es sinnvoll, die Benutzer über eine Textdatei zu verwalten, anstatt sie als Systemuser zu erstellen. Das nennt man virtuelle User, denn in Wirklichkeit existieren die Benutzer ja nicht.

Dazu müssen in der Datei /etc/proftpd/proftpd.conf folgende Zeilen stehen:

DefaultRoot ~
AuthOrder                      mod_auth_file.c  mod_auth_unix.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
RequireValidShell off 

Nun wechselt man in das Verzeichnis /etc/proftpd/ und legt einen neuen Benutzer mittels

sudo ftpasswd --passwd --name benutzername --uid 1001 --home /pfad/zum/userdir --shell /bin/false 

an.

Als UID (UserID) muss man natürlich eine gültige, numerische Benutzer-ID verwenden, unter der der Benutzer auf dem System agieren soll. Man kann entweder für jeden dieser virtuellen Benutzer einen eigenen Linux-Benutzerzugang anlegen, oder mehrere virtuelle teilen sich einen. Die Direktive DefaultRoot ~ verhindert auch in diesem Fall, dass die Benutzer auf die Homeverzeichnisse der anderen zugreifen können, sofern sie sich das nicht auch noch teilen sollen (sinnvoll bspw. bei Webmaster-Teams).

Tipp: Im Falle einer Installation des Apache-Webservers wäre es sinnvoll, den erstellten Benutzern die UID des Benutzer www-data (Befehl: id www-data) zu geben, da die Nutzer dann Lese-, Schreib- und Ausführungsrechte im /var/www hätten, ohne dass man über andere umständliche und unsichere Wege zur Lösung kommen muss. Damit öffnet man aber eine potentielle Sicherheitslücke, da Apache selbst mit den Rechten der Gruppe www-data läuft!

ProFTPD neu starten

Nachdem nun alle gewünschten Änderungen vorgenommen sind, und die Datei gespeichert ist, muss der ProFTP-Daemon noch einmal neu gestartet werden.

sudo service proftpd restart 

./gproftpd.png

Grafische Bedienoberfläche

Es gibt auch eine auf GTK basierende grafische Oberfläche, mit der man den Server konfigurieren kann. Diese lässt sich über die Paketverwaltung installieren:

Befehl zum Installieren der Pakete:

sudo apt-get install gadmin-proftpd 

Oder mit apturl installieren, Link: apt://gadmin-proftpd

So erhält man eine komplette grafische Oberfläche für ProFTPD, in der sich auch direkt Einträge in die ProFTPD.conf erstellen lassen.