Dansguardian Content Filter auf Fritz.Box: Geht! Aber...

Interessiert dich Dansguardian auf der Fritz.Box?

  • Ne, laß mich damit in Ruhe!

    Stimmen: 6 40.0%
  • Interessiert mich erst wenns 100% läuft

    Stimmen: 3 20.0%
  • Interessiert mich auf jeden Fall!

    Stimmen: 4 26.7%
  • Ich würde auch bei der Weiterentwicklung unterstützen

    Stimmen: 2 13.3%

  • Anzahl der Umfrageteilnehmer
    15
  • Umfrage geschlossen .

papa_uwe

Neuer User
Mitglied seit
18 Jan 2010
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,
nach einigen langen Nächten habe ich nun auf meiner Fritz.Box 7270 auf Basis von Freetz 1.2 einen dansguardian zum laufen gebracht. Dansguardian ist ein Contentfilter, der recht zuverlässig und ohne großes Zutun aufgrund verschiedenster Krierien unerwünschte Webseiten blockt.
Die Kids werden nun auch per transparent proxy (mittels iptables) automatisch auf den Filter gelenkt.
Allerdings gibt es noch ein paar Probleme:
  1. bei einigen (zu vielen) Seiten meldet der Browser "Content Encoding Fehler" wegen angeblich unbekannter HTTP-Kompression. Das Problem haben auch andere. Mögliche Ursachen: Bug in DG? Buildfehler? ... Ich forsche noch.
  2. Bei gleichzeitiger Verwendung der AVM Kindersicherung funktioniert diese nicht mehr (da der Verkehr ja nun aus Sicht der AVM-KS vom Proxy, also von der Box kommt und nicht mehr vom Kinder-PC. Damit laufen die Zähler nicht mehr. Das finde ich schade und habe noch keine Idee, wie man das verhindert und die Zähler wieder zum Laufen bringt. Anregungen erwünscht!
  3. Als Elter will ich am DG vorbei können, ohne dass das die Kids auch so einfach hinbringen. Dazu habe ich Ideen, die ich aber hier nicht poste ;)
  4. Über Optimierungen wie Externalisieren, Abschalten des Logs etc. habe ich noch nicht nachgedacht. DG bremst die Box schon, aber noch läuft alles...
  5. Die Web-Configoberfläche ist noch rudimentär...
  6. Mir ist nicht klar, wie mein Code nun ins Repository kommt - sofern überhaupt Interesse besteht. Bin auch aus Forum und Wiki nicht recht schlau geworden...
Mich würde nun interessieren, ob allgemeines Interesse besteht und sich weitere Nächte mit wenig Schlaf rentieren (weil meine Kids eh bald aus dem Alter raus sind, wo sowas noch Sinn macht).
 
zu 3: Wenn du iptables nutzt, um die Kinderpcs über den Proxy zu jagen ist es simpel, denn etwas andere Regeln bringen einen dazu, dass die ElternPCs eben nicht über den Proxy gehen.
zu 6: Du hast keine Schreibrechte für das Repository, das haben nur ein paar wenige. Du musst hier (oder im trac) am besten einen Patch gegen den trunk posten.
 
Make-Erweiterungen

