39.4DansGuardian

Grundsätzlich ist es möglich, durch Regeln in squid.conf einzelne Websites zu blockieren. Auf dieser Basis einen echten Webfilter zu realisieren, wäre aber zu aufwendig. Wozu auch das Rad neu erfinden? Mit dem Programm DansGuardian erreichen Sie einen einigermaßen kindersicheren Webzugang viel einfacher.

Die Grundfunktion des Programms besteht darin, dass es den Text von Webseiten auf pornografische Schlüsselwörter analysiert und die Weiterleitung der Seite bei Überschreitung eines bestimmten Grenzwerts blockiert. Der Mechanismus ist intelligent genug, dass nicht jede Seite, die Wörter wie sex oder breast enthält, blockiert wird. Da DansGuardian den »Inhalt« der Seiten verarbeitet, ist das Programm zugleich unabhängig von zumeist veralteten Listen blockierter Websites. Einen Überblick über weitere Merkmale des Programms finden Sie auf der folgenden Website:

http://dansguardian.org

DansGuardian ist leider weder IPv6-fähig noch unterstützt es die vorhin vorgestellte TPROXY-Funktion, um es als transparenten Proxy in IPv6-Netzen einzusetzen. DansGuardian kann daher nur IPv4-Netze mit NAT schützen. Generell verläuft die Entwicklung von DansGuardian seit einigen Jahren äußerst schleppend. Es gibt mittlerweile einige Forks des Programms, aber leider keine echten Alternativen.

DansGuardian kann bei den meisten Distributionen direkt als Paket installiert werden. Da es auch den Download bekannter Windows-Viren blockiert, wird zusammen mit DansGuardian der Virenfilter ClamAV installiert.

DansGuardian ist ein Dämon, der durch das Init-System gestartet und gestoppt wird. Standardmäßig erwartet das Programm Webanfragen am Port 8080. Es kontaktiert dann das Programm Squid (Port 3128) und analysiert die Webseite. Wird die Seite für in Ordnung befunden, wird sie über Port 8080 zurück an den Webbrowser geleitet. Noch eleganter ist die hier vorgestellte Konfigurationsvariante, bei der DansGuardian transparent alle Webanfragen an Port 80 verarbeitet, sodass an den Clients keinerlei Proxy-Konfiguration erforderlich ist.

Die primäre Konfigurationsdatei ist /etc/dansguardian/dansguardian.conf. In der Regel können Sie diese Datei weitestgehend so lassen, wie sie ist. Je nach Distribution enthält die Datei die Zeile UNCONFIGURED, der Sie ein Kommentarzeichen voranstellen müssen.

Wenn Sie möchten, dass die Meldung »access denied« in deutscher Sprache erscheint, nutzen Sie außerdem die Einstellung language = 'german'. Falls sich in Ihrem Netzwerk ausschließlich Linux-Rechner befinden, deaktivieren Sie durch virusscan = off den Virus-Scanner, der standardmäßig alle Downloads auf Viren überprüft. Für das Zusammenspiel mit dem Proxy Squid müssen Sie dessen IP-Adresse und Port-Nummer angeben.

# /etc/dansguardian/dansguardian.conf (auszugsweise) # UNCONFIGURED (diese Zeile muss auskommentiert werden!) reportinglevel = 3 languagedir = '/etc/dansguardian/languages' language = 'german' loglevel = 1 logexceptionhits = 2 logfileformat = 1 filterport = 8080 proxyip = 127.0.0.1 proxyport = 3128 ...

Nach der Konfiguration starten Sie DansGuardian erstmalig:

root# service dansguardian start

Standardmäßig funktioniert DansGuardian nur für Zugriffe über den Port 8080. Um einen transparenten Schutz für alle Webzugriffe auf Port 80 zu erreichen, müssen Sie Ihr Firewall-Script nochmals ein wenig verändern: Anstatt HTTP-Zugriffe auf den Port 3128 (Squid) umzuleiten, leiten Sie sie auf den Port 8080 um (DansGuardian). Diese Konfiguration funktioniert nur für die NAT-Variante, also nur für IPv4-Netze.

