Login
Newsletter
Werbung

Mo, 27. August 2001, 00:00

SquidGuard

Mit SquidGuard kann man nicht nur blinkende Werbung im Internet heraus filtern, sondern auch sämtliche Pornoseiten und anderen unerwünschten Kram unterdrücken. Allerdings setzt SquidGuard einen laufenden Squid-Proxy voraus.

Installation

Man bekommt das SquidGuard-Paket auf dessen Heimseite: www.squidguard.org. Dort findet man auch eine gute Einführung in das Schreiben der Config-Datei und eine ausreichende Installationsanleitung. Nur deren Support läßt leider zu wünschen übrig.

Die Installation geht nicht ganz einfach vonstatten.

Als erstes benötigt man die Berkeley-Database Version 2.7.7, zu finden unter www.sleepycat.com. Die Installation ist zwar unkompliziert, aber es kann unter Umständen zu Konflikten und Überschneidungen mit der gerade gebräuchlichen Version 3 kommen (vor allem ab Red Hat 7 und Mandrake 8). Es ist daher besser, man sucht nach einer bereits existierenden RPM unter rpmfind.net. Dann geht alles ein wenig schneller. Eine Beispiel Spec-Datei habe ich schon einmal angefertigt. Man kann sie ohne Probleme verwenden, da sie alle notwendigen Dateien in /usr/local installiert, wo normalerweise keine Konflikte auftreten sollten:

SquidGuard-berkeley-db-2.7.7.spec

Vielleicht ist es noch nötig, damit SquidGuard auch die richtige Datenbank findet, einen Link von /lib/libdb.so nach /usr/local/lib/libdb.so anzulegen. Das hängt von der verwendeten Distribution ab. Aber spätestens damit sollte man SquidGuard kompilieren können.

Als nächstes installieren wir dann endlich SquidGuard. Ich habe eine Beispiel-Spec von Mandrake etwas modifiziert:

SquidGuard-squidguard-1.1.4.spec

Via "rpm -ivh" installieren wir dann wie gewohnt die entstandenen *86.rpm Pakete.

Debian-Benutzer mögen mir verzeihen. Sie finden sicher entsprechende deb-Pakete auf den Servern ihrer Distribution.

Konfiguration

Hier eine Beispielkonfiguration von mir. Die Erklärungen finden sich als Kommentare in der Konfiguration. So sollte das Erlernen am einfachsten gehen.

# Das Verz., in dem die Logs gespeichert werden sollen
logdir /var/log/squidGuard
# Das Heimverzeichnis, worin sich die SquidGuard-Datenbanken befinden
dbhome /usr/share/squidGuard-1.1.4/db
# Diese Regel filtert alle Advertising-Banner heraus
dest ads
{
 # Liste der Domains (in $dbhome/ existierende Datei $dbhome/ads/domains)
 domainlist ads/domains
 # Liste der URLs (in $dbhome/ existierende Datei $dbhome/ads/urls)
 urllist ads/urls
 # Liste von logischen Ausdrücken (Expressions)
 # (Datei muß existieren: $dbhome/ads/urls)
 expressionlist ads/expressions
}
# Diese Regel filtert Werbeseiten heraus
dest advertising
{
 domainlist advertising/domains
 urllist advertising/urls
 expressionlist advertising/expressions
}
# Diese Regel filtert alle Seiten mit anstößigen Inhalten heraus
dest porn
{
 domainlist porn/domains
 urllist porn/urls
 expressionlist porn/expressions
}
# Dies ist eine selbst definierte Regel
# (Zum Anlegen eigener Regeln später mehr)
dest kristian
{
 domainlist kristian/domains
 urllist kristian/urls
 expressionlist kristian/expressions
}
# ACLs
acl
 {
 # Erstmal eine default-Regel, auf entsprechende ACLs möchte ich in diesem
 # Artikel nicht eingehen.
 # Nähere Infos auf der SquidGuard-Heimseite
 default
 {
 # Alle vorher definierten Regeln nicht durchlassen, ansonsten alles.
 # Ein ! vor der Regel besagt, daß explizit alle in dieser Regel
 # definierten Adressen nicht durchgelassen werden.
 pass !porn !kristian all
 # Falls eine Seite gefiltert wurde, dann wird sie weiter geleitet und
 # anstelle ihrer eine andere angezeigt.
 # Hier muß man eine HTTP-Adresse angeben. Am besten man verwendet Apache
 # oder ähnliches und benutzt das auf der SquidGuard-Heimseite
 # erhältliche cgi-Skript.
 # Aus Sicherheitsgründen sollte man stets Localhost angeben, da sonst
 # alle Rechner des Netzwerkes auf eine interne Ressource via Squid
 # zugreifen könnten.
 redirect http://127.0.0.1:80/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u
 # Natürlich ist es auch möglich, statt eines Skriptes eine GIF-Datei
 # anzugeben, die transparent ist. Diese kann man für den Werbebannerfilter
 # benutzen.
 pass !ads !advertising all
 redirect http://127.0.0.1:80/block.gif
 }
}

