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

So richten Sie einen FTP-Server mit VSFTPD ein

Haben Sie jemals ein wichtiges Dokument auf Ihrem Heimcomputer vergessen, während Sie im Büro arbeiten? Oder möchten Sie einfach eine Datei mit jemandem teilen, der neben Ihnen sitzt? Ein FTP-Server wie Very Secure FTP Daemon (VSFTPD) ist die perfekte Lösung.

In diesem Tutorial erfahren Sie, wie Sie einen FPT-Server mit VSFTPD auf Ihrem Linux-Server installieren und konfigurieren, damit Sie Dateien sicher zwischen Computern austauschen können.

Lesen Sie weiter und lassen Sie Ihre Dateien nie wieder auf Ihrem Heimcomputer gefangen sein!

Voraussetzungen

Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben.

  • Eine Linux-Maschine – Dieses Tutorial verwendet Ubuntu 20.04 LTS, aber alle Linux-Distributionen funktionieren.
  • Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.

Installation von VSFTPD auf Ubuntu

VSFTPD ist ein FTP-Server für Unix-ähnliche Systeme, wird aber nicht standardmäßig installiert. Die Installation von VSFTPD unter Ubuntu ähnelt der Installation anderer Pakete. Beginnen Sie dieses Tutorial, indem Sie Ihren APT-Paketmanager aktualisieren, bevor Sie VSFTPD installieren.

1. Führen Sie apt update aus Befehl zum Aktualisieren von APT. Dieser Befehl ruft Paketlisten aus Ihren konfigurierten Repositorys ab und aktualisiert den lokalen Paketcache.

sudo apt update -y

2. Führen Sie als Nächstes apt install aus Befehl unten, um VSFTPD auf Ihrem Computer zu installieren. Dieser Befehl zieht auch alle erforderlichen Abhängigkeiten für den FTP-Dienst ein.

Standardmäßig ist das VSFTPD-Paket auf den meisten modernen Debian-basierten Distributionen verfügbar. Sie können es also ohne zusätzliche Paketquellen installieren und APT den Rest erledigen lassen.

3. Führen Sie abschließend systemctl aus Befehl unten, um zu überprüfen, ob der VSFTPD-Dienst ausgeführt wird und korrekt konfiguriert ist.

sudo systemctl status vsftpd 

Sie sehen eine Ausgabe ähnlich der untenstehenden, die zeigt, dass vsftpd.service aktiv ist (läuft) und auf Anfragen lauscht.

Öffnen von Ports für FTP-Client-Verbindungen

Nachdem Sie nun die neueste Version von VSFTPD installiert haben, können Sie jetzt Ihre Firewall konfigurieren. Sie verwenden UFW, das standardmäßige Firewall-Konfigurationstool für Ubuntu, um Firewall-Regeln hinzuzufügen, um Ports für sichere FTP-Client-Verbindungen zu öffnen.

1. Führen Sie ufw status aus Befehl, um zu sehen, welche Firewall-Regeln derzeit aktiv sind.

sudo ufw status

Unten sehen Sie, dass die Firewall aktiv ist, aber keine Regeln hat, um standardmäßig Verbindungen zuzulassen.

2. Führen Sie als Nächstes ufw allow aus Befehl unten, um alle drei Ports durch die Firewall zu lassen. VSFTPD erfordert FTP-Verbindungen auf den Ports 20 , 21 , und 990 .

sudo ufw allow 20,21,990/tcp

3. Führen Sie ufw aus Befehl unten, um 40000:50000 zu öffnen Hafenbereich.

VSFTPD erfordert, dass der Portbereich 40000:50000 geöffnet wird, damit FTP-Clients im passiven Modus Datenverbindungen zum Server herstellen können.

sudo ufw allow 40000:50000/tcp

4. Führen Sie abschließend ufw status verbose aus Befehl unten, um zu überprüfen, ob Ihre Firewall-Regeln aktiv sind, und auf Fehler zu prüfen.

sudo ufw status verbose

Konfigurieren des VSFTDP-Servers

