In un contesto in cui le minacce informatiche e il tracciamento online sono sempre più diffusi, disporre di strumenti avanzati per il controllo del traffico di rete è diventato fondamentale.
pfBlockerNG è un potente pacchetto per pfSense, il celebre firewall open source, che consente di estendere le funzionalità di sicurezza attraverso il blocco di IP malevoli, domini pubblicitari, tracker e molto altro.
In questo articolo vedremo come procedere all’installazione e alla configurazione di pfBlockerNG su pfSense, partendo dalle basi fino ad arrivare all’attivazione delle blacklist IP e DNSBL.
Una guida pratica, pensata per chi desidera rafforzare la sicurezza della propria rete con uno strumento flessibile, aggiornabile e completamente gratuito.
CREAZIONE ACCOUNT MAXMIND
Per creare un account sul sito MaxMind richiamare la seguente URL
Compilare tutti i campi, accettare l’EULA e cliccare Continue
Dovremmo ricevere una mail per la creazione della password come mostrato nell’immagine sovrastante
Inserire due volte la password quindi cliccare Reset Password
Inserire la mail della registrazione quindi cliccare Next
Inserire la password quindi cliccare su Sign In
Inserire il Token che arriva via mail quindi cliccare Verify
Cliccare sul menù a sinistra su Manage License Keys quindi Generate new license key
Inserire la Description della Key quindi cliccare Confirm
Segnarsi l’Account ID e la License Key
INSTALLAZIONE E CONFIGURAZIONE BASE DI PFBLOCKERNG
Per installare pfBlockerNG andare su System > Package Manager > Available Packages
Cerca pfBlockerNG-devel (⚠️ NON installare solo “pfBlockerNG”)
Cliccare Install
Attendere il completamento dell’installazione
✅ Usare la versione pfBlockerNG-devel (più aggiornata e supportata)
Cliccare Next
ATTENZIONE:
La procedura guidata di pfBlockerNG configurerà una configurazione predefinita per pfBlockerNG.
Questa configurazione predefinita è un’installazione di livello base, progettata per assistere i principianti di pfBlockerNG.
Se pfBlockerNG è già stato configurato in precedenza, tutte le impostazioni verranno eliminate al termine di questa procedura guidata!
Verranno installati due componenti:
IP: Le regole del firewall verranno aggiunte alle interfacce in uscita selezionate per bloccare i peggiori trasgressori.
DNSBL: Utilizzando il DNS Resolver, verranno bloccati gli annunci pubblicitari e i domini dannosi più noti.
Per proseguire cliccare Next
In “Inbound Firewall Interface”: selezionare WAN
In “Outbound Firewall Interface”: selezionare LAN
Cliccare Next per proseguire
Lasciare tutto di Default e cliccare su Next
ATTENZIONE: accertarsi che l’IP 10.10.10.1 non vada in overlap con le subnet della rete interna
Cliccare Finish per terminare il Wizard
CONFIGURAZIONE AVANAZATA DI PFBLOCKERNG
Terminato il wizard procedere con la configurazione avanzata di pfBlockerNG
SEZIONE GENERAL
Nella sezione General configurare tutto come mostrato nell’immagine sovrastante
SEZIONE IP
Nella sezione IP configurare tutto come mostrato nell’immagine sovrastante.
ATTENZIONE: Inserire il MaxMind Account ID e la Licenze Key
SEZIONE UPDATE
Dopo aver configurato la Key di MaxMind andare nella sezione Update
Accertarsi che il tempo rimanente alla prossima esecuzione automtica non sia imminente
Quindi cliccare Run
Dovremmo visualizzare un Output simile al seguente:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
UPDATE PROCESS START [ v3.2.8 ] [ 06/23/25 19:51:44 ]
===[ DNSBL Process ]================================================
Loading DNSBL Statistics... completed
Loading DNSBL SafeSearch... enabled
Loading DNSBL Whitelist... completed
Blacklist database(s) ... exists.
[ StevenBlack_ADs ] exists.
===[ GeoIP Process ]============================================
[ pfB_Top_v4 ] Changes found... Updating
------------------------------
Original Master Final
------------------------------
42355 19518 19518 [ Pass ]
-----------------------------------------------------------------
[ pfB_Asia_v4 ] exists. [ 06/23/25 19:51:46 ]
[ pfB_Europe_v4 ] Changes found... Updating
------------------------------
Original Master Final
------------------------------
14964 0 0 [ Pass ]
-----------------------------------------------------------------
[ pfB_Europe_v4 ] Found no unique IPs, adding '127.1.7.7' to avoid empty file
===[ IPv4 Process ]=================================================
[ Abuse_Feodo_C2_v4 ] exists. [ 06/23/25 19:51:47 ]
[ Abuse_SSLBL_v4 ] exists.
[ CINS_army_v4 ] exists.
[ ET_Block_v4 ] exists.
[ ET_Comp_v4 ] exists.
[ ISC_Block_v4 ] exists.
[ Spamhaus_Drop_v4 ] exists.
[ Talos_BL_v4 ] Downloading update .. 403 Forbidden
[ pfB_PRI1_v4 - Talos_BL_v4 ] Download FAIL
DNSBL, Firewall, and IDS (Legacy mode only) are not blocking download.
The Following List has been REMOVED [ Talos_BL_v4 ]
[ DNSBLIP_v4 ] Downloading update [ 06/23/25 19:51:48 ] .. completed ..
[ pfB_DNSBLIP_v4 DNSBLIP_v4 ] No IPs found! Ensure only IP based Feeds are used! ]
===[ Aliastables / Rules ]================================
Firewall rule changes found, applying Filter Reload
** Restarting firewall filter daemon **
===[ FINAL Processing ]=====================================
[ Original IP count ] [ 183159 ]
[ Final IP Count ] [ 137190 ]
===[ Deny List IP Counts ]===========================
137192 total
101301 /var/db/pfblockerng/deny/pfB_Asia_v4.txt
19518 /var/db/pfblockerng/deny/pfB_Top_v4.txt
14337 /var/db/pfblockerng/deny/CINS_army_v4.txt
1543 /var/db/pfblockerng/deny/ET_Block_v4.txt
476 /var/db/pfblockerng/deny/ET_Comp_v4.txt
8 /var/db/pfblockerng/deny/ISC_Block_v4.txt
6 /var/db/pfblockerng/deny/Spamhaus_Drop_v4.txt
1 /var/db/pfblockerng/deny/pfB_Europe_v4.txt
1 /var/db/pfblockerng/deny/Abuse_SSLBL_v4.txt
1 /var/db/pfblockerng/deny/Abuse_Feodo_C2_v4.txt
====================[ Empty Lists w/127.1.7.7 ]==================
Abuse_Feodo_C2_v4.txt
Abuse_SSLBL_v4.txt
pfB_Europe_v4.txt
===[ DNSBL Domain/IP Counts ] ===================================
206390 /var/db/pfblockerng/dnsbl/StevenBlack_ADs.txt
====================[ IPv4/6 Last Updated List Summary ]==============
Jan 3 12:40 Abuse_SSLBL_v4
Jun 20 06:30 ET_Block_v4
Jun 20 23:33 ET_Comp_v4
Jun 23 13:16 Spamhaus_Drop_v4
Jun 23 15:15 ISC_Block_v4
Jun 23 15:53 CINS_army_v4
Jun 23 16:55 Abuse_Feodo_C2_v4
Jun 23 17:45 pfB_Asia_v4
Jun 23 19:51 pfB_Top_v4
Jun 23 19:51 pfB_Europe_v4
Jun 23 19:51 DNSBLIP_v4
====================[ DNSBL Last Updated List Summary ]==============
Jun 23 16:43 StevenBlack_ADs
===============================================================
Database Sanity check [ FAILED ] ** These two counts should match! **
------------
Masterfile Count [ 137190 ]
Deny folder Count [ 137189 ]
Duplication sanity check (Pass=No IPs reported)
------------------------
Masterfile/Deny folder uniq check
Deny folder/Masterfile uniq check
Sync check (Pass=No IPs reported)
----------
Alias table IP Counts
-----------------------------
137192 total
101301 /var/db/aliastables/pfB_Asia_v4.txt
19518 /var/db/aliastables/pfB_Top_v4.txt
16372 /var/db/aliastables/pfB_PRI1_v4.txt
1 /var/db/aliastables/pfB_Europe_v4.txt
pfSense Table Stats
-------------------
table-entries hard limit 400000
Table Usage Count 137205
UPDATE PROCESS ENDED [ 06/23/25 19:51:50 ]
|
SEZIONE IP – GEOIP
Andare quindi nella sezione IP -> GeoIP
Dovremmo veder comparire a fianco ad ogni Continente una matita che ci permetterà di configurare i blocchi
Cliccando sulla matita è possibile editare la configurazione.
Ad esempio nel mio caso bloccherò tutto il traffico che arriva dal Liechtenstein in entrambe le direzioni.
SEZIONE DNSBL (OPZIONALE)
Questa sezione se configurata opportunamente server a bloccare Pubblicità, Malware e Tracker
🔧 1. Unbound Mode
(Chiamata anche “Legacy” o “Standard” mode)
🔹 Come funziona:
pfBlockerNG modifica direttamente la configurazione di Unbound DNS Resolver.
Crea delle zone statiche (local-zone) per ogni dominio bloccato.
Quando un client chiede di risolvere un dominio bloccato, Unbound risponde con:
0.0.0.0 (Null Block)
Oppure un IP virtuale locale (DNSBL VIP), per reindirizzare al webserver di blocco (pagina di avviso).
🔹 Caratteristiche principali:
Più semplice da configurare.
Non richiede Python.
Adatto a reti semplici o medie.
🔹 Pro:
Affidabile, collaudato.
Buona compatibilità.
🔹 Contro:
Meno flessibile.
Non supporta funzioni avanzate come:
Regex
Wildcard CNAME
Group Policy per IP LAN
no-AAAA
Blocco IDN
🧠 2. Unbound Python Mode
(Chiamata anche “Advanced / Python Integration”)
🔹 Come funziona:
pfBlockerNG integra un modulo in Python all’interno del resolver Unbound tramite un hook DNS.
Le richieste DNS vengono intercettate e gestite dinamicamente via script Python.
🔹 Caratteristiche principali:
Abilita blocchi DNS avanzati, impossibili con Unbound standard.
🔹 Funzioni aggiuntive (esclusive):
🔍 Regex Blocking: Blocca domini con pattern personalizzati via espressioni regolari
🌍 IDN Blocking: Blocca domini internazionali (xn--)
🔗 CNAME Validation: Blocca i domini di destinazione risolti da CNAME
🧱 no AAAA: Blocca solo le richieste DNS IPv6 (record AAAA)
👥 Group Policy: Permette il bypass DNSBL per IP LAN specifici
🧰 TLD Allow: Permette solo i TLD scelti (es. .com, .org) e blocca tutti gli altri
🧪 HSTS Mode: Usa null-block contro domini HTTPS forzati (per evitare errori nel browser)
🔹 Pro:
Estremamente potente e personalizzabile.
Maggiore precisione nel blocco.
Utile per scenari avanzati, controllo familiare o aziende.
🔹 Contro:
Più complesso da gestire.
Richiede maggiore attenzione nelle whitelist per evitare falsi positivi.
Richiede Python attivo nel sistema.
Terminata la configurazione sulla Dashboard di pfSense dovremmo visualizzare il widget relativo a pfBlockerNG
Come mostrato nell’immagine sovrastante dovremmo visualizzare tutte le info relative agli IP bloccati.
0 commenti