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
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:
Klicke jetzt auf „Verbinden“ und gib dein Passwort ein:
Dann werden die folgenden Details angezeigt, klicke auf OK.
Jetzt bist du mit dem FTP-Server verbunden und kannst Dateien/Ordner hoch- und herunterladen.
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:
Als Nächstes gibst du dein Passwort ein:
Als Nächstes siehst du das SSL-Zertifikat, überprüfe die Zertifikatsdetails und klicke auf OK.
Endlich siehst du den Inhalt deines FTP-Servers und kannst deine Daten sicher von einem System zum anderen übertragen.
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.