GNU/Linux >> LINUX-Kenntnisse >  >> Linux

FTP-Server mit vsFTPd auf dem Raspberry Pi einrichten

In diesem Artikel werde ich demonstrieren, wie wir einen FTP-Server einrichten können auf dem Raspberry Pi die verwendet werden können, um Dateien auf Ihren Geräten zu teilen. Wir werden vsFTPd verwenden da es sehr stabil, sicher und ein sehr schneller FTP-Server ist. Ich werde auch zeigen, wie man vsFTPd konfiguriert, um Benutzer auf ihre HOME-Verzeichnisse zu beschränken, zusammen mit der Verschlüsselung der gesamten Verbindung mit SSL/TLS.

Wenn Sie diesem Material folgen möchten, müssen Sie das Raspberry Pi OS auf Ihrem Raspberry Pi installiert haben. Das Ausführen eines FTP-Servers erfordert keine grafische Benutzeroberfläche, daher empfehle ich, Raspberry Pi OS Lite mit aktiviertem SSH-Dienst zu installieren und den Fernzugriff zu ermöglichen.

Instalar oder vsFTPd ohne Raspberry Pi

Das vsftpd-Paket ist in den offiziellen Raspberry Pi OS-Repositories verfügbar, sodass es mit den folgenden Befehlen installiert werden kann:

sudo apt update
sudo apt install vsftpd

Nach der Installation wird der FTP-Serverdienst automatisch gestartet. Um den Status dieses Dienstes zu überprüfen, führen Sie Folgendes aus:

sudo systemctl status vsftpd

Die Rückgabe dieses Befehls sollte „Active:active (running) since…“ zurückgeben, etwa so:

vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-05-23 07:02:41 BST; 14s ago
...

Migration von CentOS 8 auf Rocky Linux 8/Alma Linux 8

FTP-Server mit vsFTPd konfigurieren

Die vsFTPd-Konfiguration erfolgt über die Datei /etc/vsftpd.conf .

Die meisten Einstellungen sind in der Konfigurationsdatei in englischer Sprache gut dokumentiert. Wenn Sie alle verfügbaren Optionen bewerten möchten, empfehle ich die offizielle Website unter:Manpage of VSFTPD.CONF

1. Zugang zum FTP-Server

Um sicherzustellen, dass nur Benutzer des lokalen Betriebssystems auf den FTP-Server zugreifen können, suchen Sie in der Konfigurationsdatei nach den Einträgen anonymous_enable und local_enable und belassen Sie sie wie folgt:

anonymous_enable=NO
local_enable=YES

2. Uploads aktivieren

Suchen Sie die Einstellung write_enable und kommentieren Sie sie aus, um Änderungen am Dateisystem zuzulassen und Benutzern das Hochladen und Entfernen von Dateien zu ermöglichen:

write_enable=YES

3. Chroot-Käfig

Um zu verhindern, dass FTP-Benutzer auf Dateien außerhalb ihres Home-Ordners zugreifen, müssen wir ein Chroot-Gefängnis erstellen und die Einstellung chroot_local_user auskommentieren :

chroot_local_user=YES

Wenn die Chroot-Funktion aktiviert ist, deaktiviert vsFTPd das Hochladen von Dateien, wenn das Benutzerverzeichnis gesperrt ist.

Verwenden Sie eine der folgenden Optionen, um die Chroot-Umgebung im Schreibmodus zu belassen.

Option 1 – der empfohlene Weg, um das Hochladen von Dateien zu ermöglichen und die Chroot aktiv zu lassen, indem die FTP-Verzeichnisse konfiguriert werden. Im folgenden Beispiel werde ich ein FTP-Verzeichnis im Home-Ordner des Benutzers erstellen, das als der von Chroot verwendete Ordner dient und es ermöglicht, dass die Dateien dorthin hochgeladen werden.

user_sub_token=$USER
local_root=/home/$USER/ftp

Option 2 – Eine weitere Alternative besteht darin, die Einstellung allow_writeable_chroot in der Datei vsftpd.conf hinzuzufügen. Diese Option aktiviert die Option, in den Home-Ordner der Benutzer zu schreiben.

allow_writeable_chroot=YES

4. Passive Verbindungen auf FTP-Server

Standardmäßig verwendet vsFTPd den aktiven Modus. Um den passiven Modus zu verwenden, legen Sie den minimalen und maximalen Bereich der verwendeten Ports fest.

pasv_min_port=30000
pasv_max_port=31000

vsFTPd kann jeden Port im passiven Modus verwenden. Wenn der passive Modus aktiviert ist, öffnet der FTP-Client eine Verbindung auf einem zufälligen Port, wenn er sich mit dem FTP-Server verbindet, und zwar in dem Intervall, das Sie in der Konfigurationsdatei festgelegt haben.

5. Beschränken Sie die Anmeldung auf bestimmte Benutzer

Wir können vsFTPd so konfigurieren, dass sich nur wenige Benutzer anmelden können. Um diese Konfiguration durchzuführen, fügen Sie der Einstellungsdatei die folgenden Zeilen hinzu:

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO


Wenn diese Einstellung aktiviert ist, müssen Sie angeben, welche Benutzer sich anmelden können, indem Sie ihre Benutzernamen in der Datei /etc/vsftpd.user_list hinzufügen, mit einem Benutzer pro Zeile.

6. Sichere Übertragung mit SSL/TLS

Um die FTP-Übertragung mit SSL/TLS zu verschlüsseln, müssen Sie über ein SSL-Zertifikat verfügen und den FTP-Server für dessen Verwendung konfigurieren. Wir können ein vorhandenes SSL-Zertifikat verwenden, das von einem zertifizierten Aussteller signiert wurde, oder ein selbstsigniertes Zertifikat erstellen.

