
Ich verwende proftpd auf meinem Server (Ubuntu 16.04 x86_64).
Proftpd verwendet standardmäßig den Standard-Port 21. Ich kann von meinem Notebook zu Hause im aktiven Modus problemlos eine Verbindung zu FTP herstellen.
Jetzt stoppe ich proftpd, ändere den Port von 21 auf 10021 und starte den Dienst erneut. Und jetzt kann ich keine Verbindung im aktiven Modus herstellen, nur im passiven Modus.
Was hat sich geändert?
Ich verstehe auch nicht, warum der aktive Modus funktioniert? Ich habe Internetzugang über den Router. Ich gebe am Router keine Ports für mein Notebook an. Wenn ich mich jetzt verbinde, stellt mein Notebook (FTP-Client) eine Verbindung von einem Port > 1023 zum Server-Port 21 her. Mein Notebook sendet auch einen zweiten (Daten-)Port an den Server und der Server stellt über diesen Datenport eine Verbindung von seinem eigenen Port 20 zu mir her. Aber wie kann eine zweite Verbindung hergestellt werden, wenn meine Ports vom WAN aus geschlossen sind?
Antwort1
Ihre Firewall (Router) verfügt über einen Verbindungsverfolgungsassistenten für FTP. Wenn er eine FTP-Steuerverbindung erkennt (die er am TCP-Zielport == 21 erkennt), überwacht er die Befehle. Wenn er sieht, dass Ihr Client den PORT
Befehl sendet, schreibt er ihn neu (an Ihre externe IP-Adresse und möglicherweise an einen anderen Port) und verfolgt die erwartete Verbindung vom FTP-Server. Wenn diese Verbindung eintrifft, wird sie durchgelassen.
Als Sie den Port geändert haben, ist nichts davon passiert, da 10021 nicht als FTP-Steuerverbindung erkannt wird.
Zumindest unter Linux ist diese Funktion das nf_conntrack_ftp
Modul, und Sie können die ports
Option so einstellen, dass 10021 bei Bedarf eingeschlossen wird.
PS: Ähnliches lässt sich mit einer Firewall vor dem Server erreichen, allerdings in umgekehrter Reihenfolge: Es erfolgt bei Übertragungen im passiven Modus statt im aktiven Modus.