DansGuardian mit Polipo
ohne IP-Tables für Gnome und KDE

aktualisiert: 20. Mai 2010 - Polipo statt Tinyproxy!

Installationshilfe für Linux-Internetfilter

DansGuardian ist ein zuverlässiger, nicht-kommerzieller Inhaltsfilter auf Wortbasis zum Schutz gegen Pornografie, Gewalt und Rassismus. Mehr dazu in Englisch auf www.dansguardian.org. Die hier gebotene Installationshilfe stützt sich auf meine Erfahrung mit Einplatz-PC mit installiertem Gentoo-Linux und den grafischen Arbeitsfflächen Gnome und xfce4.

Bist du breits Nutzer der Gnome-Arbeitsfläche, ist die Installation am einfachsten, du brauchst nur Punkte 1-3 zu beachten.

Empfohlene Software:

  1. DansGuardian
  2. Polipo

Achtung neu (Mai 10): Polipo statt Tinyproxy

Die neusten Versionen von DansGuardian scheinen mit Tinyproxy Probleme zu machen. Es erscheint oft nur eine blanke Seite oder eine Fehlermeldung im Stil "Unknown encoding...". Hat jemand den Fehler herausgefunden?

Jedenfalls empfehle ich nun den Proxy Polipo, der die gleiche Aufgabe ausübt wie Tinyproxy und dazu noch einen Cache auf der Festplatte führt. Das einzige, was man ändern muss, ist der Proxy-Port in dansguardian.conf (s.u. Punkt 1).

Achtung neu (Jan 09): Ubuntu CE nimmt dir die Arbeit ab!

Die beliebte Linux-Distribution Ubuntu kommt neuerdings auch im christlichen Gewand daher – und Hut ab: die Spezialversion Ubuntu Christian Edition bietet alles, was der durchschnittliche PC-Nutzer sich wünscht: Standardbrowser Firefox, inklusive voll installiertes DansGuardian mit Polipo und vorinstallierter IP-Tables-Internetumleitung, dazu ein bequemes Einstellungstool mit Namen Parental Control! Download: Ubuntu CE

Die untenstehende Hilfestellung ist also nur noch für Leute, die kein Ubuntu mögen. :-)

1. DansGuardian

Was ist DansGuardian? Es ist ein frei erhältlicher, frei konfigurierbarer, hochwirksamer Inhaltsfilter für den Internetverkehr. Er arbeitet sehr schnell und filtert nach folgenden Kriterien:
  1. PICS/ICRA-Standard (freiwillige Kategorisierung anstössiger bzw. harmloser Internetadressen im "header"-Teil des HTML-Codes) – bisher eher mässig genutzt, daher kein verlässlicher Alleinfilter, jedoch in Kombination mit den anderen sehr nützlich, z.B. für Internetseiten, die nur anstössige Bilder ohne Text veröffentlichen (Weiteres unter www.icra.org)
  2. MIME- und Dateitypen (nach Endung, z.B. *.exe, frei änderbar, Grundeinstellung sehr konservativ, es lassen sich so praktisch keine Dateien herunterladen)
  3. Wörter / Wortteile in allen Sprachen (für Deutsch, Englisch u.a. ist schon vorgesorgt)
  4. Gewichtete Ausdrucksbeschränkung ("weighted phrase lists"), dh. gewisse Wortkombinationen werden herausgefiltert, wenn sie einen angegebenen Prozentsatz übersteigen (kann von freizügig bis sehr streng eingestellt werden, die Grundeinstellung ist z.Z. für Kleinkinder!)
  5. gesperrte URLs (müssen von Hand eingetragen werden, zusätzliche "Blacklists" sind im Internet erhältlich)

Der Inhaltsfilter ist schon in der Grundkonfiguration sehr beeindruckend. Er filtert bereits mit den Voreinstellungen Pornografisches, Rassistisches und Gewalt in vielen Sprachen. Der Wortfilter ist sehr intelligent. Er sperrt z.B. nicht kategorisch das Wort "Sex" (was ja nicht immer mit Pornografie zusammenhängt und z.B. im Englischen auch einfach für "Geschlecht" steht), sondern reagiert auf Anhäufung von ähnlichen (anstössigen) Wörtern und Kombinationen. Der Häufungsgrad ist frei einstellbar, wobei die Grundeinstellung sehr restriktiv ist (Grad 50, d.h. für Kleinkinder). Die oben genannten Listen sind für den Systemadministrator (root) frei änderbar & erweiterbar. Es sind zusätzlich "Blacklists" (gesperrte Internetseiten) erhältlich, der Filter funktioniert aber auch ohne diese sehr gut.

DansGuardian ist in den gängigen Linux-Distributionen enthalten; dazu in root-Konsole eingeben:

  1. Gentoo: emerge dansguardian && rc-update add dansguardian default
  2. Debian/Ubunbu: apt-get install dansguardian
Sollte deine Distro Dansguardian nicht gepackt haben, kannst du das Programm gratis bei DansGuardian Download herunterladen.

Der Filter läuft sofort nach Installation mit der Grundeinstellung, Anpassungen sind ev. in der Datei /etc/dansguardian/dansguardian.conf vorzunehmen, wobei folgende 3 Einstellungen wichtig sind:

  1. filterport = 8080
  2. proxyip = 127.0.0.1
  3. proxyport = 8123

Einige Distributionen (z.B. Debian) fügen zuoberst in dansguardian.conf folgende Zeilen hinzu:

  1. # Comment this line out once you have modified this file to suit your needs:
  2. UNCONFIGURED

Vor das Wort UNCONFIGURED muss also ein # gesetzt bzw. die Zeile entfernt werden!

2. Proxy Polipo

Was ist ein Proxy? Das Wort ist englisch und bedeutet eigentlich "Stellvertreter", also ein Programm, dass zwischen Internet und den PC zwischengeschaltet ist, um den Datendurchlauf zu regeln. Polipo ist ein besonders schlanker und schneller, zudem leicht konfigurierbarer "Caching Proxy". Ich habe es schon mit Squid und Oops versucht (beide scheinen nach Angaben anderer Leute mit DansGuardian zu laufen), aber Polipo ist klar der Favorit für Leute wie ich, die ohne grosse Umtriebe zum Ziel kommen wollen.

Bei DansGuardian werden ja alle Daten zuerst gefiltert, bevor sie den Browser erreichen. Daher braucht es eine besondere Schnittstelle zum Internet, eben einen Proxy-Server, den DansGuardian benutzen kann. Polipo ist löblicherweise in den gängigen Linux-Distributionen enthalten; Installation mit Eingabe in root-Konsole:

  1. Gentoo: emerge polipo && rc-update add polipo boot
  2. Debian/Ubuntu: apt-get install polipo

Nun ist das Programm installiert. Falls du nicht willst, dass Polipo Webseiten auf der Festlatte speichert, lass den folgenden Eintrag in der Datei /etc/polipo/config einfach leer:

  1. diskCacheRoot=

Zum Starten gib einfach in der Konsole polipo ein.

Idealerweise sollten DansGuardian und Polipo beim Systemstart mit den angelegten Init-Scrips geladen werden. Dabei ist wichtig, dass der Proxy zuerst gestartet wird, sonst bricht DansGuardian mit einer Fehlermeldung ab. Die obige Anleitung für Gentoo und Debian sorgt dafür, dass diese Programme automatisch in der richtigen Reihenfolge gestartet werden. In anderen Fällen weise deine Systemverwaltung an, polipo in runlevel "boot" und dansguardian in runlevel "default" zu starten. Falls es mit runlevels und Init-Scripts nicht klappen will, siehe Variante mit "local.start" unter Punkt 5.

3. Gnome

Gnome – die leichtfüssige Alternative zur weit verbreiteten graphischen Arbeitsfläche KDE. Für Gnome-Anwender – und für solche, die es werden wollen – ist die automatische Umleitung des Internetverkehrs auf den Port von DansGuardian nicht schwer. Mit ein paar Handgriffen kann Gnome-intern eine Zwangsumleitung aller HTTP-Verbindung gemacht werden. (Diese Einstellungen lassen sich auch über den sog. gconf-editor von Gnome ändern, einem graphischen Programm mit demselben Effekt, das man aber nur im Notfall und mit geübter Hand benutzen sollte, da diese Einstellungen sehr heikel sind).

Die Zwangsumleitung funktioniert meines Wissens nur für die Gnome-eigenen Browser Epiphany und Galeon. Für andere Browser muss der Proxy im Browser selbst eingestellt werden (meist unter Einstellungen>Proxy: Port 127.0.0.1:8080) – oder eben mittels IP-Tables (s.u.), das ist sicherer, da schwerer zu umgehen. (Epiphany ist übrigens ein Geheimtipp: genialer Leichtgewicht-Browser, einfach zu bedienen mit nur den allernötigsten Einstellungsmöglichkeiten; wenn Firefox der Jumbo-Jet ist, dann ist Epiphany der Düsenjäger!)

Die folgenden 5 Kommandos bitte als root in der Konsole hintereinander eingeben (am besten einzeln rüberkopieren und jeweils alles auf eine Zeile, also keine Zeilenumbrüche!), danach Gnome neu starten (abmelden und neu anmelden).

  1. gconftool-2 --shutdown
  2. gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type=bool --set /system/http_proxy/use_http_proxy true
  3. gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type=string --set /system/http_proxy/host localhost
  4. gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type=int --set /system/http_proxy/port 8080
  5. gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type=string --set /system/proxy/mode manual

Wer sicher sein will, dass man den Internetschutz nicht mit einem anderen Browser umgehen kann, sollte Mozilla Firefox oder Seamonkey löschen bzw. nicht-ausführbar machen. Epiphany benötigt nämlich die Bibliothek eines dieser Browser (die sog. Gecko Engine), so dass einer davon automatisch mitinstalliert wird. (Genauer gesagt kann Epiphany ab Version 2.14 auf vier Arten kompiliert werden, nämlich mit Mozilla, Firefox, Seamonkey und neuerdings mit Xulrunner. Wer sich die Mühe nimmt, den Browser selbst herunterzuladen und "von Hand" zu installieren - Kommandos siehe oben unter Polipo -, kann zum Kommando ./configure den Zusatz --with-gecko=xulrunner angeben. Xulrunner scheint nach neusten Informationen die zukunftswseisende Installationsvariante zu sein, da hiermit nur die Bibliothek, nicht aber ein weiterer Browser installiert wird.)

Wem das zu umständlich ist, soll wie beschrieben den Browser Epiphany oder Galeon installiern und danach einen der mitinstallierten Browser Mozilla, Firefox oder Seamonkey sperren oder die ausführende Datei löschen. Um sie zu sperren, gibst du, je nach Bedarf, in der Root-Konsole Folgendes ein:

  1. chmod 444 /usr/bin/firefox
  2. chmod 444 /usr/bin/seamonkey
(wird nicht-ausführbar für root und users) – oder, um sie zu löschen (noch sicherer!):
  1. rm /usr/bin/firefox
  2. rm /usr/bin/seamonkey

Wer lieber diese Browser auch noch mitfiltert, siehe Punkt 6!

4. KDE

Auch für KDE sind nicht unbedingt iptables-Umlenkungen erforderlich, auch wenn diese schwerer zu umgehen sind. Geh einfach zum "Kontrollzentrum", dort unter "Proxy-Server" die Kästchen "manuell" und "Dauerverbindung" anhaken, dort unter "Einrichtung" eingeben für HTTP-Proxy: 127.0.0.1 und 8080.
Diese Einstellungen sind nur beim KDE-eigenen Browser Konqueror wirksam. Für andere Browser muss der Proxy individuell eingestellt werden (z.B. mit IP-Tables, s.u.). Zur Erhöhung der Sicherheit kann mittels des Kiosktool von KDE dem Benutzer verboten werden, die Proxy-Einstellungen zu ändern (Kiosktool sollte bei KDE dabei sein, sonst bei Kiosktool herunterladen).

5. Andere Linux-Desktops

Wer weder KDE noch Gnome mag, sondern auf eine der weniger bekannten Arbeitsflächen wie xfce4, icewm, rox, blackbox, sawfish, afterstep, fvwm, larswm, twm, dwm setzt – und wie die schnellen Winzlinge alle heissen, empfohlen in der gegebenen Reihenfolge! – ist ebenfalls mit der Kombination DansGuardian - Polipo - Epiphany/Galeon bestens bedient. Die Installation erfolgt wie beschrieben. Der Trick dabei ist, dass der GConf-Editor von Gnome auch unabhängig von einer vollständigen Gnome-Installation funktioniert. Wer beispielsweise Gentoo-Linux benutzt, kann mit folgender Eingabe in der Root-Konsole alle nötigen Programme und Bibliotheken installieren:

  1. emerge gconf epiphany dansguardian polipo

Danach ist die Konfiguration wie oben erklärt durchzuführen, einschliesslich der Kommandos für gconftool-2 (siehe unter Gnome). Auch hier gilt natürlich, dass keine anderen Browser gefiltert werden, es sei denn über Proxy-Einstellungen im Browser selbst oder per IP-Tables.

6. Proxyeinstellung in Firefox und Seamonkey sperren

Um bei Mozilla-Browsern die Einträge unter "Einstellungen>Erweitert>Proxys" für den Nutzer zu sperren, ohne dass man IP-Tables einrichten muss, sind folgende Schritte nötig.

1. Die Mozilla-Systemdatei all.js als root im Texteditor öffnen. Sie befindet sich in /usr/lib/firefox/grepprefs bzw. /usr/lib/seamonkey/grepprefs. Dort folgende Zeile anfügen:

pref("general.config.filename", "mozilla.cfg");

2. In einem Texteditor eine Datei mit Namen mozilla.txt mit folgendem Inhalt erstellen:

lockPref("app.update.enabled", false);
lockPref("network.proxy.http", "127.0.0.1");
lockPref("network.proxy.http_port", 8080);
lockPref("network.proxy.type", 1);
lockPref("network.proxy.no_proxies_on", "localhost, 127.0.0.1");
lockPref("network.proxy.share_proxy_settings", false);

und an beliebigem Ort speichern.

3. Die Internetseite Automatic Mozilla Configurator aufsuchen und die eben erstellte Datei nach Anweisung in "Upload mozilla.txt to get mozilla.cfg" einlesen lassen. Die so erstellte verschlüsselte Datei mozilla.cfg als root ins Grundverzeichnis des Browsers, also /usr/lib/seamonkey oder /usr/lib/firefox, kopieren.

Ab sofort kann der Nutzer diese Einstellungen nicht mehr ändern.

Achtung! Bei Neuinstallation wird die Datei all.js überschrieben!!! Deshalb zur Sicherheit eine Kopie davon machen und später wieder an diese Stelle kopieren.

7. Umgebungsvariable HTTP_PROXY

Eine weitere einfache Lösung zur Umlenkung auf einen alternativen Browser-Port ist das Setzen der Umgebungsvariable HTTP_PROXY. Leider wird diese Variable nicht von allen Browsern berücksichtigt. Nach meiner Erfahrung funktioniert sie mit Dillo, Opera und Amaya.

Um die Variable wirksam zu machen, muss vor Start des Browsers das Kommando:

  1. export HTTP_PROXY="127.0.0.1:8080"
eingegeben werden. Um die Variable beim Systemstart automatisch zu setzen, kann eben diese Zeile in der Datei .bash_profile im Home-Verzeichnis zugefügt werden. Kommando:
  1. echo "export HTTP_PROXY="127.0.0.1:8080" >> ~/.bash_profile

Der Nachteil dieser Methode ist, dass der Benutzer die Proxy-Einstellungen im Browser wieder rückgängig machen kann (ausser bei Dillo, dort geht das nur mit Änderung der Konfigurationsdatei).

8. IP-Tables

Das ist die sicherste Umlenkmethode für andere Desktop-Umgebungen als Gnome, aber eher heikel für Nichtkenner. Voraussetzung ist, dass der Linux-Kernel iptables unterstützt (was bei den meisten Standarddistributionen der Fall ist). Das untenstehende Skript sollte jetzt auf einem normalen PC funktionieren (danke Floarian und Michael!). Zuerst in der Konsole ausprobieren; falls es klappt, wird der gesamte Internetverkehr sofort auf Port 8080 umgelenkt, und du hast keine Internet-Verbindung mehr, es sei denn, DansGuardian und Polipo laufen bereits.

#!/bin/sh
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
#Flush all rules:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# Let Polipo out
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner polipo -j ACCEPT
# Forward all web traffic to dansguardian
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080

Achtung: Debian/Ubuntu scheint Polipo unter root laufen zu lassen, deshalb im obigen Skript in "--uid-owner root" umändern.

Hiernach wären auch die Kommandos

  1. polipo
  2. dansguardian
anzufügen, falls es mit den Init-Scripts (siehe oben) nicht geklappt hat.

Damit die Umlenkung jeweils sofort nach Systemstart funktioniert, sollte das Skript in die Startroutine des Rechners eingebettet werden, z.B. in

  1. /etc/conf.d/local.start (Gentoo)
  2. /etc/rc.local (Debian/Ubuntu)

Startskript selber machen

Solltest du nirgends ein geeignetes Startskript finden, hilft folgender Trick:

1. Erstelle eine neue Datei mit beliebigem Namen, nennen wir sie der Einfachheit halber local.start, am besten im Verzeichnis /etc mit dem Kommando:

  1. touch /etc/local.start
Editiere dann die Datei in einem Texteditor. Die erste Zeile muss lauten:
  1. #!/bin/sh
Darunter die oben erklärten Befehle einfügen, und zwar einen pro Zeile!

2. Mache die Datei ausführbar mit dem Kommando:

  1. chmod 755 /etc/local.start

3. Füge der Datei /etc/inittab folgende Zeile hinzu:

  1. lo:2345:once:/etc/local.start
Somit wird das Programm automatisch beim Urstart ausgeführt.

Viel Erfolg!
P. Vollmar

Home