Wenn Sie eine Domain oder Subdomain haben, die auf die IP Ihres FTP-Servers verweist, können Sie mit Let’s Encrypt ein kostenloses SSL-Zertifikat generieren. Wenn Sie es noch nie zuvor verwendet haben, folgen Sie der offiziellen Dokumentation:Erste Schritte – Let’s Encrypt – Kostenlose SSL/TLS-Zertifikate

In diesem Artikel generieren wir einen selbstsignierten Schlüssel mit dem Befehl openssl.

Führen Sie den folgenden Befehl aus, um einen selbstsignierten, 10-jährigen privaten 2048-Bit-Schlüssel (Zertifikat) zu erstellen, der 10 Jahre gültig ist. Öffentliche und private Schlüssel werden in derselben Datei gespeichert.

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Nachdem Sie die Schlüssel erstellt haben, öffnen Sie die vsFTPd-Einstellungsdatei erneut:

sudo nano /etc/vsftpd.conf

Suchen Sie die Einstellungen rsa_cert_file und rsa_private_key_file, indem Sie ihre Werte in die PEM-Datei ändern und die Einstellung ssl_enable auf YES setzen.

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Wenn diese Einstellungen nicht korrekt konfiguriert sind, verwendet der FTP-Server nur TLS zum Sichern von Verbindungen.

Starten Sie den FTP-Server neu

Wenn die obigen Einstellungen vorgenommen werden, sollte die vsFTPd-Einstellungsdatei wie folgt aussehen (ohne die Kommentare):

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES

Speichern Sie die Datei und starten Sie den vsFTPd-Dienst neu, damit die Änderungen an dieser Datei wirksam werden:

sudo systemctl restart vsftpd

Öffnen der Firewall

Wenn Sie die UFW-Firewall in Ihrer Distribution verwenden, müssen Sie den FTP-Verkehr freigeben, indem Sie die Ports 20 (FTP-Daten), 21 (FTP-Befehle) und 30000-31000 (Passivmodus-Ports) mit den folgenden Befehlen öffnen:

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

Lesen Sie jetzt die UFW-Regeln erneut, deaktivieren und aktivieren Sie sie erneut.

sudo ufw disable
sudo ufw enable

Erstellen Sie einen Benutzer für FTP

Um unseren FTP-Server zu testen, erstellen wir einen Benutzer.

  • Wenn Sie bereits einen Benutzer haben, der verwendet werden soll, und Sie ihm nur Zugriff gewähren möchten, überspringen Sie den ersten Schritt.
  • Wenn Sie allow_writeable_chroot=YES in Ihrer Konfigurationsdatei gesetzt haben, überspringen Sie den dritten Schritt.

01. Erstellen Sie einen Benutzer namens novouserftp:

sudo adduser novouserftp

Wenn Sie dazu aufgefordert werden, legen Sie das Passwort des Benutzers fest.

02. Fügen Sie den Benutzer der Liste derjenigen hinzu, die den FTP-Server verwenden können.

echo "novouserftp" | sudo tee -a /etc/vsftpd.user_list

03. Erstellen Sie ein FTP-Verzeichnis und setzen Sie die richtigen Berechtigungen.

sudo mkdir -p /home/novouserftp/ftp/upload
sudo chmod 550 /home/novouserftp/ftp
sudo chmod 750 /home/novouserftp/ftp/upload
sudo chown -R novouserftp: / home / novouserftp / ftp

Wie bereits erwähnt, kann der Benutzer Dateien in den Ordner ftp/upload seines Home-Verzeichnisses hochladen.

An diesem Punkt ist Ihr FTP-Server voll funktionsfähig und Sie können sich mit FTP-Clients wie FileZilla!

mit ihm verbinden

Shell-Zugriff deaktivieren

Wenn ein Benutzer erstellt wird und keine zusätzliche Konfiguration vorgenommen wird, hat dieser Benutzer standardmäßig SSH-Zugriff auf den Server. Um diesen Zugriff zu deaktivieren, erstellen Sie eine neue Shell, die nur eine Meldung anzeigt, die dem Benutzer mitteilt, dass dieses Konto nur auf FTP-Zugriff beschränkt ist.

Erstellen Sie die Shell /bin/ftponly und ausführbar machen.

echo -e '#!/bin/sh echo "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly

Fügen Sie die neue Shell zur Liste der gültigen Shells in der Datei /etc/shells hinzu :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Ändern Sie die erstellte Benutzer-Shell in /bin/ftponly:

sudo usermod novouserftp -s / bin / ftponly

Verwenden Sie diesen letzten Befehl für alle Benutzer, die nur Zugriff auf den FTP-Server haben werden.

Schlussfolgerungen

Hoffentlich ist klar, wie Sie einen schnellen und sicheren FTP-Server auf Ihrem Raspberry Pi-System installieren und konfigurieren.


Linux
  1. Lernen Sie Linux mit dem Raspberry Pi

  2. So installieren Sie einen FTP-Server unter CentOS 7 mit VSFTPD

  3. So installieren Sie einen FTP-Server unter Rocky Linux 8 mit VSFTPD

  4. Easy vsFTPD – FTP-Server mit virtuellen Benutzern auf Debian 8 Jessie

  5. Warum ist chroot_local_user von vsftpd unsicher?

So installieren Sie den VsFTPD-Server mit TLS unter Ubuntu 18.04 LTS

Wie installiere ich einen FTP-Server?

Laden Sie Dateien mit Monsta FTP hoch

So richten Sie einen FTP-Server mit ProFTPD in Ubuntu 18.04 ein

So richten Sie einen FTP-Server mit VSFTPD ein

Einrichten eines NFS-Servers mit Turnkey Linux