File Transfer Protokolle

FTP

Das file transfer protocol (FTP) wird zum Dateitransfer zwischen verschiedenen Systemen und der einfachen Dateihandhabung benutzt. FTP basiert auf dem Transportprotokoll TCP und kennt sowohl die Übertragung zeichencodierter Information als auch von Binärdaten. Die Dateiübertragung wird vom lokalen System aus gesteuert, die Zugangsberechtigung für das Zielsystem wird für den Verbindungsaufbau mittels User-Identifikation und Passwort überprüft.

FTP over SSH

Bei FTP over SSH werden Daten über TCP Verbindungen, die teilweise über Secure Shell (SSH) getunnelt werden, übertragen. Die Authentifizierung des Clients an einem FTP-Server, der Wechsel und die Auflistung von Verzeichnissen erfolgt bei FTP über den „Kontrollkanal“ auf Port 21. Bei FTP over SSH wird diese Verbindung über SSH getunnelt und ist daher verschlüsselt. Der eigentliche Datentransfer erfolgt bei FTP über einen anderen, zufälligen Port, welcher nicht per SSH getunnelt wird, und daher unverschlüsselt abläuft.

Wenn der Client zur Benutzung des Passiv-Mode und zur Benutzung eines SOCKS Proxys, den viele SSH Clients bereitstellen, konfiguriert ist, können alle FTP Kanäle über die SSH-Verbindung geleitet werden. FTP over SSH ist nicht zu verwechseln mit dem SFTP-Protokoll, welches ein von Grund auf neu entwickeltes Dateiübertragungsprotokoll basierend auf SCP ist.

FTP over SSH Graphic

Activ Mode und Passiv Mode

Active Mode

Beim Active Mode baut der Server von seinem Port 20, dem Data Port, eine Datenverbindung zu einem vom Client gewählten Endpunkt auf. Dieser Endpunkt ist typischerweise ein Port des Clients, der jenseits 1023 liegt, kann aber auch ein anderer Server sein, der seinerseits in den Passive Mode geschaltet wurde, also auf eine Verbindung wartet (so genanntes FXP). Die Kommunikation mit Befehlen erfolgt auf dem Port 21. Man spricht auch von der Steuerung „Out of Band“. Während der Datenübertragung können beide Partner weiterhin miteinander kommunizieren.

Passive Mode

Beim Passive Mode baut der Client eine Datenverbindung zum vom Server gewünschten Port auf. Hier wird typischerweise von beiden Seiten ein Port jenseits 1023 benutzt.

Diese Technik wird eingesetzt, wenn der Client für den Server nicht erreichbar ist. Dies ist beispielsweise der Fall, wenn der Client sich hinter einem Router befindet, der die Adresse des Clients mittels NAT umschreibt, oder wenn eine Firewall das Netzwerk des Clients vor Zugriffen von außen abschirmt.

FTPS

FTP over SSL ist ein gängiges verschlüsseltes Dateiübertragungsverfahren auf Basis des FTP-Transfer-Protokolls. Die Verschlüsselung des Kontrollkanals sowie des Datenkanals ist durch SSL1 oder TLS Authentifizierung bei einer Schlüsselgröße von derzeit bis zu 256 Bit (in diesem Fall AES) möglich. Selbst Server-zu-Server Übertragungen (FXP) können per SSL/TLS verschlüsselt werden, dies ist jedoch bei weitem noch nicht standardisiert und es existieren mehrere technische Möglichkeiten der Implementierung (z. B. SSCN). Dank FTP over SSL ist es möglich, eine FTP Übertragung auch im Passiv-Modus komplett zu verschlüsseln. Im Aktiv-Modus wird oft die Implicit SSL Variante genutzt, wobei der Kontrollkanal sofort beim Verbindungsaufbau verschlüsselt wird und nicht erst durch das Klartext-Kommando AUTH SSL bzw. AUTH TLS, wie bei der Explicit SSL Variante, dazu gebracht wird.

SFTP

SSH File Transfer Protocol (kurz SFTP) ist eine Weiterentwicklung von SCP, wodurch zusätzliche Dateioperationen ermöglicht werden. SFTP ist nicht zu verwechseln mit dem FTP over SSH oder FTP over SSL (FTPS). SFTP ist ein von Grund auf neu entwickeltes Dateiübertragungsprotokoll und basiert nicht – wie der Name es vermuten ließe – auf FTP. Vielmehr stellt es eine Emulation von FTP dar, so dass alle bekannten Funktionen und Befehle benutzt werden können. Im Gegensatz zu FTP bietet SFTP (und auch SCP) Authentifizierung von User und Server und Verschlüsselung der übertragenen Daten.

SFTP im vergleich zu FTPS

Der wohl größte Unterschied zwischen FTPS und SFTP ist, dass FTPS als TLS-Erweiterung für FTP entwickelt wurde, während SFTP als SSH-Subsystem nur einen FTP-ähnlichen Service zur Verfügung stellt, der auf das SSH-Protokoll aufsetzt. Der große Vorteil von SFTP ist, dass es sich einfacher durch NAT-Gateways hindurch verwenden lässt als FTPS.