Sie haben den Datenverkehr erfolgreich durch die Firewall zugelassen, aber Sie müssen Ihren VSFTPD-Server konfigurieren, bevor Sie ihn verwenden können.

Die /etc/vsftpd.conf Datei ist die Hauptkonfigurationsdatei für VSFTPD. Sie können Ihren FTP-Server aber auch über andere Befehle konfigurieren, wenn Sie es vorziehen, die Dinge dynamisch zu erledigen. Oder wenn Sie es vorziehen, Regeln anzugeben, die nicht in der Konfigurationsdatei verfügbar sind.

Entkommentieren Sie während der gesamten Bearbeitung der Datei /etc/vsftpd.conf jede Direktive, um sie zu aktivieren, indem Sie das #-Symbol davor entfernen.

1. Führen Sie sudo cp aus Befehl unten, um die ursprüngliche Konfigurationsdatei (/etc/vsftpd.conf /etc/vsftpd.conf.bak ).

Sie sollten immer alle kritischen Konfigurationsdateien sichern, bevor Sie herumalbern.

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

2. Als nächstes öffnen Sie /etc/vsftpd.conf Datei in Ihrem bevorzugten Texteditor. Diese Demo verwendet nano um die Konfigurationsdatei zu bearbeiten.

sudo nano /etc/vsftpd.conf

3. Suchen und ändern Sie anonymous_enable Direktivenwert auf NO. Anonyme Benutzer werden häufig für die öffentliche Dateifreigabe verwendet. Sie möchten diesen anonymen Benutzer nicht auf Ihrem Server haben. Stattdessen möchten Sie, dass Ihr FPT-Server sicher ist.

Setzen Sie den Wert der local_enable-Direktive auf YES, um Personen mit Konten auf Ihrem Server zu erlauben, Dateien per FTP zu übertragen. Mit dieser Konfiguration können sich nur autorisierte Benutzer bei Ihrem FTP-Server anmelden.

4. Ändern Sie nun die write_enable Anweisung auf JA damit Ihre Benutzer Dateien auf Ihren FTP-Server hochladen und speichern können. Diese Anweisung ist die wichtigste, da sie den Zugriff auf die Upload-Funktionalität steuert.

5. Ändern Sie den chroot_local_user Anweisung auf JA da Ihr FPT-Benutzer nicht als root ausgeführt werden sollte. Das Erstellen eines neuen, möglicherweise privilegierten Benutzers für den FTP-Dienst ist viel sicherer (Sie erfahren später, wie Sie einen dedizierten Benutzer erstellen).

Wenn diese Anweisung nicht aktiviert ist, hat der FPT-Benutzer Zugriff auf alles auf dem Server, sogar auf das Stammverzeichnis. Dieses Verhalten kann ein RIESIGES Sicherheitsproblem darstellen.

Mit dieser Konfiguration kann Ihr Benutzer nur auf die von Ihnen angegebenen Ordner zugreifen (in den meisten Fällen das Home-Verzeichnis des Benutzers).

Aber wenn der Wert der chroot_local_user-Direktive auf YES gesetzt ist, wird die write_enable-Direktive (Schritt vier) nicht funktionieren, weil der chroot()-Systemaufruf den Schreibzugriff verweigert (wenn aktiviert).

Fügen Sie als Lösung die folgende Anweisung zu Ihrer vsftpd.conf hinzu Datei, sodass die write_enable-Direktive unabhängig vom Wert der chroot_local_user-Direktive funktioniert.

allowed_writeable_chroot=YES

6. Fügen Sie als Nächstes die folgenden Anweisungen zu Ihrer vsftpd.conf hinzu Datei, um passive FTP-Verbindungen zu ermöglichen.

VSFTPD kann jeden Port über 1024 verwenden, der nicht von einem anderen Dienst für die passive FTP-Verbindung belegt ist. Diese Demo verwendet den Portbereich, den Sie im Abschnitt „Öffnen von Ports für FTP-Client-Verbindungen“ (Schritt drei) festgelegt haben.

