pfBlockerNG – Werbung und unerwünschte Inhalte filtern
By zefanja
Besucht man heute eine durchschnittliche Website, so werden unzählige Skripte und Tracker nachgeladen. Dadurch können die Webseitenbetreiber, Google, Facebook, usw. Daten über mich sammeln und meinen Streifzug durch die Weiten des Internets verfolgen. Zum Glück muss man sich diesem Treiben nicht ergeben und es gibt viele sinnvolle Erweiterungen z.B. für den Browser (uBlock Origin, uMatrix, etc.). Diese Lösungen haben den Nachteil, dass ich sie auf jedem Gerät und für jeden Browser einzeln installieren muss. Deshalb möchte ich heute vorstellen, wie man Werbung und unerwünschte Inhalte mit pfSense und pfBlockerNG netzwerkweit filtern kann. Das ist z.B. sinnvoll in einem Heim- oder Schulnetzwerk.
pfBlockerNG installieren
Zuerst loggen wir uns in pfSense ein und öffnen den Package Manager. Dort wählen wir pfBlockerNG-devel unter „Available Packages“ aus:
Mit „Install“ können wir das Paket installieren. PfSense lädt nun das pfBlockerNG Paket herunter und fügt es der Firewall hinzu.
pfBlockerNG Ersteinrichtung
Als nächsten werden wir pfBlockerNG konfigurieren. Dazu gehen wir zu Firewall → pfBlockerNG.
Es begrüßt und ein Assistent, der uns bei der Einrichtung von pfBlockerNG helfen wird. Mit „Next“ geht es weiter.
Auf der nächsten Seite wird erklärt, welche Dinge nun eingerichtet werden:
- Es wird ein Standard-Setup für Anfänger mit pfBlockerNG eingerichtet.
- Falls man vorher schon einmal pfBlockerNG installiert hatte, werden alle Einstellungen gelöscht.
- Zwei Komponenten werden installiert:
- IP: Firewall-Regeln für die WAN-Schnittstelle, um die schlimmsten bekannten Angreifer zu sperren.
- DNSBL: Werbung und andere bekannte bösartige Domains werden geblockt.
Mit „Next“ geht es wieder weiter.
Im nächsten Schritt müssen wir die eingehende Schnittstelle (WAN) und ausgehende Schnittstelle (LAN) auswählen. Wenn man mehrere interne Schnittstellen hat, kann man alle diejenigen auswählen für die man pfBlockerNG einrichten will. Möchte man z.B. das Gäste-WLAN filtern, aber nicht das WLAN für die Lehrkräfte, kann man hier die entsprechenden Schnittstellen aus bzw. abwählen.
Als nächstes müssen wir eine sogenannte VIP-Adresse festlegen. Auf dieser läuft der Webserver von pfBlockerNG und sollte unter keinen Umständen eine IP aus einem verwendeten Netzwerk sein! Wenn das LAN-Netz z.B. 192.168.1.1/24 ist, sollte die VIP-Adresse nicht in diesem Bereich liegen. Hier in unserem Beispiel lassen wir die Adresse bei 10.10.10.1. Die Ports muss man i.d.R. nicht ändern.
Das Setup ist nun fertig und wir können den Assistenten mit einem Klick auf „Finish“ beenden.
Danach öffnet sich die pfBlockerNG Updateseite und es werden automatisch alle aktivierten Blocklisten heruntergeladen und aktiviert.
pfBlockerNG einrichten
Wir haben nun ein fertig eingerichtetes pfBlockerNG Setup, dass unerwünschte Werbung und bösartige Domains und Webseiten blockiert. pfBlockerNG ist aber ein sehr mächtiges & flexibles Werkzeug. Deshalb möchte ich gern ein paar Einstellungen hervorheben.
Wichtig: Damit geänderte Einstellungen auch wirksam werden (egal, ob DNSBL oder IP), müssen wir unter Update → Reload → All → Run ausführen, damit die (geänderten) Listen heruntergeladen und aktiviert werden.
IP
Im IP Reiter, empfehle ich folgende Einstellungen:
- Floating Rules → Enable. Wenn man nur eine interne Schnittstelle hat, kann man es auch deaktiviert lassen. Bei vielen Schnittstellen (z.B. in einem Schulnetzwerk), macht es Sinn, diesen Punkt zu aktivieren, damit die Firewallregeln übersichtlicher bleiben.
- Kill States → Enable. Wenn pfBlockerNG die Blocklisten aktualisiert, werden alle aktiven Verbindungen zu IPs in den Listen zurückgesetzt.
GeoIP Blocking
Möchte man Zugriffe aus bestimmten Regionen der Erde verbieten, muss man sich zuallererst einen kostenloses Konto bei MaxMind erstellen. Daraufhin erhält man einen Lizenzschlüssel, den man unter IP → MaxMind GeoIP Configuration eintragen. Danach muss man einmal unter Update → Reload → IP die GeoIP Datenbanken herunterladen.
Nun können wir unter IP → GeoIP die gewünschten Kontinente oder Top-Spammer auswählen. Dazu klicken wir auf den kleinen Stift rechts und wählen dann in der Liste alle Einträge aus. Unten wählen wir noch „Deny Both“ (List Action).
Hinweis zu „Deny Inbound“ und „Deny Outbound“: „Deny Inbound“ bedeutet, dass die IPs für alle eingehenden Verbindungen geblockt werden. Wenn man z.B. einen Webserver betreibt und man möchte bestimmte Länder blocken, dann kann man das mit „Deny Inbound“ machen. „Deny Outbound“ gilt für alle ausgehenden Verbindungen, d.h. ich kann mich von einem Rechner im Netzwerk nicht zu dieser IP verbinden. Hier muss man aufpassen! Wenn ich z.B. alle IPs Nordamerikas mit „Deny outbound“ sperre, kann ich ab sofort keine Webseiten mehr erreichen, die auf diesem Kontinent gehostet sind!
DNSBL / Feeds
pfBlockerNG blockt neben IPs auch Domains. Es findet also keine Man-in-the-Middle-Attacke statt, um Inhalte zu filtern, sondern es wird einfach in eine lange Liste geschaut, ob eine Domain erlaubt ist oder nicht (funktioniert auch mit HTTPS). Unter Feeds können wir einstellen, welche Listen aktiv genutzt werden sollen. Es gibt dabei Feeds für IP Blocklisten, als auch für DNSBL, also Blocklisten für DNS / Domains.
Alle aktivierten Feeds haben einen Haken am Ende der Zeile. Wenn wir nun einen noch nicht aktiven Feed hinzufügen wollen, klicken wir einfach auf das „+“:
Es öffnet sich eine Seite auf der wir Details zu dem Feed einstellen können. Folgende Felder sind wichtig:
- State: ON
- Action: Unbound
- Update Frequency: Once a day
Manchmal möchte man einen Feed hinzufügen, der nicht in der Liste ist (z.B. einzelne Feeds von Steven Black). Dazu gehen wir zu DNSBL → DNSBL Groups und klicken unten auf „Add“:
Auf der nächsten Seite geben wir der DNSBL Gruppe einen Namen und fügen und DNSBL Source Definitions unseren Feed (oder mehrere) hinzu.
- Name: StevenBlack
- State: ON
- Source: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling/hosts
- Header / Label: Glückspiel
- Action: Unbound
- Update Frequency: Once a day
Mit „Save“ schließen wir den Vorgang ab.
Whitelists
Wenn eine Domain nicht geblockt werden soll, muss man sie unter DNSBL → DNSBL Whitelist in die Whiteliste aufnehmen. Wenn man einen Punkt („.“) vor den Domainnamen setzt, werden auch alle Subdomains freigeschaltet, sonst nur genau die (Sub)Domain, die man eingetragen hat.
SafeSearch
Unter DNSBL → DNSBL SafeSearch kann man SafeSearch für die bekanntesten Suchmaschinen einstellen. Weiterhin können wir auch noch DNS over HTTPS von Firefox blockieren sowie Beschränkungen für Youtube einstellen.
pfSense als DNS Server erzwingen
Damit auch alle Anfragen in unserem Netzwerk durch pfBlockerNG gefiltert werden, müssen wir verhindern, dass jemand im Netzwerk einen anderen DNS-Server als den DNS-Server von pfSense verwendet. Dazu erstellen wir 2 Regeln für die LAN-Schnittstelle (mehr Details hier):
Fazit
pfBlockerNG ist ein tolles Open Source Projekt. Es hilft Werbung, unerwünschte Inhalte und ganze Netzbereiche zu filtern. Egal ob IPs oder DNS-Blocklisten – mit pfBlockerNG kann man beides verwalten und so konfigurieren, wie man es für sein Netzwerk haben möchte. Es gibt aber auch Alternativen für pfBlockerNG, z.B. pi-hole, welches sich gut auf einem Raspberry Pi oder in einer VM bzw. Container installieren lässt. Unter Strich bleibt, dass ein werbefreies Netzwerk möglich ist!
Nutzt du pfBlockerNG oder pi-hole in deinem (Schul)Netzwerk?