Filterlisten in OPNsense

Started by xhaidi, December 02, 2017, 06:04:05 PM

Previous topic - Next topic
Hallo Forum,

ich bin auf der Suche nach einer Lösung mit der OPNsense-Firewall URLs bzw. IPs auf Grundlage von Filterlisten zu blockieren. Bei meiner Suche im Netz und hier im Forum habe ich keine Antwort bekommen. Am ehesten scheinen sich URL-Table-Aliase für diesen Zweck zu eignen. Hierzu gibt es ja auch unter https://docs.opnsense.org/manual/how-tos/edrop.html eine Anleitung für die Spamhaus-Filterlisten. Das habe ich probiert und es funktioniert auch. Allerdings möchte ich diese Filterlisten hier benutzen:

https://adaway.org/hosts.txt
http://www.malwaredomainlist.com/hostslist/hosts.txt
http://winhelp2002.mvps.org/hosts.txt
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
http://sysctl.org/cameleon/hosts
http://hosts-file.net/ad_servers.txt
https://raw.githubusercontent.com/notracking/hosts-blocklists/master/hostnames.txt
https://easylist.to/easylist/easylist.txt
https://easylist.to/easylist/fanboy-annoyance.txt
https://easylist.to/easylistgermany/easylistgermany.txt
https://easylist.to/easylist/easyprivacy.txt
https://easylist.to/easylist/fanboy-social.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt

Allerdings scheint das mit den URL-Table-Aliasen nicht zu funktionieren. Nach der Erstellung werden mir unter pf-Tabellen keine Einträge für die URL-Tables angezeigt. Hat jemand von Euch eine Idee wie ich OPNsense mit den obigen Listen füttern kann?

Danke & Viele Grüße, xhaidi

Das eine hat mit dem anderen so gesehen nichts zu tun, bzw. sollte anders angelegt werden.
Die DROP-Liste basiert auf IP's und Subnetzen und wird daher per Alias und dann als Firewall Regel angelegt, für eingehenden und ausgehenden Traffic.

Die Host und Namens-Listen die nicht aufgelöst werden sollen (quasi deine anderen Listen in deinem Thread), sollte man per DNS abblocken, bzw. via Proxy. Am Besten wär es denke ich diese Listen per Unbound auf 0.0.0.0 auflösen zu lassen.

Leider bin ich da selber aber auch nich weiter als du und mich interessiert das auch brennend. :D
Also falls da wer etwas auf die Beine gestellt bekommen hat, erleuchte uns! :D

IPs und Subnetze -> Firewallalias
Hostnamen -> DNS oder Proxy
URL-Filterlisten -> Proxy
Filter-Muster für Adblocker (Easylist etc.) -> ICAP (support für Kosmetische sowie Netzwerkfilter) oder url_rewrite_program (nur Netzwerkfilter) in Squid.

@oxygen: Würde nicht 0.0.0.0 verwenden, da dies von Hosts als localhost interpretiert werden kann. Es könnte also zu komischem Verhalten führen. Die korrekte Antwort währe eine Fehlermeldung NXDOMAIN (Domain existiert nicht).

Fragt im IRC mal Dominian, der hat so ein Setup mit Unbound am laufen.

@fabian
Das verwirrt mich aber jetzt. Ich kenne das so, dass man entweder auf 127.0.0.1 oder auf 0.0.0.0 auflöst.
Wie löst man denn bei ner Host-Datei auf NXDOMAIN auf oder ist das nur bei einem Proxy möglich und bei DNS geführten Listen, ich sag mal im "klassischem" Sinne, wie bei der Windows Host Datei nicht möglich?
Ich dachte immer man nimmt 0.0.0.0, gerade WEIL 127.0.0.1 falsch interpretiert werden könnte.

Also werd ich mir doch noch Squid und ICAP anlegen müssen... Danke dir. :)

Wenn du nur Filterlisten machst brauchst kein icap. Einfach das Howto von den offiziellen Docs nehmen

