Hoe IP-filtratie en DNS Blackholing in te stellen op pfSense met pfBlockerNG

Marc Dahan

By Marc Dahan . 17 december 2023

Cybersecurity Journalist

Miklos Zoltan

Fact-Checked this

pfSense is een zeer krachtige open-source firewall/router-oplossing. Gebaseerd op FreeBSD, heeft pfSense een sterke focus op beveiliging. Zelfs in een “vanilla” configuratie zal pfSense veel veiliger zijn dan elke kant-en-klare router die je kunt kopen.

Uit de doos biedt pfSense veel tools om je beveiligde netwerkopstelling aan te passen. Maar bovenop de standaard tools, biedt pfSense ook een repository van add-on pakketten die je kunt installeren om je opstelling verder te verbeteren.

In dit bericht zullen we kijken naar pfBlockerNG. pfBlockerNG is een optioneel pakket beschikbaar voor pfSense. Wat pfBlockerNG doet is in wezen de firewall-functionaliteit van pfSense uitbreiden door je de mogelijkheid te geven om inkomende en uitgaande verbindingen fijn af te stemmen met behulp van IP- en DNS-bloklijsten.

Gerelateerde gids: Hoe je advertenties kunt blokkeren op al je apparaten met pfSense, Squid & SquidGuard

Korte samenvatting van het artikel:
pfSense is een robuuste open-source firewall/router-oplossing gebaseerd op FreeBSD, die een hoger niveau van beveiliging biedt dan kant-en-klare routers.
Naast de standaard tools biedt pfSense add-on pakketten zoals pfBlockerNG, dat de firewall-functionaliteit verbetert door het fijn afstemmen van inkomende en uitgaande verbindingen mogelijk te maken met behulp van IP- en DNS-bloklijsten.

De twee kernfuncties van pfBlockerNG omvatten het filteren van inkomend en uitgaand verkeer tegen IP-lijsten en het toepassen van GeoIP-beperkingen, en het blokkeren van advertenties en kwaadaardige sites door middel van DNS-filtratie.

Door DNS-verzoeken te controleren tegen bloklijsten, voorkomt pfBlockerNG toegang tot schadelijke inhoud en dient het als een efficiënte oplossing voor het blokkeren van advertenties zonder de noodzaak van een proxyserver.

Hoe IP-filtratie in te stellen

Wat is pfBlockerNG?

pfBlockerNG heeft twee hoofdfuncties:

Inkomend & uitgaand verkeer filteren

pfBlockerNG kan inkomend en uitgaand verkeer filteren tegen IP-lijsten en GeoIP-beperkingen toepassen door verkeer naar/van specifieke landen toe te staan of te weigeren. De laatstgenoemde functionaliteit kan erg handig zijn als je poorten opent op je WAN.

Advertenties en kwaadaardige sites blokkeren via DNS-blackholing

pfBlockerNG kan advertenties en toegang tot kwaadaardige sites blokkeren via DNS-filtratie. Tijdens het surfen op het web worden je DNS-verzoeken gecontroleerd aan de hand van een blokkeerlijst. Als er een match is, wordt het verzoek geblokkeerd. Het is een geweldige manier om advertenties te blokkeren zonder een proxyserver te gebruiken.

We gaan beide gebruiksgevallen bekijken en zullen meer in detail treden naarmate we elk van hen aanpakken.

Deze gids gaat ervan uit dat je pfSense al hebt ingesteld met functionele WAN- en LAN-interfaces.

pfSense met functionele WAN- en LAN-interfaces

Laten we beginnen.

pfBlockerNG-devel installeren

Het eerste wat we moeten doen, is pfBlockerNG installeren.

  1. Selecteer vanuit het bovenste menu Systeem > Pakketbeheer. Je wordt naar het tabblad Geïnstalleerde pakketten van de Pakketbeheerder gebracht.
    pfBlockerNG installeren.
  2. Selecteer Beschikbare Pakketten. De lijst met beschikbare pakketten wordt weergegeven.
    pfBlockerNG Stap 2 installeren
  3. Scroll naar beneden totdat je pfBlockerNG ziet. Er zijn twee vermeldingen voor pfBlockerNG: pfBlockerNG en pfBlockerNG-devel. We gaan pfBlockerNG-devel installeren. Hoewel de “devel” toevoeging staat voor ontwikkelingsversie (oftewel, bètasoftware), is het volledig functioneel en actief in ontwikkeling. Het zal in permanente bèta blijven, aangezien de pakketontwikkelaar het veiliger vindt om het als bètasoftware te beschouwen terwijl hij voortdurend nieuwe functionaliteit aan het pakket toevoegt.
    pfBlockerNG-devel installeren
  4. Klik op Installeren, naast pfBlockerNG-devel. Het venster Pakket Installeren wordt weergegeven.
  5. Klik op Bevestigen. De installatie begint.
    pfBlockerNG-devel
  6. Zodra de installatie voltooid is, zou je Geslaagd moeten zien staan onderaan het venster Pakket Installeren. pfBlockerNG-devel is nu geïnstalleerd.

    pfBlockerNG-devel

