SquidGuard

(1750 Worte insgesamt im Text)
(44023 mal aufgerufen)  Druckerfreundliche Ansicht [1]

Letzte Änderung: 24.05.2005

Einleitung

Das Programm SquidGuard [2] wird oftmals als Filterprogramm für Internetseiten verwendet.

SquidGuard ist ein "Redirector", der in der Lage ist, unerwünschte URLs zu sperren, indem er die im Browser eingegebene URLs mit Einträgen aus einer auf dem Server gespeicherten Datenbank vergleicht und bei einer Übereinstimmung die Anfrage des Clients auf eine vorher definierte Webseite umleitet.

Sicherlich kann über den Einsatz einer solchen zensierenden Software immer diskutiert werden -- hier gibt es nur einen kurzen, technischen Überblick über die Möglichkeiten, damit Sie Ihre Entscheidung für oder gegen den Einsatz dieses Programms auf der Grundlage von fundiertem Wissen treffen können.

Was ist SquidGuard?

SquidGuard ist ein Plugin für den Proxy-Server Squid [3], das
Normalerweise werden aber nicht alle diese Funktionalitäten genutzt. Eine Aufteilung nach Tageszeit oder gruppen- oder computerabhängige Zugriffsrechte findet meist nicht statt.

In einer Berkley-Datenbank werden diverse Internetseiten und IP-Adressen initialisiert, welche für die Verbreitung von "schmutzigen Inhalten" bekannt sind.

Nach dem Start von Squid wird auch SquidGuard initialisiert und läd die Datenbank. Jede Anfrage eines Clients wird nun von Squid an SquidGuard durchgereicht, wo Sie mit den in der Datenbank enthaltenen Einträgen verglichen wird. Da die Inhalte der Datenbank vorher "kompiliert" wurden und so sehr schnell abgefragt werden können, merkt der normale Nutzer auch bei mehreren tausend Einträgen in der Datenbank kaum etwas davon.

Schemazeichnung: Proxy und Redirector

Die Listen (der Sperrseiten) für die Datenbank befindet sich normalerweise im Verzeichnis /var/lib/squidGuard/db/blacklist. Nehmen Sie hier Änderungen vor, müssen Sie mit dem Befehl:
squidGuard -c /etc/squid/squidguard.conf -C all

die Datenbanken neu aufbauen und den Proxy squid seine Konfiguration neu laden lassen. Dies geschieht bei SUSE [4] z.B. mit dem Befehl:
rcsquid reload

Findet SquidGuard eine Ãœbereinstimmung mit der Datenbank, wird der Nutzer per default-Einstellung auf ein cgi-Skript auf dem Webserver des Schulservers umgeleitet, welches Ihm mitteilt, dass die Auslieferung der angefragten Seite verweigert wird.

Zugleich kann die Anfrage inkl. Zeit, Datum, Rechner und Benutzer in einem Logbuch festgehalten werden, wenn das gewünscht wird.

Einsatz von SquidGuard in einer Schulumgebung

Prinzipiell bietet SquidGuard mit seinen Möglichkeiten für Schulen eine gute Möglichkeit, Schüler vor unerlaubten Inhalten des Internets zu schützen. Allerdings wird dieser Schutz (trotz einer zusätzlichen "Stichwortsuche" in Webseiten) nie endgültig alle Inhalte erfassen können, da sich eben diese Inhalte zu oft und zu schnell ändern.

Eine Einweisung in den verantwortungsvollen Umgang mit dem Internet kann SquidGuard deshalb nicht ersetzen! Während der vorbeugende Einsatz von SquidGuard in Grundschulen wohl noch akzeptabel erscheint, sollten in weiterführenden Schulen also eher pädagogische und soziale Maßnahmen - zumindest begleitend - eingesetzt werden.

Bitte weisen Sie sämtliche Personen, die das Internet nutzen, auf die Verwendung von Filtersoftware hin und sorgen Sie durch eine ausreichende zusätzliche Kontrolle für die Sicherung eines verantwortungsvollen Interneteinsatzes.

Update-Skript für die Internet-Filterlisten

Das hier [5] erhältliche Skript läd von entsprechenden FTP-Servern aus dem Internet die dort vorhandenen Filterlisten herunter und bindet sie automatisch in SquidGuard ein.

Bevor Sie mit dem Skript arbeiten, sollten Sie allerdings die Pfade im Skript mit einem Editor anpassen - das Skript ist auf die Benutzung mit dem GEE- und dem OSS-Server ausgelegt.

Sie können dieses Skript mit dem Befehl:
get_blacklist

starten. Bedingung: der Server, auf welchem SquidGuard läuft, hat zu dieser Zeit Zugang zum Internet.

SquidGuard konfigurieren

