Modificare il file HOSTS e bloccare le app che chiamano casa

File HOSTS: a cosa serve, come funziona e come si usa in Windows, macOS e Linux.

Quando si digita nel browser web l’indirizzo di un sito Internet o comunque quando il sistema operativo o una qualunque applicazione installata provano a collegarsi ad un indirizzo “mnemonico” del tipo www.google.it, viene fatto ricorso ai server DNS.
Come server DNS si può utilizzare quello fornito dal provider o usare quelli di Google, di OpenDNS e così via. Il server DNS si occupa di risolvere il nome a dominio ovvero di stabilire la corretta corrispondenza tra l’indirizzo mnemonico e l’IP del server che risponde alle richieste di connessione.

Il file HOSTS è un file presente su ogni dispositivo che si utilizza utile per superare le impostazioni definite a livello di server DNS. Vediamo cos’è e come si utilizza.

Per capire il file HOSTS, come funzionano i server DNS

Provate ad aprire il prompt dei comandi di Windows e digitare nslookup www.google.it. Il comando consentirà di stabilire qual è l’indirizzo IP utile per raggiungere i servizi erogati da www.google.it. Tale indirizzo IP è memorizzato proprio a livello di DNS.

Nell’articolo DNS Google, ecco come funzionano e perché sono utili abbiamo visto come funzionano i DNS mentre nell’approfondimento Server DNS: come funziona e a cosa serve Nslookup abbiamo visto quando è utile il comando nslookup.

Prima di interpellare il server DNS per la risoluzione del nome a dominio, il sistema operativo verifica se la corrispondenza con il relativo indirizzo IP non sia stata precedentemente annotata nella cache locale. E prima ancora viene utilizzato l’eventuale contenuto del file HOSTS.

Che cos’è il file HOSTS e a cosa serve

Il file HOSTS è un file di testo presente in tutti i sistemi operativi (compresi quelli utilizzati dai dispositivi mobili) che consente di associare manualmente un indirizzo mnemonico (del tipo www.google.it) a uno specifico indirizzo IP.
Le modifiche apportate al file HOSTS vengono prese in considerazione non soltanto da tutti i browser web installati ma anche dal sistema operativo e da ciascuna applicazione.

Inserendo nel file HOSTS un indirizzo IP seguito da un indirizzo mnemonico, per raggiungere il nome a dominio indicato il browser web, le applicazioni installate e il sistema operativo non useranno più le informazioni specificate a livello di DNS ma daranno credito a quelle contenute nel file HOSTS.
Tutte le richieste di connessione indirizzate al dominio indicato non saranno più dirette all’IP originale ma saranno indirizzate verso l’IP manualmente indicato nel file HOSTS.

Si supponga di aggiungere in fondo al file HOSTS, come ultima riga, INDIRIZZO_IP www.nomedelsito.it (al posto di INDIRIZZO_IP si dovrà specificare l’IP del nuovo server).
All’indirizzo www.nomedelsito.it d’ora in avanti non risponderà più il server con indirizzo IP specificato a livello di DNS: la richiesta di caricamento del sito indicato sarà invece presa in carico dal web server installato sulla macchina che risponde a INDIRIZZO_IP.

La modifica applicata al contenuto del file HOSTS vale solo ed esclusivamente per il sistema locale e non per “il resto del mondo” che continuerà a collegarsi al sito web raggiungendo l’IP e quindi la macchina definiti a livello server DNS.

A cosa serve il file HOSTS? Nell’articolo Come spostare un sito su altro server abbiamo visto che il file HOSTS risulta particolarmente utile quando ci si accingesse a trasferire il proprio sito web su un altro server (vedere il paragrafo Provare il sito sul nuovo server).
Grazie alla modifica del file HOSTS si può infatti verificare la perfetta funzionalità del sito web spostato sul nuovo server prima di disporre il cambiamento del DNS.

Il file HOSTS può essere utilizzato anche per “far cadere nel vuoto” certe richieste di connessione. Sostituendo 0.0.0.0 a INDIRIZZO_IP quindi specificando un nome a dominio le richieste di connessione vengono ignorate senza essere mai indirizzate verso l’IP del server reale.

