Installation von vsftpd-FTP-Server mit SSL/TLS unter CentOS 8

FTP ist ein weit verbreitetes Protokoll, das für die Übertragung von Dateien zwischen Server und Client verwendet wird. Es gibt eine Menge Open-Source-FTP-Server, die heute täglich verfügbar sind, darunter FTPD, VSFTPD, PROFTPD und pureftpd. Unter ihnen ist VSFTPD ein sicheres, schnelles und weltweit am häufigsten verwendetes Protokoll. Es wird auch als „Very Secure File Transfer Protocol Daemon“ bezeichnet. Es unterstützt auch SSL, IPv6, explizite und implizite FTPS.

In diesem Tutorial zeigen wir Ihnen, wie Sie VSFTPD auf dem CentOS 8-Server installieren und mit SSL/TLS sichern.

Voraussetzungen

  • Ein Server mit CentOS 8.
  • Auf Ihrem Server ist ein Root-Passwort konfiguriert.

VSFTPD installieren

Standardmäßig ist VSFTPD im Standard-Repository von CentOS 8 verfügbar. Sie können es installieren, indem Sie den folgenden Befehl ausführen:

dnf install vsftpd -y

Starten Sie nach Abschluss der Installation den VSFTPD-Dienst und aktivieren Sie ihn nach dem Systemneustart mit dem folgenden Befehl:

systemctl start vsftpd
 systemctl enable vsftpd

Zu diesem Zeitpunkt ist Ihr VSFTPD-Server installiert und läuft. Sie können nun mit dem nächsten Schritt fortfahren.

Benutzer für VSFTPD anlegen

Als nächstes müssen Sie einen neuen Benutzer für VSFTPD anlegen. So können Sie mit diesem Benutzer auf Ihren FTP-Server zugreifen.

Führen Sie den folgenden Befehl aus, um einen neuen Benutzer namens vyom wie unten dargestellt zu erstellen:

adduser vyom

Legen Sie dann das Kennwort für einen Benutzer vyom mit folgendem Befehl fest:

passwd vyom

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

VSFTPD konfigurieren

Als nächstes öffnen Sie die VSFTPD-Standardkonfigurationsdatei, die sich im Verzeichnis /etc/vsftpd befindet, wie unten gezeigt:

nano /etc/vsftpd/vsftpd.conf

Ändern Sie die folgenden Zeilen:

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
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=NO

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den VSFTPD-Dienst neu und überprüfen Sie den Status des Dienstes mit dem folgenden Befehl:

systemctl restart vsftpd
 systemctl status vsftpd

Sie sollten die folgende Ausgabe sehen:

? vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-02-21 00:43:57 EST; 6s ago
  Process: 2698 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 2699 (vsftpd)
    Tasks: 1 (limit: 6102)
   Memory: 1020.0K
   CGroup: /system.slice/vsftpd.service
           ??2699 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Feb 21 00:43:57 centos8 systemd[1]: Stopped Vsftpd ftp daemon.
Feb 21 00:43:57 centos8 systemd[1]: Starting Vsftpd ftp daemon...
Feb 21 00:43:57 centos8 systemd[1]: Started Vsftpd ftp daemon.

Zu diesem Zeitpunkt ist Ihr VSFTPD-Server konfiguriert. Sie können nun zu allen VSFTPD durch SELinux und die Firewall hindurch gehen.

Konfigurieren Sie die Firewall und SELInux

Standardmäßig ist SELinux in CentOS 8 aktiviert. Daher müssen Sie SELinux für VSFTPD konfigurieren.

Sie können SELinux so konfigurieren, dass der FTP-Zugang mit dem folgenden Befehl erlaubt wird:

setsebool -P allow_ftpd_full_access=1

Als nächstes müssen Sie den FTP-Dienst über die Firewall zulassen. Sie können ihn mit dem folgenden Befehl zulassen:

firewall-cmd --zone=public --permanent --add-service=ftp

Laden Sie als nächstes den Firewall-Dienst neu, um die Änderungen der Firewall-Konfiguration anzuwenden:

firewall-cmd --reload

Zu diesem Zeitpunkt ist Ihre Firewall und SELinux so konfiguriert, dass eine eingehende FTP-Verbindung vom entfernten System zugelassen wird. Sie können nun mit dem Testen der FTP-Verbindung fortfahren.

Verbindung zum VSFTPD-Server herstellen

Ihr VSFTPD-Server ist nun installiert und konfiguriert. Jetzt ist es an der Zeit, den FTP-Server vom Client-System aus zu verbinden.

Gehen Sie dazu zum Client-System und führen Sie den folgenden Befehl aus, um Ihren FTP-Server zu verbinden:

ftp 172.20.10.3

Sie werden gebeten, Ihren FTP-Benutzer und das Passwort wie unten dargestellt anzugeben:

Connected to 172.20.10.3.
220 (vsFTPd 3.0.3)
Name (172.20.10.3:root): vyom
331 Please specify the password.
Password:
230 Login successful.

