RaspberryPi
Pi-Hole: installazione e prima configurazione

Pi-Hole: installazione e prima configurazione

In questo articolo andremo ad installare e configurare Pi-Hole, un server DNS (Domain Name Server) che oltre a svolgere questo ruolo si occuperà di bloccare e rimuovere le pubblicità dai siti che visitiamo (ADS Blocker).
Pi-hole si definisce come “A black hole for Internet advertisements“, un buco nero per tutta la pubblicità invasiva di Internet, un concetto certamente ben identificativo del progetto, ma che a mio parere risulta un po’ restrittivo rispetto a quello che un prodotto simile può davvero fare per l’utilizzatore finale.

Secondo una definizione certamente più tecnica disponibile sulla Wiki di archlinux, Pi-Hole è un:

DNS sinkhole che redige una lista di blocco di domini conosciuti per offrire pubblicità e malware da sorgenti multiple di terze parti. Pi-hole, attraverso l’uso di dnsmasq, elimina semplicemente tutte le richieste di domini nella sua lista di blocco. Questa configurazione implementa efficacemente il blocco della pubblicità a livello di rete senza dover configurare ogni singolo client. Il pacchetto offre una interfaccia web e una a riga di comando.

Se sei abituato a utilizzare Adblock Plus o un qualsivoglia prodotto che svolge lo stesso compito sul tuo browser preferito hai certamente chiaro il concetto alla base: evito alla sorgente che le risorse vengano caricate in un solo colpo e per tutti i dispositivi connessi alla rete, perché Pi-hole mi permette di intercettarle e redirigerle in maniera differente rispetto ai DNS pubblici, ovvero troncando la comunicazione con quei domini che vengono utilizzati per veicolare pubblicità invasiva (e non solo). Il grande vantaggio del prodotto sta certamente nella centralizzazione delle tue operazioni e nella possibilità di scaricare un po’ di lavoro dalle spalle del browser che potrà così rinunciare a un componente aggiuntivo spesso esoso di risorse (dipende da quello che stai utilizzando, nda).

Installazione

Tutto chiaro? D’accordo. A questo punto passiamo al succo dell’articolo, installiamo Pi-Hole sul nostro Raspberry Pi (la soluzione certamente più comoda) o su un NAS ammesso che questo ti permetta di far girare Docker, o ancora su una macchina Linux che utilizzi già per fare altro all’interno della tua rete, puoi trovare una lista di compatibilità del prodotto all’indirizzo docs.pi-hole.net/main/prerequesites/#supported-operating-systems.

Ho basato questo articolo su Raspberry Pi, ho creato una macchina virtuale sul mio Mac con Raspbian, appositamente per catturare qualche screenshot per questo articolo. Cominciamo.

Colleghiamoci in SSH al nostro Raspberry Pi ed eseguiamo la stringa di installazione
curl -sSL https://install.pi-hole.net | bash
esattamente come riportato nella home page del sito web di Pi-Hole. Dopo un rapido check di sistema (serve giusto per capire se il tuo Raspberry Pi ha già tutto o se sarà necessario installare qualcosa) ti troverai davanti alle schermate di configurazione di Pi-Hole:

Di seguito riporto la lista dei passaggi effettuati, integrando alcuni passaggi non presenti nella galleria:

  • L’installazione comincia. Premiamo invio per continuare.
  • Arriverai alla schermata informativa riguardante l’IP da assegnare alla tua installazione di Pi-Hole: fai in modo che questo sia sempre lo stesso (statico o tramite reservation sul server DHCP).
  • Comunica a Pi-Hole quali DNS pubblici vuoi utilizzare per la risoluzione dei nomi a dominio (nel mio caso ho scelto quelli di Google, 8.8.8.8 e 8.8.4.4).
  • Specifica ora che liste di blocco vuoi cominciare a utilizzare. La barra spaziatrice serve per selezionare o deselezionare una voce. Spostati con le freccette nella schermata. Quando terminato, premi invio per confermare. Non preoccuparti di questa scelta, sarà possibile modificarla anche in un secondo momento.
  • Seleziona entrambi i protocolli di comunicazione (IPv4 e IPv6).
  • Conferma l’indirizzo IP della macchina (Raspberry Pi) e del tuo router quando richiesto.
  • Quando richiesto, conferma di voler installare l’interfaccia web amministrativa. Sarà necessaria un’ulteriore conferma successivamente alla richiesta di installazione di lighttpd. Lascia che le richieste (query) vengano loggate (0 – Show everything).
  • A questo punto basterà attendere che l’installazione termini. Infine, ti verrà mostrata una pagina riepilogativa contenente – tra le altre cose – la password di amministrazione del tuo Pi-hole.

