Was sind die Unterschiede zwischen passiven und erweiterten passiven Modi bei FTP?

17

Kann jemand einfach die Unterschiede zwischen dem passiven FTP-Modus (PASV) und dem erweiterten passiven FTP-Modus (EPSV) erklären?

CGCampbell
quelle
2
@ DavidPostill Sorry, ich war wirklich nur an PASV vs EPSV interessiert.
CGCampbell

Antworten:

20

Der einzige Unterschied besteht darin, dass PORT/PASVnur IPv4 unterstützt wird , während EPRT/EPSVmit jedem Netzwerkprotokoll gearbeitet wird (obwohl in der Praxis nur IPv6 verwendet wird).

Die Standardbefehle PORT(aktiv) und PASV(passiv) im FTP-Steuerprotokoll tauschen Adress- und Portinformationen als sechs 1-Byte-Dezimalstellen aus , aus denen das andere Ende eine 4-Byte-IP-Adresse und eine 2-Byte-TCP-Portnummer rekonstruieren muss.

PORT <address[4]>,<port[2]>

PORT 132,235,1,2,24,131

Aber dann tauchten andere Protokolle auf. IPv4 sollte durch "IPng" ersetzt werden, das einige konkurrierende Ersatzvorschläge hatte (OSI CLNP, TUBA, SIP, SIPP, CATNIP - zu verschiedenen Zeiten in der Geschichte), einige mit kürzeren, längeren, sogar variablen Hostadressen. bis schließlich IPv6 mit 16-Byte-Adressen definiert wurde.

Nur mehr Bytes zu senden hätte nicht funktioniert - von Servern und Clients konnte nicht erwartet werden, dass sie das richtige Protokoll nur anhand der Adresslänge kennen. (Was ist zum Beispiel, wenn Sie ein Protokoll mit 16-Byte-Adresse + 4-Byte-Port und ein anderes mit 12-Byte-Adresse + 12-Byte-Port haben?)

Außerdem - obwohl dies vor 20 Jahren weniger wichtig war - gibt es heutzutage Millionen von NAT-Geräten im Internet, die FTP-Steuerverbindungen prüfen und vertauschen, sodass der "externe" Host nur globale IPv4-Adressen sieht, selbst wenn die "internen" Der Host hat einen lokalen RFC1918 gesendet. Auch ohne NAT überwachen Stateful Firewalls häufig die Steuerbefehle, um eine Datenverbindung ohne manuelle Regeln automatisch zuzulassen.

Dies bedeutet im Grunde, dass einfach mehr Nummern mit gesendet werden PORToder PASVfür viele Menschen garantiert kaputt gehen. Vielleicht würden einige Firewalls einige Adressbytes stillschweigend als Port interpretieren und den Rest stillschweigend verwerfen. andere können die Verbindung trennen oder einfach abstürzen.

Um verschiedene Probleme wie die oben genannten zu vermeiden, mussten neue Befehle für die Unterstützung mehrerer Protokolle in FTP eingeführt werden.

Im Jahr 1993 führte RFC 1639 (ursprünglich RFC 1545 ) die "lange Adresse" LPRTundLPSV Befehle ein, die wie PORT& waren, PASVaber eine variable Adresslänge hatten . Sie enthielten auch die Protokolltypkennung. (Die Syntax wurde jedoch nicht geändert - IPv6-Adresse: Port würde einfach als 21 statt als sechs Nummern gesendet.)

LPRT <protocol>,<addr-length>,<address...>,<port-length>,<port...>

LPRT 4,4,132,235,1,2,2,24,131

LPRT 6,16,16,128,0,0,0,0,0,0,0,8,8,0,32,12,65,122,2,20,162

Dies hat jedoch einige Probleme nicht behoben, z. B. die Aufforderung an einen Server, ein anderes Protokoll als für die Steuerverbindung zu verwenden. Der RFC wurde auch schnell veraltet; Als IPv6 nur ein Jahr später herauskam, konnte es nicht mit LPRT verwendet werden, da ihm keine LPRT-Protokoll-ID zugewiesen wurde (nur für die verschiedenen frühen Vorschläge).

