Antworten auf Ihre häufigsten Fragen

Was ist der Unterschied zwischen aktivem und passivem FTP?

English version below

Wenn man Probleme bei FTP-Verbindungen hat, kommen oft die Begriffe "aktives FTP" und "passives FTP" ins Spiel. Besonders dann, wenn die Verbindung zwar irgendwie schon klappt, aber dann einfach hängen bleibt. Was hat es damit auf sich und was muss man beachten, wenn man einen FTP-Server oder FTP-Client betreibt?

Vorweg sei gesagt, dass für das Verständnis des Artikels grundlegende Kenntnisse bezüglich TCP/IP sehr vorteilhaft sind, obwohl sich der Autor bemüht, das Problem auch allgemein verständlich zu erklären, sofern das möglich ist.

Was das FTP gelegentlich etwas aufwändig macht, ist die Tatsache, dass verschiedene TCP und UDP-Ports benötigt werden. Wer bei "FTP" direkt an "Port 21" denkt, liegt dabei gar nicht so falsch, allerdings reicht dieser allein nicht aus. Wenn also gar nichts funktioniert, obwohl der FTP-Server eigentlich läuft, sollte man hier ansetzen. Zu Problemen kann es immer dann kommen, wenn Firewalls im Spiel sind. Der Unterschied soll an zwei Beispielen gezeigt werden:

Beispiel: Aktives FTP

Der Client baut eine Verbindung zum Server auf Port 21 auf. Über diese Verbindung laufen dann die Steuerkommandos wie "welche Dateien sind auf dem Server" u.ä. Das klappt dann auch sehr gut, bis man anfangen möchte, Daten zu übertragen. Dazu teilt der Server dem Client mit "gib mir mal einen freien IP-Port und lausche darauf", um dann eine Verbindung zum Client-Rechner aufzubauen. Die dortige Firewall sieht eine eingehende Verbindung die neu aufgebaut werden soll und verwirft diese, was grundsätzlich keine schlechte Idee ist. In diesem Fall führt es aber dazu, dass die Verbindung "hängt", weil eine zwischengeschaltete Firewall die Daten verwirft.

Beispiel: Passives FTP

Um dieses Problem (Firewall auf Clientseite) zu lösen, schuf man die Form des passiven FTP, bei der der Client Kontroll- UND Datenverbindung aufbaut, so dass es keine eingehende Verbindung auf den Client mehr gibt. Dazu teilt der Server dem Client mit "ich warte jetzt auf Port xy darauf, dass du eine weitere Verbindung zu mir aufbaust". Dies klappt dann, wenn nicht wieder eine Firewall, diesmal auf Serverseite, zuschlägt, und Verbindungen zu dem Port xy verbietet.

Was bedeutet das?

  • Für den Serverbetreiber: Damit möglichst viele User den Server erreichen können, sollte man grundsätzlich beide Verfahren anbieten. Wenn man also eine serverseitige Firewall hat, achte man darauf, dass Port 21 (Standard für FTP-Daten) und 20 für aktives FTP frei sind. Für passives FTP kann man den Bereich der Ports, die der Server anbietet ("xy") in der Konfiguration des FTP-Servers einschränken, so dass man nur eine bestimmte Menge von Ports (aus Sicherheitsgründen) frei schalten muss. Diese Freischaltung kann manuell oder über entsprechende Firewallmodule (z.B. ip_conntrack_ftp unter iptables) erfolgen.
  • Für den FTP-User: Wenn deine Firewall keine eingehenden Verbindungen zuläßt (z.B. wenn ein NAT/IP-Masquerading genutzt wird), verwende die Einstellung "passives FTP" in deinem FTP-Client.

 

 

English Version:

If you have problems with FTP connections, the terms "active FTP" and "passive FTP" often come into play. Especially when the connection somehow works, but then just gets stuck. What is it all about and what do you have to consider when operating an FTP server or FTP client?

First of all, it should be said that basic knowledge of TCP/IP is very advantageous for understanding the article, although the author tries to explain the problem in a generally understandable way, if that is possible.

What makes FTP sometimes a bit cumbersome is the fact that different TCP and UDP ports are required. If you think of "Port 21" directly when you hear "FTP", you are not wrong, but this alone is not enough. So if nothing works at all, although the FTP server is actually running, this is where you should start. Problems can always arise when firewalls are involved. The difference will be shown with two examples:

Example: Active FTP

The client establishes a connection to the server on port 21. The control commands such as "which files are on the server" and similar then run with this connection. This works very well until you want to start transferring data. To do this, the server tells the client "give me a free IP port and listen to it" in order to then establish a connection to the client computer. The firewall there sees an incoming connection that needs to be reestablished and discards it, which is generally not a bad idea. In this case, however, the connection "hangs" because an intervening firewall discards the data.

Example: Passive FTP

In order to solve this problem (firewall on the client side), a form of passive FTP was created in which the client establishes a control AND data connection, so that there is no incoming connection to the client. To do this, the server tells the client "I'm now waiting on port xy for you to establish another connection to me". This works if a firewall does not strike again, this time on the server side, and forbids connections to port xy.

What does that mean?

  • For the server operator: Both methods should be offered so that as many users as possible can access the server. So if you have a server-side firewall, make sure that port 21 (default for FTP data) and 20 for active FTP are free. For passive FTP, you can limit the range of ports offered by the server ("xy") in the FTP server configuration, so that you only have to open a certain number of ports (for security reasons). This activation can be done manually or via appropriate firewall modules (e.g. ip_conntrack_ftp under iptables).
  • For the FTP user: If your firewall doesn't allow incoming connections (e.g. if NAT/IP masquerading is used), use the "passive FTP" setting in your FTP client.


otto.friedrich@hosteurope.de xanthippe.ypsilante@hosteurope.de hercules.ikarus@hosteurope.de