Android

So richten Sie einen FTP-Server mit vsftpd auf Centos 7 ein

Linux FTP Server einrichten | HOST-UNLIMITED TUTORIAL

Linux FTP Server einrichten | HOST-UNLIMITED TUTORIAL

Inhaltsverzeichnis:

Anonim

FTP (File Transfer Protocol) ist ein Standard-Client-Server-Netzwerkprotokoll, mit dem Benutzer Dateien zu und von einem Remotenetzwerk übertragen können.

Für Linux stehen mehrere Open-Source-FTP-Server zur Verfügung. Die beliebtesten und am häufigsten verwendeten sind PureFTPd, ProFTPD und vsftpd.

In diesem Tutorial installieren wir vsftpd (Very Secure FTP Daemon) auf CentOS 7. Es 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.

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

Voraussetzungen

Stellen Sie vor dem Fortfahren mit diesem Lernprogramm sicher, dass Sie als Benutzer mit sudo-Berechtigungen angemeldet sind.

Vsftpd unter CentOS 7 installieren

Das vsftpd-Paket ist in den Standard-CentOS-Repositorys verfügbar. Geben Sie zum Installieren den folgenden Befehl ein:

sudo yum install vsftpd

Starten Sie nach der Installation des Pakets den vsftpd-Daemon und aktivieren Sie ihn für den automatischen Start beim Booten:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

Sie können überprüfen, ob der vsftpd-Dienst ausgeführt wird, indem Sie seinen Status drucken:

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 daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Vsftpd konfigurieren

/etc/vsftpd/vsftpd.conf Konfigurieren des vsftpd-Dienstes muss die Konfigurationsdatei /etc/vsftpd/vsftpd.conf 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/vsftpd.conf

1. FTP-Zugang

Wir gewähren nur den lokalen Benutzern Zugriff auf den FTP-Server, suchen die Anweisungen anonymous_enable und local_enable und überprüfen, ob Ihre Konfiguration mit den folgenden Zeilen übereinstimmt:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES

2. Uploads aktivieren

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

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. Chroot Gefängnis

Verhindern Sie, dass FTP-Benutzer auf Dateien außerhalb ihrer Basisverzeichnisse zugreifen, indem Sie die chroot Direktive chroot .

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

Wenn chroot aktiviert ist, verweigert vsftpd standardmäßig das Hochladen von Dateien, wenn das Verzeichnis, in dem Benutzer gesperrt sind, beschreibbar ist. Dies soll eine Sicherheitslücke verhindern.

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/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/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/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Beschränkung der Benutzeranmeldung

userlist_enable=YES nach der userlist_enable=YES die folgenden Zeilen ein, damit sich nur bestimmte Benutzer beim FTP-Server userlist_enable=YES :

/etc/vsftpd/vsftpd.conf

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/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

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

sudo nano /etc/vsftpd/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/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/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/vsftpd.conf

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

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

sudo systemctl restart vsftpd

Firewall öffnen

30000-31000 die folgenden Befehle ein, um Port 21 (FTP-Befehlsport), Port 20 (FTP-Datenport) und 30000-31000 (Passive Ports) zu 30000-31000 :

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Laden Sie die Firewall-Regeln neu, indem Sie Folgendes eingeben:

firewall-cmd --reload

Erstellen eines FTP-Benutzers

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

    Als Nächstes müssen Sie das Benutzerkennwort festlegen:

    sudo passwd 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, mit jedem 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.

Führen Sie die folgenden Befehle aus, um die Shell /bin/ftponly zu erstellen und ausführbar zu machen:

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 für andere 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 CentOS 7-System installieren und konfigurieren.

ftp centos