Ora possiamo collegarci alla console di Pi-Hole utilizzando l’indirizzo che ti è stato riportato nella schermata riepilogativa, esempio http://192.168.1.10/admin. Salvo imprevisti, ti troverai davanti alla console amministrativa di Pi-Hole, dovrai quindi fare clic sulla voce Login (nella colonna di sinistra) e inserire la password che ti è stata precedentemente fornita, solo in questo modo potrai accedere alla gestione completa di Pi-Hole.

Utilizzo

Ci siamo, fino a qui sei stato capace di installare Pi-hole sul tuo RPi, non ti resta che utilizzarlo e metterlo in pista per tutti i client della tua rete, prima però credo sia necessario un po’ di tuning e personalizzazione.

Cosa c’è da sapere? Beh, di certo fossi in te darei un’occhiata alle Impostazioni(Settings), all’interno delle quali troverai le informazioni sull’installazione (con possibilità di lanciare alcuni comandi rapidi, come il riavvio o lo spegnimento di sistema, o il blocco dell’attività di logging), le blacklist sottoscritte, i DNS pubblici utilizzati per la risoluzione dei nomi a dominio. Pi-hole può inoltre fare da server DHCP se lo preferisci, sostituendo così una delle funzioni che un router svolge in maniera predefinita. Seppur correttamente funzionante, preferisco che questo compito continui a svolgerlo il mio Fritz!Box e che lui faccia passare le richieste DNS dal mio RPi (così da sottostare al comando di Pi-hole).

Per concludere, troverai una schermata dedicata alla modifica della console e alle API che puoi utilizzare per integrare un differente softwae con Pi-hole, ma anche la sezione Privacy (per il livello / profondità di log da utilizzare) e il Teleporter, ovvero il modulo di Pi-hole che ti permette di esportare la tua configurazione e importarla su una differente installazione (che è grosso modo ciò che fai per portare a termine le operazioni di backup e restore di qualsivoglia tuo dato).

Cosa ho modificato?

Tralasciando le blacklist delle quali ti parlo tra poco, ho certamente ritoccato la parte relativa ai DNS, obbligando Pi-hole a interrogare Google utilizzando DNSSEC:

In seguito ho ritoccato la parte relativa alla console, chiedendo di non mostrarmi alcuni domini bloccati nella totalità dei casi (indirizzi utilizzati per le pubblicità invasive delle applicazioni Android, quei banner che ti portano spesso ad abbonamenti mai richiesti, nda), ma questo è certamente un comportamento che farà comodo anche a te quando inizierai ad avere dello storico di navigazione tramite Pi-Hole.

Le Blocklist

È così che le chiama Pi-Hole (Settings → Blocklists). Si tratta di blacklist composte da domini dei quali puoi quasi certamente farene a meno, sono quelli che generalmente propongono banner pubblicitari invasivi, ma anche pericolosi script che potrebbero danneggiare il tuo browser (Malware Domains). Dopo aver fatto piazza pulita di alcune liste che ho inizialmente utilizzato e studiato, sono arrivato ad avere una situazione della quale mi reputo molto soddisfatto, che “limito” in qualche maniera grazie all’utilizzo della Whitelist di Pi-Hole .

La mia attuale situazione vede in uso queste liste:

URL ListaScopo
https://raw.githubusercontent.com/lightswitch05/hosts/master/ads-and-tracking.txtUna ricca lista in grado di bloccare domini che tracciano le attività di navigazione quotidiane, valida anche per tutto ciò che riguarda le applicazioni che caricano banner su Android e iOS. Un conto sono le pubblicità (che possiamo anche sopportare), un altro sono quei contenuti che portano ad abbonamenti non graditi e mai richiesti consapevolmente.
https://www.squidblacklist.org/downloads/dg-ads.aclStesso scopo della lista poco sopra, questa viene costantemente aggiornata da squidblacklist.org (non conosci Squid? Dai un’occhiata qui).
https://raw.githubusercontent.com/StevenBlack/hosts/master/hostsSteven Black raggruppa diverse Block List (Awdware, Malware, Fraud, Scam, Spam, Tracking e Cryptomining) cercando di eliminare tutti i falsi positivi e tenendo il suo lavoro costantemente aggiornato. Se dai un’occhiata al suo spazio GitHub troverai liste per filtrare anche altri tipi di siti web.
https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txtSulla falsa riga di quanto faccio già con la NoCoin per Adblock Plus, questa lista è già pronta (e costantemente aggiornata) per essere digerita da Pi-Hole, permette di bloccare tutti i siti web che utilizzano script di mining che mettono in difficoltà le risorse del tuo PC.
https://mirror1.malwaredomains.com/files/justdomainsCome per la NoCoin di cui ti parlavo giusto qui sopra, anche la Harmful WebSites trova una sua versione di tipo host da poter dare in pasto a Pi-Hole. Blocca quindi i domini che sono veicolo di malware. Curata da malwaredomains.com.
https://www.squidblacklist.org/downloads/dg-malicious.aclBlocca i domini che sono veicolo di malware. Curata da squidblacklist.org.
http://theantisocialengineer.com/AntiSocial_Blacklist_Community_V1.txtBlocca tutti quei domini che tentano di truffare il visitatore facendogli credere di essere in tutto e per tutto su siti reali, istituzionali, di una certa rilevanza, come per esempio quelli delle banche, di Microsoft, Google, ecc.
https://phishing.army/download/phishing_army_blocklist_extended.txtUna creatura di Andrea ‘Drego‘ Draghetti data alla luce relativamente poco tempo fa. Il sito web ufficiale lo trovi all’indirizzo phishing.army, la lista viene aggiornata spesso e sempre verificata per evitare quanto più possibile errori e falsi positivi. Ti protegge da siti web che tentano di frodarti durante la navigazione. Ti consiglio personalmente la versione estesa, contenente anche i sottodomini.

