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/