pasv_min_port=35000
pasv_max_port=40000

7. Fügen Sie die folgenden Zeilen am Ende der vsftpd.conf hinzu Datei, damit sich nur autorisierte Benutzer beim FTP-Server anmelden können.

userlist_enable=YES
# Add the user to the vsftpd.userlist to allow a specific user 
# to use the system login account to access your FTP service.
userlist_file=/etc/vsftpd.userlist
# NO - anyone can log in with an anonymous account.
# YES - the user will be denied to login when their name exists in this file. 
userlist_deny=NO

8. Abschließend speichern und schließen Sie die vsftpd.conf Datei und führen Sie den folgenden Befehl zu restart aus Ihr vsftpd Server, um die Änderungen zu übernehmen.

sudo service vsftpd restart

Erstellen eines dedizierten Benutzers zur Nutzung des FTP-Dienstes

Sie haben jetzt Ihren VSFTPD-Server konfiguriert, aber Sie benötigen einen dedizierten Benutzer, um den FTP-Dienst anstelle eines Root-Benutzers zu verwenden. Sie erstellen ein Verzeichnis innerhalb des Home-Verzeichnisses des Benutzers, damit das Verzeichnis leicht zugänglich ist.

1. Führen Sie adduser aus Befehl unten, um einen neuen Benutzer zu erstellen. Sie können einen beliebigen Benutzernamen wählen, aber diese Demo erstellt einen Benutzer namens ata . Denken Sie jedoch daran, den Benutzer nicht an anderer Stelle auf Ihrem Server zu duplizieren.

sudo adduser ata

Vergeben Sie ein sicheres Passwort und notieren Sie es. Sie verwenden dieses Passwort, um sich mit Ihrem FTP-Server zu verbinden.

Sie müssen auch einige Details für den neuen Benutzer angeben oder die Standarddetails beibehalten, indem Sie die EINGABETASTE drücken. Geben Sie Y ein und drücken Sie die EINGABETASTE, um die Benutzerinformationen zu bestätigen.

2. Führen Sie als Nächstes den folgenden Befehl aus, um ata hinzuzufügen Benutzer an vsftpd.userlist Datei.

Wie Sie sich erinnern, gibt diese Datei an, welche Benutzer sich über FTP anmelden dürfen, wenn der Wert der Anweisung userlist_deny auf NO gesetzt ist. Zu diesem Zeitpunkt kann sich nur der ata-Benutzer bei Ihrem FTP-Server anmelden, und allen anderen anonymen Benutzern wird der Zugriff verweigert.

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

3. Führen Sie die folgenden Befehle aus, um die richtigen Berechtigungen für den neuen /home/ata/ftp festzulegen Verzeichnis.

Die folgenden Befehle stellen sicher, dass nur Ihr dedizierter FTP-Benutzer Zugriff auf das /home/ata/ftp-Verzeichnis hat, und erlauben dem Benutzer, Dateien dorthin/von dort zu übertragen.

# Sets the owner of the /home/ata/ftp directory to be nobody.
sudo chown nobody:nogroup /home/ata/ftp
# Ensures that only the owner (your FTP user) 
# has write(w) access(a) to the /home/ata/ftp directory.
sudo chmod a-w /home/ata/ftp

4. Führen Sie nun chown aus Befehl, um den Eigentümer und die Gruppe von /home/ata/ftp/upload festzulegen Verzeichnis zu Ihrem FTP-Benutzer (ata ). Der Befehl setzt auch die richtigen Berechtigungen für /home/ata/ftp/upload Verzeichnis.

sudo chown ata:ata /home/ata/ftp/upload

5. Führen Sie echo aus Befehl unten, um eine einfache Testdatei mit dem Namen ata.txt zu erstellen .

Der folgende Befehl erstellt eine neue Datei namens ata.txt in Ihrem FTP-Verzeichnis und fügt Text (vsftpd-Testdatei) in die Textdatei ein.

echo "vsftpd test file" | sudo tee /home/ata/ftp/upload/ata.txt