Falls tatsächlich jemand unterstützen will, poste ich hier mal meinen jetzigen Arbeitstand. Packt man das in den aktuellen trunk oder in die 1.1.2 aus, lässt sich ein Image bauen, das einen funktionieren dansguardian enthält. Auf der Box ist dann noch eine kleine Nacharbeit nötig (Hilfen zur Automatisierung willkommen!):
Code:
mkdir /var/log/dansguardian
Damit kann der dansguardian sein access.log schreiben (das wird man produktiv sicher auslagern oder nach /dev/null befördern, aber im momentanen Stadium will ich es gern da haben).
Der DG läuft dann auf Port 8081.
Fürs transparente Proxy braucht man natürlich iptables. Ich muss auf der Box dann immer noch eingeben:
Code:
modprobe ip_nat
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe x_tables
modprobe xt_tcpudp
iptables -N PREROUTING
Das eigentliche Kommando, um http-Port80-Verkehr über den DG laufen zu lassen, ist dann:
Code:
iptables -t nat -A PREROUTING    -p tcp  --dport 80 -i lan  -j REDIRECT --to-ports 8081
Das erledigt aber auch das Startscript für den DG (auch im Web-Frontend!), sofern für iptables alles passt.
Am dringendsten wäre eine Lösung für das fehlerhafte Encoding im Zusammenhang mit http-Compression.
Ich bin für alle Anregungen und Verbesserungsvorschläge dankbar.
Mal sehen, was draus wird!:)
 

Anhänge

  • freetz-dansguardian.tgz
    168.2 KB · Aufrufe: 31
[...]Auf der Box ist dann noch eine kleine Nacharbeit nötig (Hilfen zur Automatisierung willkommen!):
Code:
mkdir /var/log/dansguardian
Damit kann der dansguardian sein access.log schreiben (das wird man produktiv sicher auslagern oder nach /dev/null befördern, aber im momentanen Stadium will ich es gern da haben).
[...]
Das kannst Du das über das Paket (/trunk/make/dansguardian) machen, mit den Verzeichnissen:
Code:
[B]files/var.tar/var/log/dansguardian[/B]
 
@sf3978: danke, das mit var.tar funktioniert.
@Silent-Tears: ich kenne die iptables (rudimentär...). Einziges Problem: ich will nicht nach IP sondern eigentlich nach Benutzern filtern, da an mindestens einem PC im Haus alle dransitzen (der mit Drucker und Scanner). Auf meinem früheren Router (war aber ein "echter" PC) hatte ich einen Squid, der per ntlm entschieden hat, wer ihn als Proxy eintragen darf. Aber Squid+DG auf der Box ist wohl zuviel, und tinyproxy kann kein ntlm. Allerdings kann DG ntlm und kann dann an unterschiedliche Gruppen routen.

Das führt mich zur nächsten Frage: Wie bekomme ich es hin dass das ganze lists-Directory (enthält weitere Konfigurationsdateien) von DG nicht im read-only-Bereich unter /etc liegt, sondern unter /mod/etc, weil cih da schreiben und experimentieren kann. Kein anderes Paket packt aber Directories unter make/<paket>/files/root/etc/<paket>.default. Wohin also?
 
Vielleicht mit einer Option des programmes oder /etc/DG also Link nach /mod/etc/DG oder evtl /tmp/flash/DG
 
Wie ich Dateien auf der Box kopieren oder linken kann, ist schon klar. Ich weiss aber nicht, wie ich in der Buildumgebung dafür sorgen kann, dass das Verzeichnis nach dem Laden auf die Box unter /var/etc landet. Die Frage ist auch, ob das Anlegen von Verzecihnissen unter /make/dansguardian/files/root/etc/default.dansguardian in der Buildumgebung zulässig ist und ob das dann auf der Box unter /mod/etc landet - oder ob es da einen anderen Weg gibt.
 
Siehe hier (klick), wie das mit/für privoxy gelöst worden ist.
 
Entschuldigung, wenn ich mich dumm anstelle, aber das ist mein erstes Freetz-Projekt :confused:
Privoxy enthält einige Konfigurationsdateien, die sehe ich unter dem Link. Die 2 confs, die DG braucht, habe ich genauso auch abgelegt und das funzt ja auch. Aber DG braucht zusätzlich noch ein ganzes Directory mit verschiedenen Konfigurationsdateien (URLs, Ausdrücke, Dateitpyen, jeweils Verbote und Ausnahmen). Diese muss man erfahrungsgemäß öfter mal den Gegebenheiten anpassen, um die Filterwirkung zu erhalten. In einem "normalen" System liegen die unter /etc/dansguardian/lists und da kann root munter editieren. Aber in der fritzbox geht unter /etc gar nix mit Editieren und bei jeder Konfigänderung ein neues Image einspielen, ist etwas lästig, oder?:kotz:
Deshalb hätte ich dieses lists-Directory und die Files darin gern im schreibbaren Bereich. Wie geht das im Build?:noidea:
(ach ja, das Directory und die Files können liegen wo sie wollen, da ich in den beiden Configdateien vom DG konfigurieren kann, wo sie liegen)
 
