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

Repo aktualisieren

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.

vsftpd installieren

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.

verify vsftpd

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.

tls erzeugen

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

ufw installieren

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.

ufw-Einrichtung

Ü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.

ufw verifizieren

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

Muschel hinzufügen

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.

über Filezilla verbinden

Aktiviere die Option Diesem Zertifikat in zukünftigen Sitzungen immer vertrauen und bestätige mit OK.

Zertifikate akzeptieren

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.

mit dem ftp-Server verbunden

Du kannst deine Dateien per Drag-and-Drop auf den FTP-Server hochladen.

hochgeladene dateien

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.

Das könnte dich auch interessieren …