GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

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

FTP sichern

Vsftpd ist ein weit verbreiteter FTP-Server, und wenn Sie ihn auf Ihrem Server zum Übertragen von Dateien einrichten, sollten Sie sich der damit verbundenen Sicherheitsprobleme bewusst sein. Das FTP-Protokoll hat eine schwache Sicherheit, die seinem Design inhärent ist. Es überträgt alle Daten im Klartext (unverschlüsselt), und in öffentlichen/unsicheren Netzwerken ist dies etwas zu riskant.

Um das Problem zu beheben, haben wir FTPS. Es sichert die FTP-Kommunikation durch Verschlüsselung mit SSL/TLS. Und dieser Beitrag zeigt, wie man SSL-Verschlüsselung mit vsftpd einrichtet.

vsftpd installieren

Vsftpd ist in den Standard-Repositories aller wichtigen Distributionen verfügbar, einschließlich Debian, Ubuntu, Centos und Fedora, und kann problemlos installiert werden. Es gibt nur eine Konfigurationsdatei namens vsftpd.conf, die sich im Verzeichnis /etc befindet.

# ubuntu/debian
$ sudo apt-get install vsftpd
# centos/fedora
# sudo yum install vsftpd

Der Rest besteht darin, vsftpd so zu konfigurieren, dass es SSL-Verschlüsselung für die FTP-Kommunikation verwendet. Es ist nur ein 2-stufiger Prozess.

Generieren Sie ein SSL-Zertifikat

Der erste Schritt besteht darin, ein SSL-Zertifikat und eine Schlüsseldatei zu erstellen, die vsftpd für die Verschlüsselung verwendet. Der Konfigurationsparameter „rsa_cert_file“ enthält den Pfad zur Zertifikatsdatei. Es hat einen Standardwert, der in der Manpage zu finden ist.

$ man vsftpd.conf | grep rsa_cert_file -A 5
       rsa_cert_file
              This option specifies the location of the RSA certificate to
              use for SSL encrypted connections.
              Default: /usr/share/ssl/certs/vsftpd.pem

Es unterscheidet sich zwischen Ubuntu und CentOS. Wir können es an einem beliebigen Ort speichern.
Erstellen Sie ein SSL-Zertifikat mit dem Befehl openssl. Wir fügen das Zertifikat und den Schlüssel in einer einzigen Datei zusammen.

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

Beantworten Sie die folgenden Fragen und in wenigen Sekunden sollte die Zertifikatsdatei fertig sein. Die Ausgabe würde in etwa so aussehen

# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Generating a 1024 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) [XX]:US
State or Province Name (full name) []:NY
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

Vsftpd für SSL konfigurieren

Die nächste Aufgabe besteht darin, vsftpd so zu konfigurieren, dass dieses SSL-Zertifikat für die Verschlüsselung verwendet wird. Die Datei vsftpd.conf befindet sich an folgendem Speicherort

# Ubuntu/Debian
/etc/vsftpd.conf 

# CentOS/Fedora
/etc/vsftpd/vsftpd.conf

Öffnen Sie die Datei vsftpd.conf und bearbeiten Sie sie wie unten gezeigt

Das Folgende teilt vsftpd den Speicherort der zu verwendenden Zertifikats-/Schlüsseldatei mit.

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

Fügen Sie die folgenden Optionen hinzu, um SSL zu aktivieren. Es aktiviert SSL und erzwingt die Verschlüsselung für Datenübertragungen sowie Anmeldungen.

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Die folgenden Zeilen weisen vsftpd an, gegebenenfalls TLS zu verwenden, das sicherer ist als sein Vorgänger SSL.

ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

Alle notwendigen Konfigurationsanweisungen wurden hinzugefügt. Speichern Sie die Datei und starten Sie vsftpd neu

# service vsftpd restart
# or
# sudo /etc/init.d/vsftpd restart

SSL auf vsftpd testen

Jetzt, da unser Setup abgeschlossen ist, ist es an der Zeit, es zu testen.