Die "Profis" werden SquidGuard über die Datei squidGuard.conf konfigurieren. Auf diese Datei greifen auch alle anderen Tools zurück, so dass Ihnen diese Möglichkeit immer offen steht. Aus diesem Grund wollen wir zunächst auch erst einmal alle Einstellungsmöglichkeiten auf Basis dieser Datei ansehen.

Struktur der Datei

Die Konfigurationsdatei sollte folgendermaßen Strukturiert werden:

Reservierte Wörter

Bei der Definition von Regeln können Sie fast beliebige Namen für die Regeln vergeben - nur die hier aufgelisteten Wörter dürfen nicht benutzt werden, da sie in der Konfigurationsdatei eine besondere Bedeutung haben:
acl fri outside sun urllist
anonymous friday pass sunday user
date fridays redirect sundays userlist
dbhome ip rew thu wed
dest log rewrite thursday wednesday
destination logdir sat thursdays wednesdays
domain logfile saturday time weekly
domainlist mon saturdays tue within
else monday source tuesday
expressionlist mondays src tuesdays

Das Zeichen "#" steht vor Kommentaren, das Zeichen "-" beschreibt einen Bereich (also z.B. 08:00-12:00). Die geschweiften Klammern "{ }" umfassen eine Gruppe von Anweisungen. Wer also schon einmal ein wenig Programmiert hat, der sollte in der Konfigurationsdatei gut zurecht kommen.

Namenskonventionen

Bei der Namensvergabe können Sie die auch von anderen Programmen her bekannten Zeichen verwenden. Also z.B. [-_.a-z0-9]+

Ãœberlange Zeilen

Überlange Zeilen können Sie vermeiden, indem Sie das führende "Schlüsselwort" wiederholen. Beispiel:
src foo {
ip 1.2.3.4
ip 2.3.4.5
}
bedeutet dasselbe wie:
src foo {
ip 1.2.3.4 2.3.4.5
}

Pfadangaben

Die Direktive "logdir" bezeichnet das Verzeichnis, in welchem SquidGuard seine Logdatei "squidGuard.log" anlegt. Diese Pfadangabe gilt auch für evtl. weitere Logdateien, die Sie in den ACLs definieren - es sei denn, Sie setzen dort die Pfadangaben absolut.

Unter "dbhome" sucht SquidGuard die Datenbank-Dateien mit den entsprechenden Inhalten. Auch hier können Sie wieder in andere Verzeichnisse ¨abtauchen¨, indem Sie entsprechende URLs angeben. So werden z.B. die Sperrseiten oft in unterschiedliche ¨Themenbereiche¨ wie Porno oder Games unterteilt, damit man später ganz gezielt bestimmte Bereiche freigeben kann. So könnte mit den beiden obigen Beispielen eine separate Regel für bestimmte Spielerechner erstellt werden - alle andern bekommen diese Seiten nicht angezeigt. Porno wäre z.B. für alle verboten. Problem: irgend jemand muss auch die ¨Blacklists¨ in diesen Bereichen pflegen...

So sollte die Datei also beispielhaft mit folgenden Einstellungen beginnen:
logdir /var/log/squidGuard/

dbhome /var/squidGuard/db/

Achtung! Stehen diese beiden Einträge nicht direkt am Anfang der Datei verweigert SquidGuard kommentarlos jeden Dienst!

Zeitdefinitionen

Zeiträume werden wie folgt deklariert:
time name {
Zeitraum
Zeitraum
...
}

Als Zeitraum kann jede Kombination der folgenden Werte genommen werden:
BeschreibungBeispiel
Einzelne Wochentage mit einer wahlweise freigestellten Zeitbegrenzung für jeden Tag. Montag bis Freitag, in den Morgen- und zu den Abendstunden:
  • weekly mtwhf 00:00-08:00
  • weekly mtwhf 17:00-24:00
Eine bestimmte Tageszeit.
  • weekly * 00:00-08:00
  • weekly * 17:00-24:00
Genaue Datumsangaben mit einer wahlweise freigestellten Zeitbegrenzung für jedes einzelne Datum. Während des Aschermittwoch Nachmittages von 1999:
  • date 1999.03.31 12:00-24:00
Eine Abfolge von Daten mit einer wahlweise freigestellten Zeitbegrenzung für jeden Tag. Zum Beispiel für das Ostern von 1999:
  • date 1999.04.01-1999.04.05
Datum Wildcard mit einer wahlweise freigestellten Zeitbegrenzung. Während des Weihnachtsabends:
  • date *.12.24 12:00-24:00

Anmerkungen:
  1. Die numerischen Formate sind streng (08:00 d.h. nicht 8:00 für HH:MM usw.)
  2. Ãœberlappungen sind in Ordnung - das Ergebnis ist dann die "Gesamtsumme".

