Windows-Firewall für FTP konfigurieren


    Tags: , ,

    Konfiguration von Active und Passive FTP in FilezillaDas File Transfer Protocol (FTP) stellt für Firewall-Admins eine besondere Herausforderung dar, weil es für die Kommunikation zwischen Client und Server zwei verschiedene Betriebsmodi kennt und stets mehrere Ports benötigt. Diese stehen für den Datentransfer nicht von vorneherein fest, sondern werden zwischen den Endpunkten jeweils ausgehandelt.

    Relativ einfach lässt sich eine Firewall für den Control Channel konfigurieren. Um diesen zu öffnen, baut der Client von einem lokalen Port > 1023 eine TCP-Verbindung zum Remote Port 21 auf dem Server auf. Um diese zuzulassen, benötigt man auf der Server-Seite eine Regel, die eingehende Anfragen auf Port 21 erlaubt.

    Firewall-Regel für Control Channel

    Nutzt man den FTP-Server der Internet Information Services (IIS), dann richtet dort bereits das Setup eine solche Regel ein. Sollte sie nicht existieren, dann kann man sie auf der Kommandozeile relativ einfach mit

    netsh advfirewall firewall add rule action=allow protocol=TCP dir=in localport=21

    erstellen.

    Der Control Channel dient jedoch nur der Übertragung von FTP-Befehlen. Man kann sich über diesen Kanal zwar am FTP-Server anmelden, aber den Inhalt von Verzeichnissen nicht sehen und keine Dateien übertragen. Diesem Zweck dient der Data Channel, für den eine separate Verbindung hergestellt werden muss.

    Variable Ports für den Data Channel

    Im Gegensatz zum Control Channel, der normalerweise den Well Known Port 21 verwendet, läuft der Dateitransfer über Ports, die der Client und der Server über den Control Channel aushandeln. Für diesen Zweck gibt es zwei Verfahren, active und passive.

    Die unkompliziertere Variante ist das passive FTP, weil dort alle Verbindungen vom Client initiiert werden. Nach der Etablierung des Control Channel erhält der Client vom Server den Port mitgeteilt, zu dem er sich verbinden soll. Für den Datenkanal werden dann auf beiden Seiten beliebige Ports oberhalb von 1023 verwendet.

    Zahl der Ports im FTP-Server eingrenzen

    Für die Konfiguration der Firewall würde das bedeuten, dass man auf dem Server in einem sehr großen Bereich alle Ports für eingehende Anfragen öffnen müsste. Der FTP-Server der IIS bietet aber die Möglichkeit, dieses Spektrum einzuengen so dass eine geringere Zahl an Ports für den Data Channel in Frage kommt. Diese Einstellung findet sich auf der Startseite des FTP-Servers unter FTP-Firewallunterstützung.

    Im IIS-Manager kann man für passives FTP den Bereich eingrenzen, aus dem der Server einen Port auswählt.

    Nun könnte man eine Regel erstellen, die Ausnahmen für alle vom FTP-Server beanspruchten Ports definiert. Die Windows-Firewall sieht für diesen Zweck aber ein alternatives Verfahren vor, weil sie für FTP einen Application Filter namens StatefulFTP enthält. Da es sich bei FTP um ein Klartextprotokoll handelt, kann die Firewall anhand der übertragenen Kommandos relativ einfach erkennen, welcher Port für den Data Channel benutzt werden soll und diesen gezielt öffnen.

    StatefulFTP konfigurieren

    Um zu überprüfen, ob der Application Filter aktiviert ist, gibt man

    netsh advfirewall show global statefulFTP

    ein. Im deutschen Windows soll man sich nicht von der schlechten Übersetzung täuschen lassen: Das Ergebnis Deaktivieren bedeutet inaktiv, StatefulFTP ist also ausgeschaltet. Umgekehrt steht Aktivieren für eingeschaltet. Sollte es notwendig sein, den Application Filter für FTP erst zu aktivieren, dann tut dies der Befehl

    netsh advfirewall set global StatefulFtp enable

    Generell wird empfohlen, passives FTP zu verwenden, speziell hinter einem NAT-Router. Setzt man dennoch Active FTP ein, etwa weil ein Client wie der Windows-eigene ftp.exe nur diese Variante beherrscht, dann muss man zusätzliche Maßnahmen ergreifen.

    Zusätzliche Ausnahmen für Active FTP

    Diese sind notwendig, weil der Client nach dem anfänglichen Verbindungsaufbau über Port 21 dem Server mitteilt, auf welchem lokalen Port er den Data Channel etablieren möchte. Daraufhin initiiert der Server die Kommunikation von seinem lokalen Port 20 mit dem vom Client vorgeschlagenen Port.

    Aufgrund dieses Ablaufs muss man dafür sorgen, dass die Firewall am Server eine ausgehende TCP-Verbindung auf Port 20 zulässt. Im Fall der IIS wird auch diese Regel bei der Installation erstellt, aber nicht aktiviert.

    Die automatisch erzeugten Ausnahmen für Clients bei Active FTP schießen über das Ziel hinaus.

    Auf dem Client muss man dafür sorgen, dass die vom Server initiierte Kommunikation nicht von der Firewall geblockt wird. Gibt es keine entsprechende Ausnahme, dann wird dem Benutzer ein Dialog angezeigt, mit dessen Bestätigung er Regeln für den betreffenden Client erzeugt. Sie gelten allerdings für sämtliche lokale und entfernte Ports und decken neben TCP auch UDP ab. Da FTP nur TCP verwendet, kann man die UDP-Regel löschen und bei Bedarf jene für TCP auf lokale Ports > 1023 und den Remote-Port 20 eingrenzen.

    9 Kommentare

    Bild von Mathias Judersleben
    13. August 2015 - 10:58

    Hallo Wolfgang und Kollegen, oder auch andere Leser,
    folgendes Problem ich habe Win 10, IIS 10.0 Express und habe seit Tagen das Problem das ich auf meinem Ftp Server beim Hoster nicht mehr drauf komme!
    Folgendes habe ich probiert!
    Regel ind der Firewall hinzugefügt
    In der Systemsteurung unter Programme und Windows Features, ftp Dienste aktiviert
    Das einzigste Programm was geht ist NetDrive alle anderen wie FireFtp, Winscp, Filezilla brechen nach 20 Sekunden die Verbindung ab!
    Ein Portscanner hat ergeben das Port 20 und 21 nicht frei sind

    Bin echt verzweifelt bitte helft mit!!!

    Bild von Marcel Küppers
    13. August 2015 - 11:27

    Hi Mathias,

    by the way, hast Du mal einen Telnet auf die 21 versucht? Was kommt dabei raus? Und: Gibt es Virenscanner mit Portfiltern aka McAfee VirusScan Enterprise?

    Bild von Mathias Judersleben
    13. August 2015 - 12:37

    Hallo Marcel,
    erstmal danke für deine Antwort! Hab das mal in die CMD mit Adminrechten eingegeben und das witzige dabei ist C:\Windows\system32>telnet online-blogger.de 21
    Der Befehl "telnet" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.
    Komisch oder das problem hatte ich aber auch schon bei Windows 8.1 bis 8 ging es noch!
    Antiviren technisch mach ich mir da keine Sorgen AVAST Free oder?

    Gruß Mathias

    Bild von Wolfgang Sommergut
    13. August 2015 - 12:47

    Ach komm Mathias, wie man den telnet-Client in Windows hinzufügt, das solltest du selbst herausfinden können!

    Bild von Mathias Judersleben
    14. August 2015 - 6:34

    Ja Wolfgang ;) so wie man Hyper V und den ganzen Spaß installiert! Also no Problem....

    Bild von Marcel Küppers
    13. August 2015 - 12:49

    Hey Mathias,

    Du musst den Telnet Client nachinstallieren lassen. Das kannst Du über Programme und Features => Windows Features aktivieren machen.

    Ich bin jetzt nicht so auf der Höhe mit den Free-Tools, aber auch diese haben mittlerweile "All-in-one".

    Prüfe allerdings erstmal die Basics und das heisst nativ Telnet auf die 21.

    Schöne Grüße
    Marcel

    Bild von Mathias Judersleben
    14. August 2015 - 6:32

    So wie es aus sieht ist es wohl mein Kabelanbieter! Hab jetzt folgende Rechner im Netzwerk ausprobiert ohne Erfolg, dann einen aus einem anderen Netzwerk und siehe da es geht ohne Problem....liegt wohl an der Primacom wir dürfen gespannt sein!

    Bild von Marcel Küppers
    14. August 2015 - 8:38

    Eine Rückmeldung zum Telnet sieht anders aus ;) trotzdem viel Erfolg.

    Bild von Mathias Judersleben
    14. August 2015 - 22:44

    Hallo liebe Kollegen also es lag nicht am IIS! Sondern wirklich am Anbieter.Support von Primacom:
    Nach Überprüfung kann ich Ihnen mitteilen, dass Ihrem Anschluss eine Private IP zugeteilt wurde. Da im Privaten Adressbereich der Anschluss nicht direkt erreichbar ist, sind Programme die eine Direkte Zuordnung benötigen niht mehr verwendbar. Ich habe daher den Anschluss so eingestellt das vorrangig eine öffentliche IP bezogen wird.

    Vielen Dank für euren Beistand vielleicht schaut ihr mal bei und vorbei. www.online-blogger.de Online Blogger der Technik Blog