FTP

So konfigurieren Sie FTP mit TLS in Ubuntu

So konfigurieren Sie FTP mit TLS in Ubuntu
FTP (File Transfer Protocol) wird hauptsächlich verwendet, um Dateien zwischen Computern zu übertragen. FTP arbeitet in einer Client-Server-Architektur, bei der der Client eine Datei vom Server anfordert und der Server die erforderliche Datei an den Client zurückgibt. Auf dem Client-Rechner wird die FTP-Client-Anwendung verwendet, um mit dem Server zu kommunizieren. Es ist auch möglich, über den Browser auf den FTP-Server zuzugreifen. FTP kommuniziert standardmäßig über einen unsicheren Kanal, aber es ist möglich, FTP so zu konfigurieren, dass Daten über einen sicheren Kanal übertragen werden. In diesem Tutorial erfahren Sie, wie Sie einen FTP-Server mit TLS konfigurieren und dann FileZilla als Client-Anwendung verwenden, um sich mit dem FTP-Server zu verbinden.

VSFTPD installieren

VSFTPD (Very Secure FTP Daemon) ist ein Softwareprogramm zum Konfigurieren von FTP auf einem Server. In diesem Tutorial wird VSFTPD verwendet, um den FTP-Server auf dem Computer zu konfigurieren. Aktualisieren Sie vor der Installation von VSFTPD die Repositorys auf Ihrem Server, indem Sie den folgenden Befehl ausführen.

[email protected]:~$ sudo apt-get update -y

Als nächstes installieren Sie VSFTPD mit dem folgenden Befehl.

[email protected]:~$ sudo apt-get install vsftpd -y

Überprüfen Sie abschließend die Installation, indem Sie die Version von vsftpd mit dem folgenden Befehl überprüfen.

[email protected]:~$ vsftpd -v

Der obige Befehl gibt die Version von vsftpd aus, wenn die Installation erfolgreich war.

FTP im aktiven Modus

Im aktiven Modus startet der FTP-Client die Sitzung, indem er die TCP-Steuerungsverbindung von einem beliebigen Port auf dem Client-Rechner zu Port 21 des Servers herstellt. Dann lauscht der Client auf einem zufälligen Port X auf eine Datenverbindung und informiert den Server über die TCP-Steuerungsverbindung, dass der Client auf die Datenverbindung auf Port X wartet. Danach baut der Server eine Datenverbindung von seinem Port 20 zum Port X auf dem Client-Rechner auf.

Ein Problem kann auftreten, wenn sich der Client hinter einer Firewall befindet und Port X blockiert ist. In diesem Fall kann der Server keine Datenverbindung zum Client aufbauen. Um dieses Problem zu vermeiden, wird der FTP-Server meistens im passiven Modus verwendet, auf den wir später in diesem Artikel eingehen werden. Standardmäßig verwendet VSFTPD den passiven Modus, daher müssen wir ihn in den aktiven Modus ändern.

Öffnen Sie zuerst die VSFTPD-Konfigurationsdatei.

[email protected]:~$ sudo nano /etc/vsftpd.conf

Fügen Sie am Ende der Datei die folgende Zeile hinzu.

pasv_enable=NEIN

Stellen Sie außerdem sicher, dass die Option 'connect_from_port_20' auf 'YES' gesetzt ist.' Diese Option stellt sicher, dass die Datenverbindung auf Port 20 des Servers aufgebaut wird.

Als nächstes erstellen Sie ein Verzeichnis, das der FTP-Server zum Speichern von Dateien verwendet. Für dieses Tutorial konfigurieren wir '/home/ubuntu/ftp/' als Root-Pfad für den FTP-Server configure.

[email protected]:~$ sudo mkdir /home/ubuntu/ftp

Geben Sie nun dieses Verzeichnis in der Konfigurationsdatei an, indem Sie die Option 'local_root' ändern. Der folgende Parameter konfiguriert den Root-Pfad des Servers.

local_root=/home/ubuntu/ftp

Die Option 'write_enable' muss aktiviert sein, damit Benutzer auf den FTP-Server schreiben können.

Jedes Mal, wenn Sie die Konfigurationsdatei ändern, starten Sie den Server immer neu.

[email protected]:~$ sudo systemctl restart vsftpd

Festlegen eines Passworts für einen Benutzer

