FTP oder File Transfer Protocol ist eine der beliebtesten Methoden zur Datenübertragung für verschiedene Anwendungsfälle.

Für FTP gibt es verschiedene sichere Varianten, die als FTPS und SFTP bekannt sind und einige subtile und weniger subtile Unterschiede in ihrer Funktionsweise aufweisen. Diese Unterschiede beziehen sich auf die Art und Weise des Datenaustauschs, den Grad und die Art der Sicherheit der Kommunikation sowie auf Firewall-Überlegungen.

Wenn Sie wissen, wie diese Protokolle funktionieren und welche Unterschiede es zwischen diesen beliebten Übertragungsmechanismen gibt, können Sie das für Ihre Bedürfnisse am besten geeignete auswählen.

FTP

FTP ist das jahrzehntealte File Transfer Protocol, das ursprünglich unter RFC 114 vorgeschlagen wurde. Dieses wurde später zu RFC 959 weiterentwickelt , dem heute verwendeten Standard.

FTP arbeitet auf zwei Kanälen, um Informationen auszutauschen: einer für Befehle und der andere für Daten. Damit FTP funktioniert, sind zwei Ports erforderlich – der Befehlskanal und der Datenkanal.

Der Befehlskanal funktioniert über Port 21, der Verbindungen von Clients annimmt und die Übermittlung von Befehlen abwickelt. Der Befehlskanal bleibt für die gesamte Dauer der FTP-Sitzung geöffnet, bis der Client den Befehl QUIT sendet oder der Server die Verbindung aufgrund von Inaktivität oder aus einem anderen möglichen Grund zwangsweise trennt.

Der Datenkanal verwendet einen temporären Port, der bei Bedarf auf dem Server (passiver Modus) oder dem Client (aktiver Modus) abgehört wird. Dieser Kanal ist für den Austausch tatsächlicher Daten zwischen Server und Client in Form von Verzeichnislisten und Dateiübertragungen zuständig.

Im Gegensatz zum Befehlskanal bleibt der Datenkanal nur für die Dauer der Dateiübertragung geöffnet. Sobald diese beendet ist, wird der Datenkanal geschlossen. Für die gleichzeitige Übertragung von mehreren Dateien oder Verzeichnislisten sind mehrere Datenkanal-Ports erforderlich.

FTP ist ein von Natur aus unsicheres Protokoll, da sowohl der Befehls- als auch der Datenkanal Informationen in unverschlüsselter Form übertragen, die durch Man-in-the-Middle-Angriffe leicht abgefangen werden können.

Wie bereits erwähnt, erfordert FTP eine eingehende Verbindung auf Port 21/tcp auf der Serverseite für den Befehlskanal. Für Dateiübertragungen und Verzeichniseinträge wird ein passiver Portbereich definiert, der eingehende Verbindungen zulässt. Dieser Definitionsprozess kann je nach verwendetem FTP-Server variieren. Weitere Einzelheiten finden Sie in der Dokumentation des Servers. Auf der Client-Seite sollten ausgehende Verbindungen auf Port 21/tcp zusammen mit dem auf dem Server definierten passiven Portbereich erlaubt sein.

Authentifizierung bei FTP

FTP-Authentifizierungsinformationen werden während des ersten Verbindungsaufbaus über den Befehlskanal übermittelt. FTP kann einen Benutzernamen und ein Passwort für die Authentifizierung verwenden oder anonym sein, so dass sich jeder anmelden und auf den Server zugreifen kann.

Aktiver und passiver FTP-Modus

FTP verwendet entweder den aktiven oder den passiven Modus für den Aufbau von Verbindungen.

Im aktiven Modus verbindet sich ein Benutzer von einem beliebigen Port des FTP-Clients mit dem FTP-Port 21/tcp des Servers und sendet den Befehl PORT, der den Client-Port angibt, mit dem sich der Server verbinden soll. Dieser Port wird für den Datenkanal verwendet.

Der Server verbindet sich dann von Port 20/tcp mit dem Client-Port, den der Client zuvor mit dem Befehl PORT angegeben hat. Dieser Datenkanal wird dann für Dateiübertragungen zwischen Server und Client verwendet.

Im passiven Modus stellt der Client eine Verbindung von einem zufälligen Port des FTP-Clients zu Port 21/tcp auf dem Server her und sendet den Befehl PASV. Der Server antwortet daraufhin mit einem zufälligen Port, der für den Datenkanal verwendet werden soll. Der Client verwendet dann einen anderen zufälligen Port, um sich mit dem Port zu verbinden, den der Server im vorherigen Schritt beantwortet hat. Diese Datenkanalverbindung wird dann für die Dateiübertragung zwischen Server und Client verwendet.

Im aktiven Modus wird also die erste Verbindungsanfrage vom Client initiiert, während die Anfrage für die Datenkanalverbindung vom Server initiiert wird.

Im passiven Modus hingegen werden sowohl die anfänglichen Verbindungsanfragen als auch die nachfolgenden Datenkanalanfragen vom Client an den Server initiiert. Dieser feine Unterschied wirkt sich manchmal darauf aus, wie eine Firewall herkömmliche FTP-Anfragen aufgrund der Richtung der eingehenden/ausgehenden Verbindungsart zulässt oder blockiert.

