Skip to main content

FTP

Sie haben nun bisher das Protokoll TFTP mit einem TFTP-Server und TFTP-Client kennen gelernt. Als nächstes schauen wir uns nun das FTP-Protokoll (File Transfer Protocol) an. Dieses wurde im Jahr 1971 entwickelt und ist ein wesentlicher Bestandteil des Internets und der Computervernetzung. Sie werden feststellen, dass FTP einen wesentlich grösseren Funktionsumfang bietet als TFTP, dazugehörten beispielweise:

  • Benutzer-Authentifzierung
  • Verschlüsselung des Datenübertragung
  • Berechtigungen
  • Auflisten des Ordnerinhaltes

Im Gegensatz zu TFTP verwendet FTP zwei Verbindungen, einerseits eine Verbindung für die Übermittlung der Kontroll-Befehle (Control-Plane) und andererseits eine Verbindung für die Datenübertragung (Data-Plane). TFTP hingegen verwendet nur eine Verbindung, die sowohl für die Kontrolle als auch für die Datenübertragung verwendet wird. 

OF8ftp-control-and-dataplane.png

Erklärung: Der Verbindungs-Aufbau erfolgt über die Kontroll-Verbindung, welche in der Grafik orange dargestellt ist. Darüber läuft die Authentifizierung, die Auswahl des korrekten Arbeits-Verzeichnisses sowie der Austausch der Verbindungsinformationen für die Dateiübertragung. Auf dieser Verbindung kommunizieren der Client und der Server ausschliesslich über Text-Kommandos.

Die eigentliche Datenübertragung erfolgt auf einem separatem Kanal, der sogenannten Daten-Verbindung. Dies bringt folgende Vorteile mit sich: 

  • Es können mehrere Datenübertragungen parallel stattfinden, für jede Datenübertragung wird eine separate Daten-Verbindung geöffnet. Jede Datenverbindung hat einen eigenen Port.
  • Die Kommunikation mit dem Server wird nicht unterbrochen durch eine Datenübertragung. Dauert z. B. der Download einer Datei sehr lange, kann die Kommunikation über die Kontroll-Verbindung weiterhin vorgenommen werden. Würde nur eine Verbindung für die Kommunikation und die Datenübertragung verwendet werden, müsste gewartet werden, bis die Datei fertig übertragen wurde. 
Aktive und passive FTP-Verbindung

Es gibt zwei verschiedenen Varianten wie eine FTP-Verbindung aufgebaut werden kann. Schauen wir uns zu erste den aktiven Modus an, welcher ursprünglich als Standard-Variante vorgesehen war und vor dem passiven Modus existiert hat.

Aktives FTP

Aktives FTP wird so genannt, weil der FTP-Server hierbei die Datenverbindung aktiv zum Client aufbaut. Der Client wählt seine Ports für die Daten- und Kontrollverbindung zufällig, während der Server immer die bekannten Standard-Ports 21 für die Kontroll-Verbindung und 20 für die Datenverbindung zugewiesen hat. 

Schauen Sie sich nun den untenstehenden Ablauf an:

fpt-active.png

  1. Der FTP-CLIENT baut eine Verbindung zum Server auf. Die IP-Adresse des Servers sowie dessen Port aud der Kontroll-Verbindung sind bekannt. (Port ist in der Regel der definierte Standard-Port 21). Es werden die mit dem AUTH Befehl die Informationen zur Authentifizierung übertragen.
  2. Der FTP-SERVER bestätigt die erfolgreiche Anmeldung mit der Meldung user logged in.
  3. Der FTP-CLIENT teilt dem Server nun seinen Port für die Daten-Verbindung mit. Dazu sendet der FTP-CLIENT eine sogenannte PORT Nachricht in der die IP-Adresse und der Port in folgenden Format übermittelt wird.
    (192,168,1,72,25,130)
    Daraus kann der Server nun den Port berechnen. Hierzu mehr unter dem Abschnitt Port-Berechnung.
    Ab diesem Zeitpunkt weiss der FTP-Server nun, auf welchem Port der FTP-CLIENT die Datei empfangen kann. 
  4. Der FTP-SERVER bestätigt dem FTP-CLIENT, dass er den Port erhalten hat.
  5. Bei einer angefragten Datenübertragung wird der FTP-Server nun die Datei an den FTP-Client senden. Dazu baut er von sich auf eine neue Verbindung auf den erhaltenen Port des Clients auf.

Das obige Abschlauf-Schema ist nicht vollständig. In Wahrheit werden noch weitere Datenpakete ausgetauscht. z. B. für die Authentifizierung. Dieser Ablauf wurde auf die relevanten Datenpakete reduziert um die Funktionsweise einer aktiven oder passiven FTP-Verbindung zu darzulegen.

Die aktive FTP-Verbindung ist einfach und verständlich aufgebaut. Der FTP-Client teilt dem FTP-Server mit, auf welchem Port er eine Datei entgegen nimmt und der FTP-Server baut dann auf diesen Port eine Daten-Verbindung auf. Jedoch hat sich mit der Zeit in grosses Problem geäussert. Immer mehr Clients waren mit einer Firewall oder einem NAT ausgestattet. 

