Linux FTP Server einrichten | HOST-UNLIMITED TUTORIAL
Inhaltsverzeichnis:
- Voraussetzungen
- Vsftpd unter CentOS 7 installieren
- Vsftpd konfigurieren
- 1. FTP-Zugang
- 2. Uploads aktivieren
- 3. Chroot Gefängnis
- 4. Passive FTP-Verbindungen
- 5. Beschränkung der Benutzeranmeldung
- 6. Sichern von Übertragungen mit SSL / TLS
- Starten Sie den vsftpd-Dienst neu
- Firewall öffnen
- Erstellen eines FTP-Benutzers
- Shell-Zugriff deaktivieren
- Fazit
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:
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.
3. Chroot Gefängnis
Verhindern Sie, dass FTP-Benutzer auf Dateien außerhalb ihrer Basisverzeichnisse zugreifen, indem Sie die
chroot
Direktive
chroot
.
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
/etc/vsftpd/vsftpd.confftp
Verzeichnis innerhalb des Benutzerhauses, das als Chroot-Verzeichnis und beschreibbares Upload-Verzeichnis zum Hochladen von Dateien dient.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.confallow_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
:
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
:
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:
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:
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 Sieallow_writeable_chroot=YES
in Ihrer Konfigurationsdateiallow_writeable_chroot=YES
überspringen Sie den dritten Schritt.
-
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 centosSo richten Sie mit Ihrem Android einen perfekten WLAN-Router ein
Hier erfahren Sie, wie Sie mit Ihrem Android-Gerät einen perfekten WLAN-Router einrichten, indem Sie Interferenzen, WLAN-Stärke und viele solcher Parameter analysieren.
So richten Sie mit dem Migrationsassistenten einen neuen Mac ein
Hast du dir einen glänzenden neuen Mac gekauft? Mit dem Migrationsassistenten können Sie es problemlos einrichten. Lesen Sie weiter, um zu wissen, wie genau.
So richten Sie eine Firewall mit firewalld auf centos 7 ein
FirewallD ist eine vollständige Firewall-Lösung, die die iptables-Regeln des Systems verwaltet und eine D-Bus-Schnittstelle für den Betrieb bereitstellt. In diesem Tutorial zeigen wir Ihnen, wie Sie eine Firewall mit FirewallD auf Ihrem CentOS 7-System einrichten und erklären Ihnen die grundlegenden FirewallD-Konzepte.