An diesem Punkt haben Sie Ihren FPT-Server vollständig konfiguriert und Ihre Benutzer können sich damit verbinden.

Verbindung zum FTP-Server herstellen

Nachdem Sie einen dedizierten FTP-Benutzer konfiguriert haben, ist es endlich an der Zeit, sich mit Ihrem FTP-Server zu verbinden. Aber Sie werden zuerst versuchen, sich mit einem anonymen Benutzer mit Ihrem FTP-Server zu verbinden, um zu testen, ob Ihr FTP-Server sicher ist.

1. Führen Sie ftp -p aus Befehl unten, um eine Verbindung zu Ihrem FTP-Server herzustellen. Ersetzen Sie your-server-ip mit Ihrer tatsächlichen Server-IP-Adresse.

ftp -p your-server-ip

Versuchen Sie, sich als anonymer Benutzer anzumelden, und Sie erhalten die folgende Fehlermeldung. Diese Ausgabe bestätigt, dass Ihr FTP-Server sicher ist, da nur Ihr dedizierter FTP-Benutzer auf Ihren Server zugreifen kann.

2. Führen Sie bye aus Befehl zum Beenden des FTP-Clients.

bye

3. Führen Sie ftp erneut aus Befehl unten, wie Sie es in Schritt eins getan haben. Melden Sie sich dieses Mal jedoch als Ihr dedizierter FTP-Benutzer (ata) an.

ftp -p your-server-ip

Sie erhalten eine Meldung 230 Anmeldung erfolgreich wie unten gezeigt, die bestätigt, dass Ihr FTP-Server wie vorgesehen funktioniert.

4. Führen Sie nun jeden der folgenden Befehle aus, um die ata.txt zu bestätigen Datei existiert im ftp/upload Verzeichnis.

Die ata.txt Datei ist das, was Sie zuvor im Abschnitt „Erstellen eines dedizierten Benutzers zur Verwendung des FTP-Dienstes“ (Schritt 5) erstellt haben.

# Change to the ftp/upload directory as the working directory.
cd ftp/upload
# List all files in the working directory.
ls

5. Führen Sie get aus Befehl unten, um die Datei herunterzuladen (ata.txt ) von Ihrem FTP-Server und speichern Sie sie auf Ihrem lokalen Computer.

 get ata.txt

Unten sehen Sie eine Bestätigungsmeldung, die besagt, dass die Übertragung abgeschlossen ist.

6. Führen Sie als Nächstes put aus Befehl unten, um den ata.txt hochzuladen Datei von Ihrem lokalen Rechner als neue Datei mit dem Namen ata2.txt zu Ihrem FTP-Server.

put ata.txt ata2.txt

7. Führen Sie schließlich ls erneut aus Befehl, um alle Dateien im aktuellen Verzeichnis aufzulisten und zu überprüfen, ob ata2.txt wurde von Ihrem Benutzer erfolgreich hochgeladen.

ls

Wenn die vorherigen Dateiübertragungen (Schritte sieben bis acht) erfolgreich waren, sehen Sie zwei Textdateien:eine mit dem Namen ata.txt und eine andere mit dem Namen ata2.txt, wie unten gezeigt.

Shell-Zugriff deaktivieren

Wenn Sie einen neuen FTP-Benutzer erstellen, erlaubt Ihr FTP-Server diesem Benutzer automatisch, sich anzumelden und die Shell auszuführen. Dadurch können Ihre Benutzer neben dem Hoch- und Herunterladen von Dateien auch potenziell gefährliche Systembefehle auf Ihrem FTP-Server ausführen.

Wenn Sie den FTP-Server nicht verwenden, können Sie den Shell-Zugriff deaktivieren, um Benutzer daran zu hindern, sich über SSH anzumelden. Dies ist besonders wichtig, wenn Sie die passwortlose Anmeldung für Ihren dedizierten FTP-Benutzer aktiviert haben.

