1. Installation und Configuration
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 bearbeiten um einige wichtige Werte anzupassen.
nano /etc/proftpd/proftpd.conf
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.
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
Falls man „nano“ benutzt -> STRG + X und das Speichern mit Y bestätigen. Die Shell /bin/false ist dem System jetzt bekannt. Bevor wir weitermachen starten wir ProFTPD erstmal neu:
/etc/init.d/proftpd restart
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.
3.Explizite Verschlüsselung per TLS
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.
touch /etc/proftpd/tls.conf && nano /etc/proftpd/tls.conf
In die Datei kommt nun folgender Inhalt:
<IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 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, meist sehr teures Zertifikat verfügen, dass von einer „vertrauenswürdigen“ Stelle signiert wurde, so müsst ihr euch selbst behelfen. Dafür muss das Debian-Paket openssl installiert sein.
apt-get install openssl
Anschließend werden folgende Befehle verwendet, um das Zertifikat an genanntem Ort zu erstellen:
mkdir /etc/proftpd/ssl openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
Nach dem OpenSSL-Befehl wird man nach einigen Angaben gefragt:
Country Name (2 letter code) [AU]: DE State or Province Name (full name) [Some-State]: Hessen Locality Name (eg, city) []: Frankfurt am Main Organization Name (eg, company) [Internet Widgits Pty Ltd]: XYZ GmbH Organizational Unit Name (eg, section) []: IT-Abteilung Common Name (eg, YOUR name) []: server.host.com Email Address []: [email protected]
Wichtig ist, dass bei Common Name der FQDN angegeben wird! Falls ihr über keine Domain verfügt, muss das der Hostname sein, der von Hetzner parallel zur IP vergeben wurde! static.xx-xx-xx-xx.your-server.de !
Startet anschließend ProFTPD neu und richtet FileZilla auf „Explizites FTP über TSL anfordern“ – Durch den Konfigurationswert „TLSRequired on“ werden jegliche Verbindungsversuche über das normale FTP-Protokoll (Port 21) automatisch abgewiesen.