Filtering

Übersicht

  1. Was leistet Filtering?
  2. Application Level Filtering: Squid
  3. Packet Filtering: Transparentes Proxying

Was leistet Filtering?

Die Betreiber von Servern sind in der Regel daran interessiert, den Zugriff der Clients auf Netzwerkressourcen zu steuern (filtern). Neben der Rechtevergabe auf Dateiebene gibt es die Möglichkeit der Zugriffssteuerung auf Anwendungsebene (Application Level Filtering) und TCP/IP-Ebene (Packet Filtering).

zur Übersicht

Application Level Filtering: Squid

Eine typische Anforderung an Server, die die Verbindung zum Internet herstellen, ist es, den Zugriff der Clients auf Webseiten zu filtern.

Das Programm, das unter Linux diese Aufgabe übernimmt, heißt Squid ("Krake"). Die erforderlichen Einstellungen werden in der Datei "squid.conf" im Verzeichnis "/etc/squid" vorgenommen.

Bei der Installation dieses Programms wird unter SuSE Linux 9.0 eine Beispieldatei angelegt. Aus dem Spektrum möglicher Zugangsbeschränkungen soll im Folgenden diejenige herausgegriffen werden, die es gestattet, den Zugriff auf bestimmte URLs zu verbieten.

Der Zweizeiler

"acl geheimurl url_regex -i geheim
 http_access deny geheimurl"

in der squid.conf von Server A richtet z. B. eine Zugriffssperre (acl = access controll list) für alle Webseiten (siehe http_access deny) ein, in deren Pfadnamen (url) die Zeichenfolge (regex = regular expression) "geheim" in allen denkbaren Schreibweisen (Schalter "-i") begegnet.

Wenn ein Client von Server A also versucht, auf eine Webseite des Servers B mit dem Namen "geheimnisse.htm" zuzugreifen, erhält er die Fehlermeldung "ERR_ACCESS_DENIED".

zur Übersicht

Packet Filtering: Transparentes Proxying

Die Zugriffsteuerung via Squid funktioniert nur, wenn alle Webseitenaufrufe der Clients über ihn laufen, das heißt, wenn Squid als Proxy (Stellvertreter) fungiert.

Damit der Proxy-Server nicht - etwa durch Änderung der Einstellungen in den Browsern der Clients - umgangen werden kann, muss man alle Aufrufe von Websseiten (Datenpakete an den Port 80 oder 8080) auf den Proxy-Port 3128 umleiten, und zwar am besten ohne dass der Benutzer dies merkt (so genanntes Transparentes Proxying).

Zu diesem Zweck trägt man - bei der Kernelversion 2.2.x - in der Datei boot.local im Verzeichnis "/sbin/init.d" folgende vier Zeilen ein:

"ipchains -A input -p TCP -d 127.0.0.1/32 www -j ACCEPT
 ipchains -A input -p TCP -d 192.168.224.1/32 www -j ACCEPT
 ipchains -A input -p TCP -d 0/0 www -j REDIRECT 3128
 ipchains -A input -p TCP -d 0/0 8080 -j REDIRECT 3128"

[Die Einrichtung von Squid als eines transparenten Proxys hat den Nachteil, dass dies die Benutzer-Authentifizierung aushebelt, d. h., aus den Log-Dateien nicht mehr zu entnehmen ist, wer welche Webseiten aufgerufen hat oder aufrufen wollte.

Wenn man daran interessiert ist, dass die User sich am Proxy-Server authentifizieren müssen, und zugleich die Umgehung des Proxy-Servers verhindern will, muss man anstelle des obigen Vierzeilers - bei der Kernelversion 2.4.x - in der Datei boot.local eingeben:

"iptables -A FORWARD -p TCP --dport 80 -j DROP
iptables -A FORWARD -p TCP --dport 8080 -j DROP".

Diese beiden Zeilen bewirken, dass Aufrufe von Webseiten nach Deaktivierung des Proxy-Servers einfach ins Leere gehen - ohne jede Rückmeldung ("drop").]

weiter

URI dieser Seite: <http://www.ewetel.net/~martin.bode/ag_computernetze/filtering.htm>, zuletzt geändert: 2005-06-09

counter