Espionnage DNS

Un truc amusant, je me suis aperçu que si on fait tourner un DNS, on peut être espionné: Je m’explique:

Gérant un domaine, j’ai un DNS chez moi. Ce DNS est configuré pour ne pas faire d’appel récursif pour des requêtes venant de l’extérieur. Il ne répond qu’à ce à quoi il peut répondre donc au domaine qu’il gère (c’est fait pour ça), mais aussi, et c’est ce à quoi je voulais en venir, aux requêtes pour lesquelles il a une entrée dans son cache. En effet (j’ai fait des tests), si une entrée est présente dans le cache (donc si quelqu’un du réseau local a fait la demande avant), le DNS donn e la réponse, sinon il renvoit en erreur. Exemple:

[quote]> liberation.fr
Server: boisson.homeip.net
Address: 82.66.248.156#53

Non-authoritative answer:
*** Can’t find liberation.fr: No answer

Là chez moi je fais
francois@bling:/tmp/camllight$ host liberation.fr
liberation.fr A 193.149.109.129
francois@bling:/tmp/camllight$
puis sur cette machine distante

liberation.fr
Server: boisson.homeip.net
Address: 82.66.248.156#53

Non-authoritative answer:
Name: liberation.fr
Address: 193.149.109.129

[/quote]

Cela signifie qu’une personne de l’extérieur peut savoir si un site est présent dans le cache du DNS et donc savoir que quelqu’un du réseau local (ma famille en gros) est allé sur un site donné. Je ne vois pas tellement de parade à cela mis à part gérer deux DNS séparés. L’autre alternative est de faire un DNS ouvert mais dans ce cas, il y a risque (mesuré) de DoS et surtout parait-il de contribuer à l’écroulement d’un serveur donné.

pourquoi ne mets tu pas de DNS sur le réseau local de ta maison, comme ça il est isolé de l’extérieur et les clients de la maison peuvent le consulter.

Parce que ce DNS gère un domaine et doit être accessible de l’extérieur (sinon, il ne sert à rien…). C’est pour ça que je dis que la solution est d’avoir deux DNS, un pour le LAN et un pour le domaine.

anéfé, j’ai pas tout/mal lu.

[quote=“fran.b”]
Cela signifie qu’une personne de l’extérieur peut savoir si un site est présent dans le cache du DNS et donc savoir que quelqu’un du réseau local (ma famille en gros) est allé sur un site donné. Je ne vois pas tellement de parade à cela mis à part gérer deux DNS séparés. L’autre alternative est de faire un DNS ouvert mais dans ce cas, il y a risque (mesuré) de DoS et surtout parait-il de contribuer à l’écroulement d’un serveur donné.[/quote]

Question sûrement très naïve, car n’ayant pas de connaissances à ce sujet, mais comment une personne extérieure peut surveiller le cache d’un DNS, par infiltration??

Ben en interrogeant le serveur DNS sur des sites précis. Par exemple:
De l’extérieur (ici sur une machine distante et par ssh) je fais

~$ while /bin/true ; do date; dig @82.66.248.156 alfred.com | grep alfred ;done mer avr 29 16:28:55 CEST 2009 ; <<>> DiG 9.2.4 <<>> @82.66.248.156 alfred.com ;alfred.com. IN A mer avr 29 16:28:56 CEST 2009 ; <<>> DiG 9.2.4 <<>> @82.66.248.156 alfred.com ;alfred.com. IN A [..]
puis à un moment

[quote]; <<>> DiG 9.2.4 <<>> @82.66.248.156 alfred.com
;alfred.com. IN A
mer avr 29 16:29:08 CEST 2009
; <<>> DiG 9.2.4 <<>> @82.66.248.156 alfred.com
;alfred.com. IN A
mer avr 29 16:29:08 CEST 2009
; <<>> DiG 9.2.4 <<>> @82.66.248.156 alfred.com
;alfred.com. IN A
mer avr 29 16:29:08 CEST 2009
; <<>> DiG 9.2.4 <<>> @82.66.248.156 alfred.com
;alfred.com. IN A
alfred.com. 172799 IN NS ns26.worldnic.com.
alfred.com. 172799 IN NS ns25.worldnic.com.
mer avr 29 16:29:09 CEST 2009
; <<>> DiG 9.2.4 <<>> @82.66.248.156 alfred.com
;alfred.com. IN A
alfred.com. 172799 IN NS ns25.worldnic.com.
alfred.com. 172799 IN NS ns26.worldnic.com.
mer avr 29 16:29:09 CEST 2009
; <<>> DiG 9.2.4 <<>> @82.66.248.156 alfred.com
;alfred.com. IN A
alfred.com. 7199 IN A 64.47.91.39
alfred.com. 172798 IN NS ns25.worldnic.com.
alfred.com. 172798 IN NS ns26.worldnic.com.
[/quote]
On peut affirmer qu’à 16:29:08, quelqu’un sur le LAN chez moi a eu besoin de l’adresse d’alfred.com (en l’occurrence sur mon portable j’ai fait

[quote]francois@bling:/usr/src/opencv-1.1.0$ host alfred.com
alfred.com A 64.47.91.39
francois@bling:/usr/src/opencv-1.1.0$
[/quote]
Ça n’est pas bien grave mais tout de même, c’est un effet de bord amusant: Ou on laisse un DNS ouvert avec risque de DoS et (parait -il) possibilité de pour faire un flood sur un serveur, ou on laisse une petite fenêtre sur son activité… (note que la parade consiste à laisser tourner webcollage…)
Avec un script donné, tu peux savoir quand certains sites sont visités…

Intéressant webcollage, en gros ça rajoute un tas de données dans le cache DNS et ça rends la lecture de celui-ci moins aisée, c’est ça l’idée?

Par contre, un reproche:

Je laisse tourner 5 minutes et je tombe sur des URLs que je soupçonne porno… Donc avoir webcollage comme économiseur d’écran c’est à éviter si on a des gamins ou si on est au boulot… Et ça rends les log un peu moins politiquement corrects!

Au fait, dans le cadre du futur flicage des concitoyens, webcollage est adaptable pour rendre illisibles les LOG de navigation web non? Mais il faudrait lui adjoindre quelques regexp à exclure, comme celles maintenues à jour par l’EN pour les squids des établissements scolaires. Ça existe déjà ce genre de scripts?

Il suffit de faire passer webcollage par le squid en rajoutant
export http_proxy=http://proxy:port_du_proxy/
avant l’appel, je crois bien que ça fonctionne, webcollage appelant wget ou assimilé

Bonne nouvelle, sur le bind 9.5 de la lenny, il existe une option palliant ce problème, il suffit de rajouter

allow-query-cache {192.168.0.0/24; 127.0.0.0/8;}; dans le named.conf.options pour régler cela (seul le réseau local peut consulter le cache avec cette option). La mauvaise nouvelle, c’est que cette option n’est pas disponible sur etch.