Wie in der nachfolgenden Grafik ersichtlich, blockieren Firewalls eingehende Verbindungen, welche nicht ursprünglich vom Client initiiert wurden. Die Datenpakete der Kontroll-Verbindung werden daher durch die Firewall des Clients gelassen, da diese vom Client selber gestartet wurden. Da aber der FTP-Server die Daten-Verbindung von sich aus startet, wird diese von der Firewall des FTP-Clients blockiert.

fpt-active-firewall.png

Es braucht somit eine andere Lösung, welche dem Client erlaubt die Datenverbindung zu starten. Hierzu wurde passives FTP eingeführt. 

Passives FTP

Im Gegensatz zum aktiven FTP, bei dem der Server die Daten-Verbindung aktiv aufbaut, wird beim passiven FTP der Client die Verbindung aufbauen. Der FTP-Server muss die Daten dann nur passiv auf dem kommunizierten Port bereithalten. Passives FTP ist üblich, da viele Firewalls die FTP-Verbindung verunmöglichen, da von aussen her keine Daten-Verbindung aufgebaut werden kann. Weiter ist es sicherer, weil nicht der Server die Daten-Verbindung aufbaut und somit der Client weniger offen für Angriffe ist. 

fpt-passive.png

  1. Wie beim aktiven FTP wird der FTP-CLIENT als erstes eine Authentifizierung vornehmen.
  2. Der FTP-SERVER bestätigt diese.
  3. Nun wird der FTP-CLIENT mit einer PSVM-Nachricht den passiven-Modus vom FTP-SERVER anfordern. 
  4. Der FTP-SERVER bestätigt den passiven Modus mit dem Status 227 und den Port-Informationen. Der FTP-SERVER hat dem FTP-CLIENT den Port 50001 und die IP 44.205.205.11 übermittelt. Der FTP-SERVER öffnet einen neuen Port 50001 auf dem er auf eingehende Verbindungen wartet.
  5. Der FTP-CLIENT möchte nun die Datei xyz.txt abrufen. Dazu stellt der Client eine Verbindung zum FTP-SERVER über den Port 50001 mit. Der Port wurde vom FTP-SERVER in der letzten Nachricht mitgeteilt. Mit diesem Datenpaket erhält der FTP-Server automatisch auch den Port der Daten-Verbindung des FTP-CLIENTS.
  6. Der FTP-SERVER sendet nun die angeforderte Datei xyz.txt an den FTP-CLIENT über den Port 6530. Weil die Verbindung vom Client aus gestartet wurde (Die Firewall merkt sich beim Datenpaket die IP-Adresse und den Port des Servers) wird das eingehende Datenpaket akzeptiert.

Port Berechnung

Das aktive und passive FTP haben eine Gemeinsamkeit und zwar werden jeweils an einer Stelle Informationen ausgetauscht, auf welchem Port der FTP-Client oder der FTP-Server eine Verbindung geöffnet haben. Diese Information ist nach einem bestimmten Schema codiert.

ftp-ports.png

Mit diesem Schema und den Informationen aus dem Kapitel über aktives und passives FTP sollten Sie nun die unten stehenden Aufgaben lösen können.

Auftrag 1: Nachfolgende Datenpakete einer Kontroll-Verbindung wurde aufgefangen. Leiten Sie daraus ab, ob dieses Paket an einen FTP-Client oder einen FTP-Server übermittelt wurde, die codierte IP-Adresse, den codierten Port und ob es eine aktive oder passive FTP-Verbindung ist.

1.)  PORT 192,168,1,72,209,255

Datenpaket wurde an einen ________________________ versendet.

Die IP-Adresse lautet:

Die Port-Nummer lautet:

Es handelt sich um eine ________________________ FTP-Verbindung.

Datenpaket wurde an einen FTP-Server versendet.
Die IP-Adresse lautet: 192.168.1.72
Die Port-Nummer lautet: 53759
Es handelt sich um eine aktive FTP-Verbindung

2.)  PORT 111,222,111,222,111,222

Datenpaket wurde an einen ________________________ versendet.

Die IP-Adresse lautet:

Die Port-Nummer lautet:

Es handelt sich um eine ________________________ FTP-Verbindung.

Datenpaket wurde an einen FTP-Server versendet.
Die IP-Adresse lautet: 111.222.111.222
Die Port-Nummer lautet: 28638
Es handelt sich um eine aktive FTP-Verbindung

3.)  227 Entering Passive Mode (210,128,268,122,199,199)

Datenpaket wurde an einen ________________________ versendet.

Die IP-Adresse lautet:

Die Port-Nummer lautet:

Es handelt sich um eine ________________________ FTP-Verbindung.

Datenpaket wurde an einen FTP-Client versendet.
Die IP-Adresse lautet: 210.128.268.122
Die Port-Nummer lautet: 51143
Es handelt sich um eine aktive FTP-Verbindung

4.)  PORT 111,222,111,222,111,222

Datenpaket wurde an einen ________________________ versendet.

Die IP-Adresse lautet:

Die Port-Nummer lautet:

Es handelt sich um eine ________________________ FTP-Verbindung.

Datenpaket wurde an einen FTP-Client versendet.
Die IP-Adresse lautet: 210.128.268.122
Die Port-Nummer lautet: 51143
Es handelt sich um eine aktive FTP-Verbindung

Praktische Übung

Vorbereitung

Anmeldung über FileZilla

Starten Sie nun die Software FileZilla Client