Zuletzt bearbeitet:
Wie cuma schon geschrieben hat, z. B. im Verzeichnis (rw) "/var/tmp/flash/" das Verzeichnis "dansguardian" mit dem Unterverzeichnis "lists" mit den Konfdateien des DG (files/var.tar/var/tmp/flash/dansguardian/lists) erstellen. Und über die Build ein symlink "dansguardian" aus /etc (ro) auf den Ordner "/var/tmp/flash/dansguardian/lists".
EDIT:
[...]
(ach ja, das Directory und die Files können liegen wo sie wollen, da ich in den beiden Configdateien vom DG konfigurieren kann, wo sie liegen)
OK, wenn Du konfigurieren kannst, dann brauchst Du den symlink aus "/etc" nicht mehr.;)
 
Zuletzt bearbeitet:
Ups, war gerade ne halbe Stunde blind und stumm, weil bei solchen Änderungen im Dateisystem mein Build offenbar öfter Mist ausspuckt und dann die Box nicht mehr bootet...
:lamer:
Anschliessend einen
Code:
make dirclean
make
zu machen, führt nicht zu einem sauberen Build, sonden zu einem Buildfehler:
Code:
mipsel-unknown-linux-gnu-gcc: Kommando nicht gefunden.
Um dann wieder zu einem lauffähigen Image zu kommen, setze ich immer auf einem neuen Download auf oder mache ein
Code:
make distclean
Falls da jemand ne bessere Idee hat, wäre ich auch dankbar.
Nach dem Schock werde ich heute erst mal kein Image mehr bauen, werde das mit var.tar aber ausprobieren (und irgendwann versuchen, zu verstehen, was dahinter steckt) ;)
Dafür habe ich inzwischen Hinweise, dass die Content-Encoding-Fehler und weißen Seiten nicht an meinem Build liegen, denn ein DG auf meiner dicken SuSE-Kiste macht den gleichen Fehler - zumindest, wenn ich ihn auf den tinyproxy auf der Fritzbox gehen lasse (Squid auf der SuSE probiere ich später aus). Auf der DG-Mailingliste finden sich Hinweise, dass dieser Fehler am TinyProxy (nicht am DG) liegt, selbst wenn es ohne DG funktioniert.
 
Zuletzt bearbeitet:
[...], werde das mit var.tar aber ausprobieren (und irgendwann versuchen, zu verstehen, was dahinter steckt) ;)
[...]
Zu "var.tar" siehe letzten Absatz ("Dateien unter /var/ auf der Box") in diesem Beitrag (klick) und:
Code:
# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
dev on /dev type tmpfs (rw,nosuid)
proc on /proc type proc (rw,nodiratime,nosuid,nodev,noexec)
tmpfs on [B][COLOR="Red"]/var[/COLOR][/B] type tmpfs [COLOR="Red"][B](rw)[/B][/COLOR]
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec)
/dev/mtdblock6 on /data type jffs2 (rw,noatime)
usbfs on /proc/bus/usb type usbfs (rw)

EDIT:
Fürs transparente Proxy braucht man natürlich iptables. Ich muss auf der Box dann immer noch eingeben:
Code:

