Welche Firewall-Ports muss ich öffnen, wenn ich FTPS verwende?

33

Ich muss auf einen FTPS-Server (vsftpd) auf der Site eines Anbieters zugreifen. Der Anbieter hat eine Firewall vor dem FTP-Server. Ich habe eine Firewall vor meinem FTPS-Client.

Ich verstehe, dass die Ports 990, 991 und 989 für die Verkehrssteuerung geöffnet werden müssen.

Ich habe ein paar Fragen:

  1. Sollten diese Ports aus Sicht der Firewall des Herstellers sowohl für eingehenden als auch für ausgehenden Datenverkehr geöffnet werden?
  2. Was ist mit Ports für den DATA-Kanal?
  3. Muss ich alle Ports über 1000 öffnen?
  4. Sollte ich das sowohl für eingehenden als auch für ausgehenden Datenverkehr tun?
Tim
quelle

Antworten:

19

Mein Verständnis von FTP über SSL (ftps) ist, dass es mit Firewalls und NAT nicht gut funktioniert. In einer normalen FTP-Sitzung werden die Informationen zu Datenverbindungen von der Firewall gelesen und für NAT geändert, damit die Firewall die erforderlichen Ports dynamisch öffnen kann. Wenn diese Informationen durch SSL geschützt sind, kann die Firewall sie nicht lesen oder ändern.

Die Verwendung von SFTP oder scp erleichtert die Arbeit des Netzwerkadministrators erheblich - alles geschieht auf dem Port 22 des Servers, und die Transaktion folgt dem normalen Client / Server-Modell.

Eine Sache, die nicht erwähnt wird, ist, ob Ihre Firewall NAT ausführt oder nicht und ob es sich um statisches NAT oder dynamisches NAT handelt. Wenn Ihr Clientcomputer eine statische Adresse hat oder sich in einem statischen NAT befindet, müssen Sie möglicherweise keine Firewall-Änderungen vornehmen, sofern Sie den gesamten ausgehenden Datenverkehr zulassen und der Server nur im passiven Modus (PASV) arbeitet.

Um genau zu wissen, welche Ports Sie öffnen müssen, müssen Sie entweder:

a) Sprechen Sie mit dem Anbieter, um Einzelheiten zur Konfiguration seines Systems zu erhalten.

b) Verwenden Sie einen Protokollanalysator wie tcpdump oder wireshark, um den Datenverkehr sowohl außerhalb Ihrer Firewall als auch innerhalb Ihrer Firewall zu überwachen

Sie müssen herausfinden, welcher Port die Steuerverbindung ist. Sie listen 3 auf, was mir merkwürdig vorkommt. Angenommen, der Server arbeitet nur im PASV-Modus (passiv), müssen Sie herausfinden, wie der Server für die Zuweisung von DATA-Ports konfiguriert ist. Haben sie den DATA-Kanal für einen einzelnen eingehenden Port gesperrt? Haben sie den DATA-Kanal auf einen kleinen Bereich oder Ports beschränkt?

Mit diesen Antworten können Sie mit der Konfiguration Ihrer Firewall beginnen.

pcapademic
quelle
3
Passiver Modus FTPS würde einen Kontrollport über Port 1024 verwenden und daher mit einer Firewall besser funktionieren als mit nicht passiven. Der Client teilt Port 21 mit, welcher obere Port geöffnet werden soll, und Sie können den Client so konfigurieren, dass er sagt, dass die Steuerung auf Port 2000 oder 2001 liegt. Anschließend öffnet der Server den ausgehenden Port 2000 oder 2001. Die meisten FTP-Clients unterstützen das Definieren eines bestimmten Bereichs von Ports für "Steuerung" aktiviert sein und das macht Firewall-Definitionen einfach.
Djangofan
27