Basisinstellingen

Nu pfBlockerNG-devel is geïnstalleerd, moeten we ons pakket configureren. We beginnen met IP- en GeoIP-filtering.

We zullen pfBlockerNG sectie per sectie configureren. Alle instellingen die niet worden genoemd, moeten op hun standaardwaarden worden gelaten.

  1. Selecteer vanuit de bovenste menu’s Firewall > pfBlockerNG. De pfBlocker configuratiewizard wordt weergegeven.
    pfBlockerNG Basisinstellingen
  2. Je kunt ofwel de configuratiewizard uitvoeren of pfBlockerNG handmatig configureren. We zullen het handmatig configureren, dus je kunt op het rode HIER klikken om de wizard te sluiten. Je wordt dan naar de Algemeen pagina van de pfBlocker-instellingen gebracht.
    pfBlockerNG Instellingspagina

Algemeen / Algemene Instellingen

  1. Vink het vakje Inschakelen aan dat rechts van pfBlockerNG wordt weergegeven. Hierdoor wordt de service ingeschakeld.
  2. Klik onderaan de pagina op Opslaan.
  3. We zullen de andere instellingen op deze pagina op hun standaardwaarden laten.

pfBlockerNG inschakelen

IPv4-filtering

IP / IP-configuratie

  1. Selecteer het tabblad IP om toegang te krijgen tot de pagina met IP-instellingen. Raak voorlopig de sub-menu’s die hieronder verschijnen niet aan.
  2. Activeer Deduplicatie. Dit zal dubbele vermeldingen oplossen als je meerdere IP-feeds gebruikt.
  3. Activeer CIDR-aggregatie.
  4. Activeer Onderdrukking. Onderdrukking zorgt ervoor dat je lokale subnets niet worden geblokkeerd.

IP / IP-configuratie

IP / MaxMind GeoIP-configuratie

Zoals ik hierboven al vermeldde, stelt de GeoIP-functie van pfBlockerNG je in staat om verkeer naar en van hele landen of continenten te filteren. Om dit te doen, gebruikt pfBlocker de MaxMind GeoIP-database, die een licentiesleutel vereist. Een link in de beschrijving van het veld MaxMind Licentiesleutel brengt je naar de registratiepagina van MaxMind. De MaxMind-licentiesleutel is gratis.

Vul het registratieformulier in om je licentiesleutel te verkrijgen. Zodra je je licentiesleutel hebt, voer je deze in het veld MaxMind Licentiesleutel in.

MaxMinf GeoIP-configuratie

En:

MaxMind Registratie

IP / IP Interface/Regels Configuratie

In dit gedeelte wordt bepaald op welke inkomende en uitgaande interface(s) de IPv4-, IPv6- en GeoIP-filtering van pfBlockerNG worden toegepast.

  1. Selecteer WAN uit het veld Inkomende Firewall-regels (en alle andere WAN-interfaces die je mogelijk hebt en wilt filteren).
  2. Selecteer LAN uit het veld Uitgaande Firewall-regels (en alle andere LAN-type interfaces die je mogelijk hebt en wilt filteren).
  3. Activeer Zwevende Regels. Zwevende regels zijn speciale firewall-regels die worden toegepast voordat de reguliere firewall-regels worden toegepast. Dit zorgt ervoor dat de filtering van pfBlockerNG plaatsvindt zodra het verkeer de firewall raakt. Het andere voordeel is dat pfBlockerNG automatisch de zwevende regels voor je zal aanmaken.
  4. Klik onderaan de pagina op Opslaan.

pfBlockerNG Interface-configuratie

IPv4 Feeds Toevoegen

Het is nu tijd om enkele blokkeerlijsten toe te voegen aan pfBlockerNG. Hoewel je vrij bent om je eigen feeds toe te voegen, heeft pfBlockerNG enkele ingebouwde feeds die we kunnen inschakelen (de termen lijst en feed zijn in deze context uitwisselbaar).