Sobald die Verbindung erfolgreich hergestellt wurde, sollten Sie die folgende Ausgabe sehen:

Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Geben Sie nun exit ein und drücken Sie die Eingabetaste, um die FTP-Sitzungen zu beenden.

Konfigurieren Sie VSFTPD mit TLS-Unterstützung

Aus Sicherheitsgründen ist es eine gute Idee, die FTP-Übertragungen mit SSL/TLS zu verschlüsseln. Dazu müssen Sie ein SSL-Zertifikat generieren und den VSFTPD-Server für die Verwendung dieses Zertifikats konfigurieren.

Zuerst müssen Sie das OpenSSL-Paket in Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:

dnf install openssl -y

Erstellen Sie nach der Installation ein neues Verzeichnis zum Speichern des SSL-Zertifikats:

mkdir /etc/ssl/private

Als nächstes erzeugen Sie ein selbstsigniertes Zertifikat mit dem folgenden Befehl:

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

Geben Sie alle erforderlichen Informationen wie unten gezeigt an:

Generating a RSA private key
...+++++
...........+++++
writing new private key to '/etc/ssl/private/vsftpd.key'
-----
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) [XX]:IN
State or Province Name (full name) []:GUJ
Locality Name (eg, city) [Default City]:JUN
Organization Name (eg, company) [Default Company Ltd]:IT
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:ftpserver
Email Address []:hitjethva@gmail.com

Nachdem Sie das SSL-Zertifikat generiert haben, müssen Sie VSFTPD für die Verwendung dieses Zertifikats konfigurieren.

Öffnen Sie die VSFTPD-Standardkonfigurationsdatei wie unten gezeigt:

nano /etc/vsftpd/vsftpd.conf

Fügen Sie die folgenden Zeilen am Ende der Datei hinzu:

#Path of the SSL certificate
rsa_cert_file=/etc/ssl/private/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
#Enable the SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
#TSL is more secure than SSL so enable ssl_tlsv1_2.
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
#Enable SSL debugging to store all VSFTPD log.
debug_ssl=YES

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann den VSFTPD-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart vsftpd

Zu diesem Zeitpunkt ist Ihr VSFTPD-Server für die Verwendung eines SSL-Zertifikats konfiguriert. Sie können nun mit dem nächsten Schritt fortfahren.

VSFTPD-TLS-Verbindung verifizieren

Ihr VSFTPD-Server ist jetzt mit SSL/TLS-Unterstützung gesichert. Versuchen Sie nun, Ihren FTP-Server von der Befehlszeile aus zu verbinden, wie unten gezeigt:

ftp 172.20.10.3

Sie sollten den Fehler in der folgenden Ausgabe sehen:

Connected to 172.20.10.3.
220 (vsFTPd 3.0.2)
Name (172.20.10.3:root): vyom
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp> 

Sie können keine Verbindung zu Ihrem VSFTP-Server über den Befehlszeilen-Client herstellen. Weil er keine SSL/TLS-Unterstützung bietet.

Sie müssen also die VSFTPD-Verbindung mit einem FTP-Client, der TLS-Verbindungen unterstützt, herunterladen und testen.

Gehen Sie dazu in das Client-System und installieren Sie das FileZilla-Client-Paket.

Nachdem Sie FileZilla installiert haben, öffnen Sie die FileZilla-Software wie unten gezeigt:

FileZilla FTP-Client

Als nächstes öffnen Sie den Site Manager wie unten gezeigt:

Bauleiter

Klicken Sie auf die Schaltfläche New Site, um eine neue FTP-Verbindung wie unten gezeigt hinzuzufügen:

FTP-Server-Details hinzufügen

Geben Sie die IP Ihres FTP-Servers an, wählen Sie das FTP-Protokoll, wählen Sie „Explizites FTP über TLS verwenden“, wählen Sie „Passwort anfordern“, geben Sie den Benutzernamen Ihres FTP-Servers an und klicken Sie auf die Schaltfläche Verbinden. Sie werden nach dem Passwort des FTP-Benutzers gefragt, wie unten dargestellt:

Geben Sie das Passwort ein

Geben Sie Ihr FTP-Passwort ein und klicken Sie auf die Schaltfläche OK. Sie werden aufgefordert, das für die SSL/TLS-Verbindung verwendete Zertifikat wie unten dargestellt zu überprüfen:

SSL-Zertifikat akzeptieren

Klicken Sie auf die Schaltfläche OK, um das Zertifikat zu überprüfen. Sobald die Verbindung erfolgreich hergestellt wurde, sollten Sie den folgenden Bildschirm sehen:

Erfolgreiche Verbindung zum FTP-Server

Schlussfolgerung

In der obigen Anleitung haben wir den VSFTPD-Server auf CentOS 8 installiert. Wir haben den VSFTPD-Server auch für die Verwendung von SSL/TLS-Zertifikaten konfiguriert. Ihr FTP-Server ist jetzt gesichert. Wenn Sie Fragen haben, können Sie mich gerne fragen.

Das könnte dich auch interessieren …