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:
Als nächstes öffnen Sie den Site Manager wie unten gezeigt:
Klicken Sie auf die Schaltfläche New Site, um eine neue FTP-Verbindung wie unten gezeigt hinzuzufü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 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:
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:
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.