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

So konfigurieren Sie VSFTPD FTPS mit SSL/TLS unter Ubuntu 18.04

FTP, die Abkürzung für File Transfer Protocol, wird verwendet, um Dateien zwischen Computer und Server in einem bestimmten Computernetzwerk zu übertragen. Das FTP-Protokoll verwendet eine unsichere Art der Datenübertragung und sollte auf das Netzwerk beschränkt sein, dem Sie vertrauen. Stattdessen sollten wir FTPS (File Transfer Protocol with SSL) haben, das eine sichere SSL-Verbindung zwischen den beiden Enden verwendet, oder SFTP (SSH File Transfer Protocol/Secure File Transfer Protocol) verwenden.

Dieses Tutorial enthält detaillierte Schritte zum Konfigurieren eines gesicherten vsftpd-Servers mit SSL/TLS unter Ubuntu 18.04 und zum Herstellen einer Verbindung zum Server mithilfe eines Terminals und GUI-Tools.

VSFTPD-Server installieren

Unter Linux sind mehrere FTP-Server verfügbar. Wir werden vsftp installieren. Dazu geben wir unter Ubuntu 18.04 den folgenden Befehl im Terminal ein:

sudo apt install vsftpd

Sobald der vsftpd installiert ist, befindet sich seine Standardkonfigurationsdatei in /etc/vsftpd.conf. Um Änderungen an dieser Datei vorzunehmen und benutzerdefinierte Konfigurationen zu testen, erstellen wir zunächst eine Sicherungskopie dieser Datei. Dazu können Sie Folgendes ausführen:

sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak

Dann erstellen wir die Datei vsftpd.conf mit dem folgenden Befehl:

sudo vim /etc/vsftpd.conf

und fügen Sie der Datei die folgenden Zeilen hinzu:vsftpsft

 listen=NO
 listen_ipv6=YES
 anonymous_enable=NO
 local_enable=YES
 write_enable=YES
 local_umask=022
 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
 pasv_enable=Yes
 pasv_min_port=10000
 pasv_max_port=11000
 user_sub_token=$USER
 local_root=/home/$USER/ftp
 userlist_enable=YES
 userlist_file=/etc/vsftpd.userlist
 userlist_deny=NO

Beachten Sie, dass dies die am häufigsten verwendeten Konfigurationen sind und Sie sie Ihren Anforderungen entsprechend ändern können.

Ubuntu 18.04 wird mit vorinstallierter und aktivierter ufw (unkomplizierte Firewall) geliefert. Mit diesem Befehl können Sie überprüfen, ob ufw auf Ihrem Computer ausgeführt wird:

sudo service ufw status

Wenn es läuft und Sie es laufen lassen, müssen Sie eingehenden Datenverkehr für FTP-Ports zulassen (20,21 für aktive Verbindungen und 10000-10100 für passive). Dazu können Sie Folgendes ausführen:

sudo ufw allow from any to any port 20,21,10000:11000 proto tcp

Bei Erfolg sieht die Ausgabe wie folgt aus:

Rules updated
Rules updated (v6)

Nachdem all diese Schritte abgeschlossen sind, müssen wir den vsftpd-Server mit dem folgenden Befehl neu starten:

sudo service vsftpd restart

Erstellen eines Benutzers zum Verbinden mit dem FTP-Server

Sobald der vsftp-Server installiert und gemäß unseren Anforderungen konfiguriert ist, müssen wir keinen Benutzer (z. B. ftpsuer) erstellen, um eine Verbindung zum FTP-Server herzustellen. Dazu können Sie Folgendes ausführen:

sudo useradd -m ftpuser

Erstellen Sie mit dem folgenden Befehl ein Passwort für den neu erstellten Benutzer:

sudo passwd ftpuser

Danach werden Sie aufgefordert, ein neues UNIX-Passwort einzugeben und es erneut einzugeben, damit die Änderungen übernommen werden. Eine erfolgreiche Ausgabe sieht so aus:

passwd: password updated successfully

FTP-Benutzerverzeichnis vorbereiten

