HTTP-Proxy
Zum Betrieb des HTTP-Proxy sind folgende Vorbedingungen nötig :
-
redirektionierende Paketfilterregeln
-
keine Einstellungen am Web-Browser des Clients
Der HTTP-Proxy ist transparent. Er kann in zwei Modi betrieben werden
:
-
Als geschachtelter Proxy besteht er aus zwei Teilen. Der erste Teil ist
ein Prozeß je Netzwerkinterface, der redirektionierte Verbindungswünsche
entgegennimmt und an den eigentlichen Web-Proxy weiterleitet, die Antwort
entgegennimmt, auf Viren untersucht und an den Client zurückreicht.
Der zweite Teil ist der Web-Proxy (z.B. Apache), der auf die Adresse 127.0.0.1
gebunden ist und von den Prozessen, die an die Netzwerkschnittstellen gebunden
sind, die Verbindungswünsche entgegennimmt. Typische Aufrufe sind
:
-
http-proxy -b fw1.int -V 80 127.0.0.1 (siehe Abbildung,
Verbindungswünsche werden an den Apache-Web-Proxy weitergereicht)
-
http-proxy -V 80 webdmz.int 8080
(ohne Abbildung, Verbindungswünsche an externen Web-Proxy in DMZ auf
Port 8080 dort)
-
Als einfacher transparenter Proxy macht er kein Web-Caching. Die Aufgabe
Masquerading, Virenprüfung, Erzeugen von Logging-Information bleiben
jedoch. Typischer Aufruf ist :
-
http-proxy -V 80
(siehe Abbildung, Masquerading, Virenschutz, Logging)
Syntax
http-proxy [-t] [-r user] [-b ipaddr] [-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.
-
port : der Port, auf dem der Prozeß laufen soll,
üblicherweise 80 für www. Die Portnummer kann numerisch angegeben
oder symbolisch, z.B. "www", 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.
http-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 jeden Verbindungswunsch wird ein neuer Prozeß gestartet,
der nach Verbindungsende die Logging-Information nach syslog schreibt und
terminiert. Eine Verbindung besteht aus einer URL-Anfrage und der Antwort
darauf.
Die erzeugte Logging-Information sieht z.B. wie folgt aus :
Apr 21 06:39:34 firewall http-proxy[28770]: pc1172.de.xy
10.64.2.172 62.140.15.90 62.140.15.90 NoDNS http://62.140.15.90/prg/showhotel2.asp?x=0&sprache=deutsch
380 7029 0
Wie bei syslog üblich, kommen zunächst die Informationen
über den Zeitpunkt (Apr 21 06:39:34),
den Rechner (firewall), Prozeßnamen
und Prozeßnummer (http-proxy[28770]).
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(62.140.15.90 62.140.15.90) und
die Nachricht, ob der Zugriff transparent (Transparent),
über die Auswertung des Headers (NoDNS)
oder über DNS-Lookup (DNS) vorgenommen
wurde. Die - eventuell vom Proxy veränderte - URL (http://62.140.15.90/prg/showh...),
die Anzahl der vom Client gesendeten (380)
und empfangenen (7029) 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ß Bilder und Texte beispielsweise
nicht sukzessive aufgebaut werden, sondern vorhanden oder nicht vorhanden
sind. 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, überträgt der Proxy eine Ersatzseite
mit der Fehlermeldung.
vorgesehene Erweiterungen
Einbau von Authentisierungsaufrufen, z.B. über NT-Domain-Server/Samba-Server.