FTP-Server (richtig) einrichten
Wenn man die gängigen Webseiten befragt, wird man erfahren, das ein FTP-Server die Ports 20 und 21 benutzt. Und das es bei einem Router bzw. einer Firewall genüge, den Port 21 freizugeben und auf den Rechner, auf dem der FTP-Server laufen soll, zu forwarden.
Ich will nicht sagen, das das völliger Schwachsinn ist - aber es ist leider nur ein kleiner Teil der Wahrheit. Denn wie jeder weiß, der dies einmal getestet hat: funktionieren wird’s so eher selten. Früher hat es sehr oft funktioniert, aber seit auch viele „normale“ User hinter einem Router/einer Firewall liegen, ist damit Schluß.
Um das Warum verstehen, und was man dagegen tun kann, benötigt man einen etwas tiefergehenden Einblick in die Abläufe eines FTP-Transfers:
Im ersten Schritt nimmt der Client mit dem Server auf Port 21 (oder welchen Port man auch immer im FTP-Server und im Client eingestellt hat) Kontakt auf. Dazu gehören neben der Anmeldung mit Usernamen/Passwort und der Überprüfung/Bestätigung, das der Server Resume-fähig ist, auch das Auskungeln der eigentlichen Datenverbindung. Der Port 21 ist nämlich ausschließlich für Kommandos da, der eigentliche Datentransfer läuft über einen anderen Port. Und da beginnen die Schwierigkeiten:
Es gibt zwei Möglichkeiten:
Beim aktiven FTP sagt der Client dem Server: Ich möchte die Daten auf dem Port x bekommen. x ist dabei ein ausgewürfelter Port zwischen 1024 und 65535. Daraufhin fängt der Server auf seinem Port 20 an, Daten (zuerst mal das Directory) an den gewünschten Port des Clients zu senden.
Sofern nun der Client hinter einem Router, einer Firewall oder einem Proxy-Server sitzt oder auch nur eine Software-Firewall installiert hat, werden diese Daten davon abprallen, weil es von diesen Geräten/Programmen als unerwünschte/unerwartete Verbindungsaufnahme aus dem Web gewertet werden wird. Sprich: es wird keine Verbindung zustande kommen.
Beim passiven FTP dagegen kündigt der Server dem Client an, auf welchen Port er die Daten zu senden wünscht. Der Client bestätigt die Empfangsbereitschaft durch das Senden einer kurzen Nachricht auf eben diesem vorgeschriebenen Port - womit er seiner Firewall/dem Router oder Proxy gleichzeitig klar macht, das Daten auf diesem Port von dem angesprochenen Server in den kommenden Minuten erwünscht sind und zu ihm weitergeleitet werden sollen.
Normalerweise sind auch dafür die Ports 1024-65535 vorgesehen, aber jede gute FTP-Server-Software lässt hier eine selber zu definierende Port-Range zu. Und das muss man auch unbedingt eingrenzen, denn genau diese Port-Range muss der geneigte Server-Betreiber wiederum in seinem Router forwarden, sonst wird es keine Verbindung geben. Klar, das man diese so klein wie irgendmöglich halten sollte, und möglichst nicht auf bekannte Ports irgendwelcher Trojaner legt!
Ausdrücklich, weil es da jede Menge Missinformation im Internet gibt:
Passives oder Aktives FTP hat nichts mit dem Datentransfer zu tun, es beeinflusst weder die Geschwindigkeit noch die Anmeldung. Es geht ausschließlich darum, welcher der beiden Rechner den Port für die Datenübertragung festlegt!
Dem Client ist das egal, der probiert im Normalfall erst mal aus, ob es mit passivem FTP klappt und benutzt aktives nur, wenn passiv vom Server abgelehnt wird.
Im Klartext: Aktives FTP ist für den Betreiber des Servers zwar sehr einfach einzurichten (Server installieren und Port 21 auf dem Router freigeben), aber für den Client wird dann kompliziert: Er müsste die entsprechenden Ports auf seinem Router freigeben, um zu einer Verbindung zu kommen.
Mal ganz davon abgesehen, das 90% aller User Deppen sind, denen ich das Einrichten eines Port-Forwardings gar nicht zumuten möchte, bleibt die Tatsache, das der Client einen beliebigen Port zwischen 1024 und 65535 auswürfelt. Wenn man die alle forwarden würde (und das müsste man!), könnte man auf seinen Router/seine Firewall auch gleich ganz verzichten - denn damit würden ja auch die ganzen Ports, über die sich Würmer und Trojaner fortpflanzen, wieder mit seinem Rechner verbunden. Alleine aus Sicherheitsgründen (nicht des Serverbetreibers, aber seiner Besucher) verbietet sich aktives FTP damit.
Passives FTP dagegen erfordert erst mal etwas Arbeit des Server-Betreibers: Man braucht zuallererst mal eine Server-Software, die sich auf passives FTP einstellen lässt - das kann bei weitem nicht jede! Definitiv funktionieren tut’s mit BulletProofFTP in der Version 2.3.1 - ältere Versionen können es nicht (alle).
Man muss dort seine Adresse eingeben (was wegen wechselnder IPs wieder nur mit einem DynDNS- oder NoIP-Account möglich ist) und die gewünschte Port-Range vorgeben und dann diese Port-Range im Router auf den Rechner mit dem FTP-Server forwarden.
Uns so geht’s im Einzelnen:
Software installieren (Administrator-Rechte nötig). Im Startmenü unter „Bullet Proof FTP Server“ den Unterordner „Administrative Tools“ und dort „Install Service“ starten. Damit startet der Server automatisch mit Windows. Dann muss man noch auf Laufwerk C: im Ordner Programme den Ordner des Programmes mit rechts anklicken und unter den Sicherheitseinstellungen den Benutzern Vollzugriff einräumen. BulletProof speichert in diesem Ordner seine Einstellungen ab - ohne diese Rechte einzuräumen läuft der Server nicht unter einem normalen Benutzer-Account.
Im BulletProof-Server muss man dann unter Einstellungen/Passive Mode den Passive Mode einschalten. Außerdem muss man dort die IP-Adresse des Servers angeben. Nicht die IP-Adresse im lokalen Netz, sondern die, unter der das gesammte Netz von Internet aus erreichbar ist. Sofern man von seinem Provider eine dynamische IP bekommt, die bei jeder Einwahl wechselt, muss man sich daher bei einem DynDNS-Provider wie no-ip.com oder dnydns.org eine entsprechende Adresse besorgen, also etwas wie: ich.no-ip.com oder ich.dyndns.org.
Nun, das muss man so oder so, da ja auch der Server als solcher unter ständig wechselnden IP-Adressen im Web steht. Erreichbar ist er dann unter
ftp://ich.dyndns.org
.
Diesen Namen muss man in der Dialogbox des Servers unter „Dynamic IP“ eintragen. Außerdem sollte man in dieser Dialogbox auch noch die Port-Range vorgeben. Dabei empfieht es sich, eher sparsam zu sein. Bei einem „normalen“ Home-FTP-Server braucht man nicht mehr Ports als sich User gleichzeitig anmelden dürfen (kann man normalerweise auch irgendwo einstellen). 10 Ports dürften für jeden normalen DSL-Anschluß mehr als genug sein. Also stellt man z.B die Ports 41000-41010 ein. Wer seinen FTP-Server tarnen möchte, sollte unter „General“ auch noch den Kommando-Port umstellen, also von 21 z.B. auf 40000 umstellen, um es Script-Kiddies, die nur nach FTP-Servern suchen, möglichst schwer zu machen.
Bild: http://img523.imageshack.us/img523/6364/ftp1hn9.gif
Nachdem man dies alles auf seinem FTP-Server eingestellt hat, muss man noch die entsprechenden Ports (im Beispiel also 40000 und 41000-41010) in seinem Router auf den FTP-Server forwarden.
Sinnvollerweise stellt man unter Einstellungen/General noch „Activate Server on Startup“ (damit der Server auch immer automatisch online geht) und „Put into Tray on Startup“ (damit er erst gar kein Fenster öffnet) ein. Dort wird auch der Kommdoport eingestellt.
Bild: http://img528.imageshack.us/img528/8070/ftp2zx4.png
Im Prinzip läuft der Server jetzt schon. Fehlen nur noch die Benutzer.
Je nachdem, was ihr so vorhabt, werdet ihr folgende Vorschläge vieleicht ganz nützlich finden:
-
Zuerst mal ein User Administrator, Vollzugriff auf die gesamte Festplatte. Zum aufräumen, verschieben, umkopieren. Auch lokal im eigenen Netzwerk ganz nützlich, weil FTP wesentlich weniger Protokoll-Overhead als die Windows-Freigaben hat. Gibt spürbar besseren Datendurchsatz und man kann sich das Windows-Netzwerk sparen (wodurch der Rechner im Netz unsichtbar wird). Ein kompliziertes Passwort benutzen!
-
Auch ganz nützlich: ein User torrent, Vollzugriff auf den Torrent-Automatic-Ordner. Um von außerhalb mal flugs einen Download anschubsen zu können.
-
Wer seinen Rechner mit VNC fernsteuern will und keine Möglichkeit hat, den Viewer auf irgendeiner Webseite mit einer einfach zu merkenden URL zu lagern, kann einen Ordner auf seinem FTP-Server dafür anlegen (nicht als Unterordner im FTP-Ordner! muss ja niemand sehen) und einen Benutzer „vnc“ mit Lese-Zugriff nur auf diesen Ordner anlegen. Damit kann man auf jedem (PC)-Rechner der Welt mit einem beliebigen Browser mit der URL
ftp://vnc:stuck_out_tongue:[email protected]:ftp-port/viewer.exe
den Viewer starten.
- Und dann halt User für Freunde oder Tauschpartner. Im Ordner „FTP-Server“ für die jeweilige Gruppe einen passenden Ordner anlegen und den Zugriff dadrauf freigeben. Oder einfach direkt auf den Ordner „FTP-Server“ Vollzugriff für alle.
Mal kann sich natürlich mit Benutzern und Gruppen und Freigaben richtig einen abbrechen - aber wir werden ja (noch) keine Hunderte von Benutzern haben.
Bild: http://img251.imageshack.us/img251/5892/ftp3lu6.png
Und das war’s. Ab jetzt ist euer Server weltweit erreichbar, egal, ob der User hinter einer Firewall/einem Router sitzt, oder nicht. Vorraussetzung ist natürlich, das man im Server die entsprechenden User nebst Passwörtern anlegt und die DynDNS-Adresse sowie den Kommando-Port seines Servers den entsprechenden Leuten zukommen lässt.
Um noch ein kleines bischen Performance herauszuholen rate ich dazu, in den Einstellungen unter Logs/File alles abzuschalten. Gibt keinen Grund, alle Verbindungen und Aktionen mitzuschreiben. Unter Screen könnt ihr ein bischen spielen, das verursacht keine nennenswerte Last.
So, ich hoffe, das wird dir helfen, wenn’s mit der derzeitigen Methode nicht klappt 
lg,
mabuse