Eine der wichtigsten Aktionen, die zum Sichern einer FTP-Verbindung durchgeführt werden müssen, besteht darin, Benutzer auf ihr Home-Verzeichnis zu beschränken, sodass sie überhaupt keinen Zugriff auf andere Verzeichnisse haben. Dazu müssen wir in vsftpd chroot in der Konfigurationsdatei aktivieren, was wir bereits im Konfigurationsteil des Artikels getan haben (chroot_local_user=YES ). Die Art und Weise der Verzeichnissicherheit von vsftpd geht davon aus, dass der Benutzer keinen Schreibzugriff darauf hat. Aber wenn wir bestehenden Benutzern FTP-Zugriff geben und sie die Shell verwenden, um den Server zu verwenden, müssen sie möglicherweise Schreibzugriff auf ihren Home-Ordner haben. Um Sicherheitsmängel zu vermeiden und auch einen ordnungsgemäßen FTP-Zugriff für den Benutzer zu haben, erstellen wir einen FTP-Ordner im Home-Verzeichnis des Benutzers und fügen ihn als lokales Root-Verzeichnis zur vsftpd-Konfiguration hinzu, wenn eine Verbindung über FTP hergestellt wird. Außerdem müssen wir den Besitz des Verzeichnisses ändern und den Schreibzugriff entfernen. Dazu können Sie Folgendes ausführen:

sudo mkdir /home/ftpuser/ftp
sudo chown nobody:nogroup /home/ftpuser/ftp
sudo chmod a-w /home/ftpuser/ftp

dann fügen/ändern Sie die folgenden Zeilen in der vsftpd-Konfigurationsdatei /etc/vsftpd.conf

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

Nachdem diese Schritte abgeschlossen sind, müssen wir einen weiteren Ordner in /home/ftpuser/ftp erstellen und dem Benutzer sein Eigentum zuweisen

sudo mkdir /home/ftpuser/ftp/files
sudo chown ftpuser:ftpuser/home/ftpuser/ftp/files

Um zu testen, ob wir Dateien im Home-Verzeichnis des Benutzers anzeigen können, nachdem wir uns mit dem FTP-Server verbunden haben, erstellen wir eine Testdatei in diesem Verzeichnis und fügen etwas Text hinzu. Dazu können Sie Folgendes ausführen:

echo "test file for vsftpd" | sudo tee /home/ftpuser/ftp/files/test.txt

Um bestimmten Benutzern den Zugriff auf vsftpd zu erlauben oder zu verweigern, können wir die userlist-Datei verwenden und den entsprechenden Datensatz in der vsftpd-Konfigurationsdatei hinzufügen. Dazu können Sie Folgendes ausführen:

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

Wenn userlist_deny auf NO gesetzt ist, können nur der Datei hinzugefügte Benutzer auf den FTP-Server zugreifen, und wenn es auf YES gesetzt ist, haben die in der Datei aufgeführten Benutzer keinen Zugriff auf den FTP-Server und andere haben Zugriff. Fügen Sie mit dem folgenden Befehl Benutzernamen zur oben genannten Datei hinzu:

echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

SSL für VSFTPD konfigurieren

Da per FTP übertragene Daten (sogar Anmeldeinformationen) nicht verschlüsselt sind, können wir TLS/SSL aktivieren, um unserem FTP-Server eine weitere Sicherheitsebene zu bieten. Um ein Zertifikat mit openssl zu erstellen, führen Sie Folgendes aus:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

wobei -days 365 zum Hinzufügen eines Zertifikats für ein Jahr und zum Hinzufügen desselben Werts für die Flags -out, -keyout dient, um den privaten Schlüssel und das Zertifikat in derselben Datei zu finden. Sie werden aufgefordert, alle erforderlichen Informationen zum Erstellen des Zertifikats hinzuzufügen, wie unten gezeigt

Generating a 2048 bit RSA private key
.................+++
..............................................................................................+++
writing new private key to '/etc/ssl/private/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:AU
State or Province Name (full name) [Some-State]:SY
Locality Name (eg, city) []:Sydney
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linoxide
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:ubuntu
Email Address []:[email protected]

Nachdem das Zertifikat erstellt wurde, müssen wir es zur vsftpd-Konfigurationsdatei hinzufügen und SSL aktivieren. Fügen Sie dazu in der genannten Datei folgende Zeile hinzu:

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

Danach müssen wir anonyme Verbindungen über SSL verweigern und SSL für die Datenübertragung und Anmeldung verlangen. Fügen Sie dazu die folgenden Zeilen zu /etc/vsftpd.conf hinzu Datei:

 allow_anon_ssl=NO
 force_local_data_ssl=YES
 force_local_logins_ssl=YES

Sobald die obigen Zeilen hinzugefügt sind, konfigurieren wir den Server für die Verwendung von TLS, dem bevorzugten Nachfolger von SSL. Fügen Sie dazu in derselben Datei die folgenden Zeilen hinzu:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Nach all den Schritten sieht unsere vsftpd-Konfigurationsdatei so aus:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
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
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=11000
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

Nach jeder Änderung in der Konfigurationsdatei des vsftpd müssen wir den Dienst mit dem folgenden Befehl neu starten:

sudo service vsftpd restart

Sie können vsftpd auch so konfigurieren, dass das letsencrypt-Zertifikat für sftp verwendet wird, aber stellen Sie sicher, dass Sie eine zu validierende Domäne haben. Sie könnten eine Pfadvariable in der vsftpd-Konfiguration hinzufügen, in der das SSL-Zertifikat und der private Schlüssel gespeichert sind.

rsa_cert_file=/ssl/letsencrypt/ftpdomain.com/chain-bundle.pem
rsa_private_key_file=/ssl/letsencrypt/ftpdomain.com/private-key.pem

Verbindung zum FTP-Server herstellen

Es gibt zwei Methoden, um eine Verbindung zum FTP-Server herzustellen:

  • Terminal verwenden
  • FTP-Client mit GUI verwenden

Mit Terminal verbinden

Um sich über die Befehlszeile mit dem FTP-Server zu verbinden, geben Sie den folgenden Befehl im Terminal ein:

ftp ubuntu

Wobei ubuntu ist der Hostname des Computers, auf dem der FTP-Server installiert ist. Stellen Sie sicher, dass der FTP-Server-Rechner über seinen Hostnamen von dem Rechner erreichbar ist, zu dem Sie eine Verbindung herstellen möchten.

Nach dem Verbinden werden Sie aufgefordert, den Benutzernamen und das Passwort für die Verbindung zum FTP-Server einzugeben:

Connected to ubuntu.
220 (vsFTPd 3.0.3)
Name (ubuntu:ubuntu): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Geben Sie ls ein um zu prüfen, ob die zuvor erstellte Testdatei vorhanden ist:

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 1001 1001 4096 May 21 13:39 files
226 Directory send OK.

Verbindung über FTP-Client mit GUI

Wir werden Filezilla verwenden, um eine Verbindung zu unserem unter Linux installierten FTP-Server herzustellen. Öffnen Sie dazu den Filezilla-Client auf Ihrem Computer und geben Sie die IP-Adresse des FTP-Servers und die ftpuser-Anmeldeinformationen ein, um eine Verbindung herzustellen, und klicken Sie auf die Schaltfläche „Verbinden“, wie im folgenden Screenshot gezeigt. Sie werden aufgefordert, das Zertifikat als vertrauenswürdig hinzuzufügen, danach können Sie sich mit dem FTP-Server verbinden.

Nach dem Verbinden können wir sehen, dass die test.txt die wir zuvor erstellt haben, ist da.

Verwandtes Lesen:

  • So richten Sie den MySecureShell-SFTP-Server unter Ubuntu 18.04 ein
  • 5 Schritte zum Installieren und Einrichten von ProFTPD auf Debian 9 Stretch
  • 12 lftp-Befehle zum Verwalten von Dateien mit Beispielen

Wie Sie dem Artikel entnehmen können, ist die Installation des vsftpd-Servers und die Verbindung zu ihm sehr einfach und in wenigen Schritten erledigt. Der Hauptpunkt hier ist, den FTP-Server über seine Konfigurationsdatei zu sichern, wie z. B. das Chrooten des Benutzers in sein Home-Verzeichnis, das Deaktivieren der anonymen Anmeldung und das Hinzufügen von lokalen umask- und Benutzer-Lese- und Schreibberechtigungen.


Ubuntu
  1. So installieren und konfigurieren Sie einen FTP-Server (vsftpd) mit SSL/TLS unter Ubuntu 20.04

  2. Installieren Sie Vsftpd mit SSL / TLS auf Ubuntu 20.04 - Beste Vorgehensweise?

  3. So sichern Sie vsFTPd mit SSL/TLS

  4. So konfigurieren Sie vsftpd für die Verwendung von SSL/TLS (FTPS) unter CentOS/Ubuntu

  5. Installieren Sie Vsftpd mit SSL/TLS auf Ubuntu 20.04

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

So installieren Sie ProFTPD mit TLS unter Ubuntu 20.04 LTS

So installieren und konfigurieren Sie Apache mit Let’s Encrypt TLS/SSL unter Ubuntu 20.04

So installieren Sie Nginx mit Let’s Encrypt TLS/SSL unter Ubuntu 20.04

So installieren Sie Vsftpd unter Ubuntu 16.04

So konfigurieren Sie vsftpd für die Verwendung von SSL/TLS auf einem Ubuntu 20.04