Verifikation

Nachdem SquidGuard installiert ist, müssen wir ihn erstmal testen. Das geschieht, wie auf der Homepage beschrieben, folgendermaßen:

Wir schreiben eine Test-Anforderung in 3 Dateien. Das erledigen beispielsweise die folgenden 3 Befehle:

export request="http://www.porno.de/index.html - - GET";
echo $request > test.pass;
echo $request > test.rewrite;
echo $request > test.block;

Das Format für den Request-String ist folgendermaßen:

URL ip-address/fqdn ident method

Mit folgendem Aufrufen testet man SquidGuard:

squidGuard -c /etc/squid/squidGuard.conf < test.pass > test.pass.out;
squidGuard -c /etc/squid/squidGuard.conf < test.rewrite > test.rewrite.out;
squidGuard -c /etc/squid/squidGuard.conf < test.block > test.block.out;

Als nächstes müssen wir den Output überprüfen:

wc -l test.pass;
wc -l test.pass.out;
wc -w test.pass.out;

Die numerischen Ergebnisse für die ersten beiden Kommandos müssen gleich sein und 0 für das letzte.

wc -l test.rewrite;
wc -l test.rewrite.out;
diff test.rewrite test.rewrite.out | egrep -ic '^> ..* &#91;0-9.&#93;+/..* ..* &#91;a-z&#93;+$';
more test.rewrite.out;

und

wc -l test.block;
wc -l test.block.out;
diff test.block test.block.out | egrep -ic '^> ..* &#91;0-9.&#93;+/..* ..* &#91;a-z&#93;+$';
more test.block.out;

(Gilt für block und rewrite.) Für die ersten 3 Tests müssen die Ergebnisse gleich sein. Das more-Kommando sollte eine komplette URL anzeigen. Falls die Adresse geblockt wurde, so steht sie in test.block.out.

Squid-Einstellungen

Wir brauchen unseren Proxy nicht zu patchen oder dergleichen, sondern tragen nur folgendes in der squid.conf ein:

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

Dann noch Squid beenden und neustarten. Und dann funktioniert es.

Eigene Regeln definieren

Unsere Konfiguration enthielt vorhin eine selbst definierte Regel.

dest kristian
{
 domainlist kristian/domains
 urllist kristian/urls
 expressionlist kristian/expressions
}

Dazu erstellt man im db-Verzeichnis von SquidGuard (normalerweise /usr/share/squidGuard-1.1.4/db) in unserem Beispiel das Verzeichnis "kristian". Danach legt man in dem neu angelegtem Verzeichnis 3 leere Dateien an: domains, urls, expressions. Dort schreibt man dann erstmal alle entsprechenden Seiten, die man nicht erlauben möchte, hinein. In die Datei domains werden nur Domänen eingetragen. Z.B. www.pro-linux.de. In Expressions nur logische Ausdrücke. Möchte man, daß alle Seiten, die "Werbung" in ihrer Adresse enthalten, heraus gefiltert werden, so trägt man das Wort hier ein.

Als letztes muß man dann noch die SquidGuard-Datenbank erneuern. Das geschieht mit dem Parameter -C.

squidGuard -C domains
squidGuard -C urls

Falls man eine diff-Datei angelegt hat, kann man auch -U (für Update) benutzen.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung