29.5. Konfigurieren eines transparenten Proxy

Normalerweise läuft die Arbeit mit Proxyservern folgendermaßen ab: Der Webbrowser sendet Anforderungen an einen bestimmten Port im Proxyserver und der Proxy stellt die angeforderten Objekte bereit, unabhängig davon, ob sie sich in seinem Cache befinden oder nicht. Bei der Arbeit in einem Netzwerk können verschiedene Situationen entstehen:

In all diesen Fällen kann ein transparenter Proxy verwendet werden. Das Prinzip ist extrem einfach: Der Proxy fängt die Anforderungen des Webbrowsers ab und beantwortet sie, sodass der Webbrowser die angeforderten Seiten erhält, ohne dass bekannt ist, woher sie kommen. Wie der Name schon andeutet, verläuft der gesamte Prozess transparent.

29.5.1. Konfigurationsoptionen in /etc/squid/squid.conf

Folgende Optionen müssen in der Datei /etc/squid/squid.conf aktiviert werden, um den transparenten Proxy in Betrieb zu nehmen:

  • httpd_accel_host virtual

  • httpd_accel_port 80

    Die Portnummer des eigentlichen HTTP-Servers

  • httpd_accel_with_proxy on

  • httpd_accel_uses_host_header on

29.5.2. Firewall-Konfiguration mit SuSEfirewall2

Leiten Sie nun alle eingehenden Anforderungen über die Firewall mithilfe einer Port-Weiterleitungsregel an den Squid-Port um. Verwenden Sie dazu das eingeschlossene Werkzeug SuSEfirewall2 (in Abschnitt 4.1.4.1, „Konfiguration mit YaST“ beschrieben). Die Konfigurationsdatei dieses Programms finden Sie in /etc/sysconfig/SuSEfirewall2. Die Konfigurationsdatei besteht aus gut dokumentierten Einträgen. Um einen transparenten Proxy festzulegen, müssen Sie mehrere Firewall-Optionen konfigurieren:

  • Gerät, das auf das Internet verweist: FW_DEV_EXT="eth1"

  • Gerät, das auf das Netzwerk verweist: FW_DEV_INT="eth0"

Ports und Dienste (siehe /etc/services) auf der Firewall definieren, auf die ein Zugriff von nicht verbürgten (externen) Netzwerken, wie beispielsweise dem Internet, erfolgt. In diesem Beispiel werden nur Webdienste für den Außenbereich angeboten:

FW_SERVICES_EXT_TCP="www"

Definieren Sie Ports und Dienste (siehe /etc/services) auf der Firewall, auf die vom sicheren (internen) Netzwerk aus zugegriffen wird (sowohl über TCP als auch über UDP):

FW_SERVICES_INT_TCP="domain www 3128"
FW_SERVICES_INT_UDP=„domain“

Dies ermöglicht den Zugriff auf Webdienste und Squid (Standardport: 3128). Der Dienst „domain“ steht für DNS (Domain Name Service, Domänennamen-Dienst). Dieser Dienst wird häufig verwendet. Andernfalls nehmen Sie einfach die oben stehenden Einträge heraus und setzten Sie die folgende Option auf no:

FW_SERVICE_DNS="yes"

Die wichtigste Option ist Option Nummer 15:

Beispiel 29.1. Firewall-Konfiguration: Option 15

# 15.)
# Which accesses to services should be redirected to a local port
# on the firewall machine?
#
# This can be used to force all internal users to surf via your
# Squid proxy, or transparently redirect incoming Web traffic to
# a secure Web server.
#
# Choice: leave empty or use the following explained syntax of
# redirecting rules, separated with spaces.
# A redirecting rule consists of 1) source IP/net,
# 2) destination IP/net, 3) original destination port and
# 4) local port to redirect the traffic to, separated by a colon,
# e.g. "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080"

Die oben angegebenen Kommentare geben die zu verwendende Syntax an. Geben Sie zuerst die IP-Adresse und die Netzmaske der internen Netzwerke ein, die auf die Proxy-Firewall zugreifen. Geben Sie als Zweites die IP-Adresse und die Netzmaske ein, an die diese Clients ihre Anforderungen senden. Geben Sie bei Webbrowsern die Netzwerke 0/0 an. Dieser Platzhalter bedeutet „überallhin“. Geben Sie anschließend den ursprünglichen Port ein, an den diese Anforderungen gesendet werden, und schließlich den Port, an den alle diese Anforderungen umgeleitet werden. Da Squid andere Protokolle als HTTP unterstützt, müssen Anforderungen von anderen Ports an den Proxy umgeleitet werden, beispielsweise FTP (Port 21), HTTPS oder SSL (Port 443). In diesem Beispiel werden Webdienste (Port 80) an den Proxy-Port (Port 3128) umgeleitet. Wenn mehrere Netzwerke bzw. Dienste hinzugefügt werden sollen, müssen diese im entsprechenden Eintrag durch ein Leerzeichen getrennt sein.

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"

Um die Firewall mit der neuen Konfiguration zu starten, müssen Sie einen Eintrag in der Datei /etc/sysconfig/SuSEfirewall2 ändern. Der Eintrag START_FW muss auf „yes“ gesetzt werden.

Starten Sie Squid, wie in Abschnitt 29.3, „Starten von Squid“ gezeigt. Um zu überprüfen, ob alles ordnungsgemäß funktioniert, müssen Sie die Squid-Protokolle in /var/log/squid/access.log überprüfen. Um sicherzustellen, dass alle Ports korrekt konfiguriert sind, müssen Sie eine Portabsuche auf dem Computer von einem beliebigen Computer außerhalb Ihres Netzwerks aus durchführen. Nur die Webdienste (Port 80) sollten verfügbar sein. Die Befehlssyntax für das Absuchen der Ports mit nmap lautet nmap -O IP_address.