Squid als kostenloser Webfilter

Squid Cache ProxyEltern werden beim Medienkonsum des Nachwuchses vor viele Herausforderungen gestellt. Eine davon ist das „große böse Internet“. Damit dies etwas entschärft wird, gibt es diverse Anbieter von Webfilter und Kinderschutzsoftware. Viele der Lösungen sind allerdings kostenpflichtig, da dort aktiv Sperrlisten gepflegt und aktualisiert werden. Es gibt aber eine kostenlose Alternative.

Der Squid-Proxy-Server ist ein Dienst, der vermittelnd Webseiten herunterlädt und lokal speichert. Dies hat grundsätzlich den Vorteil, dass Seiten bei häufigen Aufrufen und mehreren Benutzern schneller geladen werden. Zudem lässt sich Squid sehr flexibel konfigurieren, unter anderem auch mit Zugriffskontrolllisten (Access Control Lists). Dieses Verhalten will ich nutzen, um einen Whitelist-Proxyserver für den Heimgebrauch aufzusetzen.

Wer sich noch nicht mit Webfiltern beschäftigt hat, weiß nun erstmal gar nicht, was eine Black- oder Whitelist ist. Ganz einfach: Eine Blacklist ist eine Liste gesperrter Seiten, eine Whitelist ist eine Liste erlaubter Seiten.

Warum Whitelist?

Oftmals werden spezifische Blacklists verwendet, die sich Anbieter von Filtersoftware auch bezahlen lassen. Dabei wird sich auf die Kennzeichnung der Webseiten und auf die redaktionelle Pflege verlassen. Meiner Meinung nach lässt sich nicht immer klar feststellen, auf welcher Seite Gefahren lauern können. Aus diesem Grund lieber eine Whitelist. Im Laufe des Kindesalters lassen sich so von anfangs wenigen und kindgerechten Seiten immer mehr Seiten aufnehmen und irgendwann ist dann der Nachwuchs sowieso bereit für die „Weiten des Internets“.

Voraussetzungen

Die hier gezeigte Variante eines Webfilters baut auf ein paar Voraussetzungen auf:

Desktop-Linux oder einen kleinen Linuxserver (z.B. alten Rechner), auf dem Squid ausgeführt werden kann. Wird als Desktoprechner ein Linuxsystem verwendet, so kann Squid lokal installiert werden. Es gibt auch eine Windows-Version von Squid, mit der ich allerdings keine Erfahrung habe.

Die Möglichkeit Proxyeinstellungen im Betriebssystem fest einzustellen und zwar so, dass der Nachwuchs diese nicht einfach verändern kann. Unter Windows ist es dazu nötig ein Konto mit eingeschränkten Rechten zu erstellen (ist sowieso sinnvoll, damit der Nachwuchs nicht den kompletten PC mit irgendwelchen Programmen zumüllt) und dann mittels lokaler Richtlinie die Internet Explorer Einstellungen verbieten.

Update: Als weitere Sicherungsmaßnahme des Internetzugriffs bietet es sich an, am Internetrouter den Zugriff aufs Internet nur vom Proxyserver aus zuzulassen. Dadurch wird verhindert, dass Geräte ohne eingetragenen Proxyserver ins Internet kommen.

Installation und Konfiguration

Unter Ubuntu ist einfach nur das Paket squid3 zu installieren. Danach lässt der Proxy erst einmal alle lokalen Anfragen vom Rechner durch. Um das zu ändern, passen wir die Konfigurationsdatei unter /etc/squid3/squid.conf an. Als erstes erstellen wir unsere Whitelist ACL folgendermaßen:

acl whitelist dstdomain "/etc/squid3/whitelist"

Zudem fügen wir noch unsere squid3.conf einen Befehl ein, damit Squid weiß, was es mit der ACL machen soll:

http_access allow whitelist

Falls das nicht in der ACL steht, sollte danach noch jeder andere Datenverkehr verboten werden:

http_access deny all

Erstellen einer Whitelist

Nun können wir in der angegebenen Datei zulässige Domänennamen im folgenden Format angeben:

.wikipedia.org
.wikipedia.de
.wikimedia.org

