So installierst du vsftpd FTP Server und sicherst ihn mit TLS unter Debian 11

Das File Transfer Protocol oder FTP ist ein sehr altes und eines der bekanntesten Netzwerkprotokolle. Heutzutage ist es im Vergleich zu SFTP oder SCP nicht mehr sicher, aber es ist immer noch die erste Wahl vieler Nutzer/innen für die Übertragung von Dateien zwischen einem Server und einem Client. FTP gilt als unsicher, weil es die Daten zusammen mit den Benutzerdaten ohne jegliche Verschlüsselung überträgt.

Heutzutage gibt es eine ganze Reihe von Open-Source-FTP-Servern wie FTPD, VSFTPD, PROFTPD und pureftpd. VSFTPD ist ein sehr sicheres, schnelles und meistgenutztes Protokoll für die Übertragung von Dateien zwischen zwei Systemen.

VSFTPD ist auch als „Very Secure File Transfer Protocol Daemon“ bekannt und unterstützt SSL, IPv6, explizites und implizites FTPS.

In dieser Anleitung zeigen wir dir, wie du den FTP-Server vsftpd unter Debian 11 installierst.

Voraussetzungen

Ein Server, auf dem Debian 11 läuft.
Ein Nicht-Root-Benutzer mit sudo-Rechten.

1. Vsftpd installieren

Bevor du mit der Installation beginnst, aktualisiere deinen Debian 11 Server, indem du den folgenden Befehl im Terminal ausführst:

sudo apt update -y
sudo apt upgrade -y

Debian hat ein sehr großes Repository und das vsftpd-Paket ist im offiziellen Repository verfügbar. Du kannst vsftpd also ganz einfach installieren, indem du den folgenden Befehl ausführst:

sudo apt install vsftpd -y

Nach der Paketinstallation starte den vsftpd-Dienst, überprüfe den Dienststatus und aktiviere den Dienst beim Start.

sudo systemctl start vsftpd

sudo systemctl status vsftpd

systemctl enable vsftpd.service

2. Einen FTP-Benutzer anlegen und für die FTP-Anmeldung konfigurieren

Erstelle nun ein neues Benutzerkonto für FTP, mit dem wir uns später am FTP-Server anmelden werden.

sudo adduser sohan

Benutzer, die in der Datei vsftpd.userlist hinzugefügt werden, haben die Berechtigung, auf den FTP-Server zuzugreifen.

Als Nächstes müssen wir den Benutzer sohan in die vsftpd-Benutzerliste aufnehmen. Öffne die Datei und füge einen Benutzer hinzu, indem du den folgenden Befehl ausführst:

echo "sohan" | sudo tee -a  /etc/vsftpd.userlist

3. FTP-Benutzerverzeichnis erstellen

Als Nächstes müssen wir ein FTP-Verzeichnis für unseren FTP-Benutzer erstellen und mit folgendem Befehl den Eigentümer festlegen:

sudo mkdir -p /home/sohan/ftp_directory

sudo chown nobody:nogroup /home/sohan/ftp_directory

sudo chmod a-w /home/sohan/ftp_directory

Erstelle nun ein Verzeichnis, in das Dateien hochgeladen werden können, und gib dem Benutzer sohan die Rechte, indem du den Befehl ausführst:

sudo mkdir -p /home/sohan/ftp_directory/ftp_data
sudo chown sohan:sohan /home/sohan/ftp_directory/ftp_data
cd /home/sohan/ftp_directory/
chmod -R 777 ftp_data

FTP-Verzeichnis erstellen

4. Vsftpd konfigurieren

Als Nächstes musst du einige Standardparameter ändern, um einen FTP-Server einzurichten.

Zunächst erstellst du eine Sicherungskopie der ursprünglichen vsftpd-Konfigurationsdatei.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Auf dem FTP-Server wird anonymen Benutzern standardmäßig Zugang gewährt. Um den FTP-Server sicherer zu machen, deaktivieren wir die anonyme Benutzeranmeldung und gewähren nur einem bestimmten Benutzer Zugang.