Ich glaube, die Ports um 990 waren für implizites SSL, was eine alte, nicht standardmäßige Methode für FTP / SSL war. Der "richtige" Weg ist heutzutage explizites SSL, was bedeutet, dass Sie immer noch eine Verbindung zu Port 21 herstellen und dann SSL aushandeln, bevor Sie Ihre Goodies senden. Um Verbindungen durch eine Firewall zu unterstützen, müssen Sie den PASV-Modus verwenden und die zu verwendenden Datenports fest einstellen.

Ich glaube, Sie benötigen mindestens einen Port pro Datenverbindung, die Sie unterstützen möchten. Wenn es nur Sie sind, ist es wahrscheinlich in Ordnung, nur ein paar zusätzliche Ports zu öffnen. Speziell für mich verwende ich 21000-21010.

In vsftpd.conf habe ich diese zwei Zeilen (zusammen mit all den anderen Dingen, die SSL unterstützen):

pasv_min_port=21000

pasv_max_port=21010

Auf meiner Firewall habe ich eine öffentliche statische IP mit eins zu eins / statischem NAT zur internen IP und nur TCP-Ports 21, 21000-21010 geöffnet.

David
quelle
10

Ich weiß jedoch, dass dies ein extrem alter Thread ist.

Bitte beachten Sie, dass sich SFTP vollständig von FTPS unterscheidet. (SSH vs SSL)

FTPS-Arbeit auf zwei Arten. Explizit und implizit. Explicit ist weniger sicher, da nach dem ersten Handshake die Verschlüsselung während der Datenübertragung übersprungen wird [wenn die Datenverschlüsselung auf der Serverseite mit PROT P konfiguriert werden kann], während Implicit die Verschlüsselung der Daten auch nach dem Handshake beibehält. Der standardmäßige explizite FTPS-Port ist 21. Der standardmäßige implizite Port ist 990 (nach dem Handshake wird zur Datenübertragung automatisch auf 989 umgeschaltet, sofern nicht anders konfiguriert). Während Port 21 im Allgemeinen als EXPLICIT FTPS und 990 als IMPLICIT FTPS akzeptiert wird, führt in Wirklichkeit der von Ihnen konfigurierte Port mit Ausnahme von 990/989 zu EXPLICIT FTPS, während NUR 990/989 als IMPLICIT FTPS akzeptiert wird.

Um Ihre Frage zu beantworten: - Abhängig von der FTPS-Serverkonfiguration müssen Sie Port 21 oder 990/989 öffnen. Zur Sicherheit sollten Sie sich jedoch an den FTPS-Server-Administrator wenden und nach dem Weg fragen. Denken Sie auch daran, dass Sie im passiven Modus wie bei jeder anderen FTP-Software zusätzliche Ports (TCP / UDP) öffnen müssen, in der Regel zwischen 64000 und 65000.

Marin
quelle
2

Grundsätzlich ist ftps fast nutzlos, da Sie peinliche Anfragen an Firewall-Administratoren stellen müssen. Der Rat, Ports auf 10 zu beschränken, ist gut. Vielmehr wird es erbärmlich.

SFTP ist in der Theorie viel besser. Sie benötigen jedoch einen funktionsfähigen SFTP-Server, z. B. einen, der Clients auf ihr eigenes Basisverzeichnis beschränkt.

Berücksichtigen Sie je nach Anwendung HTTPS. Ein Datei-Upload ist sehr einfach und ein Download natürlich auch. Wenn Sie ohnehin FTP-Skripte erstellen, ist es wahrscheinlich insgesamt einfacher, ein Hochladen von HTTPS-Dateien per Skript durchzuführen.

