Contents:

  • Introduction
  • The Basics
  • Active FTP
  • Active FTP Example
  • Passive FTP
  • Passive FTP Example
  • Other Notes
  • Summary
  • Appendix 1: Configuration of Common FTP Servers
  • Appendix 2: Firewall Konfigurationshandbuch

Einführung

Eine der am häufigsten gestellten Fragen beim Umgang mit Firewalls undandere Probleme mit der Internetverbindung sind der Unterschied zwischen aktivem und passivem FTP und wie man eines oder beide am besten unterstützt., Hoffentlich wird der folgende Text helfen, einige theconfusion über die Unterstützung von FTP in einer Firewall-Umgebung zu klären.

Dies ist möglicherweise nicht die endgültige Erklärung, wie der Titel behauptet, aber ich habe genug gutes Feedback gehört und dieses Dokument an genügend Stellen verlinkt gesehen, um zu wissen, dass einige Leute es nützlich gefunden haben. Ich suche immer nach Möglichkeiten, die Dinge zu verbessern, und wenn Sie etwas finden, das nicht ganz klar ist oder mehr Erklärung benötigt, lassen Sie es mich bitte wissen!, Aktuelle Ergänzungen zu diesem Dokument enthalten Beispiele für aktive und passive Befehlszeilen-FTP-Sitzungen. Diese Sitzungsbeispiele sollten dazu beitragen, die Dinge etwas klarer zu machen. Sie bieten auch ein schönes Bild in das, was geht hinter den Kulissen während einer FTP-Sitzung. Nun zu den Informationen…

Die Grundlagen

FTP ist ein TCP-basierter Dienst ausschließlich. Es gibt keine UDP-Komponente toFTP. FTP ist ein ungewöhnlicher Dienst, da es zwei Ports verwendet, einen Datenport und einen Befehlsport (auch als Steuerport bezeichnet)., Traditionell sind dies Port 21 für den Befehlsport und Port 20 für den Dataport. Die Verwirrung beginnt jedoch, wenn wir feststellen, dass abhängig von dieMode, Der Datenport ist nicht immer auf Port 20.

Active FTP

