Risposta breve
È sicuro utilizzare il file /etc/hosts
come sito Web che blocca l'indirizzo "null"?
Direi che la risposta dovrebbe essere: No.
Se per nessun altro motivo le richieste non sono effettivamente "annullate". Sono ancora richieste attive. E come indica l'OP, poiché le richieste sono per host Internet legittimi, questo tipo di metodo di ridirezione delle richieste a localhost
può interferire con il test del codice di rete in un ambiente di sviluppo.
Forse un metodo migliore per bloccare il traffico da e verso alcuni host Internet, è utilizzare iptables
che è l'interfaccia del firewall del kernel Linux. iptables
è la tabella delle regole di rete predefinita per la maggior parte dei sistemi GNU / Linux. Alcune distribuzioni utilizzano ufw
come front-end su iptables
.
Se vuoi usare iptables
, ecco uno script semplice che DROP
tutti i pacchetti in entrata e in uscita per un elenco di indirizzi IP o nomi host con un indirizzo o nome host per riga contenuti in un file di testo semplice chiamato ~/blocking.txt
## Block every IP address in ~/blocking.txt
## DROP incoming packets to avoid information leak about your hosts firewall
## (HT to Conor Mancone) REJECT outgoing packets to avoid browser wait
for i in $(cat ~/blocking.txt); do
echo "Blocking all traffic to and from $i"
/sbin/iptables -I INPUT -s $i -j DROP
/sbin/iptables -I OUTPUT -d $i -j REJECT
done
Esempio ~/blocking.txt
websiteiwanttoblock.com
anotherone.com
ip.add.of.net/mask
Non inserire gli indirizzi IP localhost
in questo file.
Risposta più lunga
Sebbene la riassegnazione di host Internet a localhost
nel file /etc/hosts
sia una tecnica comune di scorciatoia per bloccare host Internet indesiderati, questo metodo presenta alcuni seri problemi di sicurezza.
Richieste in entrata
Richieste in entrata che non sono state avviate intenzionalmente tramite una richiesta utente specifica. L'esempio più comune sono gli annunci sulle pagine web. Seguiamo i pacchetti in arrivo ...
Per prima cosa, avvio wireshark
. Quindi inserisco la più grande azienda pubblicitaria su Internet nel mio file /etc/hosts
con questa riga:
127.0.0.1 google.com
E poi disabilita tutti i blocchi degli annunci nel mio browser, vai a youtube
e riproduci qualsiasi video casuale.
Se filtro i miei pacchetti, includendo in generale lo spazio degli indirizzi IP di Google:
ip.addr==172.217.0.0/16
Ricevo ancora pacchetti da Google.
Che cosa significa?
Significa che esiste la possibilità che un server malevolo inserisca malware che potrebbe essere in grado di attaccare la mia piattaforma di elaborazione tramite pacchetti che arrivano ancora e inviati a localhost. L'uso di /etc/hosts
invece di eliminare o rifiutare i pacchetti tramite le regole del firewall, è una misura di sicurezza scarsa. Non blocca i pacchetti in arrivo da possibili host dannosi, né fornisce un feedback efficace ai fini della risoluzione dei problemi.
Richieste in uscita
Le richieste in uscita inviate a localhost
anziché essere rifiutate o eliminate dalle regole di firwall sono ancora in fase di elaborazione da parte del kernel. Esistono alcune azioni indesiderate che si verificano quando viene utilizzato /etc/hosts
anziché il firewall:
-
Si verifica un'ulteriore elaborazione quando il pacchetto in uscita raggiunge localhost. Ad esempio, se un server web è in esecuzione sull'host, il pacchetto inviato a localhost può essere elaborato dal server web.
-
Il feedback delle richieste in uscita può diventare confuso se la /etc/hosts
è popolata con determinati domini.
iptables può gestire molte regole
Secondo alcuni:
ServerFault: quante regole possono supportare gli iptables
Un possibile limite teorico su una macchina a 32 bit è 38 milioni di regole. Tuttavia, come indicato nel post di riferimento, man mano che l'elenco di regole iptables
si espande, aumenta anche la memoria del kernel necessaria.