FTP über pfsense



  • Hallo zusammen,

    es besteht folgendes Problem.

    Über eine pfsense soll FTP benutzt werden. Auf der pfsense ist squid eingerichtet. Für den FTP Zugang habe ich eine NAT Regel erstellt.
    Die Kommunikation über den Squid funktioniert einwandfrei.
    Allerdings beim Versuch, eine FTP Verbindung aufzubauen, komme ich an die Grenzen. Der sogenannte Handshake für die Aushandlung der User und Passwörter funktioniert. Das geht alles über Port 21. Sobald aber ein Datenstrom also ein Dateitransfer durchgeführt werden soll, kommt das Problem. An dieser Stelle wird eine weitere Session eröffnet, welche natürlich nciht über den Port 21 geht. Da meine Firewall nur von innen nach außen Port 21 durchlässt, und dies eine neue Session ist, klappt das nicht.
    Probiert habe ich, den FTP Client Proxy zu benutzen. Anscheinend habe ich diesen nicht richtig konfiguriert. Es gab keine Änderung der Situation.
    Ich habe den proxy enabled, das lokale Interface angegeben und "Early Firewall Rule" aktiviert.
    Da ich zu dem Proxy nicht viel Dokumentation finden kann und auch das log nicht finde, was muss ich möglicherweise noch an Firewall regeln erstellen?

    Vielleicht bin ich auch auf dem Holzweg…

    Über eine Antwort würde ich mich sehr freuen.

    Vielen Dank.

    Tino



  • Aktives FTP

    Beim aktiven FTP (auch „Active Mode“) öffnet der Client einen zufälligen Port und teilt dem Server diesen sowie die eigene IP-Adresse mittels des PORT- oder des EPRT-Kommandos mit. Dies ist typischerweise ein Port des Clients, der jenseits von 1023 liegt, kann aber auch ein anderer Server sein, der seinerseits in den Passive Mode geschaltet wurde, also auf eine Verbindung wartet (so genanntes FXP). Die Datenübertragung auf der Server-Seite erfolgt dabei über Port 20. Die Kommunikation mit Befehlen erfolgt ausschließlich auf dem Control Port. Man spricht auch von der Steuerung „Out of Band“. Somit bleibt es möglich, dass während der Datenübertragung die Partner noch immer miteinander kommunizieren können.

    Passives FTP

    Beim passiven FTP (auch „Passive Mode“) sendet der Client ein PASV- oder ein EPSV-Kommando, der Server öffnet einen Port und übermittelt diesen mitsamt IP-Adresse an den Client. Hier wird auf der Client-Seite ein Port jenseits 1023 verwendet und auf der Server-Seite der vorher an den Client übermittelte Port. Diese Technik wird eingesetzt, wenn der Server keine Verbindung zum Client aufbauen kann. Dies ist beispielsweise der Fall, wenn der Client sich hinter einem Router befindet, der die Adresse des Clients mittels NAT umschreibt, oder wenn eine Firewall das Netzwerk des Clients vor Zugriffen von außen abschirmt.

    Beim aktiven FTP (als Client, ausgehend) muß Port 20 in der Firewall von außen freigegeben werden, sonst kommt vom FTP-Server keine Datenverbindung zustande. Ist der FTP-Server hinter pfSense, muß Port 21 eingehend und Port 20 ausgehend freigeschaltet werden.

    Beim passiven FTP als Client ist keine weitere Konfiguration nötig. Liegt der FTP-Server hinter pfSense, muß sowohl Port 21 als auch ein als "Passive Range" im FTP-Server vorgegebener Portbereich von außen freigegeben werden.



  • Hallo,

    vielen Dank für die ausführliche Beschreibung von aktiven und passivem FTP.

    Ich hatte einen kleinen Fehler bei einer Regel mit policy based routing…
    Jetzt funktioniert es.

    Vielen Dank.

    Viele Grüße
    Tino



  • @tino.kurth:

    vielen Dank für die ausführliche Beschreibung von aktiven und passivem FTP.

    Die hättest du auch von Wikipedia bekommen: https://de.wikipedia.org/wiki/File_Transfer_Protocol
    :)

    Wenn man Texte aus anderen Quellen kopiert, sollten diese auch genannt werden. Das habe ich hiermit nachgeholt.  ;)

    Grüße



  • Hallo oder moin moin ;)

    ich stehe auch vor der "Herausforderung" dass ich mit einem FTP Client hinter der pfSense auf einen FTP-Server zugreifen möchte.
    Auf dem Client (Totalcommander bzw. FileZilla) habe ich jeweils passiver Mode eingestellt.
    Der anfängliche Verbindungsaufbau scheint auch zu gehen, bis das Verzeichnis aufgelistet wird.

    Status: Verbindung hergestellt, warte auf Willkommensnachricht…
    Status: Initialisiere TLS...
    Status: Überprüfe Zertifikat...
    Status: TLS-Verbindung hergestellt.
    Status: Angemeldet
    Status: Empfange Verzeichnisinhalt...
    Befehl: PWD
    Antwort: 257 "/" is the current directory
    Befehl: TYPE I
    Antwort: 200 Type set to I
    Befehl: PASV
    Antwort: 227 Entering Passive Mode (81,169,167,84,131,109).
    Befehl: MLSD
    Fehler: Die Datenverbindung konnte nicht hergestellt werden: ECONNREFUSED - Verbindung durch Server verweigert

    folgendes finde ich als "Block" in den Firewall-Logs:

    Apr 10 09:08:10 WAN 81.169.167.84:20 46.x.x.x:51986 TCP:S
    Apr 10 09:08:08 WAN 81.x.x.x:20         46.x.x.x:51986 TCP:S
    Apr 10 09:08:07 WAN 81.x.x.x:20         46.x.x.x:51986 TCP:S
    Apr 10 09:08:07 LAN 10.0.0.111:51985 81.x.x.x:55286 TCP:S
    Apr 10 09:08:06 LAN 10.0.0.111:51985 81.x.x.x:55286 TCP:S

    81.x.x.x ist der FTP Server
    46.x.x.x ist die IP meiner pfSense am WAN IF
    10.0.0.111 ist der Client im LAN

    Ich habe ausgehend Port 20 und 21 sogar als UDP/TCP freigegeben.
    Was mache ich falsch???  :o >:( :( :-[

    Vielen Dank.
    HilFi


Log in to reply