2005 LANsys Connectivity index last update:13.03.2006

 

File Transport Protocol (FTP)


Das bewährte File Transport Protocol (FTP) ist ein Urvieh aus der Frühzeit des Internet. Zwar erfüllt es auch heute noch seinen Dienst, wirft aber durch seinen abwegigen Protokollablauf viele Sicherheitsprobleme auf - besonders zusammen mit Firewalls.

Dateien über das Netzwerk kopieren, für diese Aufgabe existiert mit FTP ein altes, aber lebendiges und robustes Protokoll. Es erlaubt den Datenaustausch zwischen Systemen, die sonst völlig inkompatibel zueinander sind. Der wunde Punkt dieses Klassikers ist die Sicherheit: FTP schützt die übertragenen Daten weder vor neugierigen Blicken noch vor Manipulationen. Zudem bereitet es große Schwierigkeiten, in einem Paketfilter korrekte Regeln für das FT-Protokoll zu definieren - ohne einen Blick in die übertragenen Daten ist es praktisch unmöglich.

Wegen seiner Sicherheitsprobleme sollte man FTP eigentlich nur noch in Ausnahmefällen benutzen. Eine Folge der vielen Schwächen ist nämlich, dass Angreifer verstärkt nach anfälligen FTP-Servern suchen oder nach Firewalls, die für FTP fehlerhaft konfiguriert sind. Das erste Sicherheitsproblem von FTP ist die Übermittlung von Benutzername und Passwort im Klartext - Sniffer freuen sich über die mundgerechten Geschenke.

  • Erster Vorläufer: RFC 114 (April 1971)
  • Aktuelle Fassung: RFC 959 (Oktober 1985)
  • Letzte Erweiterung: RFC 2773 (Februar 2000)
  • FTP gehört zu den am meisten genutzten Diensten im Internet
  • Viele Sicherheitsprobleme
  • Besonders problematisch im Zusammenspiel mit Firewalls

Zwei Verbindungen: Kommandos und Daten

Kommando- und Datenkanal sind wie jede andere TCP-Verbindung eindeutig gekennzeichnet durch Absenderadresse und Absenderport auf der einen Seite und Zieladresse und Zielport auf der anderen. Absender- und Zieladresse sind die bekannten vierstelligen IP-Nummern wie 19.7.0.42, Absender- und Zielport können zwischen 1 und 65535 liegen. Damit ein Client überhaupt eine Verbindung zu einem Server aufbauen kann, hat man bestimmte Dienste auf bestimmte Ports festgelegt (well-known port), dabei hat FTP die 21 und HTTP die Portnummer 80.

Ein Client nimmt eine FTP-Kommando-Verbindung zu einem Server auf, in dem er sich auf seinem Rechner eine freie Portnummer besorgt (über 1023, für niedrigere Ports sind Root-Rechte nötig), seine Adresse und seinen Port als Absender sowie die Serveradresse und Port 21 als Ziel angibt. Ein Server kann dadurch mehrere FTP-Verbindungen gleichzeitig haben, auch zum selben Client, da immer nur die Kombination Absenderadresse und -port plus Zieladresse und -port die Verbindung beschreibt.

Das spezielle Problem für Firewalls liegt nun darin, dass zu einer Kontrollverbindung der Sitzung eine oder mehrere Datenverbindungen gehören, deren genaue Parameter (vor allem die Ports) erst während der Sitzung erzeugt und über den Kontrollkanal ausgetauscht werden. Dabei ist für einen Außenstehenden nicht einmal klar, ob der FTP-Client oder der FTP-Server die Datenverbindungen aufbaut.

Aktives FTP

Abbildung 1: Beim aktiven FTP öffnet der Server den Datenkanal (rot) rückwärts zum Client. Der Client hat ihm vorher über den Kontrollkanal (grün) die IP-Adresse und den Port mitgeteilt.

Passives FTP

Abbildung 2: Im passiven FTP-Modus öffnet der Client den Kontroll- und den Datenkanal, beide Verbindungen gehen also in dieselbe Richtung. Die Portnummer für die Datenverbindung teilt der Server dem Client über den Kontrollkanal mit.

