Comme je le disais dans un précédent billet non technique, un serveur DNS peut te mentir ou te bloquer.

Normalement si un nom de domaine existe — par exemple facebook.com — un serveur DNS donne l'adresse IP correspondant au nom — pour facebook.com, c'est 179.60.195.36. Cette résolution permet, par exemple — et c'est le cas le plus courant — d'accéder à la page web correspondante. Dans le cas de facebook, cela permettra à l'utilisateur de cliquer sur un pouce bleu !

Si ton DNS te bloque, tu croiras que le site n'existe pas. C'est de la censure. Si ton DNS te ment, tu seras dirigé vers une autre page. Cela permet de faire du phishing par exemple.


Bloquer, mentir, mettre en place de la censure est finalement très simple.


En supposant que bind soit installé — d'un grand coup de apt install bind9 — il suffit de mettre en place RPZ Response Policy Zone. Bortzmeyer et Paul Vixie [pdf] expliquent le principe qui est décrit dans la documentation de bind9 §6.2.16.20 p98-.

Pour indiquer à bind que l'on veut utiliser la RPZ (response policy zone) il faut l'ajouter dans les options;


response-policy { zone "liar.local";};

Cette zone peut être une zone définie ailleurs et contenant une liste de sites à bloquer ou bien je peux la définir moi-même…

Ajouter:


zone "liar.local" {
    type master;
    file "/etc/bind/db.local.liar.local";
    allow-query {none;};
};

Ajouter le fichier de zone.

  • pour qu'un nom soit renseigné comme inexistant (undefined), <name> CNAME .;
  • pour qu'un nom soit renseigné comme vide (empty set of resources), <name> CNAME *.
  • pour remplacer l'IP, <name> A <IP> (ou AAAAA)

dans l'exemple suivant1;


$TTL 1h  
@    SOA eve.liar.local. root.localhost. (  
    2017030302  
    2h 30m 30d 1h  
)  
    NS eve.liar.local.   
  
eve A   127.0.0.1  
 
facebook.be CNAME .  
facebook.fr A 127.0.0.1  
facebook.it CNAME   eve.liar.local.  

En images et en utilisant dig2:

  • facebook.be ne répondra pas. Le nom est indéfini;

facebook.be est indéfini

  • facebook.fr répondra avec l'IP de la boucle locale;

screenshot-dns-3.jpg

  • facebook.it sera redirigé vers eve.liar.local

screenshot-dns-4.jpg

Je reconseille donc d'installer et d'utiliser son propre serveur DNS quand on peut…


Crédit photo chez DeviantArt par StringChange. Menteur, vous avez dit menteur.


  1. Le IN devant un enregistrement n'est plus obligatoire. 

  2. Sur les screenshots, c'est « en français » et ça parle donc de menteur plutôt que de liar ^^