# Ergänzung im Firewall-Script # # alle an Port 80 adressierten Pakete zu DansGuardian (Port 8080) # umleiten (transparenter Webfilter) iptables -t nat -A PREROUTING -i $MFW_LAN -p tcp --dport 80 \ -j REDIRECT --to-port 8080

Unter CentOS, Fedora oder RHEL müssen Sie /etc/firewalld/direct.xml entsprechend anpassen. Außerdem müssen Sie den Port 8080 freischalten:

root# firewall-cmd --permanent --zone=internal --add-port=8080/tcp root# firewall-cmd --reload

Squid muss als gewöhnlicher Proxy-Cache konfiguriert sein, nicht als transparenter Cache. Außerdem müssen Sie den Zugriff auf Squid nun so einschränken, dass nur der Rechner, auf dem DansGuardian läuft, mit Squid kommunizieren darf. Wenn Squid und DansGuardian auf demselben Rechner laufen und Sie die in diesem Kapitel beschriebene Konfiguration verwenden, müssen Sie dazu die Zeile http_access allow localnet entfernen. Andernfalls wäre es für technisch versierte Benutzer im LAN möglich, die Proxy-Konfiguration ihrer Webbrowser so einzurichten, dass die Webbrowser über den Port 3128 direkt mit Squid kommunizieren und so DansGuardian umgehen!

# Datei squid.conf ... # alle acl-localnet-Zeilen für das lokale Netzwerk auskommentieren # acl localnet src 10.0.0.0/8 # Squid agiert als gewöhnlicher Proxy http_port 3128

Webfilter-Konfiguration

Die eigentlichen Filterfunktionen von DansGuardian werden durch /etc/dansguardian/dansguardianf1.conf gesteuert. Die Datei verweist zuerst auf diverse vorkonfigurierte Dateien mit Schlüsselwörtern, blockierten Websites etc. Der Parameter naughtynesslimit steuert, ab welchem Grenzwert eine Seite blockiert wird. Dieser Wert ist umso höher, je mehr Schlüsselwörter bzw. Schlüsselwortkombinationen im Text gefunden werden.

# /etc/dansguardian/dansguardianf1.conf (auszugsweise) # Content filtering files location bannedphraselist = '/etc/dansguardian/lists/bannedphraselist' weightedphraselist = '/etc/dansguardian/lists/weightedphraselist' exceptionphraselist = '/etc/dansguardian/lists/exceptionphraselist' bannedsitelist = '/etc/dansguardian/lists/bannedsitelist' greysitelist = '/etc/dansguardian/lists/greysitelist' exceptionsitelist = '/etc/dansguardian/lists/exceptionsitelist' bannedurllist = '/etc/dansguardian/lists/bannedurllist' greyurllist = '/etc/dansguardian/lists/greyurllist' exceptionurllist = '/etc/dansguardian/lists/exceptionurllist' exceptionregexpurllist = '/etc/dansguardian/lists/exceptionregexpurllist' bannedregexpurllist = '/etc/dansguardian/lists/bannedregexpurllist' picsfile = '/etc/dansguardian/lists/pics' contentregexplist = '/etc/dansguardian/lists/contentregexplist' urlregexplist = '/etc/dansguardian/lists/urlregexplist' # Naughtyness limit # As a guide: # 50 is for young children, 100 for old children, 160 for young adults. naughtynesslimit = 50 ...

Wenn DansGuardian eine Seite blockiert, zeigt der Webbrowser einen entsprechenden Hinweis an (siehe Abbildung 39.2).

DansGuardian und Squid blockieren den Zugriff
  auf eine Webseite.

Abbildung 39.2DansGuardian und Squid blockieren den Zugriff auf eine Webseite.

Das Aussehen und den Inhalt der Blockadeseite können Sie je nach Distribution in einer der folgenden Dateien einstellen:

/etc/dansguardian/languages/german/template.html /usr/share/dansguardian/languages/german/template.html

