Aktives und passives FTP

Artikel aus dem Jahr 2005 von Heinz Altenfelder in Anlehnung an „Active FTP vs. Passive FTP, a Definitive Explanation“

Klassischerweise benutzt der FTP-Dienst zwei statt einem Port: 21 für die Steuerung (Control Port) und 20 für die Daten (Data Port).

Active FTP

Beim aktiven FTP verbindet sich der Client von einem zufälligen Port (N > 1024) mit dem Server Port 21. Dann hört/wartet der Client auf Port N+1 und sendet entsprechend auch an den Server das Kommando „PORT N+1“. Der Server verbindet sich mit dem Client-Data-Port N+1 von seinem Dataport 20 aus.

Was muss jetzt bei der Server-Firewall frei gegeben werden?

  1. Server Port 21 – von überall
  2. Server Port 21 – auf alle Ports > 1024
  3. Server Port 20 – auf alle Ports > 1024
  4. Server Port 20 – von allen Ports > 1024 (wg. ACKs)

Das Problem beim Client: Dieser macht nicht selbst die Verbindung zum Datenport des Servers. Aus Sicht seiner Firewall initiiert ein außen stehendes System die Verbindung zu einem internen Clientrechner (und das wird normalerweise blockiert).

Passive FTP

Beim passiven FTP wird anders verfahren, damit der Server keine Verbindung zum Client aufbauen muss. Beide Verbindungen werden vom Client veranlasst.

  1. Bei passiven FTP öffnet der der Client zwei Ports (N und N+1, beide > 1024)
  2. Auf dem ersten Port N kontaktiert der Client den Server, allerdings nicht mit dem „PORT N+1“-Kommando, sondern mit dem „PASV“-Kommando.
  3. Daraufhin öffnet der Server einen Dataport (P > 1024) und sendet seinerseits „PORT P“ zurück zum Client.
  4. Der Client initiiert dann die Verbindung von seinem Data-Port (N+1) zum Data-Port des Servers (P).

Was muss jetzt bei der Server-Firewall frei gegeben werden?

  1. Server Port 21 – von überall
  2. Server Port 21 – auf alle Ports > 1024
  3. Alle Server Ports >1024 – auf alle Ports > 1024
  4. Alle Server Ports >1024 – von allen Ports > 1024 (wg. ACKs)

Das Problem beim Server, dass alle Ports > 1024 frei gegeben werden müssen, wird durch Konfigurationsmöglichkeiten verringert (es ist in der Regel möglich, ein Range von Ports für den Server zu definieren). Der Client macht jetzt selbst die Verbindung zum Datenport des Servers auf. Aus Sicht seiner Firewall findet jetzt kein Verbindungsaufbau durch ein außen stehendes System mehr statt.