Was ist der Unterschied zwischen aktivem und passivem FTP?

312

Kann mir jemand sagen, was der Unterschied zwischen aktivem und passivem FTP ist?
Welches ist vorzuziehen?

karthik
quelle

Antworten:

474

Aktiv und passiv sind die beiden Modi, in denen FTP ausgeführt werden kann.

Als Hintergrund verwendet FTP tatsächlich zwei Kanäle zwischen Client und Server, den Befehls- und den Datenkanal, bei denen es sich tatsächlich um separate TCP-Verbindungen handelt.

Der Befehlskanal dient zum Befehlen und Antworten, während der Datenkanal zum tatsächlichen Übertragen von Dateien dient.

Diese Trennung von Befehlsinformationen und Daten in separate Kanäle bietet eine raffinierte Möglichkeit, Befehle an den Server zu senden, ohne auf den Abschluss der aktuellen Datenübertragung warten zu müssen. Gemäß RFC ist dies nur für eine Teilmenge von Befehlen vorgeschrieben, z. B. Beenden, Abbrechen der aktuellen Übertragung und Abrufen des Status.


Im aktiven Modus richtet der Client den Befehlskanal ein, der Server ist jedoch für die Einrichtung des Datenkanals verantwortlich. Dies kann tatsächlich ein Problem sein, wenn beispielsweise der Clientcomputer durch Firewalls geschützt ist und keine nicht autorisierten Sitzungsanforderungen von externen Parteien zulässt.

Im passiven Modus richtet der Client beide Kanäle ein. Wir wissen bereits, dass der Befehlskanal im aktiven Modus eingerichtet wird, und dies geschieht hier auch.

Anschließend wird der Server (auf dem Befehlskanal) jedoch aufgefordert , einen Port abzuhören (nach Ermessen des Servers), anstatt zu versuchen, eine Verbindung zum Client wiederherzustellen.

Als Teil davon gibt der Server dem Client auch die Portnummer zurück, die er zum Abhören ausgewählt hat, damit der Client weiß, wie er sich mit ihm verbindet.

Sobald der Client dies weiß, kann er den Datenkanal erfolgreich erstellen und fortfahren.

Weitere Details finden Sie im RFC: https://www.ietf.org/rfc/rfc959.txt

paxdiablo
quelle
1
Ich denke nicht, dass die Aussage um den Port Y richtig ist. Im aktiven Modus bestimmt der Client den Port Y nicht, der Server versucht zufällig eine Portnummer auszuwählen und versucht zu sehen, ob der Client die Kommunikation über diesen ausgewählten Port zulassen würde . Der Grund, warum ich dies sage, ist, dass, wenn dies nicht zutrifft (mein Argument), die Clientseite, selbst wenn sie sich hinter einer Firewall befindet, immer zwei Firewall-Regeln erstellen kann, eine für die ausgehende Verbindung und eine für die eingehende Verbindung.
Arun.raj.mony
1
@arun, der Client hat nicht unbedingt die Kontrolle über die Firewall. Beispiel: In Unternehmensumgebungen gibt es normalerweise eine Firewall zwischen dem unternehmensweiten Netzwerk und der Außenwelt, über die ein Client, auf dem FTP ausgeführt wird, keinen Strom hat.
Paxdiablo
Warum sendet der Server im passiven Modus dem Client einen zufälligen Port an den Client, stattdessen stellt der Client eine direkte Verbindung zum Server-Port 20 her?
Chengbo
@paxdiablo Warum weist der Server im passiven Modus eine zufällige Portnummer zu und sendet sie zur Datenverbindung an den Client? Warum kann der Client einen Datenkanal von Client-Port Nr. Zu Port Nr. 20 auf der Serverseite nicht direkt öffnen?
Zephyr
1
Ich habe die Frage hier jetzt gestellt networkengineering.stackexchange.com/q/43680/37406
Zephyr
166

Ich bin kürzlich an meinem Arbeitsplatz auf diese Frage gestoßen, daher denke ich, ich sollte hier etwas mehr sagen. Ich werde das Bild verwenden, um zu erklären, wie der FTP als zusätzliche Quelle für die vorherige Antwort funktioniert.

Aktiver Modus:

aktiver Modus