Im passiven FTP-Modus öffnet der Client selbst den Datenkanal. Dazu sendet er das Kommando »PASV« an den Server. Der Server holt sich nun eine freie Portnummer (größer 1023) und sendet sie als Return-Code zurück; die Adresse ist dabei so kodiert wie beim »PORT«-Kommando. Nun kann der Client die Verbindung aufbauen, da er die Ziel-Portnummer kennt Abbildung 2).

Jetzt muss der Paketfilter beim Client keine eingehenden Verbindungen mehr zulassen, auch Masquerading oder NAT sind möglich. Die Hauptsorge des Firewall-Administrators ist weg - und ein neues Problem entstanden. Um FTP-Zugriffe von außen nach innen zuzulassen, muss der Paketfilter Verbindungen von Ports größer 1023 zu Ports größer 1023 zulassen. Damit entsteht das gleiche Problem wie im aktiven Modus, nur trifft es jetzt die Firewall auf Seite des Servers und nicht mehr die beim Client.

Doppel FTP (remote host to remote host)

Abbildung 3: Durch die Kombination von aktivem und passivem Modus kann der Client Dateien direkt zwischen zwei Servern übertragen: Server A arbeitet im passiven Modus, Server B im aktiven.

Durch die Kombination von aktivem und passivem Modus wird ein weiteres Szenario möglich (siehe Abbildung 3): Ein Client kann zwei Server steuern und einen Dateitransfer direkt von Server A zu Server B veranlassen. Er meldet sich zunächst auf beiden Servern an und sendet an Server A ein »PASV«-Kommando. Die Parameter aus der Antwort schickt er als »PORT«-Kommando an Server B. Daraufhin baut B den Datenkanal zu A auf. Je nach Richtung der gewünschten Datenübertragung setzt der Client die Kommandos »STOR« (Store, Abspeichern) oder »RETR« (Retrieve, Abholen) ein.

Schon dies kleine Beispiel, das übrigens auch in RFC 959 besprochen wird, zeigt, dass das Protokoll im Sicherheitsbereich noch einige böse Überraschungen bereithalten könnte.

Firewall-Dilemma

RFC 1579 kommt im Februar 1994 zu dem Schluss, dass eigentlich beide Varianten für Firewalling nicht optimal sind. Die Autoren dieses RFCs halten passives FTP aber für das kleinere Übel und empfehlen, es bevorzugt zu nutzen. Dummerweise ist laut RFC 959 passives FTP nur optional und nicht zwingend vorgeschrieben, so dass man aktives FTP weiterhin unterstützen muss. Erst RFC 1123 legt passives FTP für Internet-Server zwingend fest und macht keine Aussage mehr zu aktivem FTP. RFC 959 ist aber der bekanntere Standard und der kleinste gemeinsame Nenner, an den sich alle halten.

Die Verwirrung ist komplett, wenn auf der Firewall eine Protokollumsetzung zwischen Aktiv- und Passiv-Modus notwendig wird oder kontextorientierte Paketfilterregeln für den Datenkanal eingefügt und entfernt werden müssen. Linux selbst erledigt diese Aufgaben mit einem Kernelmodul, das die notwendigen Änderungen automatisch vornimmt. Es gibt aber auch die Möglichkeit, mit Proxies auf Benutzerlevel zu arbeiten. Diese können dann beispielsweise auch nach Viren suchen.

Die vollständige Implementierung aller Kombinationen von aktivem und passivem FTP ist aber nicht trivial und daher fehleranfällig, Abbildung 4 deutet an, wie komplex die Zusammenhänge und Abläufe dabei werden können. Das Kernel-Modul war in der Vergangenheit sogar selbst das Ziel eines Angriffs.

Es stellt sich die Frage, ob FTP vollständig ersetzt werden kann. Für den normalen Internet-Download ist es nicht dringend erforderlich, HTTP kann genauso zuverlässig Daten herunterladen, HTTPS kann es sogar verschlüsselt. Für die Übertragung von vertraulichen Dateien sollte man sowieso ausschließlich SCP oder verschlüsselte E-Mails verwenden.


All explanations and entries from this domain sites are regarded available
as internal purposes, if these appear useful for you and it made of it use,
then happens this at own risk. with use of the entries and possible damage from it,
any warranty is completely excluded.

 

©2005 LANsys Connectivity index last update:13.03.2006