EMZETT.
Login

FTP

FTP Bild: Brent Jones, CC BY-SA 3.0, Wikimedia Commons

Kurz: File Transfer Protocol — eines der ältesten Internetprotokolle zur Dateiübertragung zwischen Client und Server, standardmäßig unverschlüsselt.

Genauer: FTP nutzt zwei getrennte Verbindungen: eine für Steuerbefehle (Standard-Port 21) und eine für die eigentlichen Daten. Weil Zugangsdaten und Dateiinhalte im Klartext übertragen werden, gilt es heute als unsicher — abgelöst durch SFTP oder FTPS. Wird trotzdem noch in älteren Hosting-Umgebungen verwendet.

Im Detail

Zwei getrennte Verbindungen

Die Aufteilung in zwei Verbindungen ist FTPs auffälligste Eigenart und stammt noch aus einer Zeit (RFC 959, 1985), in der Netzwerke deutlich unzuverlässiger waren als heute. Über den Standard-Port 21 (Control Connection) laufen nur Befehle wie Login, Verzeichniswechsel oder “sende diese Datei” — die tatsächlichen Dateidaten laufen über eine separate Data Connection, deren Port erst zur Laufzeit ausgehandelt wird. Es gibt zwei Modi dafür:

Active Mode:  Client sagt Server "verbinde dich zu mir auf Port X" -> Server baut Verbindung zum Client auf
Passive Mode: Client fragt Server "auf welchem Port soll ich mich verbinden?" -> Client baut Verbindung zum Server auf

Der Active Mode ist historisch älter, funktioniert aber schlecht hinter modernen Firewalls/NAT-Routern, weil der Server eine eingehende Verbindung zum Client aufbauen muss — was die meisten Heimrouter und Firewalls standardmäßig blockieren, da eingehende Verbindungen auf unvorhersehbaren Ports wie ein Angriff aussehen. Der Passive Mode löst das, indem der Client beide Verbindungen selbst initiiert (er fragt den Server per PASV-Befehl nach einem Port, verbindet sich dann selbst dorthin), ist aber komplexer für Firewall-Konfigurationen auf Serverseite, weil ein größerer Portbereich für die dynamisch ausgehandelten Data Connections freigegeben werden muss. In der Praxis nutzen praktisch alle modernen FTP-Clients standardmäßig den Passive Mode.

Typischer Befehlsablauf

Ein einfacher Datei-Download sieht auf Protokollebene etwa so aus:

Client: USER anna
Server: 331 Password required
Client: PASS ******
Server: 230 Login successful
Client: PASV
Server: 227 Entering Passive Mode (192,168,1,10,200,15)
Client: RETR bericht.pdf
Server: 150 Opening data connection
        (Dateiübertragung läuft über die separate Data Connection)
Server: 226 Transfer complete

Die Zahlen in der 227-Antwort kodieren IP-Adresse und Port für die Data Connection (die letzten beiden Zahlen ergeben zusammen den Port: 200×256+15 = 51215).

Sicherheitsproblem und Nachfolger

FTP überträgt Benutzername, Passwort und sämtliche Dateiinhalte unverschlüsselt im Klartext — jeder, der den Netzwerkverkehr mitschneiden kann (siehe Sniffer), etwa in einem öffentlichen WLAN oder auf einem kompromittierten Netzwerkgerät dazwischen, sieht Zugangsdaten und Dateien im Klartext mit. Deshalb gilt FTP heute als veraltet und wird durch zwei unterschiedliche Nachfolger ersetzt: SFTP (FTP-artige Funktionalität, aber komplett über SSH verschlüsselt getunnelt und technisch ein völlig eigenständiges Protokoll trotz des ähnlichen Namens) oder FTPS (klassisches FTP mit zusätzlicher TLS-Verschlüsselung obendrauf, behält aber die Zwei-Verbindungs-Architektur und damit auch deren Firewall-Komplexität bei).

Wo FTP heute noch vorkommt

In alten Hosting-Umgebungen (viele Shared-Hosting-Anbieter bieten aus Kompatibilitätsgründen bis heute FTP-Zugänge für den Datei-Upload an) und bei manchen öffentlichen, anonymen Download-Servern (wo keine sensiblen Zugangsdaten übertragen werden, sondern nur ein “Anonymous Login” mit beliebigem Passwort) ist es trotzdem noch anzutreffen. Für neue Projekte gilt FTP inzwischen praktisch durchgängig als Antimuster — moderne Deployment-Workflows nutzen stattdessen Git-basierte Deployments, SFTP oder direkte API-Uploads zu Cloud-Storage-Diensten.

Siehe auch: SFTP, SCP, Standard-Port, Firewall