Der FTP-Client verbindet sich mit einem Benutzernamen und einem Passwort mit dem Server. Legen Sie das Passwort für Ihren Benutzer auf dem Gerät mit dem folgenden Befehl fest.

[email protected]:~$ sudo passwd ubuntu

Der obige Befehl fragt nach dem Passwort für den 'ubuntu'-Benutzer.

Konfigurieren der Firewall für den aktiven Modus

Wenn FTP im aktiven Modus verwendet wird, verwendet der FTP-Server zwei Ports, um mit dem Client zu kommunizieren, Ports 21 und 22. Port 21 wird verwendet, um Befehle an den Client zu übergeben, und Port 20 wird verwendet, um Daten an einen beliebigen Port des Clients zu übertragen. Wir werden ufw verwenden, um die Firewall auf dem Server zu konfigurieren. Installieren Sie ufw mit dem folgenden Befehl.

[email protected]:~$ sudo apt-get install ufw

Nun öffnen wir serverseitig die Ports 20, 21 und 22 (für die SSH-Verbindung).

[email protected]:~$ sudo ufw erlauben von jedem zu jedem Port proto tcp

Aktivieren und überprüfen Sie den Status von ufw mit den folgenden Befehlen.

[email protected]:~$ sudo ufw enable
[email protected]:~$ sudo ufw status

HINWEIS: Wenn Sie Ihren FTP-Server in der Cloud konfigurieren, müssen Sie auch die Ports 20, 21 und 22 in der Sicherheitsgruppe zulassen.

WARNUNG: Aktivieren Sie immer Port 22 zusammen mit den erforderlichen Ports, bevor Sie ufw auf dem Remote-System aktivieren. Standardmäßig blockiert UFW den Datenverkehr von Port 22, sodass Sie nicht über SSH auf Ihren Remote-Server zugreifen können, wenn Sie ufw aktivieren, ohne Datenverkehr von Port 22 zuzulassen.

FTP-Client installieren

Jetzt ist unser Server im aktiven Modus konfiguriert und wir können von der Clientseite darauf zugreifen. Für die Client-Anwendung verwenden wir FileZilla, eine FTP-Client-Anwendung. Installieren Sie FileZilla mit dem folgenden Befehl.

[email protected]:~$ sudo apt-get install filezilla -y

Öffnen Sie die FTP-Client-Anwendung und geben Sie die öffentliche IP-Adresse und andere Zugangsdaten des FTP-Servers ein.

Wenn Sie auf „Quickconnect“ klicken, verbinden Sie sich mit dem FTP-Server und werden automatisch in das Verzeichnis geleitet, das in der Option „local_root“ in der Konfigurationsdatei „/home/ubuntu/ftp“ angegeben ist.

Probleme im aktiven Modus

Die Verwendung von FTP im aktiven Modus führt zu Problemen, wenn sich der Client hinter der Firewall befindet. Wenn der Server nach der Eingabe der ersten Steuerbefehle eine Datenverbindung mit dem Client auf einem zufälligen Port herstellt, kann der Port von der Firewall des Clients blockiert werden, wodurch die Datenübertragung fehlschlägt. FTP kann im Passivmodus verwendet werden, um diese Firewall-Probleme zu beheben.

FTP im Passivmodus

Im Passiv-Modus baut der Client eine Kontrollverbindung mit dem Server auf Port 21 des Servers auf. Der Client sendet dann den speziellen 'PASV'-Befehl, um den Server darüber zu informieren, dass die Datenverbindung vom Client statt vom Server hergestellt wird. Als Antwort erhält der Client die Server-IP und eine zufällige Portnummer (diese Portnummer wird auf dem Server konfiguriert). Der Client verwendet diese IP- und Portnummer, um eine Datenverbindung mit dem Server herzustellen. Im Passiv-Modus werden sowohl die Daten- als auch die Kontrollverbindungen vom Client aufgebaut, damit die Firewall die Kommunikation zwischen Client und Server nicht stört.

Öffnen Sie die FTP-Konfigurationsdatei in Ihrem bevorzugten Editor.

[email protected]:~$ sudo nano /etc/vsftpd.conf

Setzen Sie die Option 'pasv_enable' in der Datei auf 'YES', damit der Server mit dem Client im Passiv-Modus kommunizieren kann. Legen Sie außerdem die Option 'local_root' fest, um das Stammverzeichnis des Servers anzugeben, und setzen Sie die Option 'write_enable' auf 'YES', damit Benutzer Dateien auf den Server hochladen können.