Dit is erg praktisch omdat het zoeken naar blokkeerlijsten op internet tijdrovend is en vele niet werken of niet meer worden onderhouden. De feeds binnen pfBlocker zijn live lijsten die regelmatig worden bijgewerkt, dus we gaan die gebruiken.

  1. Selecteer het tabblad Feeds.
  2. Klik op het blauwe +, naast PRI1. Dit is de eerste vermelding. PRI1 is een verzameling van feeds, dus het omvat meerdere feeds, zoals we zo meteen zullen zien. Zodra je op het blauwe + klikt, word je naar de pagina IP / IPv4 gebracht, waar je geselecteerde feeds worden vermeld. En bijna alle relevante velden zijn automatisch ingevuld.

pfBlockerNG Feeds Tab

IP / IPv4

De naam van de feed-verzameling is ingevuld, samen met de beschrijving. De feed-URL’s in de verzameling en hun bijbehorende beschrijvingen zijn ook ingevuld. Echter, onze feeds staan standaard op UIT. We moeten ze inschakelen.

pfBlockerNG IPv4 Lists

Maar voordat we dat doen, moeten we een van de feeds uit de PRI1-verzameling verwijderen. Pulsedive, de 7e feed vanaf de top, is een premium lijst die een betaalde API-sleutel vereist. We gaan deze API-sleutel niet halen voor deze tutorial. Klik op de knop Verwijderen.

Feed Verwijderen

  1. Nadat je Pulsedive hebt verwijderd, zet je alle feeds op AAN.
    Lijsten Aan
  2. Scroll naar beneden naar het gedeelte Instellingen op de pagina.
  3. Selecteer uit het uitklapmenu Actie, kies Beide Weigeren. Dit zal het verkeer naar en van de IP-adressen in de lijsten/feeds blokkeren. Je kunt ervoor kiezen om alleen inkomende of uitgaande verbindingen te weigeren als je dat wilt. Wees gewaarschuwd dat als je alleen inkomend verkeer weigert en een host op je netwerk een uitgaande verbinding initieert naar een van die IP’s, het inkomende antwoord van dat IP wordt toegestaan. Afhankelijk van je omgeving kan dat prima zijn – gewoon ter waarschuwing. Voor dit voorbeeld ga ik Beide Weigeren selecteren.
    IP Beide Weigeren
  4. Klik op IPv4-instellingen Opslaan onderaan de pagina.

Je kunt dezelfde stappen herhalen voor IPv6 als je ISP zowel een IPv4- als een IPv6-IP-adres toekent aan je WAN. De meesten van ons zitten nog steeds op alleen-IPv4-netwerken.

GeoIP Filtering

Voordat we GeoIP-filtering configureren, moeten we eerst een update van pfBlockerNG forceren. pfBlocker wordt automatisch bijgewerkt op vaste tijdstippen. Maar om GeoIP-filtering te configureren, moet pfBlocker eerst de MaxMind-database ophalen, en een geforceerde update zal precies dat doen.

  1. Selecteer het tabblad Update in de instellingen van pfBlockerNG.
  2. Klik op Run (Uitvoeren). De update start.
    GeoIP Update Instellingen
  3. Zodra de update voltooid is, zou je UPDATE PROCESS ENDED (UPDATE PROCES VOLTOOID) moeten zien staan aan de onderkant van het Log-venster onder de Update-instellingen.
    GeoIP Update Proces Voltooid
  4. Als we door het Log-venster kijken, kunnen we zien dat zowel mijn IPv4-feeds als de GeoIP-database zijn bijgewerkt.
    IPv4-logs

    IPv4 Logs

    GeoIP-logs

    GeoIP Logs

  5. Vanuit het tabblad IP in de instellingen van pfBlockerNG, selecteer je het sub-menu GeoIP. De GeoIP-samenvatting wordt getoond.
    GeoIP Menu

De GeoIP-samenvatting bestaat uit IP-adresfeeds georganiseerd per continent, met twee extra categorieën: Top Spammers en Proxy en Satelliet. Top Spammers is een lijst met landen die bekend staan als een frequente bron van online aanvallen. En Proxy en Satelliet zijn bekende anonieme proxy- en satellietproviders.

Je kunt het verkeer naar/van een heel continent filteren, of je kunt de feed fijn afstemmen door alleen de landen te selecteren die je wilt filteren.

Aanpassen van landenlijsten

  1. Klik op het potloodicoon rechts van de feed die je wilt bewerken.
    GeoIP Samenvatting
  2. Selecteer de landen die je wilt dat pfBlockerNG filtert.
  3. Klik onderaan de pagina op Opslaan.
    GeoIP Samenvatting Pagina

