33.6. Konfiguration eines Transparenten Proxy

Normalerweise schickt der Webbrowser an einen bestimmten Port des Proxy-Servers Anfragen und der Proxy stellt die angeforderten Objekte zur Verfügung, ob sie nun im Cache sind oder nicht. Innerhalb eines Netzwerks können verschiedene Situationen auftreten:

In jedem dieser Fälle kann ein transparenter Proxy eingesetzt werden. Das Prinzip ist denkbar einfach: Der Proxy nimmt die Anfragen des Webbrowsers entgegen und bearbeitet sie, sodass der Webbrowser die angeforderten Seiten erhält ohne zu wissen, woher sie kommen. Der gesamte Prozess wird transparent ausgeführt, daher der Name für den Vorgang.

33.6.1. Kernel-Konfiguration

Zuerst sollte sicherstellt sein, dass der Kernel des Proxy-Servers einen transparenten Proxy unterstützt. Der mit SUSE LINUX ausgelieferte Kernel ist entsprechend konfiguriert. Andernfalls muss man dem Kernel diese Optionen hinzufügen und ihn neu kompilieren. Genauere Informationen dazu entnehmen Sie bitte Kapitel 9, Der Linux Kernel.

33.6.2. Konfigurationsoptionen in /etc/squid/squid.conf

Folgende Optionen in der Datei /etc/squid/squid.conf müssen aktiviert werden, um einen Transparenten Proxy aufzusetzen:

  • httpd_accel_host virtual

  • httpd_accel_port 80

    Der Port, auf dem sich der tatsächliche HTTP-Server befindet.

  • httpd_accel_with_proxy on

  • httpd_accel_uses_host_header on

33.6.3. Firewall-Konfiguration mit SuSEfirewall2

Alle durch die Firewall eingehenden Anfragen müssen mit Hilfe einer Port-Weiterleitungsregel an den Squid-Port weitergeleitet werden. Dafür eignet sich das mitgelieferte Tool SuSEfirewall2. Dessen Konfigurationsdatei findet man in der Datei /etc/sysconfig/SuSEfirewall2. Die Konfigurationsdatei wiederum setzt sich aus gut dokumentierten Einträgen zusammen. Auch wenn wir nur einen Transparenten Proxy einrichten wollen, müssen wir einige Firewall-Optionen konfigurieren:

  • Gerät zeigt auf Internet: FW_DEV_EXT="eth1"

  • Gerät zeigt auf Netzwerk: FW_DEV_INT="eth0"

Angabe von Ports und Diensten (siehe /etc/services) in der Firewall, auf die von nicht vertrauenswürdigen (externen) Netzwerken wie dem Internet zugegriffen wird. In diesem Beispiel bieten wir lediglich Webdienste nach außen hin an:

FW_SERVICES_EXT_TCP="www"

Angabe von Ports und Diensten (siehe /etc/services) in der Firewall, auf die vom sicheren (internen) Netzwerk sowohl über TCP als auch über UDP zugegriffen wird:

FW_SERVICES_INT_TCP="domain www 3128"
FW_SERVICES_INT_UDP="domain"

Wir greifen auf Webdienste und Squid (dessen Standardport ist 3128) zu. Der oben beschriebene Dienst „Domain“ steht für DNS oder Domain Name Service. Es ist üblich, diesen Dienst zu nutzen. Andernfalls entfernen wir ihn einfach aus obigem Eintrag und setzen folgende Option auf no:

FW_SERVICE_DNS="yes"

Die wichtigste Option ist die Ziffer 15:

Beispiel 33.1. Option 15 der Firewallkonfiguration

#
# 15.)
# Welcher Zugriff auf die einzelnen Dienste soll an einen lokalen
# Port auf dem Firewall-Rechner umgeleitet werden?
#
# Damit können alle internen Benutzer gezwungen werden, über den
# Squid-Proxy zu surfen oder es kann eingehender Webverkehr
# transparent an einen sicheren Web-Server umgeleitet werden.
#
# Wahl: keinen Eintrag vornehmen oder folgend erklärte Syntax von
# Umleitungsregeln, getrennt durch Leerzeichen, verwenden.
# Eine Umleitungsregel besteht aus 1) Quelle IP/Netz, 2) Ziel 
# IP/Netz, 3) ursprünglicher Zielport und 4) lokaler Port, an den 
# der Verkehr umgeleitet werden soll, getrennt durch Kommata, z.B.: 
# "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080"
#

Im obigen Kommentar wird die einzuhaltende Syntax gezeigt. Zuerst greifen die IP-Adresse und die Netzwerkmaske der „internen Netzwerke“ auf die Proxy-Firewall zu. Dann die IP-Adresse und die Netzwerkmaske, an die Anfragen von den Clients „gesendet“ werden. Im Fall von Webbrowsern wählt man die Netzwerke 0/0. Dies ist eine Wildcard und bedeutet „überallhin“. Danach kommt der „ursprüngliche“ Port, an den diese Anfragen geschickt wurden, und schließlich folgt der Port, an den die Anfragen „umgeleitet“ wurden. Da Squid mehr Protokolle unterstützt als nur HTTP, können auch Anfragen von anderen Ports an den Proxy umgeleitet werden, so zum Beispiel FTP (Port 21), HTTPS oder SSL (Port 443). Im konkreten Fall werden Webdienste (Port 80) auf den Proxy-Port (hier 3128 umgeleitet. Falls mehrere Netzwerke oder Dienste hinzugefügt werden sollen, müssen diese durch ein Leerzeichen im entsprechenden Eintrag getrennt werden.

FW_REDIRECT_TCP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"
FW_REDIRECT_UDP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"

Zum Starten der Firewall und der neuen Konfiguration muss man einen Eintrag in der Datei /etc/sysconfig/SuSEfirewall2 editieren. Der Eintrag START_FW muss auf "yes" gesetzt werden:

Starten Sie Squid wie in Abschnitt 33.4, „Squid starten“ beschrieben. Anhand der Protokoll-Dateien in /var/log/squid/access.log kann überprüft werden, ob alles richtig funktioniert.

Um zu überprüfen, ob alle Ports korrekt konfiguriert wurden, kann von jedem beliebigen Rechner außerhalb unserer Netzwerke auf dem Rechner ein Portscan ausgeführt werden. Nur der Webdienst-Port (80) sollte offen sein. Der Portscan führt über nmap -O IP-Adresse.


SUSE LINUX Administrationshandbuch 9.3