Mi è arrivato questa mattina il nuovissimo Raspberry Pi Zero W 2 (un nome che riempie la bocca), seconda versione del modello ultra compatto ed economico del Raspberry Pi, con l'aggiunta dei moduli wireless (WiFi e Bluetooth).
Motivo di questo acquisto è stato il desiderio di voler impostare un server locale con al suo interno installato Pi-Hole.
Cosa è un Pi-Hole
Un Pi-Hole altro non è che un Raspberry Pi configurato come server DNS locale, quindi installato sulla propria rete, al quale vengono reindirizzate tutte le richieste DNS effettuate dai dispositivi, finalizzato al non restituire alcun indirizzo IP in caso venisse richiesto un dominio di tipo pubblicitario o malevolo, a seconda delle liste configurate o scaricate.
Un Pi-Hole permette, inoltre, di monitorare le richieste di una rete, tenendo traccia di richieste DNS, domini interrogati e connessioni effettuate, il tutto abbellito da una interfaccia colorata e sicuramente user friendly.
Prerequisiti
- Una scheda Raspberry Pi (qualsiasi modello va bene, in quanto Pi-Hole richiede un minimo 512MB di RAM per funzionare e qualsiasi modello ne è provvisto)
- Micro SD da minimo 4GB
- Qualsiasi programma di flash su dispositivi rimovibili (es. Rufus o Etcher) o, in alternativa, il programma ufficiale della Raspberry Pi Foundation, Raspberry Pi Imager
Installare il sistema base
Pi-Hole può essere installato su uno qualsiasi dei seguenti sistemi:
- Raspberry OS (precedentemente Raspbian)
- Ubuntu
- Debian
- Fedora
- CentOS
Eventualmente, Pi-Hole può essere installato anche su un container Docker.
Per installare un'immagine sulla MicroSD, si può intraprendere un approccio per principianti/automatizzato o una procedura più macchinosa, per utenti più esperti. Io, specificatamente, ho intrapreso la via più semplice con l'Imager Raspberry Pi.
Per utenti principianti/procedura automatizzata
Scaricare il tool di scaricamento e installazione Raspberry Pi Imager, disponibile sia su Windows che MacOS e Ubuntu.
Selezionare un sistema dall'elenco fornito (Raspberry Pi OS è il più consigliato).
Selezionare la periferica dove si vorrà installare il sistema.
Infine avviare la procedura.
Impostazioni avanzate durante la scrittura
Qualora si avesse la necessità di impostare ulteriori configurazioni, come ad esempio il nome host, il servizio SSH o una rete WiFi, sarà possibile premendo la combinazione CTRL + SHIFT + X
. Ciò aprirà un menù avanzato per configuarare altre eventuali impostazioni.
Per utenti più esperti
Bisognerà recarsi nella pagina di download del sistema desiderato, ovviamente se provvisto di una distribuzione compilata per processori ARM, e scaricare il file immagine.
In questo esempio scaricherò Ubuntu per ARM.
Una volta ottenuta l'immagine del sistema (dovrà essere in formato .IMG
), si inserisce la MicroSD nel PC e si apre un programma di scrittura come Rufus.
Selezionato il dispositivo e l'immagine disco, basterà premere su AVVIA e iniziare il processo di scrittura.
Inizializzare il Pi
Nel mio caso specifico, non ho un monitor a cui attaccare il Pi. Più precisamente, non ho un cavo HDMI mini, quindi... Dovrò fare alla cieca.
Questo mi pone in una condizione decisamente scomoda, in quanto dovrò configurare il Pi prima di poterlo accendere per la prima volta, in modo che automaticamente si colleghi al WiFi con almeno il servizio SSH abilitato.
Grazie alle impostazioni avanzate della procedura di scrittura, ho attivato il servizio di SSH e ho configurato automaticamente la rete WiFi, ma vediamo come avrei dovuto fare se non fossi stato in grado di farlo così.
Attivare il servizio SSH
Abilitare il servizio SSH su un Raspberry Pi è estremamente semplice: basterà creare un file vuoto, nominato ssh
(senza alcuna estensione), all'interno della partizione /boot
.
Configurare una rete WiFi
Per configurare la connessione ad una rete WiFi sarà necessario creare un file chiamato wpa_supplicant.conf
e inserire all'interno le informazioni della rete.
È possibile copiare questo codice e modificare solo le informazioni della propria rete:
country=IT
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
ap_scan=1
update_config=1
network={
ssid="inserire qui il nome rete"
psk="inserire qui la password di rete"
key_mgmt=WPA-PSK
}
Dove i campi stanno a significare:
country
: Il paese dove si risiede, in formato country code (esempio, l'Italia saràIT
. Il Regno UnitoGB
e così via). Il motivo per cui si deve specificare il country code è perché ogni paese ha regolamentazioni differenti in merito alle specifiche WiFi permesse a norma di legge (per esempio, la potenza per ogni Access Point o il numero di canali)crl_interface
: Dove è posizionata, all'interno del sistema, l'interfaccia di controllo per l'applicazione wpa_supplicantap_scan
: Flag impostato a0
o1
a seconda se si voglia effettuare una continua scansione degli Access Point e delle informazioni (ESSID, BSSID, frequenza, sicurezza...)update_config
: Flag impostato a0
o1
a seconda se si voglia aggiornare la configurazione attuale in un file localizzato in/etc/wpa_supplicant
network
: Informazioni riguardo le reti/la rete a cui ci si può connetteressid
: Nome della rete WiFipsk
: Password della rete WiFi, sia in formato testo sia in formato PSK Raw Key
La partizione /boot
sarà formattata in FAT32, perciò essa risulterà leggibile se la MicroSD verrà inserita all'interno di un PC Windows.
Collegarsi al Pi
Consiglio di aprire una pagina con le impostazioni del proprio router, in modo da sapere quando il Raspberry si sarà connesso correttamente.
Per collegarsi al proprio router/gateway, si dovrà innanzitutto scoprire quale indirizzo IP esso avrà. Di solito gli viene assegnato l'indirizzo 192.168.1.1
, ma per essere sicuri, si dovrà aprire un terminale, digitare ipconfig
(Windows) o ifconfig
(Linux) e ottenere l'indirizzo di gateway.
Una volta dentro il pannello di controllo del router, bisognerà ottenere l'indirizzo IP del Raspberry.
Dopo aver ottenuto l'indirizzo IP e il nome host, sarà possibile stabilire una connessione in SSH al Pi.
Et voilà! Ora sarà possibile accedere con le credenziali impostate durante la configurazione iniziale o con le credenziali di default, ossia pi:raspberry
.
Preparazione
Come best practice è buona cosa aggiornare il sistema prima di ogni installazione.
Installazione Pi-Hole
Secondo la guida di Pi-Hole, per installare il software sarà possibile installare tutto in maniera automatizzata con uno script preconfezionato, altrimenti sarà possibile scaricare la repository di Pi-Hole e installare tutti i pacchetti manualmente.
Installare Pi-Hole tramite script
Eseguire da terminale questa sola riga di comando:
curl -sSL https://install.pi-hole.net | bash
Una volta eseguito il comando, verranno effettuate tutte le procedure di verifica e installazione dei pacchetti necessari.
Successivamente, il wizard proporrà dei disclaimer e delle impostazioni da dover confermare. Sono le seguenti:
Finita la sbrodolata di disclaimer e impostazioni, l'installazione procederà con le ultime verifiche...
... ed infine l'installazione vera e propria del software.
Dopo pochi minuti (trattandosi di un Pi Zero W 2 ci è voluto davvero poco, probabilmente con un qualsiasi altro Pi ci avrebbe messo ancora meno) sarà mostrata una schermata di riepilogo con link al pannello di controllo e password di accesso.
Alla fine di tutto, il Pi-Hole sarà pronto all'uso e accessibile da interfaccia web!
https://<hostname>/admin
Cambio della password
Come si può vedere dalla schermata di termine installazione, viene generata una password casuale, che può essere cambiata da linea di comando.
Tutto quello che si deve fare è eseguire questo comando:
sudo pihole -a -p
Verrà chiesta una nuova password e la conferma.
Impostare il Pi-Hole come DNS
Lo scopo del Pi-Hole era quello di funzionare come server DNS, perciò, una volta configurato, bisogna impostarlo come tale!
Dalle impostazioni del proprio router, ognuna differente l'una dall'altra, bisognerà cercare le impostazioni del DHCP, ossia tutte quelle impostazioni che vengono assegnate ai dispositivi, vecchi o nuovi, quando si connettono alla nostra rete.
Completata la configurazione, si dovrà riavviare il proprio router, per rendere effettive le modifiche.
Si aggiorna la dashboard Pi-Hole...
E tutto funziona! Le query vengono registrate!
Configurare blocklist aggiuntive
Il Pi-Hole viene fornito di una blocklist di tutto rispetto, consultabile qui:
Qualora si volesse aggiungere una blocklist personalizzata o fornita da un servizio terzo, si dovrà solamente andare nel menù di lato, nella sezione "Group Management" e selezionare il sottomenu "AdLists".
Dentro la dashboard del sottomenu, vi sarà come da default una sola lista da importare.
Personalmente suggerisco di implementare anche alcune liste fornite dai servizi Firebog.net, Phishing.Army e EasyList, reperibili qui:
Selezionato il collegamento alle liste (attenzione, non la home page, ma il collegamento reale della lista contenente i domini da bloccare!) basterà incollare la risorsa dentro l'apposito campo.
Terminati gli inserimenti delle liste, esse andranno scaricate e la lista dei domini andrà aggiornata, nonché unificata in caso di doppioni.
Bisognerà recarsi, quindi, alla pagina di aggiornamento di Gravity, lo script responsabile della creazione del database di domini blacklistati.
E aggiornare manualmente l'inserimento delle liste nel database.
Per verificare il corretto inserimento in database, basterà tornare nella dashboard Pi-Hole e controllare se il numero di host bloccati è aumentato.