Passivmodus:

Geben Sie hier die Bildbeschreibung ein


In einer Konfiguration im aktiven Modus versucht der Server, eine Verbindung zu einem zufälligen clientseitigen Port herzustellen. Die Chancen stehen also gut, dass dieser Port nicht einer dieser vordefinierten Ports ist. Infolgedessen wird der Versuch, eine Verbindung herzustellen, von der Firewall blockiert und es wird keine Verbindung hergestellt.

Geben Sie hier die Bildbeschreibung ein


Bei einer passiven Konfiguration tritt dieses Problem nicht auf, da der Client die Verbindung initiiert. Natürlich kann auch die Serverseite eine Firewall haben. Da jedoch erwartet wird, dass der Server im Vergleich zu einem Client eine größere Anzahl von Verbindungsanforderungen empfängt, wäre es für den Serveradministrator nur logisch, sich an die Situation anzupassen und eine Auswahl von Ports zu öffnen, um Konfigurationen im passiven Modus zu erfüllen.

Daher ist es am besten, wenn Sie den Server so konfigurieren, dass er FTP im passiven Modus unterstützt. Der passive Modus würde Ihr System jedoch anfällig für Angriffe machen, da Clients eine Verbindung zu zufälligen Server-Ports herstellen sollen. Um diesen Modus zu unterstützen, sollte Ihr Server nicht nur über mehrere Ports verfügen müssen, sondern Ihre Firewall sollte auch Verbindungen zu all diesen Ports zulassen!

Um die Risiken zu minimieren, besteht eine gute Lösung darin, einen Bereich von Ports auf Ihrem Server anzugeben und dann nur diesen Bereich von Ports auf Ihrer Firewall zuzulassen.

Weitere Informationen finden Sie im offiziellen Dokument .

Yuantao
quelle
Ich vermute nur, welches das Sicherheitsproblem ist. Wenn der Server denselben Port abhört (20), kann er nicht verstehen, welcher Client spricht. Wählen Sie daher einen zufälligen Port aus und senden Sie ihn an den Client, um diesen Port abzuhören. Wenn der Client eine Verbindung zu diesem Port herstellt, weiß der Server, zu welchem ​​Client er gehört. Es reicht jedoch aus, wenn ein MITM eine Verbindung zum selben Client herstellt. (Nun, Mitm Angriff hier ist sowieso schwierig ...)
Daniele Cruciani
2
Tolle Antwort, insbesondere Informationen zum Firewall-Problem
Anh Tuan
14

Überarbeitete Version meines Artikels FTP-Verbindungsmodi (Aktiv vs. Passiv) :

Der FTP-Verbindungsmodus (aktiv oder passiv) bestimmt, wie eine Datenverbindung hergestellt wird. In beiden Fällen erstellt ein Client eine TCP-Steuerverbindung zu einem FTP-Server-Befehlsport 21. Dies ist eine ausgehende Standardverbindung, wie bei jedem anderen Dateiübertragungsprotokoll (SFTP, SCP, WebDAV) oder jeder anderen TCP-Clientanwendung (z. B. Webbrowser) ). Daher gibt es normalerweise keine Probleme beim Öffnen der Steuerverbindung.

Wenn das FTP-Protokoll im Vergleich zu den anderen Dateiübertragungsprotokollen komplizierter ist, handelt es sich um Dateiübertragungen. Während die anderen Protokolle sowohl für die Sitzungssteuerung als auch für Datei- (Daten-) Übertragungen dieselbe Verbindung verwenden, verwendet das FTP-Protokoll eine separate Verbindung für die Dateiübertragungen und Verzeichnislisten.

Im aktiven Modus beginnt der Client, einen zufälligen Port auf eingehende Datenverbindungen vom Server abzuhören (der Client sendet den FTP-Befehl PORT, um den Server darüber zu informieren, welchen Port er abhört). Heutzutage ist es typisch, dass sich der Client hinter einer Firewall (z. B. integrierte Windows-Firewall) oder einem NAT-Router (z. B. ADSL-Modem) befindet und keine eingehenden TCP-Verbindungen akzeptieren kann.

