GNU/Linux >> Linux Esercitazione >  >> Linux

Non è sicuro utilizzare il file /etc/hosts come blocco del sito Web nel modo seguente?

Risposta breve

È sicuro per usare il /etc/hosts file come sito Web che blocca l'indirizzo "nullo"?

Direi che la risposta dovrebbe essere:No.

Se non altro le richieste non vengono effettivamente "annullate". Sono ancora richieste attive. E come indica l'OP, poiché le richieste sono per host Internet legittimi, questa sorta di metodo scorciatoia per reindirizzare le richieste a localhost potrebbe interferire con il test del codice di rete in un ambiente di sviluppo.

Forse un metodo migliore per bloccare il traffico da e verso determinati host Internet è utilizzare iptables che è l'interfaccia per il firewall del kernel Linux. iptables è la tabella delle regole di rete predefinita per la maggior parte dei sistemi GNU/Linux. Alcune distro usano ufw come front-end per iptables .

Se vuoi usare iptables , ecco un semplice script 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 denominato ~/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 il tuo localhost Indirizzi IP in questo file.

Risposta più lunga

Durante la riassegnazione degli host Internet a localhost nel /etc/hosts file è una tecnica di scorciatoia comune per bloccare host Internet indesiderati, questo metodo presenta alcuni seri inconvenienti di sicurezza.

Richieste in arrivo

Richieste in arrivo che non sono state avviate intenzionalmente tramite una specifica richiesta dell'utente. L'esempio più comune sono gli annunci sulle pagine web. Seguiamo i pacchetti in arrivo...

Innanzitutto, avvio wireshark . Quindi inserisco la più grande azienda pubblicitaria su Internet nel mio /etc/hosts file con questa riga:

127.0.0.1   google.com

E poi disabilita tutti gli ad blocker nel mio browser, vai a youtube e riproduci qualsiasi video a caso.

Se filtro i miei pacchetti, includendo ampiamente lo spazio degli indirizzi IP di Google:

ip.addr==172.217.0.0/16

Sto ancora ricevendo pacchetti da Google.

Che cosa significa?

Significa che esiste la possibilità che un server dannoso inserisca malware che potrebbe essere in grado di attaccare la mia piattaforma informatica tramite pacchetti che stanno ancora arrivando e inviati a localhost. L'uso di /etc/hosts piuttosto che far cadere o rifiutare i pacchetti tramite le regole del firewall, è una misura di sicurezza scadente. Non blocca pacchetti in arrivo da possibili host dannosi, né fornisce un feedback efficace per la risoluzione dei problemi.

Richieste in uscita

Richieste in uscita che vengono inviate a localhost invece di essere rifiutati o eliminati dalle regole del firewall vengono ancora elaborati dal kernel. Ci sono alcune azioni indesiderate che si verificano quando /etc/hosts viene utilizzato al posto del firewall:

  • L'elaborazione extra si verifica quando il pacchetto in uscita raggiunge l'host locale. Ad esempio, se un server web è in esecuzione sull'host, il pacchetto inviato a localhost potrebbe essere elaborato dal server web.

  • Il feedback delle richieste in uscita può creare confusione se /etc/hosts è popolato con determinati domini.

iptables può gestire molte regole

Secondo alcuni:

ServerFault:quante regole può supportare iptables

Un possibile limite teorico su una macchina a 32 bit è di 38 milioni di regole. Tuttavia, come notato nel post di riferimento, come iptables l'elenco delle regole si espande così come la memoria del kernel necessaria.


[...] mentre cercavo una semplice tecnica di blocco dei siti web a livello di sistema operativo, mi sono imbattuto nella soluzione di utilizzare il file host linux [...]

Per chiarire, /etc/hosts mappa solo i nomi host agli indirizzi IP. Una voce con 127.0.0.1 non blocca il tuo accesso al server, fa solo in modo che il tuo computer risolva localmente quel particolare nome in 127.0.0.1 . Tu e il server potreste ancora scambiarvi pacchetti senza restrizioni.

Se uso spesso 127.0.0.1 per scopi di sviluppo web, è pericoloso? Sembra che, come minimo, potrebbe rovinare il progetto di sviluppo web su cui sto attualmente lavorando?

No, si risolve in 127.0.0.1 non ti mette in ulteriore pericolo. Questo perché il nome di un sito web può comunque essere risolto in qualsiasi IP, incluso 127.0.0.1 (a meno che il server DNS non lo blocchi). Quindi se evilpage.example voleva risolversi in 127.0.0.1 , potrebbero semplicemente specificare un rispettivo DNS A record e non dovresti fare affidamento sul tuo /etc/hosts . (Vedi anche:È sicuro avere un record DNS che punta a 127.0.0.1?)

Nota che eseguire qualcosa su 127.0.0.1 potrebbe renderti vulnerabile agli attacchi di rebinding DNS.


A meno che il tuo server web non sia in esecuzione sulla porta 80 o 443 sulla tua macchina locale (127.0.0.1 ), questo non dovrebbe influire sul tuo progetto web. Se lo è, allora potrebbe essere un fastidio. Se hai inviato una richiesta a http://example.com/api/ , finirebbe per inviare una richiesta a http://127.0.0.1/api/ . Se hai una risorsa chiamata /api/ , finirebbe per ricevere la richiesta e quindi interferire con la tua app. Ma il punto più importante che vorrei sottolineare che @Arminus ha menzionato è che il /etc/hosts/ serve per mappare gli indirizzi IP ai nomi host. Se vuoi bloccare un particolare host, ti suggerisco di installare un firewall come UFW o di utilizzare il firewall Linux predefinito, iptables. Ecco alcuni link per aiutarti a iniziare:

UFW:https://www.linux.com/learn/introduction-uncomplicated-firewall-ufw

iptables:https://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/


Linux
  1. Un'introduzione al file Linux /etc/fstab

  2. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  3. CentOS / RHEL:come recuperare dal file /etc/passwd cancellato

  4. Comprendere la directory /etc/sysconfig

  5. Comprensione del file /etc/hosts in Linux

Comprendere il file /etc/passwd

Comprendere il file /etc/shadow

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

Comprendere il file /etc/fstab in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

Come configurare /etc/issues per mostrare l'indirizzo IP per eth0