Benutzerzugänge

Damit haben wir jetzt für alle Rechner, die den Proxy nutzen auf die Whitelistdomänen beschränkt. Das ist zwar gut für die Kinder im Haus, für die Eltern aber eher nervtötend wenn nur noch Toggolino angesurft werden kann. Also führen wir jetzt noch eine Benutzerauthentifizierung ein!

In einer Konfigurationsdatei werden dabei gültige Benutzerkennungen hinterlegt, im htpasswd-Format. Dazu ruft man das htpasswd-Programm auf oder erzeugt das Passwort mit einem der vielen Onlinegeneratoren. Wir legen also in die Datei /etc/squid/squid_passwd folgende Infos:

eltern1:$apr1$b5mRd...$VdppDdsZA7A2H8yqQDNPB0
eltern2:$apr1$b5mRd...$VdppDdsZA7A2H8yqQDNPB0
kind1:$apr1$b5mRd...$VdppDdsZA7A2H8yqQDNPB0
kind2:$apr1$b5mRd...$VdppDdsZA7A2H8yqQDNPB0

Natürlich wählt man hier die entsprechende Namen, wer will sich schon mit kind2 anmelden?
In der squid.conf muss jetzt bekannt gemacht werden, dass wir Authentifizierung nutzen wollen:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/squid_passwd

Schließlich muss unsere ACL noch etwas angepasst werden, damit klar ist, wer wohin darf:

acl whitelist dstdomain "/etc/squid3/whitelist"
acl erwachsene proxy_auth eltern1 eltern2
acl kinder proxy_auth kind1 kind2
http_access allow erwachsene
http_access allow kinder whitelist
http_access deny all

Damit sagen wir Squid, dass sich in der ACL erwachsene die Benutzer eltern1 und eltern2 befinden und anmelden, in der Gruppe kinder kind1 und kind2. Weiterhin dürfen Erwachsene überall hin, Kinder nur auf Seiten in der Whitelist.

Beispielkonfiguration

In dieser Beispielkonfiguration dürfen eltern1 und eltern2 frei ins Internet. kind1 darf täglich auf Seiten der Whitelist in der Zeit von 16 – 19 Uhr.


acl whitelist dstdomain "/etc/squid3/whitelist"
acl kinderzeit time SMTWHFA 16:00-18:59
acl erwachsene proxy_auth eltern1 eltern2
acl kinder proxy_auth kind1
http_access allow erwachsene
http_access allow kinder whitelist kinderzeit
http_access deny all

Einstellung an den Clients

An den Clients muss entsprechend der Proxy-Server eingetragen werden. Läuft Squid am Desktoprechner selbst, so muss hier der localhost (127.0.0.1) und Port 3128 in den Proxyeinstellungen des Browsers eingetragen werden. Läuft Squid auf einem anderen Rechner, ist entsprechend dessen IP und der Port 3128 in den Proxyeinstellungen einzutragen. Zudem ist Sorge zu tragen, dass diese Einstellungen durch den Nachwuchs nicht verstellt werden können – z.B. mittels Windows Gruppenrichtlinie für den Internet Explorer. Für Firefox bestehen ähnliche Möglichkeiten.

Ausblick und Fazit

Squid ist wie vorhin erwähnt sehr flexibel, in der Konfiguration gibt es fast nichts, was nicht möglich ist. Für Fortgeschritte kann dann auch eine Authentifizierung mit den Windows-Benutzerkennungen per NTLM erfolgen, eine zeitliche Einschränkung für die Kinder eingestellt werden (siehe obiges Beispiel), die Fehlerseiten angepasst werden uvm.

Gerade für kleine Kinder gibt es mit Sicherheit bessere Tools, da ja hier ein Kennwort eingegeben werden muss. Wenn wirklich kann man aber ohne Benutzerauthentifizierung fahren und eben zu bestimmten Stunden nur die Whitelist zulassen und dann am Abend auf freie Fahrt für die Eltern wechseln.

Von Microsoft gibt es übrigens für Windows auch umfassende Tools für den Jugendschutz mit Webfilter, allerdings habe ich diese noch nicht getestet.

Schreibe einen Kommentar