Utilizzando invece 127.0.0.1 come IP del server a livello di file HOSTS, le richieste di connessione verso il nome a dominio specificato a destra saranno indirizzate verso il sistema locale.
Si tratta di un meccanismo utile per caricare ad esempio un sito web (previa installazione del web server sulla propria macchina) facendo sì che risponda digitando un indirizzo mnemonico.

Come modificare il file HOSTS

Se le finalità di utilizzo del file HOSTS sono le stesse indipendentemente dal sistema operativo utilizzato, ogni piattaforma conserva il file in una differente locazione.

Nel caso di Windows, il file HOSTS si trova nella cartella %windir%\System32\drivers\etc: premere Windows+R quindi digitare tale percorso.

Sui sistemi macOS lo stesso file può essere aperto digitando sudo nano /private/etc/hosts in una finestra del terminale.
In Linux si può digitare il comando sudo nano /etc/hosts. In entrambi i casi il file HOSTS verrà aperto con i diritti di root.

Per modificare il file HOSTS è necessario aprirlo con un’applicazione avviata usando i diritti di amministratore.

La procedura da seguire per modificare il file HOSTS in Windows è semplice:

1) Avviare un editor di testo come Blocco Note, TextPad o Notepad++ con i diritti di amministratore. Per procedere rapidamente, è sufficiente fare clic sul pulsante Start di Windows 7 e digitare, ad esempio, Blocco Note nella casella Cerca programmi e file.
In Windows 8.1 basterà digitare Blocco Note nella casella di ricerca della charm bar mentre in Windows 10 nella casella posta immediatamente a destra del pulsante Start.

Si dovrà quindi cliccare con il tasto destro del mouse su Blocco Note e selezionare Esegui come amministratore.

Modificare file HOSTS in Windows

2) Nella finestra di dialogo che apparirà agendo sul menu File, Apri dell’editor di testo (sia esso il Blocco Note di Windows oppure TextPad o Notepad++), all’interno della casella Nome file, si dovrà digitare quanto segue quindi fare clic sul pulsante Apri:

%windir%\System32\drivers\etc\HOSTS

Come aprire file HOSTS in Windows

In alternativa, si può premere Windows+R quindi digitare notepad %windir%\system32\drivers\etc\hosts e infine usare la combinazione di tasti CTRL+MAIUSC+INVIO. In questo modo il file HOSTS verrà aperto con il Blocco Note usando i diritti amministrativi

A questo punto, si potrà modificare il file HOSTS tenendo però ben presente che alcuni software per la sicurezza (Windows Defender compreso), bloccano tale file ripristinandone la copia originale in caso di eventuali alterazioni.
Prima di modificare il file HOSTS, quindi, il consiglio è quello di disattivare temporaneamente i software per la sicurezza in esecuzione sul sistema (rispondere alla comparsa della finestra di conferma di UAC).

Di recente Windows Defender ha modificato il suo comportamento iniziando a segnalare i file HOSTS che contengono direttive per bloccare i domini Microsoft: Telemetria di Windows 10: adesso Microsoft indica come rischiosa la disattivazione.