Automatisches FTP ist ein Zeichen für ein Designproblem. Ich bemerkte dies, als ich mit insgesamt etwa einem Dutzend Anbietern zu tun hatte, die einen Ort 'benötigten', an dem ich automatisiertes FTP (für SEHR wichtige Dinge) betrieb, und als ich Dutzende von Kunden dazu veranlasste, dies mit demselben Shop zu tun (ein Designfehler für etwa 20 verschiedene Verwendungen, die ich gesehen habe). Es war einfach, die meisten App-Leute von der Verwendung von HTTPS zu überzeugen (normalerweise sagten sie bei der Erwähnung: "Warten Sie, es gibt keinen Grund, warum wir sie nicht einfach mit HTTPS von dem Webserver abrufen lassen, auf dem wir ihnen bereits Daten bereitstellen." ), mit Ausnahme einiger Antworten wie "Nun, wir haben bereits diese Skripte, die zu funktionieren scheinen, und niemand in unserem Team kann wirklich gut mit Skripten umgehen, so dass wir wirklich keine Änderungen vornehmen können" (ein Team von 5-10 Programmierern,

carlito
quelle
1

Der Anbieter kann möglicherweise einen engen Portbereich für die DATA-Verbindungsports konfigurieren, sofern dies noch nicht geschehen ist. Dann können Sie den gleichen Bereich an Ihrem Ende für die Hosts öffnen, die einen solchen Zugriff benötigen. Der PASV-Modus sollte verwendet werden.

Chris W. Rea
quelle
-1

Port 22 ist Standard, da der SSH-Dämon unter UNIX über ein SFTP-Modul verfügt, das Sie aktivieren können, um einen expliziten SFTP-Server zu erstellen. Wenn Sie einen impliziten FTP-Server mit Filezilla ausführen möchten, können Sie ihn an jedem gewünschten Port ausführen, aber es gibt einen Haken: Wenn Sie den FileZilla-Client verwenden, müssen Sie die FTP-Site-URL als ftps: //mysite.com: 8086 angeben anstatt den Port in das separate Portfeld zu stellen, das der FileZilla-Client bereitstellt.

Für die explizite Option benötigen Sie nur EINEN Port: 22. Für die implizite Option muss nur die Firewall für den Steuerport 8086 geöffnet sein (der intern an Port 21 auf Ihrem FileZilla-Server weiterleitet).

Djangofan
quelle
6
Die Frage stellte sich nach FTPS, nicht nach SFTP.
Michael Lang
-7

wenn ftps die gleiche wie SFTP , dann müssen Sie nur den Zugriff auf Port 22 auf der Hersteller-Website zu können.

Sie sollten Ihre Firewall so konfigurieren, dass Port 22 ausgehend und der damit verbundene eingehende Datenverkehr zugelassen wird . Dies ermöglicht die Kommunikation über jeden eingehenden Port, der mit der anfänglichen ausgehenden Verbindung über Port 22 zusammenhängt.

Brent
quelle
11
SFTP ist nicht dasselbe wie ftps ( codeguru.com/csharp/.net/net_general/internet/article.php/… ). SFTP ist das mit SSH verwendete Dateiübertragungsprotokoll. FTPS ist FTP mit SSL, FTPS startet eine neue DATA-Verbindung an einem neuen zufälligen Port, was die Bereitstellung hinter Firewalls erschwert, aber ich kann die Firewall in dieser Situation nicht entfernen.
2
Dann bitte ich um Entschuldigung. Ich werde diesen Beitrag jedoch verlassen, falls andere die gleiche Verwirrung haben.
Brent
Es ist eine sehr häufige Verwirrung. Auf der Firewall-Seite ist sftp viel einfacher zuzulassen, mit der Ausnahme, dass es auf einem Protokoll basiert, das für den Login-Zugriff vorgesehen ist. Für unabhängige Sicherheitsgruppen fahrlässig zuzulassen, ohne nennenswerte unabhängige Validierung. Für Systemadministratoren ist es schwierig, einen angemessenen SFTP-Server für nicht vertrauenswürdige Clients zu finden bzw. zu konfigurieren. Jede Diskussion über SFTP oder FTP muss das andere Protokoll erwähnen, da Verwirrung SO häufig ist.
carlito