Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Installieren und Konfigurieren von ProFTPD

profile picture
Author
Hetzner Online
Published
2019-03-08
Time to read
4 minutes reading time

Einführung

Proftpd ist ein FTP-Server für Linux und ermöglicht es seinen Benutzern per FTP-Client Datentransfer zum Server hin bzw. auch zum Client hin durchzuführen (Download/Upload von Dateien) - Es sei dabei nochmal erwähnt, dass FTP standartmäßig absolut unverschlüsselt arbeitet und alle Passwörter, etc. im Klartext übertragen werden, was das FTP-Protokoll zu einem sicherheitsanfälligen Protokoll macht.

Dieses Tutorial bezieht sich bei der Einrichtung auf Debian (squeeze). Neben der allgemeinen Einrichtung und Absicherung wird auch die Verwendung von einer expliziten Verschlüsselung beschrieben.

Schritt 1 - Installation und Konfiguration

Für die Grundinstallation von ProFTPD lassen wir unseren Paketmanager einfach das Paket proftpd installieren:

apt-get install proftpd

Nachdem die Grundinstallation abgeschlossen ist, müssen wir die Konfigurationsdatei /etc/proftpd/proftpd.conf bearbeiten, um einige wichtige Werte anzupassen.

Wir suchen die folgenden Werte und bearbeiten diese entsprechend bzw. fügen sie hinzu, falls sie nicht existieren:

DefaultRoot ~
UseReverseDNS off
IdentLookups off
ServerName "123.123.123.123 FTP Server"
ServerType standalone
DenyFilter \*.*/
RequireValidShell on

Für den Fall, dass später mit TLS (Verschlüsselung auf Zertifikatbasis) gearbeitet werden soll, fügen wir ebenfalls folgendes am Schluss ein:

Include /etc/proftpd/tls.conf

Zur kurzen Erklärung einiger, der oben gesetzen Parameter:

  • DefaultRoot: Sorgt dafür, dass alle Benutzer in ihrem Stammverzeichnis eingesperrt sind und sich nicht frei in der Ordnerstruktur des Servers bewegen können.
  • ServerName "xxx": Der Name des Servers, der bei der ersten Anfrage des FTP-Clients bei der Statusmeldung 220 OK mitgegeben wird.
  • ServerType standalone: Der Server läuft nicht mit inetd, sondern als eigenständiger Server.
  • DenyFilter: Wird verwendet um ein Sicherheitsproblem zu beheben.
  • RequireValidShell on - Damit sich ein Benutzer via FTP anmelden kann, muss die, dem Benutzer unter /etc/passwd zugeordnete Shell, in der Datei /etc/shells existieren und somit als Valid Shell gekennzeichnet sein.

Zusätzliche Einstellung für CX vServer

Da bei CX vServer die öffentliche IP 1:1 auf eine interne IP umgesetzt wird (der ProFTPd davon aber nichts weiß), müssen wir ihm dies mitteilen, so daß er sich entsprechend bei einem Client melden kann. Dazu fügen wir zur proftpd.conf folgende Option hinzu:

MasqueradeAddress <öffentliche IP>

Weitere Konfiguration

Falls noch nicht für andere Zwecke bereits geschehen, muss jetzt noch die Shell /bin/false als Valid Shell hinzugefügt werden. Dieser Schritt ist denkbar einfach. Man öffnet die Datei /etc/shells und fügt einfach an das Ende der Datei folgende Zeile:

/bin/false

Die Shell /bin/false ist dem System jetzt bekannt. Bevor wir weitermachen starten wir ProFTPD erstmal neu:

/etc/init.d/proftpd restart

Schritt 2 - Benutzer für FTP anlegen

Nun legen wir einen neuen Benutzer an. Ich gehe in diesem Beispiel einfach von einem Upload-Benutzer aus, dessen Stammverzeichnis unter /home/upload liegen soll.

adduser --home /home/upload --shell /bin/false upload

Anschließend erscheint eine Passwortaufforderung, die ihr entsprechend ausfüllen und bestätigen müsst. Anschließend testen wir die Verbindung zum Server (beispielsweise mit dem OpenSource-FTP-Client "FileZilla")

Im Log des Clients sollte direkt nach der Auflösung des Hosts etwa folgendes stehen:

220 ProFTPD 1.3.3a Server (Euer Servername) ::ffff:xx.xx.xx.xx]

Damit meldet sich unser ProFTPD Server bereit zum Dienst.

Schritt 3 - Explizite Verschlüsselung per TLS (Optional)

Wie bereits im Konfigurationsabschnitt erwähnt, muss für TLS in der proftpd.conf ein Include-Verweis auf /etc/proftpd/tls.conf erfolgt sein.

Include /etc/proftpd/tls.conf

Anschließend legen wir die entsprechende Datei an, falls dies noch nicht geschehen ist und bearbeiten sie.

In die Datei kommt nun folgender Inhalt:

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

Jetzt muss jedoch noch das entsprechende Zertifikat erstellt werden, damit ProFTPD auch damit arbeiten kann. Wenn ihr ein eigenes (z.B. bei Hetzner bestellt) besitzt, gebt den Pfad in der Config entsprechend an. Solltet ihr über kein Zertifikat verfügen, kann über Let's encrypt eines in wenigen Minuten erstellt werden.

Startet anschließend ProFTPD neu und richtet FileZilla auf Explizites FTP über TLS erfordern. Durch den Konfigurationswert TLSRequired on werden jegliche Verbindungsversuche über das normale FTP-Protokoll Port 21 automatisch abgewiesen.

Zusätzliche Konfiguration auf CX und/oder bei Verwendung von iptables

Da der verwendete TCP Port für die Datenverbindung bei passiven FTP, müssen diese entweder dynamisch freigegeben werden oder ein bestimmter Portbereich explizit erlaubt werden.

  • Variante 1 - Laden des ip_nat_ftp Kernelmoduls
# modprobe ip_nat_ftp
# echo ip_nat_ftp >> /etc/modules
  • Variante 2 - Angeben der verwendeten Ports für passives FTP.

Dazu wird in der proftpd.conf folgende Zeile hinzugefügt: PassivePorts 60000 60500. Und die entsprechenden Ports in der Firewall freigeben: iptables -A INPUT -p tcp -m tcp --dport 60000:60050 -j ACCEPT.

Fazit

Es sollte mit PROFTPD ein Tool für den Dateiaustausch mit dem Server installiert und die Ports so konfiguriert sein, dass sicher darauf zugegriffen werden kann.

Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue

Discover our

Dedicated Servers

Configure your dream server. Top performance with an excellent connection at an unbeatable price!

Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more