Webfilter mit BIND Plugin OPNsense

Hallo zusammen!

Ich versuche gerade einen Webfilter in der OPNSense einzurichten. Dazu habe ich auch diesen Thread gelesen: OPNSense: Welche Einstellungen bei DNS-Server?

Folgende, in die OPNSense integrierbare Filterung, wäre sehr komfortabel:
https://www.routerperformance.net/opnsense/dnsbl-via-bind-plugin/

Allerdings bekomme ich das nicht so wie in der Anleitung zum Laufen - die Einstellungen von LM scheinen zu komplex zu sein. Hat jemand eine Idee?

Auch der Hinweis im blauen Kasten in dieser Anleitung führte nicht zum Erfolg:
https://docs.opnsense.org/manual/how-tos/bind.html
edit: Ich hatte einen Denkfehler - der Hinweis im blauen Kasten führt zum Erfolg - siehe Anleitung weiter unten!

Vielen Dank!

Grüße Noah

Ergänzung:
Die dort verlinkte noch einfachere Möglichkeit " Blocking Ad’s (Option 0 – NEW)" unter: Using pfBlocker features in OPNsense – Routerperformance ist noch einfacher eingerichtet, aber funktioniert nur so lala - Adressen werden gesperrt, wenn man sie direkt aufruft, aber die Savesearch wird nicht erzwungen und man bekommt in der (Bilder-)suche auch nicht Jugendfreies zu sehen.

Hallo Noah,
hast Du auch diese Seite gelesen?
https://docs.opnsense.org/manual/proxy.html#transparent-mode
und nochmal die beiden Warnungen hier:
https://docs.opnsense.org/manual/how-tos/proxytransparent.html
Fazit für mich: Ich lasse die Finger davon…

… das heißt aber nicht, dass wir gar nicht filtern: Im Schüler-WLAN haben wir ein Pi-Hole laufen. Das wurde um diverse Domains erweitert, so dass viele Domains unerreichbar sind. Werbung wird sofort geblockt, was die Leitung etwas schont… vielleicht ist das eine mögliche Alternative?

Viele Grüße,
Michael

Hallo Michael!

Danke für deine schnelle Antwort!

Noch kratze ich mit meinem Wissen, was Proxy und DNS angeht, an der Oberfläche und verstehe noch nicht viel…

Was hat ein transparenter Proxy mit der DNS basierten Filterung über das BIND Plugin zu tun? Wie ich das verstehe, könnte man doch BIND ev. wie ein Pi-Hole einbinden? Soweit ich das verstehe, macht es doch im Prinzip nichts anderes, als DNS Anfragen gegen eine Blacklist/Whitelist zu prüfen, bevor sie nach draußen weitergeleitet werden, oder?

Grüße Noah

Hallo zusammen!

Ich hab’s geschafft!

Es läuft soweit alles, wie es soll:

  • Anmeldung funktioniert
  • linuxmuster.lan wird aufgelöst
  • Internetsperre funktioniert
  • Savesearch wird erzwungen
  • Seiten der Blacklists werden gesperrt

Hier eine Anleitung (eigentlich analog wie hier beschrieben: BIND Plugin — OPNsense documentation):

BIND-Plugin unter System > Firmware > Plugins installieren:

Dann konfigurieren unter Services > BIND:

Hier gibt es Links zu den angebotenen Listen:
https://github.com/opnsense/plugins/blob/master/dns/bind/src/opnsense/scripts/OPNsense/Bind/dnsbl.sh

Dann Folgendes unter Services > Unbound DNS > General > Custom Options eintragen:

forward-zone:
name: "."
forward-addr: 10.0.0.254@53530

Dabei auf die richtigen Anführungszeichen (beide oben) achten!

Zum automatischen Aktualisieren der Blacklists muss nun noch ein Cron-Job angelegt werden unter System > Settings > Cron:

So wie ich das verstehe, gehen zunächst alle DNS-Anfragen ihren Weg, wie das in LM Standard ist, intern wird aufgelöst, die Anfragen werden dann aber vom Unbound DNS auf BIND, der auf 10.0.0.254:53530 hört und IPs aus 127.0.0.0/8 zulässt, weitergeleitet. Dann wird gegen die Blacklist geprüft und nur Savesearch zugelassen. Und wenn nötig noch nach extern 1.1.1.1 weitergeleitet.

Der Test zum SSO zeigt wechselnd grüne oder rote Häckchen. Nur folgendes bleibt immer rot:

Ich wäre sehr dankbar, wenn irgendwer von euch, der in der Materie fitter ist, da noch drüber schauen könnte, denn wenn das so sauber ist, dann wäre das eine unglaublich einfache Möglichkeit, einen Jugendschutzfilter einzurichten. Was meint ihr?

Was noch zu lösen ist: Der Filter wird auf das gesamte LAN angewendet - ich will noch eine Lösung finden, bestimmte IP-Adressen auszunehmen. Vielleicht hat ja dazu noch jemand eine Idee?

Vielen Dank!

Grüße Noah

1 „Gefällt mir“

Hallo zusammen!

Kleine Korrektur meiner Anleitung oben:

Das ist natürlich Quatsch - unter Services > BIND > Configuration > ACLs ist ja das gesamte LAN 10.0.0.0/16 eingetragen.
Ich hab nun versucht, dort die Adressen 10.0.0.1 bis 10.0.0.10 auszunehmen, um sie an der DNSBL vorbeizuschleusen. Dazu habe ich mit Hilfe von https://www.ipaddressguide.com/cidr die übrigen Netze berechnet und dann alle als ACL eingetragen. Leider ohne Erfolg - die ausgenommenen Adressen laufen weiter über den Jugendschutzfilter von BIND.

Die Weiterleitung von Unbound auf BIND lässt sich auch (noch) nicht für bestimmte IPs abschalten:

Im OPNSense-Forum finde ich leider nur diesen Thread ohne Lösung:

Hat jemand noch eine andere Idee, wie einzelne IPs am Filter vorbeikommen? Vielleicht über eine Firewall-Regel? Wie müsste diese aussehen?

Vielen Dank!

Grüße Noah

Hallo zusammen!

Obige Lösung funktioniert bei mir sehr gut. Mit dem Update der OPNSense auf Version 21.7 wurde das Feld „Custom Options“ aus Unbound DNS entfernt und damit die dort eingestellte Weiterleitung zu BIND unwirksam. Siehe auch:

Deshalb muss man seither stattdessen per SSH eine Config-Datei für die Weiterleitung anlegen:

nano /usr/local/etc/unbound.opnsense.d/custom-options.conf

Mit folgendem Inhalt:

forward-zone:
name: "."
forward-addr: 10.0.0.254@53530

Dabei auf die richtigen Anführungszeichen (beide oben) achten!

Dann funktioniert die Filterung wieder!

Grüße Noah

1 „Gefällt mir“