Um dies zu beheben, RFC 2428 im Jahr 1998 aufgenommen EPRTund EPSV, auch bekannt als „extended - Port“ und „extended passive“ , die auch ein Verfahren hatten ein Protokoll für die Aushandlung , dass beide Ende unterstützen. Die "erweiterten" Befehle senden auch Adressen in lesbarer Form - für IPv6 bedeutet dies, dass Hexadezimal- und Doppelpunktnotation anstelle einer Reihe separater Dezimalzahlen verwendet wird.

EPRT x<protocol>x<address>x<port>x

EPRT |1|132.235.1.2|6275|

EPRT |2|1080::8:800:200C:417A|5282|

Zusammenfassend ist die IPv6-Unterstützung der einzige Unterschied.

user1686
quelle
Wow, alle Seiten, die ich gelesen habe und die erst in dieser Version angeklickt haben. Danke für das. Ich akzeptiere es (wahrscheinlich) in ein oder zwei Stunden und möchte sehen, ob es jemand anders macht. Der Grund, warum ich auch nach Active gefragt habe, war, dass diese Frage / Antwort aufgrund der guten Tag-Kennzeichnung mit Google in Suchanfragen gefunden wird. Wenn niemand der Antwort etwas hinzufügt (um sie für eine Google-Antwort vollständiger zu machen), bearbeite ich meine ursprüngliche Frage und meinen Text, um den Inhalt Ihrer Antwort widerzuspiegeln und meine Frage im Wesentlichen an Ihre Antwort anzupassen.
CGCampbell
3
Ein weiterer Unterschied besteht darin, dass die EPSVAntwort nicht die IP-Adresse enthält (was für eine PASVAntwort). Dies dient zur Vermeidung häufiger Probleme, wenn der hinter einem NAT befindliche FTP-Server die externe IP-Adresse nicht kennt und den FTP-Client durch das Senden seiner internen Adresse verwirrt.
Martin Prikryl
Ein weiterer Grund für die Verwendung von FTP-over-TLS ist, dass die Firewall / NAT die IP-Adresse im PASV-Befehl nicht abfangen kann, um sie neu zu schreiben (zumindest ohne MITMing der Steuerverbindung) In der Unix-Welt wird in der Regel SFTP anstelle von FTP-over-TLS verwendet. FTP-over-TLS wird häufig bei IBM-Mainframes verwendet, da FTP Datensatz-orientierte Dateien (STRU R, MODE B) unterstützt, während SFTP nur Stream-orientierte Dateien unterstützt Dateien
Simon Kissane
1

Der Unterschied zwischen aktiv und passiv ist bereits beantwortet. Extented Passive (EPSV) ist bei IPv4 und IPv6 nur passiv, da die Syntax der Antwort auf PASV spezifisch für IPv4 war und daher ein neuer Befehl für IPv6 erforderlich war. Gleiches gilt für EPTR vs. PORT im aktiven Modus. Ein etwas anderes Verhalten bei EPRT und EPSV besteht darin, dass sie nur den Port enthalten können, nicht IP und Port wie PORT und PASV. Die Datenübertragung kann also nur zwischen den Systemen erfolgen, die über die Steuerverbindung verfügen. Mit PORT und PASV ist es möglich, eine Datenverbindung zwischen anderen Systemen herzustellen (obwohl dies heute als schlechtes Design und Sicherheitsrisiko angesehen wird).

Steffen Ullrich
quelle
2
Dies war die Art von Antwort, die ich nicht wollte. Es sagt mir genau so viel, wie ich anderswo finden könnte, nämlich, dass EPSV für IPv6 erstellt wurde, erklärt aber nicht , warum. (dh ich akzeptiere Ihren Grund nicht als ausreichend gute Erklärung) Ich sage Ihnen dies in der Hoffnung, dass Sie Ihre Antwort vielleicht noch besser machen.
CGCampbell
Die Antwort wurde bearbeitet, um zu verdeutlichen, dass die Antwort auf den PASV-Befehl IPv6 nicht unterstützt und daher ein neuer Befehl benötigt wurde.
Steffen Ullrich