Website-Suche

So sichern Sie einen FTP-Server mit SSL/TLS für die sichere Dateiübertragung in CentOS 7


Aufgrund seines ursprünglichen Designs ist FTP (File Transfer Protocol) nicht sicher, was bedeutet, dass es weder die zwischen zwei Computern übertragenen Daten noch die Anmeldeinformationen des Benutzers verschlüsselt. Dies stellt eine massive Bedrohung für die Daten- und Serversicherheit dar.

In diesem Tutorial erklären wir, wie man Datenverschlüsselungsdienste auf einem FTP-Server in CentOS/RHEL 7 und Fedora manuell aktiviert; Wir werden verschiedene Schritte zur Sicherung von VSFTPD-Diensten (Very Secure FTP Daemon) mithilfe von SSL/TLS-Zertifikaten durchführen.

Voraussetzungen:

  1. Sie müssen einen FTP-Server in CentOS 7 installiert und konfiguriert haben

Bevor wir beginnen, beachten Sie, dass alle Befehle in diesem Tutorial als root ausgeführt werden. Andernfalls verwenden Sie den Befehl sudo, um Root-Berechtigungen zu erhalten, wenn Sie den Server nicht mit dem Root-Konto steuern.

Schritt 1. SSL/TLS-Zertifikat und privaten Schlüssel generieren

1. Wir müssen mit der Erstellung eines Unterverzeichnisses beginnen unter: /etc/ssl/, in dem wir das SSL/TLS-Zertifikat und die Schlüsseldateien speichern :

mkdir /etc/ssl/private

2. Führen Sie dann den folgenden Befehl aus, um das Zertifikat und den Schlüssel für vsftpd in einer einzigen Datei zu erstellen. Hier finden Sie die Erklärung jedes verwendeten Flags.

  1. req – ist ein Befehl für die Verwaltung von X.509 Certificate Signing Requests (CSR).
  2. x509 – bedeutet X.509-Zertifikatsdatenverwaltung.
  3. Tage – definiert die Anzahl der Tage, für die das Zertifikat gültig ist.
  4. newkey – gibt den Zertifikatschlüsselprozessor an.
  5. rsa:2048 – RSA-Schlüsselprozessor, generiert einen privaten 2048-Bit-Schlüssel.
  6. keyout – legt die Schlüsselspeicherdatei fest.
  7. out – legt die Zertifikatspeicherdatei fest. Beachten Sie, dass sowohl Zertifikat als auch Schlüssel in derselben Datei gespeichert sind: /etc/ssl/private/vsftpd.pem.
openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

Mit dem obigen Befehl werden Sie aufgefordert, die folgenden Fragen zu beantworten. Denken Sie daran, Werte zu verwenden, die für Ihr Szenario gelten.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email 

Schritt 2. VSFTPD für die Verwendung von SSL/TLS konfigurieren

3. Bevor wir VSFTPD-Konfigurationen durchführen, öffnen wir die Ports 990 und 40000-50000, um TLS-Verbindungen und den Portbereich passiver Ports zu ermöglichen in der VSFTPD-Konfigurationsdatei jeweils zu definieren:

firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

4. Öffnen Sie nun die VSFTPD-Konfigurationsdatei und geben Sie darin die SSL-Details an:

vi /etc/vsftpd/vsftpd.conf

Suchen Sie nach der Option ssl_enable und setzen Sie ihren Wert auf YES, um die Verwendung von SSL zu aktivieren. Da TSL außerdem sicherer als SSL ist, beschränken wir VSFTPD auf die Verwendung von TLS Verwenden Sie stattdessen die Option ssl_tlsv1_2:

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. Fügen Sie dann die folgenden Zeilen hinzu, um den Speicherort des SSL-Zertifikats und der Schlüsseldatei zu definieren:

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

6. Als nächstes müssen wir anonyme Benutzer daran hindern, SSL zu verwenden, und dann alle nicht anonymen Anmeldungen dazu zwingen, eine sichere SSL-Verbindung für die Datenübertragung zu verwenden und das Passwort während der Anmeldung zu senden:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. Darüber hinaus können wir die folgenden Optionen hinzufügen, um die Sicherheit des FTP-Servers zu erhöhen. Wenn die Option require_ssl_reuse auf YES gesetzt ist, müssen alle SSL-Datenverbindungen die Wiederverwendung von SSL-Sitzungen aufweisen; beweisen, dass sie dasselbe Hauptgeheimnis kennen wie der Kontrollkanal.