modprobe ip_nat
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe x_tables
modprobe xt_tcpudp
iptables -N PREROUTING
Du kannst den Kernel so konfigurieren (make kernel-menuconfig), dass er die Module automatisch laden tut. "iptables -N PREROUTING" kannst Du mit einem Skript oder evtl. mit rc.custom oder mit "Iptables: rules" automatisieren. Vorsicht, dass Du dich nicht aussperrst.;)
 
Zuletzt bearbeitet:
Statt "modprobe" kannst du die zu ladenden Module auch im Webinterface bei "Module" eintragen. Diese werden dann beim Booten geladen
 
Danke für die Tipps :p
Die iptables starte ich momentan, indem ich den Service "iptables" starte. Das funzt ganz gut.
Habe nur leider die Woche wenig Zeit, aber ich werd das alles ausprobieren - und wahrscheinlich doch mal einen Versuch mit einem minimalisierten squid probieren (um das encoding-Problem des tinyproxy zu umgehen, das nebenbei auch noch Avira am Update hindert). Hat jemand Erfahrung, ob es Sinn macht, dem squid ein cache-Directory auf einem USB-Stick zu geben (vermute mal, das ist langsamer als mein KD-Anschluß mit 32MBit) oder sollte ich den eher ohne cache laufen lassen (cache_dir null /null)?
 
Hallo papa_uwe,

die Lösung mit dem Content Filter auf der Fritz!Box finde ich genial. Bis vor kurzem lief es bei mir auf einem BenHur-Proxyserver, der auf PC-Hardware basiert und ziemlich viel Strom braucht. Ich werde deine Lösung auf jeden Fall bei mir umsetzen, wenn ich mich in die Sofware-Umgebung des Freetz-Mods etwas besser vertieft habe. Wie ist inzwischen der Stand deiner Entwicklung? In Bezug auf die Probleme bei tinyproxy, ist es dir gelungen squid auf der Box zum laufen zu bringen? Und wie steht es mit der Web-Oberfläche? Wurde diese weiter entwickelt? Es wäre echt Klasse, über den aktuellen Stand der Dinge einen Überblick zu bekommen. Das rege Interesse der Gemeinschaft zu deinem Projekt wundert mich jedoch. Ich finde, das ist eine sehr nützliche Sache.
 
Hallo Newby0,
leider ist in letzter Zeit nicht mehr viel passiert. Die Versuche mit Squid habe ich eingestellt, weil das Suid-Paket von Fritz recht rudimentär ist (keine Config, etc.). Das müsste man wohl "extern" machen, vielleicht würde das auch die DG-Config einfacher machen.
Meinen letzten Stand vom Mai lade ich hier nochmal als tgz hoch. Das DG funktionierte eigentlich recht passabel. Vielleicht hilft's ja jemand.
Gruß,
Uwe.
 

Anhänge

  • freetz-dansguardian.tgz
    169.9 KB · Aufrufe: 24
Hallo papa_uwe,

ich finde deinen ansatz sehr gut und würde gern wissen in wiefern dein entwickeltes System auf einer gefreetzten Fritzbox läuft? Einstellbarkeit etc..

Wir haben zwar noch keine Kinder jedoch interessiert mich das Thema Content filtering onehin und meine Lösungen bisher liefen immer über eine externe hardwarebasierende Firewall-server von PC-Engine wie bspw. monowall, astaro, endian, ipcop, ipfire, pfsense, smoothwall. Trotz diser möglichkeit finde ich zum Schutze aller eine Fritzboxbasierende Lösung optimal.

Viele Grüße aus HH
 
