Um die ISDN - Netzlast zu verringern, wird an der Schnittstelle des LANs zum Internet ein HTTP - Proxy eingesetzt. Dieser regelt auch den Zugriff mittels ACLs (Access control list). Als Software wird Squid"11 verwendet.
Damit an den Clients keine Konfiguration vorgenommen werden muss und um sicher zu gehen, dass HTTP-Verkehr zwingend über den Proxy durchgeführt wird, kommt Squid als transparent - proxy zum Einsatz. Dies bedeutet, dass das Programm automatisch alle Verbindungen über den Firewall - Rechner hinweg kontrolliert. Wird also z.B. Von Innen nach Aussen eine Verbindung erstellt, so wird sie von Squid abgefangen, ohne dass der Benutzer dies erkennt. Anschliessend verhält sich Squid wie ein regulär adressierter Proxy.
Um die Transparenz zu erreichen, muss auf Paketfilterebene angesetzt werden. Anstatt HTTP-Pakete einfach zuzulassen, werden diese an den Proxy (auf Port 3128) umgeleitet. Umleiten (REDIRECT) basiert auf dem Prinzip des Masquerading, weshalb diese Funktionalität unbedingt schon bei der Systeminstallation in den Kernel aufgenommen werden muss.
Dieses Vorgehen erfordert auch, dass der Firewall - Rechner HTTP - Antwortpakete (Quellport 80, Zielport >1024) vom Webserver akzeptiert (siehe Filterregeln in der Kette aus).
Die Konfiguration des Proxy - Servers läuft in folgenden Schritten ab:
Als erster Schritt wird Squid als normaler Proxy - Server eingerichtet. An dieser Stelle der Installation können allgemeine Einstellungen (wie z.B. Cachegrösse oder -verzeichnis) getroffen und an den verwendeten Rechner angepasst werden. Für den transparenten Dienst12 müssen folgende Einstellungen getroffen werden:
Ein kurzer Test mit einem Client - Rechner, dessen Browser auf den Squid-Cache eingerichtet wurde, zeigt die grundlegende Funktionsfähigkeit.
Da der Verkehr des LANs kontrolliert und gepuffert werden soll, wird jeglicher Verkehr von Clients im LAN auf den Proxy umgeleitet. Dies geschieht mit den beiden Befehlen:
ipchains -A input -s 192.168.144.0/255.255.255.0 -d 0/0 80:80 -p 6 -j REDIRECT 3128
ipchains -A input -s 0/0 80:80 -d 192.168.144.0/255.255.255.0 -p 6 -j REDIRECT 3128
Somit ist es nicht nötig eine HTTP-Verbindung von innen nach aussen und in die DMZ zu erlauben. Eine solche Regel wäre sogar falsch, da sich so nur Sicherheitslücken aufgrund von Mehrfachdefinitionen ergeben.
Access Control Lists werden durch drei Teile definiert:
Werden mehrere Schlüssel in einer ACL Definition verwendet, werden sie mit einem logischen ODER verknüpft.
Mit der Anweisung http_access werden Zugriffe auf Basis der vorher definierten ACLs erlaubt bzw. Verboten:
erlaubt somit den Zugriff auf die DMZ. Werden hier mehrere ACLs in einer Zeile verwendet, so werden diese mit einem logischen und verbunden.
Die gesamten ACLs und http_access Regeln lauten dann:
In der Datei Firewall.allow befinden sich die IP-Adressen der Rechner mit erlaubtem Internetzugang.
Konfiguration
Proxy einrichten
http_port 8080
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header onRedirect
ACL Definieren
Die folgende Zeile beschreibt z.B. den Zugriff auf das Netz 192.168.112.0 unter dem Namen dmz":
ist ein logischer Name für die Verwendung innerhalb von /etc/squid.conf
dient zum Interpretieren des dritten Teils der ACL. Es können Schlüsselwörter wie z.B. src (Quelladresse), dst (Zieladresse) oder time (zum zeitlichen Beschränken des Zugangs) verwendet werden.
bezeichnet den Inhalt der Liste. Er kann z.B. aus einer Liste von IP-Adressen bestehen.
An dieser Stelle kann auch eine Datei angegeben werden. Sie enthält dann eine grössere Anzahl an Kriterien, z.B. eine Liste von IP-Adressen.
acl dmz dst 192.168.112.0/24
http_access allow dmz
acl all src 0.0.0.0/0.0.0.0
acl darf src "/etc/firewall.allow"
acl fwvib src 192.168.144.0/255.255.255.0
acl dmz dst 192.168.112.0/255.255.255.0http_access allow dmz
http_access allow darf
http_access deny