Dieser Artikel beschreibt die Installation und Konfiguration eines FTP-Servers unter Ubuntu 20.04, die Sie verwenden, um Dateien zwischen Ihren Geräten zu teilen.
FTP (File Transfer Protocol) ist ein Standard-Netzwerkprotokoll zum Übertragen von Dateien zu und von einem Remote-Netzwerk. Für Linux stehen mehrere Open-Source-FTP-Server zur Verfügung. Die bekanntesten und am weitesten verbreiteten sind PureFTPd , ProFTPD und vsftpd . Wir installieren vsftpd (Very Secure FTP Daemon), einen stabilen, sicheren und schnellen FTP-Server. Wir zeigen Ihnen auch, wie Sie den Server konfigurieren, um Benutzer auf ihr Home-Verzeichnis zu beschränken und die gesamte Übertragung mit SSL/TLS zu verschlüsseln.
Obwohl FTP ein sehr beliebtes Protokoll ist, sollten Sie für sicherere und schnellere Datenübertragungen SCP oder SFTP verwenden .
vsftpd auf Ubuntu 20 installieren.04 #
Das vsftpd-Paket ist in den Ubuntu-Repositorys verfügbar. Um es zu installieren, führen Sie die folgenden Befehle aus:
sudo apt-Update
sudo apt install vsftpd
Der FTP-Dienst wird automatisch gestartet, sobald der Installationsvorgang abgeschlossen ist. Um dies zu überprüfen, drucken Sie den Servicestatus aus:
sudo systemctl status vsftpd
Die Ausgabe sollte zeigen, dass der vsftpd-Dienst aktiv ist und ausgeführt wird:
● vsftpd.service - vsftpd FTP-Server Geladen: geladen (/lib/systemd/system/vsftpd.Bedienung; aktiviert; Herstellervoreinstellung: aktiviert) Aktiv: aktiv (läuft) seit Di. 2021-03-02 15:17:22 UTC; vor 3s…
vsftpd konfigurieren #
Die vsftpd-Serverkonfiguration wird im /etc/vsftpd.conf
Datei.
Die meisten Servereinstellungen sind in der Datei gut dokumentiert. Alle verfügbaren Optionen finden Sie auf der vsftpd-Dokumentationsseite.
In den folgenden Abschnitten gehen wir auf einige wichtige Einstellungen ein, die zum Konfigurieren einer sicheren vsftpd-Installation erforderlich sind.
Öffnen Sie zunächst die vsftpd-Konfigurationsdatei:
sudo nano /etc/vsftpd.conf
1. FTP-Zugang #
Wir erlauben nur den lokalen Benutzern den Zugriff auf den FTP-Server. Suche nach anonym_enable
und local_enable
-Anweisungen und überprüfen Sie, ob Ihre Konfiguration mit den folgenden Zeilen übereinstimmt:
anonymous_enable=NEIN local_enable=JA
2. Uploads aktivieren #
Suchen und kommentieren Sie die write_enable
Anweisung, um Dateisystemänderungen zuzulassen, wie das Hochladen und Entfernen von Dateien:
write_enable=YES
3. Chroot-Gefängnis #
Um zu verhindern, dass lokale FTP-Benutzer auf Dateien außerhalb ihrer Heimatverzeichnisse zugreifen, entkommentieren Sie die lne beginnend mit chroot_local_user
:
chroot_local_user=JA
Wenn chroot aktiviert ist, verweigert vsftpd standardmäßig aus Sicherheitsgründen das Hochladen von Dateien, wenn das Verzeichnis, in dem die Benutzer gesperrt sind, beschreibbar ist.
Verwenden Sie eine der folgenden Lösungen, um Uploads zuzulassen, wenn Chroot aktiviert ist:
Methode 1. - Die empfohlene Option besteht darin, die Chroot-Funktion aktiviert zu lassen und FTP-Verzeichnisse zu konfigurieren. In diesem Beispiel erstellen wir ein
/etc/vsftpd.confftp
Verzeichnis innerhalb des Benutzers home, das als Chroot und beschreibbaresUploads
Verzeichnis zum Hochladen von Dateien:user_sub_token=$USER local_root=/home/$USER/ftp
Methode 2. - Eine andere Möglichkeit besteht darin, die
/etc/vsftpd.confallow_writeable_chroot
Direktive:allow_writeable_chroot=JA
Verwenden Sie diese Option nur, wenn Sie Ihrem Benutzer Schreibzugriff auf sein Home-Verzeichnis gewähren müssen.
4. Passive FTP-Verbindungen #
Standardmäßig verwendet vsftpd den aktiven Modus. Um den passiven Modus zu verwenden, legen Sie den minimalen und maximalen Portbereich fest:
/etc/vsftpd.confpasv_min_port=30000 pasv_max_port=31000
Sie können jeden Port für passive FTP-Verbindungen verwenden. Wenn der passive Modus aktiviert ist, öffnet der FTP-Client eine Verbindung zum Server auf einem zufälligen Port im von Ihnen gewählten Bereich.
5. Begrenzung der Benutzeranmeldung #
Sie können vsftpd so konfigurieren, dass sich nur bestimmte Benutzer anmelden können. Fügen Sie dazu am Ende der Datei folgende Zeilen hinzu:
/etc/vsftpd.confuserlist_enable=JA userlist_file=/etc/vsftpd.user_list userlist_deny=NEIN
Wenn diese Option aktiviert ist, müssen Sie explizit angeben, welche Benutzer sich anmelden können, indem Sie die Benutzernamen zum /etc/vsftpd.Benutzerliste
Datei (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 so konfigurieren, dass er es verwendet.
Sie können ein vorhandenes SSL-Zertifikat verwenden, das von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde, oder ein selbstsigniertes Zertifikat erstellen.
Wenn Sie über eine Domain oder Subdomain verfügen, die auf die IP-Adresse des FTP-Servers verweist, können Sie schnell ein kostenloses Let's Encrypt SSL-Zertifikat erstellen.
Wir generieren einen privaten 2048-Bit-Schlüssel und ein selbstsigniertes SSL-Zertifikat, das zehn Jahre gültig ist:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Sowohl der private Schlüssel als auch das Zertifikat werden in derselben Datei gespeichert.
Sobald das SSL-Zertifikat erstellt wurde, öffnen Sie die vsftpd-Konfigurationsdatei:
sudo nano /etc/vsftpd.conf
Finden Sie die rsa_cert_file
und rsa_private_key_file
Richtlinien, ändern Sie ihre Werte in die pam
Dateipfad und setzen Sie die ssl_enable
Anweisung an JA
:
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.conflisten=NEIN listen_ipv6=JA anonymous_enable=NEIN local_enable=JA write_enable=JA dirmessage_enable=JA use_localtime=JA xferlog_enable=JA connect_from_port_20=JA chroot_local_user=JA secure_chroot_dir=/var/run/vsftpd/empty pam_certp_name=savs_certp_name= privat/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=NEIN
Speichern Sie die Datei und starten Sie den vsftpd-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl Neustart vsftpd
Öffnen der Firewall #
Wenn Sie eine UFW-Firewall verwenden, müssen Sie FTP-Datenverkehr zulassen.
Port öffnen 21
(FTP-Befehlsport), Port 20
(FTP-Datenport) und 30000-31000
(Passiver Portbereich), führen Sie die folgenden Befehle aus:
sudo ufw erlauben 20:21/tcp
sudo ufw erlauben 30000: 31000/tcp
Stellen Sie sicher, dass Port 22
ist offen:
sudo ufw OpenSSH zulassen
Laden Sie die UFW-Regeln neu, indem Sie UFW deaktivieren und wieder aktivieren:
sudo ufw deaktivieren
sudo ufw aktivieren
Um die Änderungen zu überprüfen, führen Sie Folgendes aus:
sudo ufw-Status
Status: aktiv Bis Aktion Von -- ------ ---- 20:21/tcp Erlaube überall 30000:31000/tcp Erlaube überall OpenSSH Erlaube überall 20:21/tcp (v6) Erlaube überall (v6) 30000 31000/tcp (v6) überall zulassen (v6) OpenSSH (v6) überall zulassen (v6)
FTP-Benutzer erstellen #
Um den FTP-Server zu testen, erstellen wir einen neuen Benutzer.
- Wenn der Benutzer, dem Sie FTP-Zugriff gewähren möchten, bereits existiert, überspringen Sie den 1. Schritt.
- Wenn Sie einstellen
allow_writeable_chroot=JA
Überspringen Sie in Ihrer Konfigurationsdatei den 3. Schritt.
Erstellen Sie einen neuen Benutzer namens
neuerftpuser
:sudo adduser newftpuser
Fügen Sie den Benutzer zur Liste der zulässigen FTP-Benutzer hinzu:
echo "newftpuser" | sudo tee -a /etc/vsftpd.Benutzerliste
Erstellen Sie den FTP-Verzeichnisbaum und legen Sie die richtigen Berechtigungen fest:
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 besprochen, kann der Benutzer seine Dateien auf den
ftp/hochladen
Verzeichnis.
Zu diesem Zeitpunkt ist Ihr FTP-Server voll funktionsfähig. Sie sollten in der Lage sein, sich mit jedem FTP-Client, der für die Verwendung der TLS-Verschlüsselung konfiguriert werden kann, wie FileZilla, mit dem Server zu verbinden .
Deaktivieren des Shell-Zugriffs #
Standardmäßig hat der Benutzer beim Erstellen eines Benutzers, wenn nicht explizit angegeben, SSH-Zugriff auf den Server. Um den Shell-Zugriff zu deaktivieren, erstellen Sie eine neue Shell, die eine Nachricht ausgibt, die dem Benutzer mitteilt, dass sein Konto nur auf FTP-Zugriff beschränkt ist.
Führen Sie die folgenden Befehle aus, um die /bin/ftply
Datei und mache sie ausführbar:
echo -e '#!/bin/sh\necho "Dieser Account ist nur auf FTP-Zugriff beschränkt."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Hängen Sie die neue Shell an die Liste der gültigen Shells im /etc/shells
Datei:
echo "/bin/ftponly" | sudo tee -a /etc/shells
Ändern Sie die Benutzer-Shell zu /bin/ftply
:
sudo usermod newftpuser -s /bin/ftponly
Sie können den gleichen Befehl verwenden, um die Shell aller Benutzer zu ändern, denen Sie nur FTP-Zugriff gewähren möchten.
Fazit #
Wir haben Ihnen gezeigt, wie Sie einen sicheren und schnellen FTP-Server auf Ihrem Ubuntu 20 . installieren und konfigurieren.04-System.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.