Das "entwickelte System" läuft _nur_ auf einer gefreetzten FritzBox, da es sich um nichts anderes handelt als eine Anpassunge der Buildumgebungen von DG und Freetz (keine eigentliche Codeentwicklung - das haben dankenswerterweise andere getan!).
Auf meiner 7270 läuft es stabil, ohne zu hohe CPU- oder Memorylast und es wurden keine VOIP-Gespräche gestört (wir sind aber nun zu viert, bei intensiverer Nutzung wird es hier ein Problem geben!). Die Filter, Blacklists, etc. habe ich per telnet direkt auf der Box geändert, wenn nötig. Wer die DG-Config kennt, wird verstehen, warum ich dafür keine GUI bauen wollte...
Einziges Manko: das fehlerhafte Content-Encoding des tinyproxy. Wenn das jemand lösen würde (zB durch eine neuere Version?), wäre alles eitel Sonnenschein. So fallen etwa ein Drittel aller HTML-Seiten aus (alle mit conten-encoding gzip). Squid als Alternative ist natürlich ein Riesengerät und auf der Box noch nicht wirklich komfortabel benutzbar. Aber das wurde in dem Thread alles schon mal besprochen.
Ich werde erst mal nicht mehr aktiv am DG-Port teilnehmen, sollte jemand aber die nicht DG-eigenen Probleme mit tinyproxy oder squid lösen, sollte DG einwandfrei funktionieren und wird dann für mich auch wieder interessant.

Gruß,
Uwe.
 
auch auf FBF 7170?

Hallo,

das trifft sich ja gut, habe ein vergleichbares Problem, Kids sind 7 und 15, bräuchte also 2 verschieden Filtergruppen und die Kindersicherung sollte möglichst auch weiterhin gehen... möchte dazu eine Fritzbox 7170 mit freetz nutzen... stehe aber noch ganz am Anfang und hab leider im Moment wenig Zeit, lediglich freetz habe ich erstmalig integriert.

MfG
Holger
 
Also ich muss sagen, der Dansguarding, ist schon ne feine sache... fand ihn gerade und spiele gerne mal ThreadleichenSchänder xD
Mal zum ernst... warum führt man es nicht fort? und ja vllt ist ne 7170 etwas zu lahm***ig aber mir und holger_s würde sowas ziemlich gefallen...
Ja ich habe hier mal so folgendes konzept...
Code:
...
languagedir = '$DANSGUARDIAN_DIR/languages'
language = 'german'
syslog = off
filterip = $DANSGUARDIAN_FILTERIP
proxyip = $DANSGUARDIAN_PROXY_IP
proxyport = $DANSGUARDIAN_PROXY_PORT
accessdeniedaddress = '$DANSGUARDIAN_ACCESS_DENIED_URL'
custombannedimagefile = '$DANSGUARDIAN_DIR/transparent1x1.gif'
filtergroupslist = '$DANSGUARDIAN_LIST_DIR/filtergroupslist'
bannediplist = '$DANSGUARDIAN_LIST_DIR/bannediplist'
exceptioniplist = '$DANSGUARDIAN_LIST_DIR/exceptioniplist'
maxcontentramcachescansize = 2000
maxcontentfilecachescansize = 20000
filecachedir = '$DANSGUARDIAN_CACHE_DIR'
downloadmanager = '$DANSGUARDIAN_DIR/downloadmanagers/fancy.conf'
downloadmanager = '$DANSGUARDIAN_DIR/downloadmanagers/default.conf'
....
Bei Dansguardian, kann man nicht alles auf box legen... XD da mit sprengst du (Threadstarter den flash) :D Squid der ja schon durch mir nen eigenes web-IF hat (+RC-Script)
kannste dafür net nehmen =/ der braucht selber schon seine 10 GB (ironisch) an speicher... naja tinyproxy wäre ne idee.. =/
hab die config mal geändert... das cgi habe ich mal testweise so überlegt, dass man die filterlisten externalisieren kann... :) deshalb die DIR-Variablen :D

also wenn da noch jemand interesse hat, an dem projekt (naja eigentlich auch egal) machen tue ich das eh wieder :D dann fixe ich mal grobe teile und versuche mal nen cgi zu zimmer =)

Gruß Guido
 

Statistik des Forums

Themen
246,300
Beiträge
2,249,714
Mitglieder
373,904
Neuestes Mitglied
Elemir
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.