FTP Reverse Proxy – Mehrere FTP-Server an einer IP und Port

Mehrere FTP-Server an einer IP auf dem Standardport 21 zu betreiben ist ein Problem, da das FTP-Protokoll anders als HTTP keine vhosts unterstützt. Will man nun z.B. zwei FTP-Server in einem LAN hinter einem Router, oder auf virtuellen Maschinen zur Verfügung stellen, muss man dazu entweder zwei externe IP-Adressen oder zwei Ports verwenden. Nicht immer stehen mehrere externe IP-Adressen zur Verfügung, und einen anderen Port als den Standard 21 zu verwenden ist weniger schön.

Die Lösung hierfür schafft ein FTP-Reverse-Proxy. Wir haben uns für die Software “delegate” entschieden. Delegate bietet Proxy-Funktionen für mehrere Protokolle und ist leicht zu konfigurieren. Nach der Installation der Software auf dem Router/Gateway aus dem Paketbestand der Linux-Distribution, lässt sie sich wie folgt starten:

delegated -P21 SERVER=ftp RELIABLE="*" PERMIT="ftp:192.168.122.*:*" SRCIF="*:0:ftp-data"

Die Optionen bewirken folgendes:

  • -P21 -  bringt delegate dazu, auf Port 21 auf eingehende Verbindungen zu lauschen.
  • SERVER=ftp – aktiviert den FTP-Proxy-Modus
  • RELIABLE=”*” – erlaubt eingehende verbindungen von beliebigen IP-Adressen, jeder darf den Proxy benutzen
  • PERMIT=”ftp:192.168.0.*:*” – Beschrängt das Ziel des Proxys auf FTP-Server im internen Netzwerk 192.168.0.0
  • SRCIF=”*:0:ftp-data” – Diese Option aktiviert das weiterleiten des FTP-Datentransfers, wird benötigt um Dateien kopieren zu können

Nun bestehen mehrere Möglichkeiten, um über den FTP-Proxy auf einem Server im internen LAN zu verbinden. Das Problem jedoch ist, das der Proxy wissen muss, welchen Server der verbindende Client erreichen will. Eine Möglichkeit, dies mittzuteilen ist die Übermittlung des internen FTP-Servernamens  mit dem Nutzernamen. Wenn ein FTP-Nutzer namens “ftptestuser” sich an dem FTP-Server mit der IP 192.168.0.3 anmelden will, so muss er bei der Verbindung zum Ftp-Proxy als Benutzername “ftptestuser@192.168.0.3″ angeben.

Wenn man seinen Benutzern die Änderung des Benutzernamens zumuten kann, ist man jetzt schon am Ziel. Nicht immer ist dies aber möglich oder einfach umzusetzen, wenn man schon länger einen FTP-Server verwendet und die Nutzer nicht zwingen will, die Daten in allen FTP-Programmen zu ändern. Wir hatten dieses Problem und haben es über einem kleinen Trick gelöst: mit drei Zeilen Code habe wir den delegate FTP-Proxy dazu gebracht, automatisch bei der Verbindung den FTP-Benutzernamen von “ftptestuser” zu “ftptestuser@ftptestuser” umzuschreiben. Wenn also der ftptestuser zu unserem Proxy verbindet, so versucht dieser nun die Verbindung an den Server mit dem namen “ftptestuser” weiterzuleiten. Damit haben wir die Möglichkeit, über einen Eintrag in der Datei /etc/hosts bzw. auch über einen DNS-Server den zu einem Benutzernamen gehörigen FTP-Server zu steuern. Der Nachteil ist dabei natürlich, das es jeden Benutzernamen nur einmal geben darf, da dieser sonst nicht eindeutig einem Server zugeordnet werden kann.

Delegate 9.9.7 Patch – Nutzername von Nutzer zu Nutzer@Nutzer umschreiben


Helm & Walter IT Solutions GbR © 2017 • Impressum