1. Öffnen Sie ein anderes Terminal auf Ihrem Server und führen Sie den folgenden Befehl für ssh aus in den FPT-Server unter Verwendung des dedizierten FTP-Benutzers (ata ).

ssh [email protected]

Wie unten gezeigt, können Sie sich erfolgreich mit dem ata-Benutzernamen und dem Passwort anmelden, das Sie zuvor im Abschnitt „Erstellen eines dedizierten Benutzers zur Verwendung des FTP-Dienstes“ erstellt haben.

Dieses Verhalten weist darauf hin, dass der ata-Benutzer alle Befehle auf Ihrem Server ausführen kann, einschließlich der Änderung der Serverkonfigurationen. Ein kompromittierter FTP-Benutzer kann viel mehr Schaden anrichten als ein anonymer.

2. Führen Sie als Nächstes den folgenden Befehl aus, um ein neues Shell-Skript mit dem Namen ftponly.sh zu erstellen im /bin Verzeichnis Ihres FPT-Servers. Dieses Skript deaktiviert jegliche FTP-Anmeldung von Ihrem dedizierten FTP-Benutzer für Ihren FTP-Server. Das Skript druckt dann (echo ) eine Warnmeldung auf dem Bildschirm mit der Aufschrift This account is limited to FTP access only .

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

3. Führen Sie den folgenden chmod aus Befehl, um die richtigen Berechtigungen für dieses neue Shell-Skript festzulegen (/bin/ftponly ). Dieser Befehl macht das Skript ausführbar und ermöglicht Ihrem FTP-Benutzer (ata), es auszuführen.

sudo chmod a+x /bin/ftponly

4. Führen Sie nun den folgenden Befehl aus, um den Pfad des neuen Shell-Skripts hinzuzufügen (ftponly ) in Ihrem /etc/shells Datei. Diese Aktion stellt sicher, dass jede Anmeldung, die Sie mit Ihrem ata-Benutzer versuchen, ab dem /bin/ftponly abgelehnt wird Das Skript wird stattdessen ausgeführt.

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

5. Führen Sie usermod aus Befehl unten, um die aktuelle Shell Ihres FTP-Benutzers (ata) auf /bin/ftponly zu ändern Hülse.

sudo usermod ata -s /bin/ftponly 

6. Führen Sie abschließend den folgenden Befehl aus, um mit Ihrem FTP-Benutzer (ata) eine SSH-Verbindung zu Ihrem FPT-Server herzustellen ).

ssh [email protected]

Wie unten gezeigt, kann Ihr dedizierter FTP-Benutzer keine SSH-Verbindung zu Ihrem FTP-Server herstellen. Dieses Verhalten wird erwartet, da /bin/ftponly Shell-Skript gibt eine Warnmeldung aus und schließt die SSH-Verbindung (geschlossen).

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, wie Sie einen FTP-Server in Ubuntu Linux mit VSFTPD installieren und konfigurieren. Sie haben auch gelernt, wie Sie einen FTP-Benutzer mit eingeschränktem Zugriff konfigurieren und den Zugriff auf die FTP-Benutzershell einschränken.

Zu diesem Zeitpunkt sollten Sie über einen funktionierenden FTP-Server mit eingeschränktem Zugriff verfügen.

Mit diesem neu gewonnenen Wissen können Sie jetzt Ihren FTP-Server auf AWS EC2 konfigurieren oder mit der Einrichtung eines FTP-Servers auf Ihrem Raspberry Pi beginnen. An welchem ​​würden Sie mit der Arbeit beginnen?


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

  2. So installieren Sie einen FTP-Server unter Ubuntu mit vsftpd

  3. So richten Sie den vsftpd-FTP-Dateiserver unter Redhat 7 Linux ein

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

  5. FTP-Server mit vsFTPd auf dem Raspberry Pi einrichten

So richten Sie einen FTP-Server unter CentOS ein und konfigurieren ihn

So installieren Sie den vsftpd-FTP-Server mit TLS unter Debian 10

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

So installieren Sie den vsftpd-Server unter Debian 11

Wie installiere ich einen FTP-Server?

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