GNU/Linux >> Tutoriels Linux >  >> Linux

Est-il dangereux d'utiliser le fichier /etc/hosts comme bloqueur de site Web de la manière suivante ?

Réponse courte

Est-ce sûr utiliser le /etc/hosts fichier en tant qu'adresse "null" bloquant le site ?

Je dirais que la réponse devrait être :Non.

Si pour aucune autre raison que les demandes ne sont réellement "annulées". Ce sont toujours des demandes actives. Et comme l'OP l'indique, puisque les demandes sont destinées à des hôtes Internet légitimes, ce type de méthode de raccourci pour rediriger les demandes vers localhost peut interférer avec le test du code réseau dans un environnement de développement.

Une meilleure méthode pour bloquer le trafic vers et depuis certains hôtes Internet consiste peut-être à utiliser iptables qui est l'interface avec le pare-feu du noyau Linux. iptables est la table de règles réseau par défaut pour la plupart des systèmes GNU/Linux. Certaines distributions utilisent ufw comme interface pour iptables .

Si vous souhaitez utiliser iptables , voici un script simple qui va DROP tous les paquets entrants et sortants pour une liste d'adresses IP ou de noms d'hôte avec une adresse ou un nom d'hôte par ligne contenue dans un fichier texte appelé ~/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

Exemple ~/blocking.txt

websiteiwanttoblock.com
anotherone.com
ip.add.of.net/mask

Ne placez pas votre localhost Adresses IP dans ce fichier.

Réponse plus longue

Lors de la réaffectation des hôtes Internet à localhost dans le /etc/hosts file est une technique courante de raccourci pour bloquer hôtes Internet indésirables, cette méthode présente de sérieux inconvénients en matière de sécurité.

Demandes entrantes

Demandes entrantes qui n'ont pas été lancées à dessein via une demande d'utilisateur spécifique. L'exemple le plus courant est celui des publicités sur les pages Web. Suivons les paquets entrants...

Tout d'abord, je démarre wireshark . Ensuite, je place la plus grande société de publicité Internet dans mon /etc/hosts fichier avec cette ligne :

127.0.0.1   google.com

Et puis désactivez tous les bloqueurs de publicités dans mon navigateur, accédez à youtube et lire n'importe quelle vidéo au hasard.

Si je filtre mes paquets, en incluant globalement l'espace d'adressage IP de Google :

ip.addr==172.217.0.0/16

Je reçois toujours des paquets de Google.

Qu'est-ce que cela signifie ?

Cela signifie qu'il est possible qu'un serveur malveillant insère un logiciel malveillant qui pourrait attaquer ma plate-forme informatique via des paquets qui arrivent toujours et sont envoyés à localhost. L'utilisation de /etc/hosts plutôt que de laisser tomber ou de rejeter les paquets via les règles du pare-feu, est une mauvaise mesure de sécurité. Il ne bloque pas paquets entrants provenant d'éventuels hôtes malveillants, et ne fournit pas non plus de retour d'information efficace à des fins de dépannage.

Demandes sortantes

Requêtes sortantes qui sont envoyées au localhost plutôt que d'être rejetées ou supprimées par les règles du pare-feu, elles sont toujours traitées par le noyau. Quelques actions indésirables se produisent lorsque /etc/hosts est utilisé à la place du pare-feu :

  • Un traitement supplémentaire se produit lorsque le paquet sortant atteint localhost. Par exemple, si un serveur Web s'exécute sur l'hôte, le paquet envoyé à localhost peut être traité par le serveur Web.

  • Les commentaires des requêtes sortantes peuvent devenir déroutants si le /etc/hosts est rempli avec certains domaines.

iptables peut gérer de nombreuses règles

Selon certains :

ServerFault :combien de règles iptables peut-il prendre en charge

Une limite théorique possible sur une machine 32 bits est de 38 millions de règles. Cependant, comme indiqué dans le message référencé, comme le iptables la liste des règles s'agrandit, tout comme la mémoire nécessaire au noyau.


[...] alors que je cherchais une technique simple de blocage de site Web au niveau du système d'exploitation, je suis tombé sur la solution consistant à utiliser le fichier d'hôtes linux [...]

Pour clarifier, /etc/hosts mappe simplement les noms d'hôtes aux adresses IP. Une entrée avec 127.0.0.1 ne bloque pas votre accès au serveur, il oblige simplement votre ordinateur à résoudre localement ce nom particulier en 127.0.0.1 . Vous et le serveur pouvez toujours échanger des paquets sans restrictions.

Si j'utilise souvent 127.0.0.1 à des fins de développement Web, est-ce dangereux ? Il semble que, à tout le moins, cela pourrait gâcher le projet de développement Web sur lequel je travaille actuellement ?

Non, résolution en 127.0.0.1 ne vous expose pas à un danger supplémentaire. En effet, un site Web peut de toute façon voir son nom être résolu sur n'importe quelle adresse IP, y compris 127.0.0.1 (sauf si le serveur DNS bloque cela). Donc si evilpage.example voulait résoudre à 127.0.0.1 , ils pourraient simplement spécifier un DNS respectif A enregistrer et n'aurait pas à compter sur votre /etc/hosts . (Voir aussi :Est-il sûr d'avoir un enregistrement DNS pointant vers 127.0.0.1 ?)

Notez que l'exécution de quelque chose sur 127.0.0.1 peut vous rendre vulnérable aux attaques DNS rebinding.


Sauf si votre serveur Web s'exécute sur le port 80 ou 443 sur votre ordinateur local (127.0.0.1 ), cela ne devrait pas affecter votre projet Web. Si c'est le cas, cela pourrait être une gêne. Si vous avez envoyé une demande au http://example.com/api/ , il finirait par envoyer une requête à http://127.0.0.1/api/ . Si vous avez une ressource appelée /api/ , alors il finirait par recevoir la demande et interférerait ainsi avec votre application.Mais le point le plus important sur lequel je voudrais souligner que @Arminus a mentionné était que le /etc/hosts/ Le fichier sert à mapper les adresses IP aux noms d'hôte. Si vous souhaitez bloquer un hôte particulier, je vous suggère d'installer un pare-feu tel que UFW ou d'utiliser le pare-feu Linux par défaut, iptables. Voici quelques liens pour vous aider à démarrer :

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. Une introduction au fichier Linux /etc/fstab

  2. Créer un fichier Hosts spécifique à l'utilisateur pour compléter /etc/hosts ?

  3. CentOS / RHEL :Comment récupérer à partir d'un fichier /etc/passwd supprimé

  4. Comprendre le répertoire /etc/sysconfig

  5. Comprendre le fichier /etc/hosts sous Linux

Comprendre le fichier /etc/passwd

Comprendre le fichier /etc/shadow

La bonne façon de modifier les fichiers /etc/passwd et /etc/group sous Linux

Comprendre le fichier /etc/fstab sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Limite de taille de /etc/hosts (Linux)