3) Nel file HOSTS deve essere dapprima digitato l’indirizzo IP quindi possono essere indicati i nomi host che devono essere fatti puntare a quell’indirizzo.
Per annullare temporaneamente l’effetto dell’aggiunta di una o più righe nel file HOSTS, è sufficiente aggiungere, come primo carattere, il cancelletto (#). In questo modo, la riga con il cancelletto come primo carattere sarà considerata alla stregua di un commento.

Come detto in precedenza, per ciascuno degli indirizzi mnemonici o nomi host specificati è possibile indicare un indirizzo IP remoto ma anche indirizzi come 127.0.0.1 oppure 0.0.0.0.

Differenza tra gli indirizzi 127.0.0.1 e 0.0.0.0

L’IP 127.0.0.1 è chiamato indirizzo di loopback (localhost) e con esso in tutti i sistemi operativi viene fatto riferimento all’interfaccia di rete “fittizia” (interfaccia di loopback) che risponde alle richieste di connessione sullo stesso sistema.

L’indirizzo IP 127.0.0.1 risponde alle richieste di connessione sulla medesima macchina anche qualora non fossero presenti schede di rete fisiche.
Si provi a digitare, al prompt dei comandi di Windows, ping 127.0.0.1: si otterrà risposta dal sistema che si sta usando.

Si pensi di aver installato un server database su una certa macchina. Alle applicazioni che necessitano di attingere al contenuto dei database memorizzati sul server locale basterà fornire l’IP 127.0.0.1. In questo modo, la connessione sarà diretta e in locale, senza passare attraverso la rete Internet o la rete LAN.
È così possibile far funzionare (ad esempio a mo’ di test) un server web e un’applicazione web che accede, ad esempio, ad un database locale senza neppure dover essere connessi alla rete Internet.

Se sulla macchina locale fosse in esecuzione un server web, si può addirittura far puntare un qualunque dominio al server web in esecuzione in locale aggiungendo nel file HOSTS, ad esempio, quanto segue:

127.0.0.1 www.nomedeldominio.org

Se, viceversa, sul sistema locale non fosse installato alcun componente server, tutte le richieste dirette, ad esempio, al dominio www.nomedeldominio.org, cadrebbero “nel vuoto”.

Ecco perché per bloccare tutti i tentativi di connessione diretti verso un nome a dominio e quindi uno specifico sito web, è possibile inserire nel file HOSTS 127.0.0.1 seguito dall’indirizzo mnemonico del sito da bloccare.
Per rendere il blocco ancor più efficace, è possibile sostituire l’indirizzo 0.0.0.0 all’IP di loopback 127.0.0.1.

Le richieste di connessione verso 127.0.0.1 vengono dirette alla fittizia interfaccia di loopback; nel caso dell’IP 0.0.0.0 tutte le richieste cadono nel vuoto, indipendentemente dal fatto che sulla macchina locale sia o meno in esecuzione un componente server.

L’IP 0.0.0.0 è un meta-indirizzo “non routable” che può essere utilizzato per invalidare qualunque indirizzo mnemonico. Ecco perché nei file HOSTS che tante applicazioni utilizzano per disattivare la telemetria di Windows 10 si usano indirizzi 0.0.0.0 anziché 127.0.0.1.

Si provi ad esempio ad aggiungere le due righe seguenti al file HOSTS:

0.0.0.0 www.facebook.com
0.0.0.0 facebook.com

Tutte le pagine di Facebook non risulteranno più raggiungibili da qualunque browser installato sulla macchina.

Modifica file HOSTS

In ambito server l’IP 0.0.0.0 sta a significare “tutti gli indirizzi IP sulla stessa macchina“. Se il sistema dispone di due interfacce di rete, l’una rispondente all’IP 192.168.1.100 e l’altra all’IP 10.1.2.10, un server posto in ascolto sull’IP 0.0.0.0 sarà raggiungibile usando entrambi gli IP.

Evitare che un’applicazione chiami casa

Il file HOSTS può essere utilizzato per bloccare le comunicazioni di un’app verso server remoti.
Aggiungendo 0.0.0.0 al file HOSTS, seguito dall’indirizzo mnemonico da bloccare, tutti i tentativi di connessione dell’applicazione verso il dominio indicato non andranno a buon fine.

L’utilizzo del file HOSTS è un po’ un’alternativa oltre che una misura di protezione aggiuntiva e di impiego più immediato rispetto al firewall di Windows.

Per stabilire a quanti e quali indirizzi remoti si collega un qualunque programma, è possibile usare Fiddler oppure servirsi di WireShark (Wireshark, una breve guida all’uso).
Fiddler e WireShark sono sniffer di pacchetti dati che possono essere utilizzati per stabilire quali comunicazioni vengono poste in essere.

Credit immagine in apertura: iStock.com/Galeanu Mihai

Ti consigliamo anche

Link copiato negli appunti