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:
Aus Sicherheitsgründen ist es besser, wenn alle Clients zum Surfen im Internet einen Proxy verwenden.
Es ist notwendig, dass alle Clients einen Proxy verwenden; dabei ist es gleichgültig, ob sie sich dessen bewusst sind oder nicht.
In einem Netzwerk wird der Proxy umgezogen, die bestehenden Clients sollen jedoch ihre alte Konfiguration behalten.
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.
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.
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
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.