Wie bereits erwähnt, wird die Datenverbindung vom Client hergestellt und der Server sendet seine öffentliche IP und einen zufälligen Port an den Client, um eine Datenverbindung herzustellen. Dieser zufällige Port auf dem Server kann aus einer Reihe von Ports in der Konfigurationsdatei angegeben werden.

Die Datenverbindung zwischen Server und Client wird auf einem Port zwischen 1024 und 1048 . aufgebaut. Starten Sie den FTP-Server neu, nachdem Sie die Konfigurationsdatei geändert haben.

[email protected]:~$ sudo systemctl restart vsftpd

Konfigurieren der Firewall im Passivmodus

Wenn wir FTP im passiven Modus verwenden, wird die Datenverbindung über einen beliebigen Port von 1024 bis 1048 hergestellt, daher müssen alle diese Ports auf dem FTP-Server zugelassen werden.

[email protected]:~$ sudo ufw erlauben von jedem zu jedem Port proto tcp

Nachdem Sie alle Ports auf der Firewall zugelassen haben, aktivieren Sie die ufw, indem Sie den folgenden Befehl ausführen.

[email protected]:~$ sudo ufw enable

Lassen Sie immer Ports auf dem Server zu, bevor Sie die Firewall aktivieren; Andernfalls können Sie nicht über SSH als ufw auf Ihren Server zugreifen, der standardmäßig Port 22 blockiert.

Testen der Verbindung

Jetzt haben wir den FTP-Server im Passiv-Modus eingerichtet und können die FTP-Verbindung mit der Client-Anwendung überprüfen. Öffnen Sie dazu FileZilla in Ihrem System.

Nachdem Sie Host, Benutzername, Passwort und Port eingegeben haben, können Sie sich jetzt mit Ihrem Server verbinden. Nachdem Sie nun mit dem im Passivmodus ausgeführten FTP-Server verbunden sind, können Sie Dateien auf den Server hochladen.

SSL-Zertifikate mit dem FTP-Server konfigurieren

Standardmäßig stellt der FTP-Server die Verbindung zwischen Client und Server über einen ungesicherten Kanal her. Diese Art der Kommunikation sollte nicht verwendet werden, wenn Sie sensible Daten zwischen Client und Server austauschen möchten. Um über einen sicheren Kanal zu kommunizieren, müssen SSL-Zertifikate verwendet werden.

Generieren von SSL-Zertifikaten

Wir verwenden SSL-Zertifikate, um eine sichere Kommunikation zwischen dem Client und dem Server einzurichten. Wir generieren diese Zertifikate mit openssl. Der folgende Befehl generiert SSL-Zertifikate für Ihren Server.

[email protected]:~$ sudo openssl req -x509 -nodes -day 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Wenn Sie den obigen Befehl ausführen, werden Ihnen einige Fragen gestellt. Nachdem Sie diese Fragen beantwortet haben, werden die Zertifikate generiert. Sie können die Zertifikate im Terminal überprüfen.

[email protected]:~$ sudo ls /etc/ssl/private/

Verwenden von Zertifikaten in der Konfigurationsdatei

Jetzt sind unsere Zertifikate einsatzbereit. Wir werden den 'vsftpd' konfigurieren.conf'-Datei, um die SSL-Zertifikate für die Kommunikation zu verwenden. Öffnen Sie die Konfigurationsdatei mit dem folgenden Befehl.

[email protected]:~$ sudo nano /etc/vsftpd.conf

Fügen Sie am Ende der Dateien die folgenden Zeilen hinzu. Diese Änderungen stellen sicher, dass der FTP-Server die neu generierten SSL-Zertifikate verwendet, um sicher mit dem Client zu kommunizieren.

ssl_enable=JA
force_local_data_ssl=NEIN
force_local_logins_ssl=NEIN
ssl_tlsv1=JA
ssl_sslv2=NEIN
ssl_sslv3=NEIN
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Starten Sie den FTP-Server neu, um diese Änderungen zu übernehmen.

[email protected]:~$ sudo systemctl restart vsftpd

Versuchen Sie nach dem Neustart des Servers, über die FileZilla-Clientanwendung eine Verbindung zu Ihrem Server herzustellen. Diesmal werden Sie von der Client-Anwendung gefragt, ob Sie diesen Zertifikaten vertrauen sollen.

