Partnerlinks:
Google

www.linux-club.de/ sehr aktives und kompetentes Board m. Fragen u. Antworten rund um Linux  |  www.linux-board.de/ privates Board m. Fragen u. Antworten rund um Linux  |  meybohm bei viando.de gute Tools - u.a. "Phase 5 / HTML Editor" mein Lieblings-HTML-Editor und "Proton" - guter Texteditor www.meybohm.de  |  Wunsch-Domain schon belegt? Hier finden Sie sie trotzdem!   |  Webhosting beim Testsieger 2007. www.greatnet.de  | 
Host Europe - World Class Internet Hosting
 

  Ein Pinguin-Logo    
news About Me linux referenz tips links downloads kontakt
 
News
About
Linux
Referenz
Tips
  Linux
  Sicherheit
  Perl
  Allround Server
  Fileserver Samba
  HTTP-Server
  Zope-Server
  SQL-Server
  Mail-Server
  Proxy_Server
  FAX-Server
  Netzwerk-Tools
  SMS-Tools
  Postscript
  MS Office
Links
Downloads
Kontakt

Besucher
seit 21.10.2002
 
Mein Gästebuch
 

FTPPROXY - ein FTP-Proxy-Server für Linux und Windows

Teil 1

1. Allgemeine Beschreibung

1.1. Allgemeine Beschreibung

FTPProxy ist ein Programm welches den Kontakt zu FTP-Servern über die eigene Firewall hinweg ermöglicht. Dadurch braucht man das FTP-Protokoll nicht über die Firewall routen und man kann verschiedene Dinge wie z.Bsp. die erlaubten Server, Verzeichnisse oder auch Userberechtigungen prüfen und kontrollieren.

Damit gewinnt man ein Höchstmaß an Sicherheit und Flexibilität im Sicherheitskonzept der Firma oder auch im Heimnetzwerk.

1.2. Installation

Die Installation erfolgt ganz einfach. Nachdem man die aktuellen Dateien von www.ftpproxy.org heruntergeladen und in einem lokalen Verzeichnis entpackt hat, passt man das "Makefile"-Datei an die lokalen Gegebenheiten (je nach Distribution) an und ruft danach "make" ...; "make install" in diesem Verzeichnis auf.

Die Anpassungen im "Makefile" beschränken sich auf folgende zwei Installationsverzeichnisse (hier an SuSE 7.2 angepasst):
Zeilen nach "install":

  ### hier Pfad des Installationsverz. der kompilierten
  #   Programmdatei
  cd src; strip $(TARGETS)  &&  cp $(TARGETS) /usr/local/sbin
  ### im folgenden passt man den Pfad der manpage an ###
  cd doc; cp *.1 /usr/share/man/man1

1.4. Konfiguration

1.4.1 ... für "inetd"

Zum Abschluss ...

... der Installation des FTP-Proxy-Server-Programms, muß man in der Datei "/etc/inetd.conf" oder "xinetd.conf" (diese ist dafür zuständig Dienste zu starten, wenn auf dem in der Datei "/etc/services" festgelegten Port eine Anforderung kommt) noch folgendes, an deine Bedürfnisse angepasst, einfügen :

  # - clientside server selection:
  # Serverauswahl durch den Client
  # in einer Zeile geschrieben!!!
  ftp   stream  tcp     nowait  nobody  /usr/sbin/tcpd   \
  /usr/local/sbin/ftp.proxy -e
Oder:
  # - clientside server selection with enhanced logging:
  # Serverauswahl durch den Client mit ... Logging
  #
  ftp   stream  tcp     nowait  nobody  /usr/sbin/tcpd   \
  /usr/local/sbin/ftp.proxy -e -l -m
Oder:
  # - only to one particular FTP-Server:
  # Verbindung nur zu einem einzigem Server:
  # (Serverseitig voreingestellt)
  ftp   stream  tcp     nowait  nobody  /usr/sbin/tcpd   \
  /usr/local/sbin/ftp.proxy   my.special.server

Der Aufruf von /usr/sbin/tcpd bewirkt eine einfache Berechtigungs-Kontrolle mit Hilfe der Dateien "/etc/host.allow" und "/etc/host.deny". Ohne diesen Aufruf funktioniert das Programm nicht.

1.4.1 ... für "xinetd"

Gerade heute (14.08.2003) kam aus der Mailingliste folgende Nachricht von Greg Lyons:

You can't start ftp.proxy from the command line, which is why you got the "Socket operation on non-socket" error. You need to start it from xinetd. Below is a sample configuration snippit, which you could put in /etc/xinetd.conf or in a separate file /etc/xinetd.d/ftpproxy.

service ftpproxy
{
  disable = no
  socket_type = stream
  wait = no
  user = nobody
  server = /usr/local/sbin/ftp.proxy
  server_args = my.server.com
}
Proxying different servers on different ports or IP addresses is done within your xinetd configuration. Output is written to syslog.

As for your 250 users, you'll need to write an ACP (access control program), which can be anything from simple Perl script that looks for users in a clear text file to a compiled binary that searches multiple databases. I have written one that works against an LDAP directory, if you're interested.

All of this information is available in the man page (http://ftpproxy.org/html/ftp.proxy-1.html) and in the FAQ (http://ftpproxy.org/faq/).

Dies war die Antwort auf eine Anfrage bezüglich der xinetd-Konfiguration und den Möglichkeiten für 250 Benutzer einen gesicherten Zugang (mit Passwortauthentifizierung) zu verschiedenen Servern, die wiederum vom Benutzername abhängen, einzurichten.

Danach kam noch dieses:

If you already have something listening on port 21, you'll need to choose a different port (like 2121 or something). You can do that by adding a line to your /etc/xinetd.d/ftpproxy file like the one below and restart xinetd.
port = 2121

You won't need to add a user to start with, since you don't have an ACP yet, which is the thing that will require authentication on the proxy itself. So to test, you'd run ftp and and type "open localhost 2121". It will prompt you for a username, which would be something like "anonymous@ftp.gnu.org". The password would be your email address. If you can do an ls or get, then you're working!

1.5. Problem am Rande

Würde man nun den ersten Aufruf des FTP-Proxys versuchen gäbe es ein Problem mit dem auf dem gleichen Port (21/tcp) "lauschenden" ftp-daemons (bei mir "proftpd"). Dieser FTP-Daemon ist dein eigener FTP-Server.

Laut manpage könnte man den "ftp.proxy" mit Hilfe der Option "-p PortNr" auf einem anderen Port laufen lassen. Als ich dieses versuchte gab es bei mir aber die Fehlermeldung cannot bind to port .... Ich vermute nun stark, das die Option steuert auf welchem Port der extern anzurufende FTP-Server angesprochen wird.

Um das Programm nun nutzen zu können "verlege" ich meinen FTP-Server auf einen anderen Port. Dazu muß man (bei mir für Proftpd) in der Datei /etc/proftpd.conf folgende Einträge anpassen:

  ### <<<<<< /etc/proftpd.conf >>>>> ###
  #
  # bei Aufruf nach Bedarf
  ServerType                      inetd
  # bei Aufruf bei Server-Start
  #ServerType                      standalone
  #
  # disable listen on 0.0.0.0:21 - the port (and IP) should
  # be specified explicitly in each VirtualHost definition
  #######
  # Von mir hier willkürlich gewählter freier Port
  # natürlich müssen dann alle Ports in "etc/services"
  # entsprechend angepasst werden
  Port                            192.168.0.20:3118

In /etc/services habe ich folgendes angepaßt:

  ### <<<<<< /etc/services >>>>> ###
  #
  ftp_proxy       21/tcp        # ftp.proxy von Andreas Schoenberg
  ftp             3118/tcp      # File Transfer [Control]
  #ftp            21/tcp        # File Transfer [Control]


   
FTP-Proxy (1)
Intro
Allgemeines
Installation
Konfiguration
Probleme
FTP-Proxy Teil 2
Intro
Allgemeines
Windows Commander
 
©  09.09.2009  Heiko Teichmeier - Glauchau/Sa.