Bei uns in der Schule dürfen die Kinder den PC-Raum jederzeit für eigene Texte oder zur „Recherche” nutzen. Dazu können sie sich auch allein im PC-Raum aufhalten. Wir haben glücklicherweise bislang an der Schule noch nicht die Erfahrung machen müssen, dass Kinder dies dazu genutzt hätten, um sich „anstößige” Inhalte gegenseitig vorzuführen.
Vor einigen Jahren sprach ich mit der Schulleiterin darüber, dass wir für den PC-Raum einen Contentfilter einrichten sollten. Das Für und Wider von Filtern möchte hier nicht thematisieren. Nachdem wir uns einig waren, begann ich vor etwa drei Jahren nach und nach eine Liste mit gesperrten Domains in der Fritzbox anzulegen. Einige Zeit später ergänzte ich die Liste mit dem Safe Search Filter von Google, was aber immer noch sehr viele Lücken offen ließ. Vor etwa ein bis zwei Jahren richtete ich bei Cisco auf openDNS ein Konto ein, um über deren alternativen Nameserver die dort angebotenen Filtermöglichkeiten zu nutzen.
Resultat: Alle bisherigen Filterversuche erwiesen sich kurz- und mittelfristig als äußerst unbefriedigend, weil die Filter zu schwach oder zu ungenau waren. Zusätzlich lag es mir im Magen, einen DNS zu nutzen, der nicht auf deutschem Boden steht.
Vor einiger Zeit nun habe ich auf dem Server im PC-Raum – ein kleiner Banana Pi mit Armbian – einen professionellen Contentfilter auf Basis eines Proxy-Servers eingerichtet. Die Vorgehensweise beschreibe ich im weiteren Verlauf.
Squid
Squid ist ein freier sog. Proxy-Server, der weltweit in kleineren und größeren Unternehmen im Einsatz ist. Er hat im Falle der Schule zwei Aufgaben: a) er ermöglicht eine genaue Zugangskontrolle ins Internet (ACL) und b) er dient als Zwischenspeicher (Cache) für geladene Webseiten / Updates aller Computer, was dazu führt, dass „das Internet” auf jedem daran angeschlossenen PC (scheinbar) viel schneller wird.
Zunächst einmal müssen wir auf dem Server squid installieren.
$ sudo apt-get install squid3
Ich stelle im Folgenden nur eine einfache „Basiskonfiguration” vor. Auf Feineinstellungen insbesondere bei der Cache-Größe, den ACLs usw. gehe ich hier nicht ein, da diese anhängig vom Schulnetzwerk von Fall zu Fall anders eingestellt werden müssen.
Auf dem Server wird jetzt die Konfigurationsdatei von squid geöffnet:
$ sudo nano /etc/squid3/squid.conf
Folgender Eintrag ist nun einzufügen:
acl SCHULNETZ src 192.168.1.0/24
Für SCHULNETZ kann man einen beliebigen Namen eintragen. Zudem muss man den Adressraum ggfs. auf das eigene Schulnetz abändern.
In der squid.conf
müssen nun noch folgende Zeilen geändert werden.
Der Eintrag http_access deny all
wird geändert nach:
http_access allow SCHULNETZ
Und der Eintrag forwarded_for on
wird abgeändert nach
forwarded_for off
Mit der ersten Einstellung wird allen Clients, die im Adressraum 192.168.1.0/24 liegen, also jedem, der Zugriff ins Internet gewährt. Mit der zweiten Einstellung verhindert man, dass die netzwerkinterne IP des Clients nach draußen übermittelt wird. Fehlt diese Einstellung ist das zwar kein Problem, aber es ist auch nicht wirklich schön.
Ans Ende von squid.conf
gehört folgender Zweizeiler:
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
url_rewrite_children 5
Hiermit weisen wir squid an, dass es zum Filtern von Inhalten auf squidguard zugreifen soll.
Squidguard
Der Contenfilter squidguard wird folgendermaßen installiert:
$ sudo apt-get install squidguard
Bevor ich mich an die Konfiguration des Contentfilters squidguard mache, lade ich eine Blacklist-Datei herunter und installiere sie im System. Ich habe mich für die aus Deutschland stammende Shallalist entschieden. Sie wird regelmäßig aktualisiert, enthält über 1,7 Millionen Einträge und ist dabei noch erstaunlich kompakt in der Dateigröße.
Nach dem Download der Liste entpacke bzw. verschiebe ich die Daten ins Verzeichnis (siehe ggfs. auch den Tipp zu den Besitzrechten weiter unten):
/var/lib/squidguard/db/
Hier befinden sich nun zahlreiche Ordner mit den Filterlisten.
schuladmin@server:~$ ls -al /var/lib/squidguard/db/
total 284
drwxr-xr-x 58 proxy proxy 4096 Oct 17 18:41 .
drwxr-xr-x 3 root root 4096 Oct 17 13:40 ..
drwxr-xr-x 2 proxy proxy 4096 Oct 20 14:54 adv
drwxr-xr-x 2 proxy proxy 4096 Oct 20 14:54 aggressive
drwxr-xr-x 2 proxy proxy 4096 Oct 20 14:54 alcohol
drwxr-xr-x 2 proxy proxy 4096 Apr 15 2015 anonvpn
drwxr-xr-x 6 proxy proxy 4096 Sep 19 22:47 automobile
drwxr-xr-x 2 proxy proxy 4096 Oct 20 14:54 chat
-rw-r--r-- 1 proxy proxy 803 Mar 8 2008 COPYRIGHT
drwxr-xr-x 2 proxy proxy 4096 Sep 10 11:27 costtraps
drwxr-xr-x 2 proxy proxy 4096 Oct 20 14:54 dating
drwxr-xr-x 2 proxy proxy 4096 Sep 15 12:10 downloads...
Als nächstes wird die Konfigurationsdatei angepasst. Dazu könnte die Datei einfach gelöscht werden: $ sudo rm /etc/squidguard/squidGuard.conf
Alternativ öffnet man einfach die bestehende squidGuard.conf
und entfernt die vorhandenen Einträge manuell:
$ sudo nano /etc/squidguard/squidGuard.conf
Die von mir erstellte Konfigurationsdatei kann hier eingesehen werden squidguard.conf. Zusätzlich zu den Blacklists habe ich auch eine Whitelist angelegt: /var/lib/squidguard/db/whitelist/domains
Darin trage ich alle Einträge ein, die in jedem Fall vom Proxy-Filter durchgelassen werden müssen bzw. nicht gefiltert werden dürfen!
# Hier stehen alle Webseiten, die NICHT gefiltert werden.
duckduckgo.com
frag-finn.de
fragfinn.de
blindekuh.de
blinde-kuh.de...
Die einzige Suchmaschine (für Erwachsene), die ich im PC-Raum zugelassen habe, ist das auf Privatsphäre wert legende DuckDuckGo. Alle anderen Suchmaschinen (Google, Bing, Yahoo etc.) sind gesperrt.
Tipp zur Whitelist: Die Whitelist liegt in einem Ordner, der dem Besitzer proxy.proxy
zugewiesen ist. Um dort einen neuen Ordner namens "whitelist"
anzulegen, kann es hilfreich sein, zunächst die Besitzrechte zeitweise nach root.root
abzuändern!
$ sudo chown -R root.root /var/lib/squidguard/db/
Dann die Whitelist einfügen und danach wieder…
$ sudo chown -R proxy.proxy /var/lib/squidguard/db/
Die Datei squidguard.conf
habe ich nun so eingestellt, dass bei einem Zugriff auf eine gesperrte Seite eine Umleitung zur schuleigenen Webseite „Internet für Kinder” erfolgt.
Ganz oben in der squidguard.conf
muss bei "src default"
noch der Adressraum der eigenen Schule eingetragen bzw. angepasst werden!
Hinweis für die Whitelist: In dieser Datei stehen Domains, die teilweise auch bei den Blacklists stehen. Die oben angegebene Suchmaschine DuckDuckGo steht sowohl in meiner Whitelist als auch in der heruntergeladenen Blacklist. Damit meine Einträge in der Whitelist die Einträge in der Blacklist „schlagen” / „übertrumpfen”, muss der Eintrag Whitelist unten bei "acl"
am Anfang stehen!
acl { default { pass whitelist !adv !aggressive !alcohol !chat !dating !drugs !fortunetelling !gamble !military !models !porn !searchengines !sex_education !sex_lingerie !socialnet !tracker !violence !warez all redirect http://burg-grundschule.de/internet-fuer-kinder }}
So, bevor nun abschließend die Datenbanken erstellt werden, ändern wir zur Sicherheit die Besitzrechte.
$ sudo chown -R proxy.proxy /var/lib/squidguard/db/
$ sudo chown -R proxy.proxy /var/log/squidguard/
Mit folgendem Befehl werden aus den heruntergeladenen Filterlisten die Datenbanken erstellt, auf die squidguard dann zugreifen kann.
$ sudo squidGuard -C all
Sollte es an dieser Stelle zu Fehlern kommen, hilft ein Blick in die Log-Dateien. Bei mir war es so, dass ich immer dann Fehlermeldungen hatte, wenn ich es vergaß, die Besitzrechte korrekt anzupassen!
$ sudo cat /var/log/squidguard/SquidGuard.log
$ sudo cat /var/log/squid3/access.log
Am Ende muss der Server neu gestartet werden "$ sudo init 6"
Anstelle eines Neustarts mittels $ sudo init 6
, kann auch der Service squid3 neu gestartet werden, um sich den Reboot des ganzen Servers zu ersparen:
$ sudo service squid3 restart
Mit Hilfe von $ initctl list
kann zudem der Status von squid3 überprüft werden.
Proxy-Server auf den Clients
Damit nun ein Computer auf den Proxy-Server zugreift, muss er noch konfiguriert werden. Auf den im PC-Raum vorhandenen Raspberry Pis erfolgt dies mittels:
$ sudo nano /etc/profile.d/proxy.sh
Darin wird eingetragen:
http_proxy=http://192.168.1.2:3128/ export https_proxy=$http_proxy export ftp_proxy=$http_proxy export rsync_proxy=$http_proxy export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$http_proxy export FTP_PROXY=$http_proxy export RSYNC_PROXY=$http_proxy
Bei der IP-Adresse muss der Proxy-Server eingetragen werden. Zum Schluss wird die Datei noch ausführbar gemacht, damit sie auch gestartet werden kann:
$ sudo chmod +x /et/profile.de/proxy.sh
Der Proxy-Server wird auf den Windosen direkt bei den jeweiligen Einstellungen im jeweiligen Browser eingestellt. Bei Firefox liegt das bei Einstellungen > Erweitert > Verbindung > Einstellungen.
DuckDuckGo
Die Suchmaschine DuckDuckGo bietet zahlreiche Einstellungsmöglichkeiten. Diese lassen sich mit einem Passwort geschützt bei DuckDuckGo abspeichern und anschließend von jedem Computer herunterladen. So verfügt jeder PC über die gleichen Einstellungen. Diese könnten zwar relativ leicht gelöscht werden – es handelt sich hierbei lediglich um ein Cookie -, aber welcher Grundschüler kennt schon Cookies und weiß zudem, wie man sie entfernt?