FTPS

Selbst wenn Sie bereit sind, die mit FTP verbundenen Risiken der unverschlüsselten Datenübertragung und der Main-in-the-Middle-Angriffe in Kauf zu nehmen, zwingen Sie die Anforderungen der Branche dazu, eine sicherere Alternative wie FTPS und SFTP zu verwenden, die vergleichsweise viel sicherer sind.

Im Jahr 1990, als sich die Sicherheitslandschaft veränderte, entwickelte Netscape das SSL- oder Secure Sockets Layer (SSL, jetzt TLS) Protokoll, um die Kommunikation über ein Netzwerk zu schützen. SSL wurde auf FTP angewandt, das zu FTPS oder File Transfer Protocol Secure wurde. FTPS oder FTP/S wird normalerweise auf Port 990/tcp ausgeführt, kann aber auch auf Port 21/tcp gesehen werden. Ähnlich verhält es sich beim Datenkanal: Port 989/tcp ist der übliche Port für FTPS. Wenn der Befehls-Port 21/tcp ist, wird erwartet, dass der Daten-Port 20/tcp ist.

Wie FTP verwendet auch FTPS zwei Kanäle für die Kommunikation: den Befehls- und den Datenkanal. Bei FTPS kann entweder der Datenkanal verschlüsselt werden, oder sowohl der Befehls- als auch der Datenkanal können für mehr Sicherheit verschlüsselt werden.

Wie FTP verwendet auch FTPS mehrere Ports für Befehls- und Datenkanäle. So wird Port 21/tcp für die erste Verbindung und die Übertragung der Authentifizierungsinformationen verwendet. Später werden verschiedene Ports benötigt, um Datenkanäle für jede Dateiübertragung oder Verzeichnisauflistungsanforderung vom Client einzurichten. Daher muss wie bei FTP eine Reihe von Ports in Ihrer Firewall zugelassen werden.

Authentifizierung bei FTPS

Die Authentifizierung bei FTPS erfolgt über einen Benutzernamen und ein Kennwort zusammen mit einem Serverzertifikat für die Verschlüsselung. Wenn sich der FTPS-Client mit einem Server verbindet, prüft er, ob das Zertifikat des Servers vertrauenswürdig ist, um die Verbindung fortzusetzen. Dieses Zertifikat kann sowohl vom Client als auch vom Server angefordert werden.

SFTP

Im Gegensatz zu FTP und FTPS ist SFTP(SSH File Transfer Protocol) ein völlig anderes Protokoll, das auf SSH (oder Secure Shell) aufbaut. SFTP arbeitet standardmäßig mit Port 22/tcp, demselben wie SSH, kann aber so konfiguriert werden, dass es einen benutzerdefinierten freien Port auf dem Server verwendet.

SFTP ist ein sicheres FTP-Protokoll, das zum Senden und Empfangen von Dateien SSH verwendet. Da SSH vollständig verschlüsselt ist, ist SFTP eine robuste und sichere Methode zur Übertragung von Dateien über ein Netzwerk.

Im Gegensatz zu FTP und FTPS verwendet SFTP einen einzigen Kommunikationskanal für die Übertragung von Befehlen und Daten, die alle in verschlüsselter Form zusammen mit der anfänglichen Authentifizierung übermittelt werden.

Authentifizierung bei SFTP

Die Authentifizierung bei SFTP kann über einen einfachen Benutzernamen und ein Kennwort erfolgen, aber im Gegensatz zu FTP werden alle Informationen, einschließlich der Authentifizierungsdaten, verschlüsselt über das Netzwerk übertragen.

SFTP unterstützt auch die Authentifizierung mit einem SSH-Schlüsselpaar, einer Kombination aus privatem und öffentlichem Schlüssel, wobei der Client den privaten Schlüssel für den angegebenen Benutzer bereitstellt und der Server über den entsprechenden öffentlichen Schlüssel verfügen muss, damit die Authentifizierung erfolgreich ist. Dies ist sicherer als eine Kombination aus Benutzername und Kennwort. Es ist möglich, denselben Benutzer mit Passwort und SSH-Schlüssel zu authentifizieren, wenn beide Methoden auf dem SFTP-Server konfiguriert sind.

Zusammenfassung

Dieser Artikel fasst die grundlegenden Funktionen verschiedener gängiger Dateiübertragungsprotokolle zusammen, nämlich FTP, FTPS und SFTP, und zeigt die feinen und großen Unterschiede zwischen diesen Protokollen auf. Er behandelt die Ports, die man in einer Firewall zulassen muss, um einen funktionierenden FTP/FTPS/SFTP-Server einzurichten, und weist auf die Notwendigkeit hin, zu sichereren Protokollen wie FTPS und SFTP zu wechseln.

Wenn ich hier von FTP spreche, beziehe ich mich auf alle in diesem Artikel besprochenen Protokolle. Der Grund dafür ist, dass FTP schon Jahrzehnte alt ist und selbst neuere sichere Versionen im täglichen Gebrauch manchmal als FTP bezeichnet werden, anstatt ihren eigentlichen Namen zu verwenden.

Vielleicht interessieren Sie sich auch für die beste FTP-Server-Software und FTP/SFTP-Clients.