(Se vuoi copiare e incollare facilmente tutti gli URL, fai riferimento a questa pagina: github.com/gioxx/ph-whitelist/blob/master/domains/blocklists.md).

In questa maniare si va così a creare un recinto di protezione, più per i siti web potenzialmente pericolosi che per la pubblicità in sé.

Liste predefinite e altri progetti

Se ti interessa verificare o recuperare in qualche maniera le liste proposte di default in fase di installazione di Pi-Hole, trovi qui un riferimento ufficiale su GitHub: github.com/pi-hole/pi-hole/wiki/Customising-sources-for-ad-lists.

Noterai che oltre queste, su Internet esistono una quantità non meglio definita di progetti che vogliono in qualche maniera alimentare il già ricchissimo database di domini dai quali stare bene alla larga. Personalmente cerco sempre di dare un’occhiata a liste e curatori, per capire quante e quali di loro si può occupare dell’aggiornamento delle regole del mio Pi-Hole, per evitare spiacevoli inconvenienti durante la quotidiana navigazione dai client di casa e dei dispositivi accesi e sempre connessi. C’è a tal proposito un progetto molto corposo al quale ho dato un’occhiata, ma che allo stato attuale ho abbandonato a causa di liste non ben controllate: blocklist.site/app, una vera e propria vetrina che mette a disposizione liste per ogni necessità. Magari ne conosci altri che vuoi condividere (mi farebbe piacere), l’area commenti è a tua disposizione.

Aggiornamenti giornalieri

Alcune liste che ti ho suggerito nella tabella qui sopra vengono aggiornate quotidianamente. Per questo motivo ho personalmente deciso di modificare il comportamento di Pi-Hole chiedendogli di fare un aggiornamento completo delle sottoscrizioni ogni giorno. Il comportamento predefinito del software indica che questa azione viene compiuta una volta ogni settimana (vedi: discourse.pi-hole.net/t/updating-blocklist-every-day/16853).

Lo puoi controllare tu stesso da Terminale digitando: more /etc/cron.d/pihole.
Una riga simile a questa dovrebbe indicarti quando viene eseguito l’aggiornamento del modulo Gravity:

7 3 * * 7 root PATH="$PATH:/usr/local/bin/" pihole updateGravity >/var/log/pihole_updateGravity.log || cat /var/log/pihole_updateGravity.log

Se non sai interpretare la prima parte della stringa non preoccuparti, si tratta di una sequenza che riporta minuto-ora-arco del mese-mesi-giorno leggibile da Crontab. Vuoi capire meglio per cosa sta? Eccoti servito: crontab.guru/#7_3_*_*_7. Per eseguire un aggiornamento quotidiano ho modificato il file tramite comando:
sudo nano /etc/cron.d/pihole,
commentando la riga sopra riportata (basta inserire il simbolo del cancelletto # a inizio riga) e riportando subito sotto questo:

7 3 * * 0-6 root PATH="$PATH:/usr/local/bin/" pihole updateGravity >/var/log/pihole_updateGravity.log || cat /var/log/pihole_updateGravity.log

Noti nulla di diverso? Esatto. L’ultima parte indica al Crontab di eseguire il lavoro dal giorno 0 al giorno 6, ovvero dalla domenica al sabato (crontab.guru/#7_3_*_*_0-6).

Salva la modifica con la combinazione CTRL + X da tastiera, seguita da S per indicare sì quando Nano chiederà se scrivere le modifiche sul file.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *