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

So richten Sie einen FTP-Server mit VSFTPD unter Ubuntu 18.04 ein

FTP (File Transfer Protocol) ist ein Standard-Netzwerkprotokoll, das verwendet wird, um Dateien zu und von einem entfernten Netzwerk zu übertragen.

Es gibt viele Open-Source-FTP-Server für Linux. Die beliebtesten und am weitesten verbreiteten sind PureFTPd, ProFTPD und vsftpd. In diesem Tutorial installieren wir vsftpd (Very Secure Ftp Daemon). Es ist ein stabiler, sicherer und schneller FTP-Server. Wir zeigen Ihnen auch, wie Sie vsftpd konfigurieren, um Benutzer auf ihr Home-Verzeichnis zu beschränken und die gesamte Übertragung mit SSL/TLS zu verschlüsseln.

Obwohl dieses Tutorial für Ubuntu 18.04 geschrieben wurde, gelten die gleichen Anweisungen für Ubuntu 16.04 und alle Debian-basierten Distributionen, einschließlich Debian, Linux Mint und Elementary OS.

Verwenden Sie für sicherere und schnellere Datenübertragungen SCP oder SFTP.

Voraussetzungen #

Bevor Sie mit diesem Tutorial fortfahren, vergewissern Sie sich, dass Sie als Benutzer mit sudo-Berechtigungen angemeldet sind.

Installieren von vsftpd auf Ubuntu 18.04 #

Das vsftpd-Paket ist in den Ubuntu-Repositories verfügbar. Um es zu installieren, führen Sie einfach die folgenden Befehle aus:

sudo apt updatesudo apt install vsftpd

Der vsftpd-Dienst wird nach Abschluss des Installationsvorgangs automatisch gestartet. Überprüfen Sie dies, indem Sie den Dienststatus ausdrucken:

sudo systemctl status vsftpd

Die Ausgabe sieht etwa wie folgt aus und zeigt, dass der vsftpd-Dienst aktiv ist und ausgeführt wird:

* vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago
 Main PID: 2616 (vsftpd)
    Tasks: 1 (limit: 2319)
   CGroup: /system.slice/vsftpd.service
           `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf

Konfiguriere vsftpd #

Der vsftpd-Server kann durch Bearbeiten der Datei /etc/vsftpd.conf konfiguriert werden Datei. Die meisten Einstellungen sind in der Konfigurationsdatei gut dokumentiert. Für alle verfügbaren Optionen besuchen Sie die offizielle vsftpdpage.

In den folgenden Abschnitten gehen wir einige wichtige Einstellungen durch, die zum Konfigurieren einer sicheren vsftpd-Installation erforderlich sind.

Öffnen Sie zunächst die vsftpd-Konfigurationsdatei:

sudo nano /etc/vsftpd.conf

1. FTP-Zugriff #

Wir werden den Zugriff auf den FTP-Server nur den lokalen Benutzern erlauben, finden Sie den anonymous_enable und local_enable Anweisungen und überprüfen Sie, ob Ihre Konfiguration mit den folgenden Zeilen übereinstimmt:

/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES

2. Uploads aktivieren #

Entkommentieren Sie write_enable Einstellung, um Änderungen am Dateisystem wie das Hochladen und Löschen von Dateien zuzulassen.

/etc/vsftpd.conf
write_enable=YES

3. Chroot-Gefängnis #

Um zu verhindern, dass FTP-Benutzer auf Dateien außerhalb ihrer Home-Verzeichnisse zugreifen, kommentieren Sie chroot aus Einstellung.

/etc/vsftpd.conf
chroot_local_user=YES

Um eine Sicherheitslücke zu vermeiden, weigert sich vsftpd standardmäßig, Dateien hochzuladen, wenn Chroot aktiviert ist, wenn das Verzeichnis, in das die Benutzer eingesperrt sind, beschreibbar ist.

Verwenden Sie eine der folgenden Methoden, um Uploads zuzulassen, wenn Chroot aktiviert ist.

  • Methode 1. - Die empfohlene Methode, um das Hochladen zuzulassen, besteht darin, Chroot aktiviert zu lassen und FTP-Verzeichnisse zu konfigurieren. In diesem Tutorial erstellen wir einen ftp Verzeichnis im Benutzer-Home, das als Chroot und beschreibbarer uploads dient Verzeichnis zum Hochladen von Dateien.

    /etc/vsftpd.conf
    user_sub_token=$USER
    local_root=/home/$USER/ftp
  • Methode 2. - Eine weitere Option besteht darin, die folgende Direktive in die vsftpd-Konfigurationsdatei einzufügen. Verwenden Sie diese Option, wenn Sie Ihrem Benutzer Schreibzugriff auf sein Home-Verzeichnis gewähren müssen.

    /etc/vsftpd.conf
    allow_writeable_chroot=YES

4. Passive FTP-Verbindungen #

vsftpd kann jeden Port für passive FTP-Verbindungen verwenden. Wir geben den minimalen und maximalen Portbereich an und öffnen den Bereich später in unserer Firewall.

Fügen Sie der Konfigurationsdatei die folgenden Zeilen hinzu:

/etc/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

5. Benutzeranmeldung einschränken #

Um nur bestimmten Benutzern zu erlauben, sich beim FTP-Server anzumelden, fügen Sie die folgenden Zeilen am Ende der Datei hinzu:

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

Wenn diese Option aktiviert ist, müssen Sie explizit angeben, welche Benutzer sich anmelden können, indem Sie die Benutzernamen zur /etc/vsftpd.user_list hinzufügen Datei (ein Benutzer pro Zeile).

6. Sichern von Übertragungen mit SSL/TLS #

Um die FTP-Übertragungen mit SSL/TLS zu verschlüsseln, müssen Sie über ein SSL-Zertifikat verfügen und den FTP-Server für dessen Verwendung konfigurieren.

Sie können ein vorhandenes SSL-Zertifikat verwenden, das von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde, oder ein selbstsigniertes Zertifikat erstellen.

Wenn Sie eine Domain oder Subdomain haben, die auf die IP-Adresse des FTP-Servers verweist, können Sie ganz einfach ein kostenloses Let’s EncryptSSL-Zertifikat generieren.

Wir generieren ein selbstsigniertes SSL-Zertifikat mit dem openssl Befehl.

Der folgende Befehl erstellt einen privaten 2048-Bit-Schlüssel und ein selbstsigniertes Zertifikat, das 10 Jahre gültig ist. Sowohl der private Schlüssel als auch das Zertifikat 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

Sobald das SSL-Zertifikat erstellt ist, öffnen Sie die vsftpd-Konfigurationsdatei:

sudo nano /etc/vsftpd.conf

Suchen Sie die rsa_cert_file und rsa_private_key_file Direktiven, ändern Sie ihre Werte in pam Dateipfad und setzen Sie ssl_enable Direktive zu YES :

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

Wenn nicht anders angegeben, verwendet der FTP-Server nur TLS, um sichere Verbindungen herzustellen.

Starten Sie den vsftpd-Dienst neu #

Sobald Sie mit der Bearbeitung fertig sind, sollte die vsftpd-Konfigurationsdatei (ohne Kommentare) etwa so aussehen:

/etc/vsftpd.conf
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
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
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

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

sudo systemctl restart vsftpd

Öffnen der Firewall #

Wenn Sie eine UFW-Firewall ausführen, müssen Sie FTP-Datenverkehr zulassen.

Um Port 21 zu öffnen (FTP-Befehlsport), Port 20 (FTP-Datenport) und 30000-31000 (Passiver Portbereich), führen Sie die folgenden Befehle aus:

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

Um nicht ausgesperrt zu werden, öffnen Sie den Port 22 :

sudo ufw allow OpenSSH

Laden Sie die UFW-Regeln neu, indem Sie UFW deaktivieren und erneut aktivieren:

sudo ufw disablesudo ufw enable

Um die Änderungen zu überprüfen, führen Sie Folgendes aus:

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
20:21/tcp                  ALLOW       Anywhere
30000:31000/tcp            ALLOW       Anywhere
OpenSSH                    ALLOW       Anywhere
20:21/tcp (v6)             ALLOW       Anywhere (v6)
30000:31000/tcp (v6)       ALLOW       Anywhere (v6)
OpenSSH (v6)               ALLOW       Anywhere (v6)

FTP-Benutzer # erstellen

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

  • Wenn Sie bereits einen Benutzer haben, dem Sie FTP-Zugriff gewähren möchten, überspringen Sie den 1. Schritt.
  • Wenn Sie allow_writeable_chroot=YES setzen in Ihrer Konfigurationsdatei den 3. Schritt überspringen.
  1. Erstellen Sie einen neuen Benutzer namens newftpuser :

    sudo adduser newftpuser
  2. Fügen Sie den Benutzer zur Liste der zugelassenen FTP-Benutzer hinzu:

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Erstellen Sie den FTP-Verzeichnisbaum und legen Sie die richtigen Berechtigungen fest:

    sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

    Wie im vorherigen Abschnitt besprochen, kann der Benutzer seine Dateien auf ftp/upload hochladen Verzeichnis.

Zu diesem Zeitpunkt ist Ihr FTP-Server voll funktionsfähig und Sie sollten sich mit jedem FTP-Client, der für die Verwendung von TLS-Verschlüsselung konfiguriert werden kann, wie FileZilla, mit Ihrem Server verbinden können.

Shell-Zugriff deaktivieren #

Beim Erstellen eines Benutzers hat der Benutzer standardmäßig SSH-Zugriff auf den Server, sofern nicht ausdrücklich angegeben.

Um den Shell-Zugriff zu deaktivieren, erstellen wir eine neue Shell, die einfach eine Nachricht ausgibt, die dem Benutzer mitteilt, dass sein Konto nur auf FTP-Zugriff beschränkt ist.

Erstellen Sie /bin/ftponly Shell und ausführbar machen:

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

Hängen Sie die neue Shell an die Liste der gültigen Shells in /etc/shells an Datei:

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

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

sudo usermod newftpuser -s /bin/ftponly

Verwenden Sie denselben Befehl, um die Shell aller Benutzer zu ändern, denen Sie nur FTP-Zugriff gewähren möchten.


Ubuntu
  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 einen FTP-Server unter Ubuntu 20.04 Focal Fossa Linux ein

  4. So richten Sie einen FTP-Server in Ubuntu Linux ein und verwenden ihn

  5. Rsyslog-Server auf Ubuntu 20.04 einrichten - Wie geht das?

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

So richten Sie einen DHCP-Server unter Ubuntu ein

So richten Sie einen sicheren FTP-Server mit Pure-FTPd unter Ubuntu ein

So installieren Sie Vsftpd unter Ubuntu 16.04

Wie installiere ich einen FTP-Server?

So richten Sie einen FTP-Server mit VSFTPD ein