Aus diesem Grund wurde der passive Modus eingeführt und wird heutzutage meist verwendet. Die Verwendung des passiven Modus ist vorzuziehen, da der größte Teil der komplexen Konfiguration nur einmal auf der Serverseite von einem erfahrenen Administrator und nicht einzeln auf einer Clientseite von (möglicherweise) unerfahrenen Benutzern vorgenommen wird.

Im passiven Modus sendet der Client über die Steuerverbindung einen PASVBefehl an den Server und empfängt dann eine Server-IP-Adresse und eine Server-Portnummer vom Server, über die der Client dann eine Datenverbindung zur Server-IP-Adresse und zum Server herstellt Portnummer empfangen.

Netzwerkkonfiguration für den passiven Modus

Im passiven Modus liegt der größte Teil der Konfigurationslast auf der Serverseite. Der Serveradministrator sollte den Server wie unten beschrieben einrichten.

Die Firewall und NAT auf der FTP-Serverseite müssen so konfiguriert werden, dass nicht nur die eingehenden Verbindungen am FTP-Port 21 zugelassen / weitergeleitet werden, sondern auch eine Reihe von Ports für die eingehenden Datenverbindungen. In der Regel verfügt die FTP-Serversoftware über eine Konfigurationsoption zum Einrichten einer Reihe von Ports, die der Server verwendet. Und der gleiche Bereich muss auf der Firewall / NAT geöffnet / geroutet werden.

Wenn sich der FTP-Server hinter einem NAT befindet, muss er seine externe IP-Adresse kennen, damit er sie dem Client als Antwort auf einen PASVBefehl zur Verfügung stellen kann.

Netzwerkkonfiguration für den aktiven Modus

Im aktiven Modus liegt der größte Teil der Konfigurationslast auf der Clientseite.

Die Firewall (z. B. Windows-Firewall) und NAT (z. B. ADSL-Modem-Routing-Regeln) auf der Clientseite müssen so konfiguriert werden, dass eine Reihe von Ports für die eingehenden Datenverbindungen zugelassen / weitergeleitet werden. Um die Ports in Windows zu öffnen, gehen Sie zu Systemsteuerung> System und Sicherheit> Windows-Firewall> Erweiterte Einstellungen> Eingehende Regeln> Neue Regel . Informationen zum Weiterleiten der Ports auf dem NAT (falls vorhanden) finden Sie in der Dokumentation.

Wenn sich in Ihrem Netzwerk NAT befindet, muss der FTP-Client seine externe IP-Adresse kennen, die WinSCP dem FTP-Server mithilfe eines PORTBefehls bereitstellen muss . Damit der Server eine korrekte Verbindung zum Client herstellen kann, um die Datenverbindung zu öffnen. Einige FTP-Clients können die externe IP-Adresse automatisch erkennen, andere müssen manuell konfiguriert werden.

Intelligente Firewalls / NATs

Einige Firewalls / NATs versuchen, Datenports automatisch zu öffnen / schließen, indem sie die FTP-Steuerverbindung überprüfen und / oder die IP-Adressen der Datenverbindung im Steuerverbindungsverkehr übersetzen.

Bei einer solchen Firewall / NAT ist die obige Konfiguration für ein einfaches unverschlüsseltes FTP nicht erforderlich. Dies kann jedoch nicht mit FTPS funktionieren, da der Steuerungsverbindungsverkehr verschlüsselt ist und die Firewall / NAT ihn weder überprüfen noch ändern kann.

Martin Prikryl
quelle
11

Aktiver Modus: -Server initiiert die Verbindung.

Passiver Modus: -client initiiert die Verbindung.

Saeed Aliakbari
quelle
1

Aktiver Modus - Der Client gibt einen PORT-Befehl an den Server aus, der signalisiert, dass er "aktiv" eine IP- und Portnummer zum Öffnen der Datenverbindung zum Client bereitstellt.

Passiver Modus - Der Client gibt einen PASV-Befehl aus, um anzugeben, dass er "passiv" auf die Eingabe einer IP- und Portnummer durch den Server wartet. Anschließend erstellt der Client eine Datenverbindung zum Server.

Es gibt viele gute Antworten oben, aber dieser Blog-Beitrag enthält einige hilfreiche Grafiken und gibt eine ziemlich solide Erklärung: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -passive-ftp /

DaveW2122
quelle