Configureren van landblokkades

  1. Ga terug naar het GeoIP-menu van de pfBlocker-instellingen.
  2. Net zoals we deden met de IPv4-lijsten, selecteer vanuit het Actie dropdown-menu rechts van elk veld, ofwel Blokkeer Inkomend, Blokkeer Uitgaand, of Blokkeer Beide.
    GeoIP Actie

Nu zijn er bepaalde dingen om hier te overwegen. Als je uitgaande verbindingen naar een land of continent wilt blokkeren, ga je gang. Echter, als je overweegt om inkomende links van een regering of continent te blokkeren, bedenk dan dat pfSense standaard alle ongevraagde inkomende verkeer op de WAN blokkeert.

Dat betekent dat tenzij je open poorten op je WAN hebt, het blokkeren van landen of continenten nutteloos is en alleen geheugen voor niets zal verbruiken. Als je open poorten op je WAN hebt, zorg er dan voor dat je geen verbindingen blokkeert van landen die je wilt toestaan om verbinding te maken met je open poort(en).

Aliassen zijn op zichzelf staande IP-adreslijsten die native zijn aan pfSense. Met aliassen kun je alleen de specifieke landen die je hebt geselecteerd toestaan om toegang te krijgen tot je open poorten. Echter, er is een manier om aangepaste aliassen te maken van de MaxMind GeoIP-database binnen pfBlockerNG die direct als bron in je port forwarding firewall-regels kunnen worden gebruikt.

Creëren van een GeoIP-alias in pfBlockerNG

Omdat pfSense automatisch al het verkeer blokkeert dat niet expliciet is toegestaan in de firewall-regels, willen we een alias maken van de landen die we zullen toestaan door de firewall. pfSense zal de rest standaard blokkeren.

  1. Ga naar het IPv4 sub-menu en klik op Toevoegen.
    Aangepaste Alias Toevoegen
  2. Geef je alias een naam en een beschrijving.
  3. Zet het veld Formaat op GeoIP.
  4. Zet het veld Status op AAN.
  5. Zet de Actie op Alias Native.

  6. Type de eerste letters van het land dat je aan de alias wilt toevoegen. Selecteer de landen die je aan de alias wilt toevoegen. De lijst met landen verschijnt.