Versuchen Sie zuerst, sich mit dem einfachen FTP-Befehl zu verbinden, und es sollte fehlschlagen, nach einer Verschlüsselung zu fragen.

$ ftp 192.168.1.5
Connected to 192.168.1.5.
220 (vsFTPd 2.2.2)
Name (192.168.1.5:enlightened): pal
530 Non-anonymous sessions must use encryption.
Login failed.
ftp>

Überprüfen Sie als Nächstes, ob die SSL-Verschlüsselung einwandfrei funktioniert. GUI-FTP-Clients wie FileZilla können FTPS verwenden, aber der Einfachheit halber greifen wir auf das Befehlszeilentool namens curl zurück, und hier ist der sehr einfache Befehl, der eine Verbindung zum FTPS-Server herstellen und die Dateien auflisten sollte

$ curl --ftp-ssl --insecure --ftp-port 192.168.1.2:6003 --user pal:pal ftp://192.168.1.5
-rw-r--r--    1 0        0               0 Jan 03 06:10 abcd.txt
-rw-r--r--    1 0        0               0 Jan 03 06:10 cdefg.txt

Diese Dateien befinden sich im Home-Verzeichnis des Benutzers pal auf dem FTP-Server. Stellen Sie sicher, dass Sie einige Dateien im Server-Home haben, um sie aufzulisten und zu überprüfen. Andernfalls würde curl einfach leer zurückgeben.
Hier ist eine kurze Erklärung der Curl-Optionen, die wir verwendet haben.

ftp-ssl : Tells curl to use ftps

insecure : Tells curl not to use any ssl certificate to authenticate and just connect right away.

ftp-port : Tells curl that we are in ACTIVE mode. In ACTIVE mode the client has to tell the server the hostname and port number to connect back to. If you have configured passive mode ftp, then do not use this.

user : Specifies the username and password joined with a colon.

The last thing is the ftp url.

Wenn Sie den FTP-Port bei FTP-Verbindungen im ACTIVE-Modus nicht angeben, erhalten Sie den Fehler "No route to host
".

Wenn Sie "bind() failed, we ran out of ports!" erhalten. Fehler dann einfach die Portnummer ändern.

Sie können auch eine URL wie diese verwenden

$ curl ftps://192.168.1.5 ...

Aber dann würde curl versuchen, sich mit Port 990 zu verbinden, und wenn Sie vsftpd nicht so konfiguriert haben, dass es auf diesem Port dient, funktioniert es nicht.

Wenn curl keine Verbindung zu vsftpd herstellen oder die Dateien nicht richtig auflisten kann, verwenden Sie die Option verbose (-v) und sehen Sie sich weitere Details zum Fehler an und beheben Sie ihn dann.

Zusätzliche Hinweise

FTPS sichert FTP durch Hinzufügen von SSL-Verschlüsselung zum Kommunikationskanal. Eine weitere empfohlene Methode zum Herstellen sicherer Verbindungen ist die Verwendung von SFTP (SSH File Transfer Protocol). Das beliebte OpenSSH-Paket, das den ssh-Dienst bereitstellt, bietet nebenbei auch SFTP, ohne dass eine zusätzliche Einrichtung oder Konfiguration erforderlich ist. Allerdings unterstützen nicht alle FTP-Clients und Webentwicklungstools SFTP.


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

  2. So konfigurieren Sie PureFTPd zum Akzeptieren von TLS-Sitzungen unter CentOS 6.2

  3. So konfigurieren Sie den DHCP-Server unter CentOS 7 / Ubuntu 18.04 / 16.04 / Debian 9

  4. So verwenden Sie Salt auf Centos 8

  5. So sichern Sie vsFTPd mit SSL/TLS

Installieren Sie Vsftpd mit SSL/TLS auf Ubuntu 20.04

So richten Sie einen FTP-Server unter CentOS ein und konfigurieren ihn

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

So installieren und konfigurieren Sie VSFTPD unter Ubuntu 14.04

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

So konfigurieren Sie VSFTPD für die Verwendung von SSL/TLS auf einem CentOS-VPS