Wenn Sie Zertifikate von einer vertrauenswürdigen Zertifizierungsstelle haben, sollte diese Warnung nicht erscheinen. Wir haben unsere Zertifikate mit openssl generiert, das keine vertrauenswürdige Zertifizierungsstelle ist, weshalb es in unserem Fall nach einer Zertifikatsauthentifizierung gefragt hat. Jetzt können wir zwischen dem Client und dem Server über einen sicheren Kanal kommunizieren.

Anonyme Konfiguration

Sie können auch die anonyme Anmeldung auf Ihrem FTP-Server aktivieren. Wenn diese Konfiguration aktiviert ist, kann sich jeder Benutzer mit jedem Benutzernamen und Passwort beim FTP-Server anmelden. Die folgenden Parameter in der Konfigurationsdatei machen den FTP-Server anonym zugänglich.

Die obige Konfiguration setzt den Root-Pfad für anonyme Benutzer auf '/home/ubuntu/ftp/anon' und es wird nicht nach dem Passwort gefragt, wenn sich ein anonymer Benutzer anmeldet.

HINWEIS: Stellen Sie sicher, dass der Pfad '/home/ubuntu/ftp/anon' auf dem FTP-Server vorhanden ist.

Starten Sie nun den FTP-Server neu.

[email protected]:~$ sudo systemctl restart vsftpd

Nach dem Neustart des Servers versuchen wir, über den Google Chrome-Browser eine Verbindung zum Server herzustellen. Gehen Sie zu der folgenden URL.

ftp://3.8.12.52

Die obige URL führt Sie zum Stammverzeichnis des FTP-Servers, wie in der Konfigurationsdatei angegeben. Wenn die anonyme Anmeldung deaktiviert ist, werden Sie beim Versuch, über einen Browser eine Verbindung zum FTP-Server herzustellen, zuerst zur Authentifizierung aufgefordert und dann zum Stammverzeichnis des Servers weitergeleitet.

Lokalen Zugriff konfigurieren

Wir können auch den lokalen Zugriff auf den FTP-Server zulassen oder blockieren, indem wir die Konfigurationsdatei ändern. Derzeit können wir lokal auf unseren FTP-Server zugreifen, ohne die FTP-Client-Anwendung zu verwenden, aber wir können diesen Zugriff blockieren. Dazu müssen wir den Parameter 'local_enable' ändern.

Starten Sie zuerst den FTP-Server neu.

[email protected]:~$ sudo systemctl restart vsftpd

Versuchen Sie nach dem Neustart des Servers, lokal über die Befehlszeilenschnittstelle auf den FTP-Server zuzugreifen. Melden Sie sich mit SSH bei Ihrem Remote-Server an.

[email protected]:~$ ssh [email protected] -i

Geben Sie nun den folgenden Befehl ein, um sich lokal über die Befehlszeilenschnittstelle beim FTP-Server anzumelden.

[email protected]:~$ ftp localhost

Wenn Sie den obigen Befehl ausführen, wird ein 500-Fehler ausgegeben.

Fazit

File Transfer Protocol wird seit vielen Jahren verwendet, um Dateien und Dokumente über das Internet zu übertragen. VSFTPD ist eines der Pakete, die als FTP-Server auf Ihrem Computer verwendet werden. VSFTPD enthält verschiedene Konfigurationen, mit denen Sie Ihren FTP-Server anpassen können. In diesem Tutorial wurde gezeigt, wie Sie einen FTP-Server mit TLS für erhöhte Sicherheit konfigurieren. Um mehr über FTP-Konfigurationen zu erfahren, besuchen Sie den folgenden Link.

http://vsftpd.Biester.org/vsftpd_conf.html

OpenTTD-Tutorial
OpenTTD ist eines der beliebtesten Wirtschaftssimulationsspiele auf dem Markt. In diesem Spiel musst du ein wunderbares Transportunternehmen aufbauen....
SuperTuxKart für Linux
SuperTuxKart ist ein großartiger Titel, der entwickelt wurde, um Ihnen das Mario Kart-Erlebnis kostenlos auf Ihrem Linux-System zu bieten. Es ist ziem...
Battle for Wesnoth-Tutorial
The Battle for Wesnoth ist eines der beliebtesten Open-Source-Strategiespiele, die Sie derzeit spielen können. Dieses Spiel befindet sich nicht nur se...