FTP-Passiv-Portbereich-Prüfer
Prüfen Sie, ob der Portbereich für den Passivmodus Ihres FTP-Servers offen und durch Firewalls erreichbar ist. Unverzichtbar, um Fehler wie „unable to open data connection“ einzugrenzen.
Was ist der Passivmodus?
Im FTP-Passivmodus (PASV) öffnet der Server für die Datenübertragung einen zufälligen Port mit hoher Nummer und teilt dem Client mit, mit welchem Port er sich verbinden soll. Blockiert eine Firewall diese Ports, schlagen Dateiübertragungen fehl, obwohl die Steuerverbindung auf Port 21 einwandfrei funktioniert.
Gängige passive Portbereiche
| Bereich | Verwendet von |
|---|---|
| 49152–65535 | Dynamischer, kurzlebiger Portbereich der IANA (Standard auf vielen Servern) |
| 40000–40100 | Häufiger eigener Bereich (cPanel, Plesk) |
| 30000–31000 | Häufiger eigener Bereich (Standard bei FileZilla Server) |
Aktiver und passiver Modus im Vergleich
FTP arbeitet mit zwei Verbindungen: einer Steuerverbindung auf Port 21 für Befehle und einer separaten Datenverbindung für jede Dateiübertragung und jede Verzeichnisauflistung. Der Modus legt fest, welche Seite diese zweite Verbindung aufbaut.
| Aktiver Modus (PORT) | Passiver Modus (PASV) | |
|---|---|---|
| Wer baut die Datenverbindung auf | Der Server, zurück zum Client | Der Client, zum Server |
| Was der Client sendet | PORT (oder EPRT) mit eigener Adresse und eigenem Port | PASV (oder EPSV) |
| Was erreichbar sein muss | Ein Port auf dem Client - den Heimrouter und Firmen-Firewalls blockieren | Der passive Portbereich des Servers |
| Wer ihn verwendet | Das in Windows eingebaute ftp.exe, alte Skripte | Fast jeder moderne Client, standardmäßig |
Der Passivmodus braucht nur ausgehende Verbindungen vom Client. Deshalb funktioniert er hinter NAT, und deshalb nutzen moderne Clients ihn standardmäßig. Die Arbeit verlagert sich auf den Server: Seine Firewall muss Clients im gesamten passiven Portbereich hereinlassen, nicht nur auf Port 21.
Die 227-Antwort lesen
Der Server beantwortet PASV mit sechs Zahlen, zum Beispiel 227 Entering Passive Mode (203,0,113,10,195,80). Die ersten vier sind die IP-Adresse, mit der sich der Client verbinden soll. Die letzten beiden ergeben den Port: 195 x 256 + 80 = 50000. Zwei Dinge gehen dabei häufig schief:
- Der Port liegt außerhalb des Bereichs, den die Firewall erlaubt. Stellen Sie den passiven Bereich des Servers auf den Bereich ein, den Sie geöffnet haben, oder öffnen Sie den Bereich, den der Server tatsächlich verwendet.
- Die Adresse ist eine private, etwa 192.168.1.10, weil der Server hinter NAT steht und seine interne Adresse ankündigt. Clients hängen dann bei jeder Verzeichnisauflistung. Teilen Sie dem Server mit den Einstellungen unten seine öffentliche Adresse mit; manche Clients umgehen das Problem, indem sie die Adresse des Servers wiederverwenden, aber die Lösung gehört auf den Server.
Mit EPSV lautet die Antwort 229 Entering Extended Passive Mode (|||50000|): nur der Port, keine Adresse, damit entfällt das Problem mit der privaten Adresse. Der Port muss trotzdem offen sein.
Den passiven Bereich auf gängigen Servern einstellen
- vsftpd - in vsftpd.conf:
pasv_min_port=40000,pasv_max_port=40100undpasv_addressmit der öffentlichen IP, wenn der Server hinter NAT steht. - ProFTPD -
PassivePorts 40000 40100, dazuMasqueradeAddressfür die öffentliche Adresse. - Pure-FTPd -
PassivePortRange 40000 40100undForcePassiveIP. - FileZilla Server - seine Einstellungen für den Passivmodus nehmen einen eigenen Portbereich und die öffentliche IP auf, die der Server melden soll.
- IIS - auf Serverebene unter „FTP-Firewallunterstützung“ (FTP Firewall Support): den Portbereich für den Datenkanal und die externe IP-Adresse der Firewall. Unter Umständen müssen Sie den FTP-Dienst neu starten, damit ein neuer Bereich greift.
Öffnen Sie dann denselben Bereich für TCP überall vor dem Server - in der Firewall des Betriebssystems, in einer Cloud-Sicherheitsgruppe, in der Portweiterleitung des Routers - und prüfen Sie mit dem Checker oben einige Ports daraus.
So lesen Sie das Ergebnis
Offen heißt, dass eine TCP-Verbindung zu diesem Port aus dem Internet angenommen wurde; unterwegs blockiert also nichts. Keine Antwort bedeutet meist, dass eine Firewall den Versuch stillschweigend verworfen hat. Geschlossen heißt, dass etwas mit einer Ablehnung geantwortet hat - oft der Server selbst, denn viele FTP-Server lauschen auf einem passiven Port nur einen Moment lang, nachdem ein Client PASV gesendet hat.
Auf einem Server ohne laufende Übertragung sind geschlossene Ports im Bereich also normal; ein ganzer Bereich ohne Antwort ist das eigentliche Warnsignal. Den endgültigen Beweis liefert eine Verzeichnisauflistung im Passivmodus mit einem echten Client: Klappt die Anmeldung und hängt danach die Auflistung, wird die Datenverbindung blockiert. Der FTP-Verbindungstester prüft die erste Hälfte - dass der Server antwortet und Ihre Anmeldung annimmt.