Deshalb müssen wir es ausschalten.

require_ssl_reuse=NO

Auch hier müssen wir mit der Option ssl_ciphers auswählen, welche SSL-Verschlüsselungen VSFTPD für verschlüsselte SSL-Verbindungen zulässt. Dies kann die Bemühungen von Angreifern erheblich einschränken, die versuchen, eine bestimmte Verschlüsselung zu erzwingen, bei der sie wahrscheinlich Schwachstellen entdeckt haben:

ssl_ciphers=HIGH

8. Legen Sie nun den Portbereich (minimaler und maximaler Port) der passiven Ports fest.

pasv_min_port=40000
pasv_max_port=50000

9. Erlauben Sie optional das SSL-Debugging, was bedeutet, dass OpenSSL-Verbindungsdiagnosen mit der Option debug_ssl in der VSFTPD-Protokolldatei aufgezeichnet werden:

debug_ssl=YES

Speichern Sie alle Änderungen und schließen Sie die Datei. Dann starten wir den VSFTPD-Dienst neu:

systemctl restart vsftpd

Schritt 3: Testen des FTP-Servers mit SSL/TLS-Verbindungen

10. Nachdem Sie alle oben genannten Konfigurationen vorgenommen haben, testen Sie, ob VSFTPD SSL/TLS-Verbindungen verwendet, indem Sie wie folgt versuchen, FTP über die Befehlszeile zu verwenden:

ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

Aus dem Screenshot oben können wir erkennen, dass ein Fehler vorliegt, der uns darüber informiert, dass VSFTPD Benutzern nur die Anmeldung von Clients erlauben kann, die Verschlüsselungsdienste unterstützen.

Die Befehlszeile bietet keine Verschlüsselungsdienste an, wodurch der Fehler auftritt. Um eine sichere Verbindung zum Server herzustellen, benötigen wir also einen FTP-Client, der SSL/TLS-Verbindungen unterstützt, wie z. B. FileZilla.

Schritt 4: Installieren Sie FileZilla, um eine sichere Verbindung zu einem FTP-Server herzustellen

11. FileZilla ist ein moderner, beliebter und vor allem plattformübergreifender FTP-Client, der standardmäßig SSL/TLS-Verbindungen unterstützt.

Um FileZilla unter Linux zu installieren, führen Sie den folgenden Befehl aus:

--------- On CentOS/RHEL/Fedora --------- 
yum install epel-release filezilla

--------- On Debian/Ubuntu ---------
sudo apt-get install  filezilla   

12. Wenn die Installation abgeschlossen ist (oder wenn Sie sie bereits installiert haben), öffnen Sie sie und gehen Sie zu Datei=>Sites-Manager oder drücken Sie Strg+S ), um die Site Manager-Oberfläche unten zu erhalten.

Klicken Sie auf die Schaltfläche Neue Site, um neue Site-/Host-Verbindungsdetails hinzuzufügen.

13. Als nächstes legen Sie den Host-/Site-Namen fest, fügen die IP-Adresse hinzu, definieren das zu verwendende Protokoll, die Verschlüsselung und den Anmeldetyp wie im Screenshot unten (verwenden Sie Werte, die für Ihr Szenario gelten):

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. Klicken Sie dann auf Verbinden, um das Passwort erneut einzugeben. Überprüfen Sie anschließend das für die SSL/TLS-Verbindung verwendete Zertifikat und klicken Sie einmal auf OK mehr, um eine Verbindung zum FTP-Server herzustellen:

Zu diesem Zeitpunkt sollten wir uns über eine TLS-Verbindung erfolgreich beim FTP-Server angemeldet haben. Überprüfen Sie den Abschnitt „Verbindungsstatus“ auf weitere Informationen über die Schnittstelle unten.

15. Versuchen Sie zu guter Letzt, Dateien vom lokalen Computer auf den FTP-Server im Dateiordner zu übertragen. Werfen Sie einen Blick auf das untere Ende der FileZilla-Benutzeroberfläche Berichte zu Dateiübertragungen.

Das ist alles! Denken Sie immer daran, dass FTP standardmäßig nicht sicher ist, es sei denn, wir konfigurieren es für die Verwendung von SSL/TLS-Verbindungen, wie wir Ihnen in diesem Tutorial gezeigt haben. Teilen Sie uns Ihre Gedanken zu diesem Tutorial/Thema über das unten stehende Feedback-Formular mit.