Squid und ein URL-Filter
Inzwischen nutzen wir den Squid Proxy bei uns im Geschäft seit einigen Wochen produktiv. Ich darf sagen, dass ich mit dem Teil ganz gut zufrieden bin. Es läuft stabil und die Wartung hält sich auf einem sehr geringen zeitlichen Aufwand. So wie man es sich eben bei einem Linux-System – und in diesem Fall bei einem Ubuntu-Server – eben gewohnt ist. Nebst der eigentlichen Installation, welche ich hier kurz beschrieben habe, erweitere ich von Zeit zu Zeit einige eher kosmetischen Dinge.
Es gäbe ja zu Squid noch das Paket squidGuard, um Webinhalte zu filtern. Jene Möglichkeit gefällt mir aber nicht besonders, da man sämtliche Anfragen über einen externen Host umleiten muss. Deswegen habe ich mich entschieden, einen simplen URL-Filter zu benutzen, der bloss in der URL nach vorgegeben Worten sucht und diese zulässt oder verbietet. Der Aufbau jener Filterung ist in zwei Teile aufgebaut:
- Filterwerkzeug, eine Datei, in der die Worte stehen, welche in einer URL nicht vorkommen dürfen.
- Eine Ausnahmeliste, die URLs zulässt, welche durch die erste Liste verboten wären.
Eine solche Einrichtung ist sinnreich, wenn man beispielsweise den Begriff sex generell in den URLs verbieten will, aber die Domain msexch.de zulassen möchten.
Die Sperrliste trägt den Namen domains.regex und liegt im Verzeichnis /etc/squid/. Sie enthält pro Zeile ein Wort, das nicht in einer URL vorkommen darf. Also zum Beispiel:
sex
gay
radio
fernsehen
stream
georges
bush
Die Ausnahmeliste enthält Teile eines Domänennamens oder bei Bedarf eine FQDN; je eine pro Zeile. Sie nennt sich domains.exclude und liegt ebenfalls im Verzeichnis /etc/squid/. Sie sieht etwa so aus:
msexch\.
spitalbuelach\.
tagesanzeiger\.ch
Der Punkt wird als Sonderzeichen angesehen und muss deswegen mit einem Backslash “angekündigt” werden, damit er richtig erkannt wird.
Nun muss die squid.conf, welche sich auch im Ordner /etc/squid/ befindet, angepasst werden. Es braucht lediglich eine ACL und eine Ausführungsanweisung dazu:
### gesperrte Ausdruecke in URLs
acl verboten url_regex -i "/etc/squid/domains.regexp"
acl ausnahme url_regex -i "/etc/squid/domains.exclude"
http_access allow ausnahme
http_access deny verboten
Danach sollte man entweder squid neu laden oder neu starten:
sudo /etc/init.d/squid reload #Konfiguration neu laden
sudo /etc/init.d/squid restart #Squid neu starten
In der Regel reicht es, wenn die Konfiguration neu geladen wird. Ich habe aber auch die Erfahrung gemacht, dass bei Ergänzungen an der Ausnahme-Datei (domains.exclude) und einem reload die Ergänzungen nicht gegriffen haben. Erst ein Neustart des Dienstes hat Wirkung gezeigt.
Ich finde es noch wichtig, dass man sich im Klaren ist, was ein URL-Filter zu leisten vermag. Nach meiner Meinung darf man ihn nicht mit einem Content-Filter vergleichen, da der Inhalt einer Website bei einem URL-Filter gar nicht angeschaut wird. Eine URL-Filterung ist also ein sehr rudimentärer Ansatz, unerwünschte Inhalte zu verbieten. Will man konsequent moralisch verwerfliche Inhalte oder illegale Websites verbieten, reicht eine URL-Filterung niemals aus.


02. April 2008 um 14:25 Uhr
Hei, da ist man mal ein paar Tage nicht online, und da ist der Yoda so fleißig in Sachen Ubuntu/Debian unterwegs, dass ich mir glatt ein paar Minuten nehmen muss für die neuen Artikel
Eigentlich wollte ich nur sagen, dass du den Squidguard sehr wohl auch auf derselben Maschine laufen lassen kannst, wie den Squid. Das einzige Problem dabei ist man kann nur ein redirector programm in der squid.conf angeben, solltest du also den Traffic noch durch einen Virenscanner überprüfen lassen o.a. dann geht’s erstaml nich so einfach.
02. April 2008 um 14:51 Uhr
Danke Dudley! Yo, ich meinte schon auch, dass SquidGuard auf der selben Maschine läuft. Aber der gesamte Traffic geht ja dann über einen “Filterhost”, der extern ist. Das gefällt mir nicht, ist aber bei solchen Einrichtungen ja immer gegeben. Im Moment reicht es so, wie es läuft; allenfalls werde ich mich dem SquidQuard noch einmal annehmen. AUf jeden Fall danke für den Tipp!
05. Dezember 2008 um 11:40 Uhr
Hallo Roman,
falls Du Dich noch mit SquidGuard beschäftigst: Es ist keineswegs so, dass der Traffic über einen externen “Filterhost” läuft.
In der squidGuard.conf gibst Du ein db-Verzeichnis an. In dieser db werden Domain- und URL-Listen gespeichert. Die Domain- und URL-Listen liegen im Klartext vor und können jederzeit geändert oder (besser) durch eigene Listen ergänzt werden.
Die Listen kann man bequem downloaden, zum Beispiel hier: http://www.shallalist.de/
Nur damit es schneller geht, werden die Listen dann in ein db-File umgesetzt. Aber alles bleibt dabei lokal auf Deinem Server.
Lad Dir die Listen bei shalla.de einfach mal herunter und staune über den Umfang…
Gruss, Ludwig.
05. Dezember 2008 um 11:44 Uhr
Danke Ludwig! Das werde ich mir anschauen, weil das Thema wieder aktuell ist bei uns.