Als Nächstes öffnest du die Datei vsftpd.conf und nimmst die unten aufgeführten Änderungen vor:

vim /etc/vsftpd.conf
anonymous_enable=NO

local_enable=YES

Es gibt noch einige andere Änderungen, die wir in der Konfiguration vornehmen müssen: Öffne zuerst vsftpd.conf

sudo vim /etc/vsftpd.conf

Vergewissere dich, dass vsftpd.conf die folgenden Zeilen enthält:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
user_sub_token=$USER
local_root=/home/$USER/ftp_directory
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Speichere und schließe die Datei. Du kannst die obige Konfiguration nach deinen Bedürfnissen ändern.

Starte nun den vsftpd-Dienst neu und überprüfe den Status des Dienstes, indem du die folgenden Befehle ausführst:

sudo systemctl restart vsftpd

Stelle als Nächstes sicher, dass der vsftpd-Dienst läuft, indem du den folgenden Befehl im Terminal ausführst:

sudo systemctl status vsftpd

5. Erlaube vsftpd in der Firewall und greife auf den vsftpd-Server zu

Wenn du eine Firewall verwendest, gib Port 21 und Port 22 frei, indem du den folgenden Befehl ausführst:

sudo ufw allow 21/tcp

sudo ufw allow 22/tcp

Lade dann die Firewall neu, um die Änderungen zu übernehmen:

sudo ufw reload

Als Nächstes öffnest du einen beliebigen FTP-Client wie FileZilla und gibst die Daten deines Servers ein, z. B. Protokoll, Host und Benutzer:

Konfiguriere die Firewall
Klicke jetzt auf „Verbinden“ und gib dein Passwort ein:

Passwort eingeben

Dann werden die folgenden Details angezeigt, klicke auf OK.

Neuen Gastgeber akzeptieren

Jetzt bist du mit dem FTP-Server verbunden und kannst Dateien/Ordner hoch- und herunterladen.

Die Verbindung zum FTP-Server war erfolgreich

6. Vsftpd mit SSL/TLS sichern

Angenommen, du möchtest verschlüsselte Daten per FTP übertragen. Dazu musst du ein SSL-Zertifikat erstellen und die SSL/TLS-Verbindung aktivieren.

Du kannst ein Zertifikat mit OpenSSL erstellen, indem du den folgenden Befehl verwendest:

sudo mkdir /etc/cert
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/cert/vsftpd.pem -out /etc/cert/vsftpd.pem

Nun musst du die Datei vsftpd.conf bearbeiten und einige Änderungen vornehmen:

sudo vim /etc/vsftpd.conf

Füge die folgenden Zeilen als letztes ein:

rsa_cert_file=/etc/cert/vsftpd.pem
rsa_private_key_file=/etc/cert/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

Speichere und beende die Datei, dann starte Vsftpd mit dem folgenden Befehl neu:

sudo systemctl restart vsftpd

7. Zugriff auf FTP über SSL/TLS

Öffne den FTP-Client FileZilla und gehe zu Datei>Sites Manager. Hier klickst du auf Neue Seite hinzufügen und gibst den Host-/Seitennamen ein, fügst die IP-Adresse hinzu, definierst das zu verwendende Protokoll und die Verschlüsselung: Require to explicate FTP over TLS und den Anmeldetyp. Klicke dann auf die Schaltfläche Verbinden. Du solltest das folgende Bild sehen:

Zugang zu FTP über SSL/TLS

Als Nächstes gibst du dein Passwort ein:

Passwort eingeben
Als Nächstes siehst du das SSL-Zertifikat, überprüfe die Zertifikatsdetails und klicke auf OK.

Accept SSL cert
Endlich siehst du den Inhalt deines FTP-Servers und kannst deine Daten sicher von einem System zum anderen übertragen.

FTP-Server-Verbindung erfolgreich

Fazit

In der obigen Anleitung haben wir den VSFTPD-Server auf Debian 11 installiert. Außerdem lernen wir, wie man sich über eine unverschlüsselte und über eine verschlüsselte Verbindung mit einem SSL-Zertifikat verbindet.

Das könnte dich auch interessieren …