Quote from: Oxygen61 on December 03, 2017, 04:11:41 PM
@fabian
Das verwirrt mich aber jetzt. Ich kenne das so, dass man entweder auf 127.0.0.1 oder auf 0.0.0.0 auflöst.
Wie löst man denn bei ner Host-Datei auf NXDOMAIN auf oder ist das nur bei einem Proxy möglich und bei DNS geführten Listen, ich sag mal im "klassischem" Sinne, wie bei der Windows Host Datei nicht möglich?
Ich dachte immer man nimmt 0.0.0.0, gerade WEIL 127.0.0.1 falsch interpretiert werden könnte.

Über die /etc/hosts geht natürlich kein NXDOMAIN (nur per DNS-Server). Probier einfach mal nen ping auf 0.0.0.0 aus. Es wird in den meisten Fällen eh egal sein, weil die wenigsten lokale Webserver laufen haben.

Quote from: Oxygen61 on December 03, 2017, 04:11:41 PM
Also werd ich mir doch noch Squid und ICAP anlegen müssen... Danke dir. :)

ICAP wird nur für so Dinge wie Webseiten vor dem Ausliefern umbauen (zum Beispiel Werbecontainer (divs) und skripte ausbauen) gebraucht. Normalerweise reicht die einfache Sperrliste aus. Der Vorteil währe, dass man die Easylist-Dateien irgendwie auf dem proxy verwenden könnte. Ist aber zugegeben etwas "übers Ziel hinaus".

QuoteProbier einfach mal nen ping auf 0.0.0.0 aus.
PING: Fehler bei der Übertragung. Allgemeiner Fehler.
:D

QuoteIst aber zugegeben etwas "übers Ziel hinaus".
Ist es das wirklich? Solche Dinge zentral zu halten, finde ich immer sehr praktisch.
Ich hatte mich da vielleicht etwas falsch ausgedrückt. ICAP kommt bei mir so oder so noch hin.
Die Sache ist, dass ich wenn ich mir schon den Aufwand mit Proxy und ICAP mache da schon das "ganze Paket" nehmen möchte und die Möglichkeiten ausreizen möchte, gerade auch im Bezug auf "Filter/Antivirus/Blocklisten" zentral halten.
Die Einzige Sache, die ich tatsächlich für SOHO Bereiche für "übers Ziel hinaus" halte ist IDS/IPS. :)

Quote from: Oxygen61 on December 03, 2017, 11:13:35 PM
QuoteProbier einfach mal nen ping auf 0.0.0.0 aus.
PING: Fehler bei der Übertragung. Allgemeiner Fehler.
:D

Tut irgendwie bei mir:

~% ping 0.0.0.0
PING 0.0.0.0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.113 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.137 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.092 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.105 ms
^C
--- 0.0.0.0 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4060ms
rtt min/avg/max/mdev = 0.091/0.107/0.137/0.020 ms


Quote from: Oxygen61 on December 03, 2017, 11:13:35 PM
QuoteIst aber zugegeben etwas "übers Ziel hinaus".
Ist es das wirklich? Solche Dinge zentral zu halten, finde ich immer sehr praktisch.

Ein ICAP Service für das Filterformat von AdBlock Plus muss meines wissens nach noch geschrieben werden...

Quote from: Oxygen61 on December 03, 2017, 11:13:35 PM
Ich hatte mich da vielleicht etwas falsch ausgedrückt. ICAP kommt bei mir so oder so noch hin.
Die Sache ist, dass ich wenn ich mir schon den Aufwand mit Proxy und ICAP mache da schon das "ganze Paket" nehmen möchte und die Möglichkeiten ausreizen möchte, gerade auch im Bezug auf "Filter/Antivirus/Blocklisten" zentral halten.
Die Einzige Sache, die ich tatsächlich für SOHO Bereiche für "übers Ziel hinaus" halte ist IDS/IPS. :)
Habe hier auch nichts gegen den AV gesagt.

