29.5 Konfigurieren eines transparenten Proxy

In der Regel arbeiten Sie folgendermaßen mit Proxyservern: der Web-Browser sendet Anforderungen an einen bestimmten Port im Proxyserver und der Proxy liefert die angeforderten Objekte unabhängig davon, ob sie sich im 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 einfach: Der Proxy fängt die Anforderungen des Webbrowsers ab und beantwortet sie. Der Webbrowser erhält die angeforderten Seiten, ohne zu wissen, woher sie kommen. Wie der Name schon andeutet, verläuft der gesamte Prozess transparent.

29.5.1 Konfigurationsoptionen in /etc/squid/squid.conf

Um squid mitzuteilen, dass es als ein transparenter Proxy fungieren soll, verwenden Sie die Option transparent am Tag http_port in der Hauptkonfigurationsdatei /etc/squid/squid.conf. Nach dem Neustart von squid muss nur noch die Firewall neu umkonfiguriert werden, damit sie den HTTP-Port an den Port umleitet, der in http_port angegeben ist. In der folgenden squid-Konfigurationszeile wäre dies der Port 3128.

http_port 3128 transparent

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 8.4.1, „Configuring the Firewall with 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 zeigt auf das Internet: FW_DEV_EXT="eth1"

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

Definieren Sie Ports und Dienste (siehe /etc/services) auf der Firewall, 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 option can be used to force all internal users to surf via
# your squid proxy, or transparently redirect incoming webtraffic to
# a secure webserver.
#
# 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"

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/16,0/0,tcp,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 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, führen Sie auf dem Rechner von einem beliebigen Rechner außerhalb des Netzwerks eine Portscan durch. Nur die Webdienste (Port 80) sollten verfügbar sein. Die Befehlssyntax für das Scannen der Ports mit nmap lautet nmap-O IP_address.