Aangepaste alias Begin met typen

  • Je kunt meer landen toevoegen aan je alias door op de groene knop Toevoegen te klikken.
    Landen toevoegen
  • Stel de Updatefrequentie in op Eén keer per dag.
  • Klik op IPv4-instellingen opslaan onderaan de pagina. Zodra je een update van pfBlockerNG forceert, zal je alias beschikbaar zijn voor opname in je firewall-regels.
    Aangepaste Alias Instellingen
  • Als je open poorten hebt maar het simpel wilt houden, kun je inkomende verbindingen van Top Spammers en Proxy en Satelliet blokkeren zonder een aangepaste alias te creëren. Onthoud dat dit alleen nuttig is als je open poorten hebt op je WAN.

    Weiger Spammers en Satelliet

    Als je geen enkele open poort hebt op je WAN, blokkeer dan alleen uitgaand verkeer of laat GeoIP-filtering uitgeschakeld.

    IPv4-filtering testen

    Om zeker te zijn dat ons verkeer wordt gefilterd, kunnen we proberen verbinding te maken met een bekend IP-adres in de blokkeerlijst. Als ik probeer toegang te krijgen tot 1.13.9.177 (een IP opgenomen in mijn pfBlockerNG IPv4-feeds) in mijn browser, wordt het IP-adres niet vertaald naar een domeinnaam, en kan ik geen verbinding maken. Dat is wat we willen.

    IPv4-test

    Laten we verder gaan met het configureren van pfBlocker’s DNSBL.

    DNSBL

    Oké. We hebben IPv4-filtering en GeoIP-filtering ingesteld, en ook aliassen. Het is nu tijd om verder te gaan met het gebruik van pfBlockerNG voor ad-blocking. Ad-blocking in pfBlockerNG wordt bereikt door middel van DNS blackholing. Dit vergelijkt jouw DNS-verzoeken met een lijst van bekende advertentienetwerken en trackers en blokkeert deze op DNS-niveau wanneer er een overeenkomst is, wat resulteert in een advertentievrij internet. Hoera.

    Om de DNSBL-functie in pfBlockerNG te gebruiken, moet je de DNS Resolver in pfSense gebruiken voor jouw DNS-resolutie. Dat betekent dat je de DNS van je hosts niet via DHCP kunt toewijzen of de DNS Forwarder (dnsmasq) kunt gebruiken als je de DNSBL-functie wilt gebruiken.

    Standaard gebruikt pfSense de DNS Resolver op alle interfaces. Dus als je geen wijzigingen hebt aangebracht in de instellingen van de DNS Resolver, zit je goed. Als je wel wijzigingen hebt aangebracht, configureer dan de Resolver om te binden aan jouw LAN (uitgaand) en jouw WAN (inkomend). En selecteer alle andere LAN-type (OPT interfaces) en WAN-type (multi-WAN setup, VPN-gateways) interfaces waarop je de DNSBL wilt filteren.

    DNS Resolver

    DNSBL configureren

    1. Selecteer het DNSBL-tabblad.
    2. Schakel DNSBL in.
    3. Selecteer naast DNSBL Mode, Unbound Python-modus.
      DNSBL
    4. Scroll naar beneden naar het gedeelte DNSBL-configuratie.
    5. Schakel Toestaan Firewall-regels in en selecteer je LAN en alle andere LAN-type interfaces die je wilt filteren met DNSBL. Dit zal automatisch zwevende firewall-regels creëren (zoals we deden met IPv4-filtering) zodat DNSBL-filtering zal plaatsvinden zodra het verkeer de firewall raakt.
    6. Klik onderaan de pagina op DNSBL-instellingen opslaan.
      DNSBL-instellingen opslaan

    We moeten nu enkele DNSBL-feeds toevoegen.

    DNSBL-feeds toevoegen

    1. Selecteer het tabblad Feeds.
    2. Scroll naar beneden tot je aan de linkerkant DNSBL Category ziet. De eerste vermelding is EasyList.
    3. Klik op het blauwe + teken links van EasyList. Je wordt naar de pagina DNSBL Groups geleid, waar je geselecteerde feeds worden weergegeven, net als bij IPv4-filtering. En bijna alle relevante velden worden automatisch ingevuld.
      DNSBL Feeds
    4. Verwijder alle feeds behalve de eerste en de laatste: EasyList en EasyList Privacy.
    5. Zet de overgebleven feeds op AAN.
      DNSBL Lists On
    6. Scroll naar beneden naar het gedeelte Instellingen.
    7. Zet de Actie op Unbound.
    8. Klik op het + teken rechts van DNSBL Custom_List. Het venster DNSBL Custom_List wordt weergegeven.
    9. Voer vungle.com in het venster DNSBL Custom_List in. We voegen dit domein toe zodat we kunnen controleren of DNSBL-filtering werkt door te proberen toegang te krijgen tot een bekend geblokkeerd domein.
    10. Klik onderaan de pagina op DNSBL-instellingen opslaan.
      DNSBL Lists On

    Forceren van een update van pfBlockerNG

    We moeten nu een update van pfBlockerNG forceren, zoals we hierboven deden.

    1. Selecteer het tabblad Update. Je wordt naar de updatepagina van pfBlockerNG geleid.
    2. Klik op Uitvoeren. De update start.
      Update Settings

    Zodra de update is voltooid, kunnen we zien dat onze DNSBL-feeds zijn bijgewerkt.

    DNSBL Update Log

    DNSBL testen

    Om er zeker van te zijn dat DNSBL-filtering werkt, zullen we proberen verbinding te maken met het domein dat ik aan de DNSBL Custom_List: vungle.com heb toegevoegd. Als ik probeer toegang te krijgen tot vungle.com in mijn browser, wordt de DNSBL-blokkeerpagina weergegeven met enkele nuttige stukjes informatie.

    Opmerking: DNSBL van pfBlocker bevat een mini-webserver die deze blokkeerpagina kan serveren. IPv4, IPv6 en GeoIP-filtering breiden de bestaande functionaliteit van de pfSense firewall uit en blokkeren of staan IP-adressen toe zonder een blokkeerpagina weer te geven.

    DNSBL Test

    Afronding

    Nou, dat was het dan. Je hebt pfBlockerNG-devel met succes geïnstalleerd en geconfigureerd in pfSense. We hebben IPv4-filtering, GeoIP-filtering, evenals DNSBL-filtering geconfigureerd. Al deze drie maken je netwerk veiliger en privé zonder je verbinding te vertragen.

    Naarmate je netwerk groeit, moet je misschien bepaalde poorten op je WAN openen als je een VPN-server wilt draaien of als je een webserver wilt hosten die toegankelijk is vanaf het internet. Wanneer je dat doet, zal pfBlockerNG een mooie tool in je beveiligingskit zijn om je netwerk te vergrendelen en de toegang van buitenaf fijnmazig te regelen.

    Gerelateerd: Hoe vind je de beste VPN’s

    Leave a Comment