Tabelle 39.1 fasst die Funktion der wichtigsten Dateien des Verzeichnisses /etc/dansguardian/list zusammen. In diesen Dateien bzw. in dort genannten Include-Dateien können Sie weitere erwünschte und oder unerwünschte Begriffe, Websites bzw. Dateitypen aufzählen.

Datei

Inhalt

bannedextensionlist

Dateien mit diesen Kennungen blockieren

bannedmimetypelist

diese Dateitypen blockieren

bannedphraselist

verbotene Schlüsselwörter

weightedphraselist

negative Schlüsselwörter

bannedsitelist

diese Websites komplett blockieren

bannedurllist

diese Seiten blockieren

exceptioniplist

Anfragen von diesen Rechnern nie blockieren (ermöglicht Administratorzugriff auf fragwürdige Seiten)

exceptionsitelist

diese Websites ohne weitere Kontrolle akzeptieren

exceptionurllist

diese Webseiten ohne weitere Kontrolle akzeptieren

exceptionphraselist

positive Schlüsselwörter

greysitelist

diese Websites prinzipiell akzeptieren, aber Textinhalt kontrollieren

Tabelle 39.1DansGuardian-Konfigurationsdateien

Bei der Textanalyse unterscheidet DansGuardian zwischen verbotenen Schlüsselwörtern (bannedphraselist), deren Vorkommen den Zugriff auf eine Seite sofort verbietet, und gewichteten Schlüsselwörtern (weightedphraselist und exceptionphraselist).

In der Grundkonfiguration gibt es kaum verbotene Schlüsselwörter, weil diese oft auch in harmlosen Seiten vorkommen. Stattdessen verwendet DansGuardian relativ umfangreiche Wortlisten (siehe /etc/dansguardian/list/phraselists). Anhand dieser Listen bildet DansGuardian eine Summe über das Vorkommen aller negativen und positiven Schlüsselwörter. Überschreitet diese Summe einen Grenzwert, wird der Zugriff blockiert. Details darüber, wie die Bewertungssummen blockierter Seiten zustande kommen, finden Sie in der Logging-Datei /var/log/dansguardian/access.log.

Das DansGuardian-Paket enthält keine Listen von Webadressen, die blockiert werden sollen! Die Dateien bannedsitelist und bannedurllist dokumentieren nur die prinzipielle Syntax. Es gibt aber Firmen, die gegen Bezahlung den regelmäßigen Download aktueller Listen ermöglichen. Am bekanntesten ist URLblacklist, die in diversen Squid-kompatiblen Textdateien Links auf problematische Webseiten sammelt. Die Listen sind nach diversen Kategorien geordnet (z.B. drugs, porn, violence). Die Filterlisten dürfen zu Testzwecken einmalig kostenlos heruntergeladen werden, regelmäßige Updates sind aber kostenpflichtig:

http://urlblacklist.com

In der Standardkonfiguration blockiert DansGuardian den Download von komprimierten Dateien, MP3-Dateien, ISO-Dateien etc. Diese Einstellungen sind für den Linux-Alltag entschieden zu restriktiv und verhindern bei manchen Distributionen sogar ein korrektes Funktionieren der Paketverwaltung. Werfen Sie einen Blick auf bannedmimetypelist und bannedextensionlist, und stellen Sie allen erlaubten Dateitypen ein Kommentarzeichen voran! Alternativ können Sie in dansguardianf1.conf bei der Einstellung der Variablen bannedextensionlist und bannedmimetypelist auch einfach eine leere Datei angeben.

Um auf Anfragen der Art DansGuardian blockiert Seite xxx, die ist aber OK zu reagieren, müssen Sie als Administrator in der Lage sein, DansGuardian zu umgehen. Am einfachsten erreichen Sie das dadurch, dass Sie in der Konfigurationsdatei exceptionip die fixe IP-Adresse Ihres Rechners im lokalen Netzwerk angeben.

Einschränkungen

Machen Sie sich keine Illusionen über die Wirksamkeit von DansGuardian! Selbst die Einstellung naughtynesslimit = 50 (for young children) bietet keinen vollständigen Schutz vor pornografischen Webseiten und Abbildungen. Unter anderem gelten die folgenden Einschränkungen: