Proxy

Realisierung

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

Konfiguration

Die Konfiguration des Proxy - Servers läuft in folgenden Schritten ab:

  1. Squid als Proxy einrichten
  2. Redirect - Anweisungen in IPChains
  3. ACL definieren

Proxy einrichten

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.

Redirect

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.

ACL Definieren

Access Control Lists werden durch drei Teile definiert:

  1. ACL Name
    ist ein logischer Name für die Verwendung innerhalb von /etc/squid.conf
  2. ACL Typ
    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.
  3. ACL String
    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.
Die folgende Zeile beschreibt z.B. den Zugriff auf das Netz 192.168.112.0 unter dem Namen „dmz":

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.