Android

So richten Sie einen FTP-Server mit vsftpd unter Debian 9 ein

FTP Server - TOTOLINK router A3002RU - 4 antenna

FTP Server - TOTOLINK router A3002RU - 4 antenna

Inhaltsverzeichnis:

Anonim

FTP (File Transfer Protocol) ist ein Standard-Netzwerkprotokoll zum Übertragen von Dateien zu und von einem entfernten Netzwerk. Verwenden Sie für sicherere und schnellere Datenübertragungen SCP oder SFTP.

Es gibt viele Open-Source-FTP-Server für Linux. Die beliebtesten und am häufigsten verwendeten sind PureFTPd, ProFTPD und vsftpd.

Dieses Tutorial erklärt, wie man vsftpd (Very Secure FTP Daemon) unter Debian 9 installiert und konfiguriert. Vsftpd ist ein stabiler, sicherer und schneller FTP-Server. Wir zeigen Ihnen auch, wie Sie vsftpd konfigurieren, um Benutzer auf ihr Ausgangsverzeichnis zu beschränken und die gesamte Übertragung mit SSL / TLS zu verschlüsseln.

Voraussetzungen

Der Benutzer, unter dem Sie angemeldet sind, muss über Sudo-Berechtigungen verfügen, um Pakete installieren zu können.

Vsftpd unter Debian 9 installieren

Das vsftpd-Paket ist in den Debian-Repositories verfügbar. Die Installation ist ziemlich einfach:

sudo apt update sudo apt install vsftpd

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

sudo systemctl status vsftpd

Die Ausgabe sieht ungefähr 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-12-10 11:42:51 UTC; 53s ago Main PID: 1394 (vsftpd) CGroup: /system.slice/vsftpd.service └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf

Vsftpd konfigurieren

Der vsftpd-Server kann durch Ändern der Datei vsftpd.conf im Verzeichnis /etc konfiguriert werden.

Die meisten Einstellungen sind in der Konfigurationsdatei gut dokumentiert. Alle verfügbaren Optionen finden Sie auf der offiziellen vsftpd-Seite.

In den folgenden Abschnitten werden einige wichtige Einstellungen erläutert, die zum Konfigurieren einer sicheren vsftpd-Installation erforderlich sind.

Öffnen Sie zunächst die vsftpd-Konfigurationsdatei:

sudo nano /etc/vsftpd.conf

1. FTP-Zugang

local_enable Anweisungen anonymous_enable und local_enable und überprüfen Sie, ob Ihre Konfiguration mit den folgenden Zeilen übereinstimmt:

/etc/vsftpd.conf

anonymous_enable=NO local_enable=YES

Dadurch wird sichergestellt, dass nur die lokalen Benutzer auf den FTP-Server zugreifen können.

2. Uploads aktivieren

Deaktivieren Sie die Einstellung write_enable , 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 Basisverzeichnisse zugreifen, deaktivieren Sie die chroot Einstellung.

/etc/vsftpd.conf

chroot_local_user=YES

Standardmäßig wird vsftpd das Hochladen von Dateien verweigern, wenn das Verzeichnis, in dem Benutzer gesperrt sind, beschreibbar ist, um eine Sicherheitsanfälligkeit zu verhindern, wenn Chroot aktiviert ist.

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

  • Methode 1. - Die empfohlene Methode zum Zulassen des Uploads besteht darin, die Chroot-Funktion aktiviert zu lassen und FTP-Verzeichnisse zu konfigurieren. In diesem Tutorial erstellen wir ein ftp Verzeichnis innerhalb des Benutzerhauses, das als Chroot-Verzeichnis und beschreibbares Upload-Verzeichnis zum Hochladen von Dateien dient.

    /etc/vsftpd.conf

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

    Methode 2. - Eine andere Option ist das Hinzufügen der folgenden Direktive in die vsftpd-Konfigurationsdatei. Verwenden Sie diese Option, wenn Sie Ihrem Benutzer beschreibbaren Zugriff auf sein Basisverzeichnis 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 legen den minimalen und maximalen Bereich der Ports fest und öffnen später den Bereich in unserer Firewall.

Fügen Sie der Konfigurationsdatei die folgenden Zeilen hinzu:

/etc/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Beschränkung der Benutzeranmeldung

Fügen Sie die folgenden Zeilen am Ende der Datei hinzu, damit sich nur bestimmte Benutzer beim FTP-Server anmelden können:

/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 Datei /etc/vsftpd.user_list (ein Benutzer pro Zeile).

6. Sichern von Übertragungen mit SSL / TLS

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

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

In diesem Lernprogramm erstellen wir mit dem Befehl openssl ein selbstsigniertes SSL-Zertifikat.

Der folgende Befehl erstellt einen privaten 2048-Bit-Schlüssel und ein selbstsigniertes Zertifikat mit einer Gültigkeit von 10 Jahren. 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 wurde, öffnen Sie die vsftpd-Konfigurationsdatei:

sudo nano /etc/vsftpd.conf

Suchen Sie die Direktiven rsa_cert_file und rsa_private_key_file , ändern Sie ihre Werte in den Pfad der ssl_enable Datei und setzen Sie die Direktive ssl_enable auf 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

Nach Abschluss der Bearbeitung sollte die vsftpd-Konfigurationsdatei (ohne Kommentare) ungefähr 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/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 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

Firewall öffnen

Führen Sie die folgenden Befehle aus, um Port 21 (FTP-Befehlsport), Port 20 (FTP-Datenport) und 30000-31000 (Passive Ports) zu 30000-31000 :

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

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

sudo ufw allow OpenSSH

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

sudo ufw disable sudo ufw enable

So überprüfen Sie die Änderungen:

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 allow_writeable_chroot=YES Schritt. Wenn Sie allow_writeable_chroot=YES in Ihrer Konfigurationsdatei allow_writeable_chroot=YES überspringen Sie den dritten Schritt.
  1. Erstellen Sie einen neuen Benutzer namens newftpuser :

    sudo adduser newftpuser

    Fügen Sie den Benutzer der Liste der zulässigen FTP-Benutzer hinzu:

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

    Erstellen Sie den FTP-Verzeichnisbaum und stellen Sie die richtigen Berechtigungen ein:

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

    Wie im vorherigen Abschnitt beschrieben, kann der Benutzer seine Dateien in das Verzeichnis ftp/upload .

Zu diesem Zeitpunkt ist Ihr FTP-Server voll funktionsfähig und Sie sollten in der Lage sein, über einen beliebigen FTP-Client, der für die Verwendung der TLS-Verschlüsselung wie FileZilla konfiguriert werden kann, eine Verbindung zu Ihrem Server herzustellen.

Shell-Zugriff deaktivieren

Wenn beim Erstellen eines Benutzers keine explizite Angabe erfolgt, hat der Benutzer standardmäßig SSH-Zugriff auf den Server.

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

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

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

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

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.

Fazit

In diesem Tutorial haben Sie gelernt, wie Sie einen sicheren und schnellen FTP-Server auf Ihrem Debian 9-System installieren und konfigurieren.

FTP-Debian