31.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.

31.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

31.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 37.4.1, „Konfigurieren der Firewall 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.

Die wichtigste Option ist Option Nummer 15:

Beispiel 31.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.
#
# Format: list of <source network>[,<destination network>,<protocol>[,dport[:lport]]
# Where protocol is either tcp or udp. dport is the original
# destination port and lport the port on the local machine to
# redirect the traffic to
#
# An exclamation mark in front of source or destination network
# means everything EXCEPT the specified network
#
# Example: "10.0.0.0/8,0/0,tcp,80,3128 0/0,172.20.1.1,tcp,80,8080"
#
# Note: contrary to previous SuSEfirewall2 versions it is no longer necessary
# to additionally open the local port

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="192.168.0.0/24,0/0,tcp,80,3128 192.168.0.0/24,0/0,udp,80,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 31.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.