Hier nun eine einfache Beispiel-Definition:
time Freizeit {
weekly * 00:00-08:00 # Jede Nacht von 00:00 bis 08:00
weekly fridays 16:00-17:00 # Jeden Freitag abend von 16:00-17:00
}
time Feiertage {
date *.01.01 # Silvester
date *.12.24 12:00-24:00 # Weihnachten ab Mittag
date *.10.03 # Tag der dt. Einheit
}
time Urlaub {
date 2004.04.01-2004.04.15 # Der erste Urlaub
date 2004.12.22-2005.01.06 # Der zweite Urlaub

Werden die Regeln zusammen angewand, gelten am 24.12.2004 die beiden Regeln Feiertag und Urlaub gleichzeitig. Die jeweils erste angewendete (nicht hier definierte!) Regel gewinnt dann - sollten unterschiedliche Auswirkungen damit verbunden sein.

Zielgruppen

Hier können Sie "feintunen", d.h. Sie können z.B. für bestimmte Rechner, Rechnergruppen oder - wenn die Daten zur Verfügung stehen - auch für bestimmte Gruppen oder Nutzer eigene Definitionen erstellen.

Diese Definitionen werden mit src oder source eingeleitet. Mit den Zusätzen within und outside können Sie zusätzlich Zeiträume definieren, innerhalb oder ausserhalb diese Definitionen gelten sollen. Wenn Sie Zeitangaben nutzen, können Sie zusätzlich mit der Option else angeben, welche Regeln ausserhalb der angegebenen Zeiträume gelten.

So können Sie also z.B. für bestimmte Rechner in einem Raum innerhalb einer bestimmten (unterrichts-)Zeit andere Regeln geltend machen als ausserhalb dieser Zeiträume.

Auch hier wollen wir wieder die graue Theorie mit ein paar Beispielen verdeutlichen.

IP-Adressen

Hier können Sie einzelne IP-Adressen oder ganze IP-Adressbereiche angeben.
ip 192.168.0.10 # Einzelne IP-Adresse
ip 192.168.0.0/255.255.255.0
oder
ip 192.168.0.0/24
# Ein gesammtes Netzwerksegment
ip 192.168.0.10-192.168.0.20 # Ein IP-Adressbereich

Eine andere Möglichkeit, welche besonders bei der Verwendung von automatischen Konfigurationsskripten interessant wird, ist die Verwendung von zusätzlichen, einfachen Textdateien, die die Adressen oder Adressbereichen beinhalten.
iplist schulraum1 # Der Lagerort der Datei "schulraum1" sollte entweder relativ zu "dbhome" (s.o.) oder absolut angegeben werden.

In der Datei "schulraum1" werden die IP-Adressen dann wie oben gezeigt angegeben - ohne das Kürzel "ip" davor.

Domains

Ebenso können Sie auch ganze Domains definieren.
domain schulnetz.local # Umfasst alle Rechner in dieser Domain.

Benutzernamen

Wenn auf den Clients ein sog. "ident"-Dienst läuft, der auch den Benutzernamen übermittelt, dann können Sie sogar nach Nutzernamen filtern. Auch hier können die Namen wieder in eine separate Datei ausgelagert werden.
user schueler1 # Ein einzelner Nutzer
user schueler1 schueler2 # Mehrere Nutzer werden einfach hintereinander gehängt
userlist schuelerliste # Eine Datei "schuelerliste", die jeden Nutzer in einer eigenen Zeile auflistet.

SquidGuard ausschalten

Um wieder ohne SquidGuard zu surfen, müssen Sie den Aufruf von SquidGuard in der Konfigurationsdatei von Squid entfernen.

SquidGuard versteckt sich hier unter den Einträgen Im Abschnitt "# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS" [6] der squid.conf.

Unter Webmin [7] oder anderen "eingedeutschten" Programmen finden Sie diese Werte also unter "(externe) Hilfsprogramme".

Nachdem Sie diese beiden Einträge mit einem vorangestellten "#" auskommentiert (oder in den anderen Programmen gelöscht) haben, müssen Sie Squid noch seine Konfiguration neu einlesen lassen, damit er auch von der Änderung erfährt. Dies funktioniert unter SUSE LINUX mit dem Befehl: "rcsquid reload" als root.


  

[ zurück zu Serverprogramme [8] | Index [9] ]

Kommentare

Einen Kommentar hinzufügen


Links
  [1] http://www.linux-schulserver.de/index.php?name=Sections&req=viewarticle&artid=2&allpages=1&theme=Printer
  [2] http://www.linux-schulserver.de/Sections-article2-p1.phtml
  [3] http://www.squid-cache.org/
  [4] http://www.novell.com/linux/suse/
  [5] http://www.linux-schulserver.de/Sections-article33-p1.phtml
  [6] http://www.linux-schulserver.de/Sections-article1-p6.phtml
  [7] http://www.webmin.com/
  [8] http://www.linux-schulserver.de/index.php?name=Sections&req=listarticles&secid=1
  [9] http://www.linux-schulserver.de/index.php?name=Sections