FTP-Proxy
Zum Betrieb des FTP-Proxy sind folgende Vorbedingungen nötig :
-
redirektionierende Paketfilterregeln
-
keine Einstellungen am Web-Browser des Clients
Der FTP-Proxy ist transparent. Er stellt gegenüber dem Client
den FTP-Server dar und gegenüber dem eigenlichen FTP-Server den Client.
Er kann in zwei Modi betrieben werden :
-
Als reiner FTP-Proxy, der redirektionierte Verbindungswünsche entgegennimmt
und an den eigentlichen FTP-Server weiterleitet, die Antwort entgegennimmt,
auf Viren untersucht und an den Client zurückreicht. Typische Aufrufe
sind :
-
ftp-proxy -b fw1.int -V 21 (siehe Abbildung, der
ftp-Proxy empfängt ftp-Verbindungswünsche auf einer bestimmten
Schnittstelle)
-
ftp-proxy -V 21
(ohne Abbildung, der ftp-Proxy ist nicht an ein bestimmtes Interface gebunden)
-
Als kombinierter FTP-Proxy mit Aufruf eines Web-Proxy. Bis zur Übertragung
des Directory-Inhalts oder der Datei wird das normale FTP-Protokoll benutzt
und dann wird ein HTTP-Request mit der URL "ftp://..." abgesetzt,
damit der Cache des Web-Proxy benutzt wird. Natürlich wird das Dokument
genauso geprüft wie beim reinein FTP-Proxy.
-
ftp-proxy -V 21 127.0.0.1 80 (siehe Abbildung,
Masquerading, Virenschutz, Logging, Web-Caching)
-
ftp-proxy 21 webproxy.dmz 80 (ohne Abbildung, keine Virenprüfung,
es wird ein anderer Rechner als Web-Proxy benutzt)
Syntax
ftp-proxy [-r user] [-b ipaddr] [-d] [-D] [-V] port [proxyhost [proxyport]]
-
-t : voll transparenter Zugriff, URL und Header werden nicht verändert,
außer bei Zugriffen auf den lokalen HTTP-Server.
-
-r user : dach dem Binden an den angegebenen Port soll
der Prozeß nicht als root, sondern als user
laufen.
-
-b ipaddr : ohne Angabe dieser Option wird der Prozeß
an 0.0.0.0 gebunden. Hier setzt man üblicherweise die IP-Adresse einer
Netzwerkschnittstelle ein. Damit reagiert der Prozeß nur noch auf
Verbindungswünsche zu dieser Schnittstelle, statt auf jeden Verbindungswunsch.
-
-V : nehme Inhaltsprüfung vor. Das Dokument wird auf Viren
geprüft.
-
-d : erhöhe den Debug-Level. Je höher der Debug-Level,
desto geschwätziger ist der Proxy.
-
-D : bleibe Vordergrundprozeß. Dies ist eine Debug-Option
zum Entwickeln und Testen.
-
port : der Port, auf dem der Prozeß laufen soll,
üblicherweise 21 für ftp. Die Portnummer kann numerisch angegeben
oder symbolisch, z.B. "ftp", in /etc/services enthalten sein.
-
proxyhost : Alle Requests werden an diesen Rechner weitergeschickt.
Ohne Angabe des proxyhost werden die Anfragen an die echte
Zieladresse ausgeliefert.
-
proxyport : der verwendete Port des proxyhost.
Wird dieser Port nicht angegeben, wird port angenommen.
Ist port == proxyport, muß bei Angabe
von 127.0.0.1 (oder der Adresse einer Netzwerkschnittstelle) für den
proxyhost
die -b Option verwendet werden, da sonst Endlosschleifen resultieren.
ftp-proxy dient zum Maskieren von Adressen, der Inhaltsprüfung
(z.B. Virenschutz) und dem Erzeugen von Systeminformationen. Das Programm
arbeitet als Dämon und wartet auf eingehende Verbindungswünsche.
Für jede Verbindung, die aus mehreren Befehlen und Dateiübertragungen
bestehen kann, wird ein neuer Prozeß gestartet, der nach Verbindungsende
die Logging-Information nach syslog schreibt und terminiert. Es wird das
FTP-Protokoll benutzt.
Die erzeugte Logging-Information sieht z.B. wie folgt aus :
Apr 22 13:00:45 firewall ftp-proxy[4444]: pc1172.de.xy
10.64.2.172 hpcc926.external.hp.com 192.151.11.14 ftp://ftp.hp.com/ 783
34540 0
Wie bei syslog üblich, kommen zunächst die Informationen
über den Zeitpunkt (Apr 22 13:00:45),
den Rechner (firewall), Prozeßnamen
und Prozeßnummer (ftp-proxy[4444]).
Nach dem Doppelpunkt folgen die durch den Prozeß erzeugten Informationen
: Name (sofern vorhanden, sonst Adresse) und Adresse des Clients (pc1172.de.xy
10.64.2.172), Name (sofern vorhanden, sonst Adresse) und Adresse
des Servers(hpcc926.external.hp.com 192.151.11.14).
Die URL (ftp://ftp.hp.com/), die Anzahl der
vom Client gesendeten (783) und empfangenen
(34540) Bytes sowie der Status (0)
beschließen die erzeugte Information. Ein Status, der nicht 0 ist,
weist auf eine abgebrochene Verbindung hin.
Durch eine Veränderung der Datei /etc/syslog.conf läßt
sich die Ausgabe der Information auch auf einen entfernten Rechner (@remote)
leiten. Beachten Sie, daß in diesem Fall Paketfilterregeln angegeben
werden müssen, die UDP-Pakete mit Zielport 514 vom Firewall zum Zielrechner
durchlassen.
Virenschutz
Bei Benutzung des Virenschutzes (-V) kommt es am Browser zu einem
ungewohnten Verhalten. Da ein Dokument immer erst auf Viren untersucht
werden kann, wenn es vollständig vorhanden ist, muß das Dokument
zwischengespeichert werden und wird erst nach der Untersuchung weitergeleitet.
Das führt in den Browsern dazu, daß Directory-Inhalte nicht
sukzessive aufgebaut werden und Dateien scheinbar nicht übertragen
werden. Bei größeren Dokumenten würde diese Zwischenspeicherung
zum Abreißen der Verbindungen (Timeout) führen. Zur Vermeidung
dieses Timeouts wird deshalb alle dreißig Sekunden ein einziges Byte
übertragen. Nach der erfolgreichen Überprüfung wird der
Rest des Dokuments übertragen. Das führt bei großen Dateien
zur Vorhersage von irrwitzigen Download-Zeiten, was natürlich nicht
richtig ist. Die Aufforderung "speichern unter ..." bleibt auch auf Clients
aller Betriebssysteme bis zur Quittierung stehen.
Wird ein Virus entdeckt, wird die Datenverbindung abgebrochen und eine
Fehlermeldung zurückgeliefert.
aktives und passives FTP
FTP benutzt zur Datenübertragung mehrere sog. Sockets, nämlich
eine Kommando-Verbindung und dynamisch eine Verbindung zur Übertragung
von Directory-Verzeichnissen und Dateien. Der Endpunkt der dynamischen
Datenverbindung liegt entweder fest und wird vom Server geöffnet
(Port 20 des Clients, actives ftp) oder wird vom Server zugewiesen und
vom Client geöffnet (passives ftp). Wegen der Redirektionierung der
Verbindung ist bei ftp-proxy zum eigentlichen Client nur aktives,
zum eigentlichen Server nur passives FTP möglich.
vorgesehene Erweiterungen
Einbau von Authentisierungsaufrufen, z.B. über NT-Domain-Server/Samba-Server.