So installierst du einen sicheren FTP-Server mit vsftpd unter Debian 12
vSFTPd oder Very Secure FTP Daemon ist eine freie und quelloffene FTP-Server-Software. Es ist ein FTP-Daemon für Unix-ähnliche Betriebssysteme und steht unter der GNU General Public License. vSFTPd ist einer der meistgenutzten FTP-Daemons, er ist schnell und leichtgewichtig in Bezug auf die Systemressourcen, sicher durch die PAM- und SSL-Integration und stabil. vSFTPd hat sich aufgrund seiner Ausgereiftheit das Vertrauen großer Unternehmen wie RedHat, SUSE, Debian, Gnome, KDE, etc. erworben.
vSFTPd kann mit IPv6 laufen und unterstützt virtuelle IP-Konfigurationen und Benutzer. Er kann als eigenständiger Daemon oder über inetd ausgeführt werden. Für die Benutzerverwaltung bietet vSFTPd eine Funktion, mit der die Benutzer ihre eigene Konfiguration festlegen können, z. B. Beschränkungen pro Quell-IP, Rekonfigurierbarkeit und Bandbreitendrosselung. Außerdem unterstützt vSFTPd ein Plug-in-Authentifizierungsmodul (PAM) für virtuelle Benutzer und bietet außerdem eine Sicherheitsintegration mit SSL/TLS.
In dieser Anleitung erfährst du, wie du einen sicheren FTP-Server mit vsftpd auf einem Debian 12-Server einrichtest und erstellst. In dieser Anleitung erfährst du auch, wie du deine FTP-Server-Installation mit UFW (Uncomplicated Firewall) absicherst und wie du dich mit dem FTP-Client FileZilla mit dem FTP-Server verbindest.
Voraussetzungen
Bevor du fortfährst, solltest du sicherstellen, dass du Folgendes hast:
- Einen Debian 12 Server.
- Einen Nicht-Root-Benutzer mit sudo-Administrator-Rechten.
- Das openssl-Paket ist auf deinem Server installiert.
Installation von vsftpd
Der vsftpd ist eine Implementierung des FTP-Protokolls für UNIX- und Linux-Betriebssysteme. Das vsftpd-Paket ist für die meisten Linux-Distributionen verfügbar, auch für Debian. Jetzt installierst du vsftpd über APT und überprüfst den vsftpd-Dienst, um sicherzustellen, dass der Dienst läuft.
Bevor du das vsftpd-Paket installierst, führe den folgenden Befehl aus, um dein Debian-Repository zu aktualisieren.
sudo apt update
Installiere nun das vsftpd-Paket mit dem unten stehenden apt install-Befehl.
sudo apt install vsftpd
Bestätige die Installation, indem du y eingibst und ENTER drückst.
Nachdem vsftpd installiert ist, wird der vsftpd-Dienst automatisch ausgeführt und aktiviert. Überprüfe den vsftpd-Dienst mit dem folgenden Befehl.
sudo systemctl is-enabled vsftpd sudo systemctl status vsftpd
Die folgende Ausgabe bestätigt, dass der vsftpd-Dienst läuft und aktiviert ist. Außerdem wird der vsftpd-Dienst automatisch beim Systemstart ausgeführt.
vsftpd konfigurieren
Im folgenden Schritt wirst du einen sicheren FTP-Server mit vsftpd konfigurieren und erstellen. Du wirst SSL/TLS-Zertifikate erzeugen und die Standardkonfiguration von vsftpd /etc/vsftpd.conf ändern.
Führe zunächst den Befehl openssl aus, um neue TLS-Zertifikate zu generieren, die für deine vsftpd-Serverinstallation verwendet werden sollen.
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Gib deine Daten ein, wenn du dazu aufgefordert wirst. Wenn der Vorgang abgeschlossen ist, sind deine TLS-Zertifikate unter /etc/ssl/private/vsftpd.pem verfügbar.
Führe nun den folgenden Befehl aus, um eine neue Datei /etc/vsftpd.userlist zum Speichern der FTP-Benutzer zu erstellen.
touch /etc/vsftpd.userlist
Danach führst du den folgenden Befehl aus, um ein Backup der vsftpd-Konfiguration zu erstellen. Öffne dann die vsftpd-Konfiguration /etc/vsftpd.conf mit dem Editor nano.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig sudo nano /etc/vsftpd.conf
Deaktiviere den anonymen Zugriff auf deinen vsftpd-Server, indem du die Option anonymous_enable auf NO änderst.
anonymous_enable=NO
Erlaube lokalen Benutzern in der Datei /etc/passwd und PAM-Benutzern, sich am vsftpd-Server anzumelden, indem du die Option local_enable auf YES änderst.
local_enable=YES
Erlaube FTP-Benutzern, Dateien auf den vsftpd-Server hochzuladen, indem du die Option write_enable auf YES änderst.
write_enable=YES
Aktiviere nun chroot oder jail für FTP-Benutzer, indem du die folgenden Optionen hinzufügst. Dadurch wird der FTP-Benutzer in das Verzeichnis /home/$USER/chroot gesperrt. Zum Beispiel wird der FTP-Benutzer bob im Verzeichnis /home/bob/chroot gesperrt.
chroot_local_user=YES user_sub_token=$USER local_root=/home/$USER/chroot
Als Nächstes fügst du die folgende Konfiguration hinzu, um virtuelle Benutzer für vsftpd einzurichten. Jeder Benutzer, der in der Datei /etc/vsftpd.userlist steht, kann sich am vsftpd-Server anmelden.
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
Füge die folgenden Zeilen hinzu, um deinen vsftpd-Server mit SSL/TLS-Zertifikaten zu sichern. Dadurch werden die Benutzeranmeldung und die Datenübertragungsverbindung über sichere Verbindungen hergestellt.
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES 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
Füge nun die folgende Konfiguration hinzu, um die Verbindungen im passiven Modus über Ports zwischen 20000 und 25000 einzurichten.
pasv_min_port=20000 pasv_max_port=25000
Speichere und beende die Datei, wenn du fertig bist.
Führe nun den folgenden systemctl-Befehl aus, um den vsftpd-Dienst neu zu starten und die vorgenommenen Änderungen zu übernehmen.
sudo systemctl restart vsftpd
Damit läuft dein vsftpd-Server jetzt mit den neuen Konfigurationen.
Einrichten der Firewall
Im folgenden Schritt installierst du UFW (Uncomplicated Firewall) auf deinem Debian-Server und sicherst damit deine FTP-Server-Installation. Du installierst UFW über APT, öffnest den FTP-Server-Port 20:21/tcp und den Passive-Mode-Datenverbindungs-Port 20000:25000/tcp.
Installiere UFW mit dem folgenden apt-Befehl. Gib y ein, um mit der Installation fortzufahren.
sudo apt install ufw
Nachdem UFW installiert ist, führe die folgenden ufw-Befehle aus, um den Port für den OpenSSH-Dienst, die vsftpd-Server-Ports 20:21 und die passiv-modus FTP-Verbindung zwischen den Ports 20000 bis 25000 zu öffnen.
sudo ufw allow OpenSSH sudo ufw allow 20:21/tcp sudo ufw allow 20000:25000/tcp
Als nächstes führst du den unten stehenden ufw-Befehl aus, um UFW zu starten und zu aktivieren.
sudo ufw enable
Tippe zur Bestätigung und die UFW sollte auf deinem Debian-System laufen und aktiviert sein.
Überprüfe den detaillierten Status von UFW mit dem unten stehenden Befehl.
sudo ufw status
Die aktive Ausgabe bestätigt, dass UFW läuft und aktiviert ist. Außerdem wird der OpenSSH-Dienst hinzugefügt und einige Ports für den vsftpd-Server 20:21/tcp und 20000:25000/tcp.
Virtuelle FTP-Benutzer einrichten
An dieser Stelle hast du die Konfiguration des vsftpd-Servers abgeschlossen. Jetzt musst du einen neuen FTP-Benutzer erstellen, der für die Anmeldung am FTP-Server und das Hochladen von Dateien auf den Server verwendet wird.
Führe den folgenden Befehl aus, um eine neue Datei /bin/ftponly zu erstellen. Mache sie anschließend mit dem Befehl chmod ausführbar. Die Datei /bin/ftponly wird als Standardshell für FTP-Benutzer verwendet.
echo -e '#!/bin/sh\necho "Shell for FTP users only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly
Füge die Datei /bin/ftponly zu /etc/shells hinzu, um sicherzustellen, dass sie eine gültige Shell ist.
sudo echo "/bin/ftponly" >> /etc/shells
Erstelle nun einen neuen FTP-Benutzer bob und richte das Passwort ein, indem du den folgenden Befehl ausführst. Gib dein Passwort ein und wiederhole es.
sudo useradd -m -s /bin/ftponly bob sudo passwd bob
Danach führst du den folgenden Befehl aus, um ein neues chroot-Verzeichnis /home/bob/chroot für den Benutzer bob zu erstellen. Außerdem stellst du sicher, dass das chroot-Verzeichnis /home/bob/chroot den richtigen Eigentümer hat.
sudo -u bob mkdir -p /home/bob/chroot sudo chown -R bob: /home/bob/chroot
Als Nächstes führst du den unten stehenden Befehl aus, um die neuen Verzeichnisse data und upload zu erstellen, in denen die FTP-Benutzerdaten gespeichert werden. Achte darauf, dass du die Eigentumsrechte für diese Verzeichnisse richtig konfigurierst.
sudo -u bob mkdir -p /home/bob/chroot/{data,upload} sudo chown -R bob: /home/bob/chroot/{data,upload}
Führe nun den folgenden Befehl aus, um die Rechte für das Verzeichnis /home/bob/chroot auf 550 und für die beiden Verzeichnisse data und upload auf 750 zu ändern.
sudo chmod 550 /home/bob/chroot sudo chmod 750 /home/bob/chroot/{data,upload}
Nachdem du nun einen neuen Benutzer erstellt hast, führe den folgenden Befehl aus, um den Benutzer bob zur Datei /etc/vsftpd.userlist hinzuzufügen.
echo "bob" >> /etc/vsftpd.userlist
Zum Schluss führst du den folgenden Befehl aus, um den vsftpd-Dienst neu zu starten und die Änderungen zu übernehmen. Nachdem du den Befehl ausgeführt hast, ist dein FTP-Benutzer bob bereit.
sudo systemctl restart vsftpd
Dateien auf den FTP-Server hochladen
Um deine vsftpd-Serverinstallation zu überprüfen, verbindest du dich mit dem neuen Benutzer, den du über die FTP-Client-Software erstellt hast, mit dem FTP-Server. Dann lädst du auch neue Dateien hoch, um sicherzustellen, dass deine Installation erfolgreich war.
Lade den FTP-Client für deinen lokalen Rechner herunter und installiere ihn. Du kannst FileZilla verwenden, das auf Windows, Linux und MacOS installiert werden kann. Sobald FileZilla installiert ist, öffne es, um dich mit deinem sicheren FTP-Server zu verbinden.
Gib die IP-Adresse deines FTP-Servers sowie den Benutzernamen und das Passwort deines FTP-Benutzers ein. Klicke dann zur Bestätigung auf Quickconnect.
Aktiviere die Option Diesem Zertifikat in zukünftigen Sitzungen immer vertrauen und bestätige mit OK.
Sobald du mit deinem FTP-Server verbunden bist, solltest du zwei Verzeichnisse mit Daten und Uploads auf deinem FTP-Server sehen. Du kannst Dateien in die beiden Verzeichnisse data und upload hochladen, aber du kannst keine Dateien außerhalb der per chroot geschützten Verzeichnisse hochladen.
Du kannst deine Dateien per Drag-and-Drop auf den FTP-Server hochladen.
Fazit
Zum Schluss hast du erfolgreich einen sicheren FTP-Server mit vsftpd auf einem Debian 12-Server eingerichtet. Außerdem hast du deine FTP-Server-Installation mit UFW (Uncomplicated Firewall) abgesichert und gelernt, wie du FTP-Benutzer anlegen kannst. Jetzt kannst du den FTP-Server als Hauptdatentransfer zwischen deinem lokalen Rechner und deinem Server nutzen. Du kannst auch eine andere FTP-Client-Software mit deinen Einstellungen finden.