Im active mode FTP stellt der Client eine Verbindung von einem zufälligen unprivilegierten Port (N > 1023) zum Befehlsport des FTP-Servers, Port 21, her. Dann beginnt theclient mit dem Abhören von Port N+1 und sendet den FTP-Befehl PORTN+1 an den FTP-Server., Der Server stellt dann von seinem lokalen Datenport, Port 20, eine Verbindung zum angegebenen Datenport des Clients her.,21 an Ports > 1023 (Server antwortet auf den Steuerungsport von client)

  • FTP-Server-Port 20 an Ports > 1023 (Server initiiert eine Datenverbindung zum Datenport des Clients)
  • FTP-Server-Port 20 an Ports > 1023 (Client sendet ACKs an den Datenport des Servers)
  • Beim Ziehen erscheint die Verbindung wie folgt:

    In Schritt 1 kontaktiert der Befehlsport des Clients den Befehlsport des Servers und sendet den Befehl

    PORT 1027., Der Server sendet dann in Schritt 2 eine E-MAIL an den Befehlsport des Clients zurück. In Schritt 3 initiiert der Server eine Verbindung auf seinem lokalen Datenport zu dem Datenport, den der Client zuvor spezifiziert hat. Schließlich sendet der Client einen ACK zurück, wie in Schritt 4 gezeigt.

    Das Hauptproblem beim aktiven Modus FTP liegt tatsächlich auf der Clientseite. Der FTP-Client stellt nicht die tatsächliche Verbindung zum Datenport des Servers her-er teilt dem Server einfach mit, welchen Port er abhört, und der Server stellt eine Verbindung zum angegebenen Port des Clients her., Von theclient Seite Firewall scheint dies ein externes System zu sein, das eine Verbindung zu einem internen Client initiiert-etwas, das normalerweise blockiert wird.

    Active FTP Example

    Unten ist ein aktuelles Beispiel für eine aktive FTP-Sitzung. Die einzigen Dinge, die geändert wurden, sind die Servernamen, IP-Adressen und Benutzernamen. In diesem Beispiel wird eine FTP-Sitzung von testbox1.slacksite.com (192.168.150.80), eine Linux-Box, auf der der Standard-FTP – Befehlszeilenclient ausgeführt wird, um testbox2.slacksite.com (192.168.150.90), eine Linux-Box mit ProFTPD 1.2.2RC2., Das Debugging-Flag (-d) wird mit dem FTP-Client verwendet, um zu zeigen, was hinter den Kulissen vor sich geht. Alles in Rot ist die Debugging-Ausgabe, die die tatsächlichen FTP-Befehle anzeigt, die an den Server gesendet werden, und die Antworten, die von diesen Befehlen generiert werden. Die normale Serverausgabe wird schwarz und die Benutzereingabe fett dargestellt.

    Zu diesem Dialog gibt es einige interessante Dinge zu beachten. Beachten Sie, dass beim Ausgeben des Befehls PORT ein Port auf dem Client-System (192.168.150.80) anstelle des Servers angegeben wird., Wir werden das gegenteilige Verhalten sehen, wenn wir passives FTP verwenden. Während wir zu diesem Thema sind, eine kurze Anmerkung zum Format des Befehls PORT. Wie Sie im folgenden Beispiel sehen können, ist es als eine Reihe von sechs durch Kommas getrennten Zahlen formatiert. Die ersten vier Oktette sind die IP-Adresse, während die letzten beiden Oktette den Port umfassen, der für die Datenverbindung verwendet wird. Um den tatsächlichen Port zu finden, multiplizieren Sie das fünfte Oktett mit 256 und addieren Sie dann das sechste Oktett zur Summe. Somit ist im folgenden Beispiel die Portnummer( (14*256) + 178), oder 3762., Eine schnelle Überprüfung mit netstat sollte diese Informationen bestätigen.

    Passives FTP

    Um das Problem zu lösen, dass der Server die Verbindung initiiertder Client wurde eine andere Methode für FTP-Verbindungen entwickelt. Dies war bekannt als passiver Modus oder PASV, nachdem der Befehl von theclient verwendet wurde, um dem Server mitzuteilen, dass er sich im passiven Modus befindet.

    Im passiven FTP-Modus initiiert der Client beide Verbindungen zum Server und löst das Problem, dass Firewalls die eingehende Datenportverbindung zum Client vom Server filtern., Beim Öffnen einer FTP-Verbindung öffnet der Client lokal zwei zufällige, nicht privilegierte Ports (N > 1023 andN+1). Der erste Port kontaktiert den Server an Port 21, aber anstatt dann einen PORT Befehl auszustellen und dem Server zu erlauben, eine Verbindung zu seinem Datenport herzustellen, gibt der Client den Befehl PASVaus. Das Ergebnis ist, dass der Server dann einen randomunprivilegierten Port öffnet (P > 1023) und P als Antwort auf den Befehl PASV an den Client zurücksendet., Der client initiiert dann die Verbindung von portN+1 zu port P auf dem server, um Daten zu übertragen.,port)

  • FTP server ports > 1023 von überall (Client initiiert dataconnection zu zufälligen port angegeben durch server)
  • FTP server ports > 1023 zu remote ports > 1023 (Server sendsACKs (und daten) zu client daten port)
  • Beim Zeichnen sieht eine FTP-Verbindung im passiven Modus folgendermaßen aus:

    In Schritt 1 kontaktiert der Client den Server über den Befehlsport und gibt den BefehlPASVaus., Der Server antwortet dann in Schritt 2 mitPORT 2024und teilt dem Client mit, welchen Port er für die Datenverbindung abhört. In Schritt 3 initiiert der Client dann die Dataconnection von seinem Datenport zum angegebenen Serverdatenport. Schließlich sendet der Server in Schritt 4 einen ACK an den Datenport des Clients zurück.

    Während passiver Modus FTP löst viele der Probleme von der Client-Seite, es öffnet sich eine ganze Reihe von Problemen auf der Server-Seite. Das größte Problem ist die Notwendigkeit, jede Remoteverbindung zu hoch nummerierten Ports auf dem Server zuzulassen., Glücklicherweise viele FTP-Daemons, einschließlich der beliebten WU-ftpder Administrator kann eine Reihe von Ports angeben, die der FTP-Serverwird verwenden. Siehe Anhang 1 für weitere Informationen.

    Das zweite Problem betrifft die Unterstützung und Fehlerbehebung von Clients, die den passiven Modus unterstützen (oder nicht). Beispielsweise unterstützt das mit Solaris bereitgestellte FTP-Dienstprogramm command line passivemode nicht, sodass ein FTP-Client eines Drittanbieters wie ncftp erforderlich ist.
    HINWEIS: Dies ist nicht mehr der Fall-verwenden Sie die-p Option mit dem Solaris FTP-Client toenable passiven Modus!,

    Mit der massiven Popularität des World Wide Web bevorzugen viele MenschenVerwenden Sie ihren Webbrowser als FTP-Client. Die meisten Browser unterstützen nurpassive Modus beim Zugriff auf ftp: / / URLs. Dies kann entweder gut oder schlecht seinabhängig davon, wofür die Server und Firewalls konfiguriert sind.

    Passives FTP-Beispiel

    Unten ist ein aktuelles Beispiel für eine passive FTP-Sitzung. Die einzigen Dinge, die geändert wurden, sind die Servernamen, IP-Adressen und Benutzernamen. In diesem Beispiel wird eine FTP-Sitzung von testbox1.slacksite.com (192.168.150.,80), eine Linux-Box, auf der der Standard-FTP-Befehlszeilenclient ausgeführt wird, um testbox2.slacksite.com (192.168.150.90), eine Linux-Box mit ProFTPD 1.2.2RC2. Das Debugging-Flag (-d) wird mit dem FTP-Client verwendet, um zu zeigen, was hinter den Kulissen vor sich geht. Alles in Rot ist die Debugging-Ausgabe, die die tatsächlichen FTP-Befehle anzeigt, die an den Server gesendet werden, und die Antworten, die von diesen Befehlen generiert werden. Die normale Serverausgabe wird schwarz und die Benutzereingabe fett dargestellt.,

    Beachten Sie den Unterschied im Befehl PORT in diesem Beispiel im Gegensatz zum aktiven FTP-Beispiel. Hier sehen wir, dass ein Port auf dem Server (192.168.150.90) und nicht auf dem Client geöffnet wird. Siehe die Diskussion über das Format des Befehls PORT oben im Abschnitt Active FTP Example.,

    Weitere Hinweise

    Ein Leser, Maarten Sjouw, wies darauf hin, dass Active FTP nicht funktioniert, wenn es in Verbindung mit einem clientseitigen NAT-Gerät (Network Address Translation) verwendet wird, das nicht intelligent genug ist, um die IP-Adressinformationen in FTP-Paketen zu ändern.

    Zusammenfassung

    Die folgende Tabelle soll Administratoren helfen, sich daran zu erinnern, wie jeder FTP-Modus funktioniert:

    Eine kurze Zusammenfassung der Vor-und Nachteile von aktivem vs. passivem FTP ist ebenfalls in Ordnung:

    Aktives FTP ist vorteilhaft für den FTP-Serveradministrator, aber schädlich für den clientseitigen Administrator., Der FTP-Server versucht, Verbindungen zu zufälligen hohen Ports auf dem Client herzustellen, die mit ziemlicher Sicherheit von einer Firewall auf der Clientseite blockiert würden. Passive FTP ist vorteilhaft für den Client, aber schädlich für den FTP-Server Admin. Der Client stellt beide Verbindungen zum Server her, aber eine davon ist ein zufälliger hoher Port, der mit ziemlicher Sicherheit von einer Firewall auf der Serverseite blockiert wird.

    Zum Glück gibt es einen Kompromiss., Da Administratoren, auf denen FTP-Server ausgeführt werden, ihre Server für die größte Anzahl von Clients zugänglich machen müssen, müssen sie mit ziemlicher Sicherheit passives FTP unterstützen. Die Belichtung von High-Level-Ports auf dem Server kann minimiert werden, indem ein begrenzter Portbereich für den FTP-Server angegeben wird. Somit kann alles außer diesem Bereich von Ports auf der Serverseite ausgelöst werden. Dies beseitigt zwar nicht alle Risiken für den Server, verringert ihn jedoch enorm. Siehe Anhang 1 für weitere Informationen.,

    Eine ausgezeichnete Referenz darüber, wie verschiedene Internetprotokolle funktionieren und welche Probleme mit dem Firewall verbunden sind, finden Sie im Buch O ‚ Reilly Andassociates, Building Internet Firewalls, 2nd Ed, von BrentChapman und Elizabeth Zwicky.
    Hinweis 2012: Dieses Buch ist sehr alt und die darin enthaltenen Informationen können veraltet sein!

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.