Liebe Leute,

danke für die vielen Antworten. Sehe ich die Sache richtig?: Ich brauche also einen Caching Proxy bei dem ich entsprechende Remote Blacklist eingebe, so wie hier https://docs.opnsense.org/manual/how-tos/cachingproxy.html beschrieben? Oder gibt es noch eine andere Variante?

Danke & Grüße, Andreas

Die alternative ist DNS wenn du nur Hostnamen blockieren willst (https://devinstechblog.com/block-ads-with-dns-in-opnsense/) oder mit der IPS, wobei beide eher schlecht im Vergleich mit dem Proxy funktionieren, da der Proxy das Protokoll am besten versteht und URLs Teil von HTTP sind.

Hi,

ich habe das mit Werbung so geregelt, dass ich im Unbound über die Custom Options einen Include mache.

include: /var/unbound/my_blocklist.conf

Diese Datei muss man natürlich einmal auf der Shell anlegen und dann am besten per Skript im gewünschten Intervall neu betanken. Genauso kannst du das natürlich mit Domains die du blocken willst machen. Ggfs. musst du die Listen aber noch parsen.

So mache ich das für jeden Eintrag:

local-zone: "some.bad-domain.net" redirect
local-data: "some.bad-domain.net A 127.0.0.1"

Ich pointe den A-Record der unerwünschten Domain aber aufs Loopback-Interface, anstatt auf 0.0.0.0, da ich (sofern ich mich richtig erinnere) mit 0.0.0.0 und Unbound Probleme hatte. Kann aber auch sein, dass ich mich da täusche. Ist schon was länger her...
Welchen konkreten Vorteil hätte 0.0.0.0 gegenüber 127.0.0.1 ? Greift da kein Timeout beim versuchten Verbindungsaufbau ?

Was übrigens auch noch ein ganz guter Workaround ist: Im Webinterface lassen sich ja nur A-Records in den Overrides definieren. Wenn man ein weiteres Include in die Custom Options setzt, lassen sich auf der Shell so auch Problemlos SRV-Records anlegen. Das ist sehr nützlich, wenn man XMPP oder eine Active Directory im Einsatz hat:

local-data: "_xmpp-client._tcp.jabber.your-domain.net 86400 IN SRV 0 5 5222 your-server.your-domain.net"
local-data: "_xmpp-server._tcp.jabber.your-domain.net 86400 IN SRV 0 5 5269 your-server.your-domain.net"
local-data: "_ldap._tcp.ad.your-domain.net 3600 IN SRV 0 100 389 your-server.your-domain.net"
local-data: "_kerberos._udp.ad.your-domain.net 3600 IN SRV 0 100 88 your-server.your-domain.net"

Hoffe das hilft dir weiter. Wer Verbesserungsvorschläge hat... Immer gerne :-)

Frohes Neues noch.

MFG
Wayne

Quote from: fabian on December 08, 2017, 05:15:05 PM
Die alternative ist DNS wenn du nur Hostnamen blockieren willst (https://devinstechblog.com/block-ads-with-dns-in-opnsense/) oder mit der IPS, wobei beide eher schlecht im Vergleich mit dem Proxy funktionieren, da der Proxy das Protokoll am besten versteht und URLs Teil von HTTP sind.

Moinsen.

Also ich hab das auch nach dieser Anleitung gemacht.
Geht perfekt und die obigen Listen können eingebunden werden.

Den squid-Proxy für jeden Client einrichten (auch mobil) war zu umständlich.

Quote from: rantwolf on January 09, 2018, 12:09:21 AM
Den squid-Proxy für jeden Client einrichten (auch mobil) war zu umständlich.
PAC kommit mit 18.1 - damit wird es einfacher - Insbesondere wenn es mit WAPD eingesetzt wird. War ein transparenter Proxy keine Option für dich?