SelfLinux Internet World Wide Web Proxies Der Web-Proxy Squid Abschnitt 5 | SelfLinux-0.13.0

| Der Web-Proxy Squid | Autor Formatierung GPL

#### 6 Rechtevergabe unter Squid im Detail

#### 6.1 Warum Zugriffsrechte für den Internet-Zugriff?

Werden die Rechte lediglich so gesetzt wie im Abschnitt Squid-Konfiguration auf die Schnelle beschrieben, können alle Nutzer auf sämtliche Inhalte des Internet zugreifen.

Das mag als Konfiguration häufig reichen, es können sich daraus jedoch folgende Nachteile ergeben:

- Der Internetzugang ist schnell überlastet und damit langsam.
- Erhöhte Kosten können entstehen.
- Die Nutzer können sich in der Informationsflut des Internets verlieren (wichtig bei Schulungen/Schülern).
- Es können sich juristische Probleme ergeben, wenn sich z. B. Schüler pornografische Inhalte anschauen

#### 6.2 Umsetzung

Das Setzen der Rechte unter Squid ist sehr flexibel, aber leider nicht selbsterklärend.

Mit einer ACL wird zunächst festlegt, auf was (Ziel) oder von was (Quelle) zugegriffen wird. Über http_access wird dieser ACL anschließend ein Verbot oder eine Erlaubnis zugewiesen.

#### 6.2.1 ACL-Elemente - Ziel oder Quelle definieren

Die Syntax einer ACL sieht folgendermaßen aus:

    acl <frei_definierbarer_acl_Name> <acl-Typ> <Wert ...>

Über den frei definierten ACL-Namen kann mit Hilfe des unten erläuterten http_access das gewünschte Recht vergeben werden. Diese ACL-Namen dürfen natürlich nicht doppelt vergeben werden.

Es können verschiedene Arten von Quellen und Zielen zur ACL-Definition verwendet werden. Hier die für die Zugriffsverwaltung genutzten ACL-Typen:

- src: Absender-IP-Adressen der Client-PCs, die über Squid auf Web-Inhalte zugreifen wollen.
- dst: Ziel-IP-Adressen, auf die zugegriffen werden soll.
- dstdomain: Name der Ziel-Domain, auf deren Server im Internet zugegriffen werden soll. Hier kann auch direkt ein Server angegeben werden!
- dstdom_regex: Wie dstdomain, zusätzlich können Reguläre Ausdrücke verwendet werden, um die Liste der Server zu erweitern.
- time: Zur Festlegung bestimmter Zeitbereiche, in denen gesurft werden darf.
- url_regex: URLs können über Reguläre Ausdrücke definiert werden.
- urlpath_regex: Der Pfad, also alles, außer dem Protokoll (wie http://) und dem Rechnernamen (wie www.selflinux.org), wird mit dem angegebenen Regulären Ausdruck verglichen.
- ident: Vergleich der Namen, die von den Unix-Clients mit dem identd übertragen werden, mit denen in der Liste. So kann eine einfache Benutzerverwaltung genutzt werden. Den identd gibt es auch für Windows als Programm oder als Dienst.
- external: Einbinden eines externen Hilfsprogramms, das z. B. ermöglicht, zur Benutzerverwaltung einen NT-Domänen-Kontroller zu nutzen.

Weitere ACL-Typen stehen für spezielle Anwendungen des Squid zur Verfügung, die nicht für die Benutzerverwaltung wichtig sind.

Werden mehrere Werte hinter dem ACL-Typ aufgelistet, braucht nur einer der Werte zu passen, um das zugehörige http_access zu aktivieren (OR-Logik, siehe Logik der Rechtevergabe).

Zur besseren Übersicht können die aufzulistenden Werte auch in eine eigene Datei ausgelagert werden. Dort wird für jeden Eintrag eine eigene Zeile angelegt. Die Datei muss Squid wie folgt bekanntgegeben werden:

    acl <frei_definierbarer_Name> <acl-Typ> "<Pfad_zur_Datei>"

#### 6.2.2 Zugriffsrechte für die ACLs definieren

Mit http_access wird in Kombination mit allow bzw. deny ein Recht für die definierten ACL-Elemente festgelegt.

Die Syntax:

    http_access allow|deny <acl-Name ...>

Das sieht zunächst sehr simpel aus. Einer definierten ACL wird über deny oder allow" ein gewünschtes Recht zugewiesen, so wie im Beispiel des Abschnittes Squid-Konfiguration auf die Schnelle gezeigt:

    acl allowed_hosts src 192.168.10.0/255.255.255.0
    http_access allow allowed_hosts

Komplexer wird es, wenn mehrere ACL-Namen in einer Zeile aufgelistet sind. Dies bewirkt, dass alle aufgelisteten ACLs zutreffen müssen, damit das allow oder deny" in Kraft treten kann.

Beispiel:

    acl all            src    0/0
    acl selflin        dstdom .selflinux.org
    acl pcRestr        src    192.168.20.0/255.255.255.0
    acl allowed_hosts  src    192.168.10.0/255.255.255.0

    http_access allow selflin       pcRestr
    http_access allow allowed_hosts
    http_access deny  all

Die Angabe der zwei ACL-Namen selflin und pcRestr nach dem ersten http_access bewirkt, dass Rechner mit der IP 192.168.20.* nur auf SelfLinux-Seiten surfen dürfen. Die allowed_hosts dürfen alles sehen, da diese nicht mit einer zusätzlichen ACL in der http_access-Zeile eingeschränkt werden.

Hier ist gleich eine wichtige Eigenart des ACL-Typs dstdom zu erkennen: Der '.' vor dem Domainnamen sagt Squid, dass auch Subdomains in diese ACL fallen, wie z. B. www.selflinux.org oder srv.sub.selflinux.org.

#### 6.2.3 Logik der Rechtevergabe

Es ist sehr wichtig für das Berechtigungsmodell von Squid, die OR/AND-Logik zu verstehen:

- Alle Elemente eines ACL-Eintrags werden mit OR verknüpft.
- Alle Elemente eines Access-Eintrags dagegen werden mit einem AND verknüpft.

Noch ein Beispiel, das fatalerweise überhaupt keinen Zugriff ermöglicht:

    acl wir src 192.168.10.0
    acl ihr src 192.168.20.0
    http_access allow wir ihr

Hier würden Zugriffe dann erlaubt werden, wenn sich der Surfende zugleich mit den beiden Quell-IPs an den Proxy wendet, was nicht möglich ist. Somit werden keine Zugriffe mehr erlaubt.

Sollen dagegen beide IP-Adressen Zugriff erhalten, muss folgendes eingetragen werden:

    acl wir src 192.168.10.0 192.168.20.0
    http_access allow wir

Ein weiterer wichtiger Punkt ist die Reihenfolge der access-Listen.

Ist erst einmal ein Zugriff erlaubt worden, kann er durch darunter liegende Zeilen nicht wieder zurückgenommen werden.

Beispiel:

    acl selflin  dstdom .selflinux.org
    acl verboten src    10.0.0.23
    http_access allow selflin
    http_access deny  verboten

Obwohl 10.0.0.23 in der letzen Zeile alles verboten wird, kann dieser PC die Seiten von SelfLinux sehen, da die Erlaubnis über dem kompletten Verbot vergeben wurde.