Posts Tagged ‘dns’

World IPv6 Launch le 6 juin 2012

Monday, May 21st, 2012

Après avoir participé à l’IPv6day l’année dernière, c’est maintenant le World IPv6 Launch le mercredi 6 juin 2012. Si l’IPv6day a été l’occasion de tester IPv6 en production pendant une journée, le but du World IPv6 Launch est d’activer définitivement l’IPv6 ! C’est ainsi que les sites comme Google, Facebook, Youtube, Yahoo!, Bing… et Evolix seront désormais directement accessibles en IPv6 !

Si votre serveur est hébergé chez Evolix, nous activerons ainsi l’IPv6 sur votre serveur (sauf contre-indications) avec des règles de firewall similaires à celles en IPv4. Pour vos services (sites Internet, messagerie, etc.), il suffira ainsi d’ajouter un enregistrement DNS AAAA vers votre adresse IPv6 (2a01:9500::XXX) pour les rendre accessibles en IPv6. D’ici le 30 mai, vous pouvez d’ailleurs inscrire votre site Internet sur worldipv6launch.org (et ça ne fera pas de mal à votre référencement ;-). Pour plus d’infos, contactez nous par les moyens habituels (Ticket, mail, IRC, Twitter, machine à café, bière, etc.).

WORLD IPV6 LAUNCH is 6 June 2012 – The Future is Forever

Ferme ton Bind !

Sunday, February 1st, 2009

Il est important de fermer complètement son Bind, à savoir mettre dans son named.conf :

allow-query { localhost;};
allow-recursion { localhost; };
allow-transfer { none; };

Cela provoque un statut REFUSED pour toutes les requêtes non autorisées. Si refuser les transferts (requêtes AXFR dévoilant toute votre zone) est sage et refuser les requêtes récursives est logique (vous ne voulez pas être serveur DNS pour le monde entier), il faut également refuser toutes les requêtes par défaut afin d’éviter de potentiels dénis de service.

Vous noterez que les directives ci-dessus autorisent les requêtes classiques de la part de localhost dans la mesure où il est fréquent que votre machine se serve de son propre Bind. Si ce n’est pas le cas, mettre toutes les directives à none.

Un moyen simple de vérifier qu’un serveur DNS refuse bien toutes les requêtes :

dig google.fr @<serveur DNS>

Vous ne devez pas obtenir la(les) réponse(s), ni même obtenir la liste des ROOT SERVERS. Vous devez obtenir status: REFUSED (ou alors un timeout…).

J’ai souvent eu du mal à expliquer pourquoi il fallait fermer complètement son Bind, car la menace des attaques DOS restait un peu vague. Ce n’est désormais plus le cas depuis quelques semaines où chaque administrateur d’un Bind assiste (dans ses logs ;-) aux multiples requêtes “. NS IN” générées par des robots/virus :

client 76.9.16.171#39068: query (cache) './NS/IN' denied
client 69.64.87.156#42646: query (cache) './NS/IN' denied

On déplore même des victimes de ces attaques DDOS de grande ampleur, notamment NetworkSolutions qui l’explique sur son blog. Pour contrer cela, on peut refuser les paquets en amont : voici un fameux paquet (format PCAP). On voit donc que l’on peut interdire les paquets comportant une requête DNS récursive (flags = 0x0100). Sur une machine Linux, on peut le faire avec iptables et le module u32 (attention, il semble y avoir des bugs avec certaines versions) :

iptables -A INPUT -p udp --dport domain -m u32 --u32 "0>>22&0x3C@10=0x01000001" -j DROP

SI vous ne voulez pas interdire toutes les requêtes récursives, j’ai trouvé sur Internet une règle plus précise qui matche sur le “. NS IN” (voir commentaires de ce post) :

iptables -A INPUT -j DROP -p udp --dport domain -m u32 --u32 \
"0>>22&0x3C@12>>16=1&&0>>22&0x3C@20>>24=0&&0>>22&0x3C@21=0x00020001"

Enfin, sur l’excellent blog de Stéphane Bortzmeyer, vous trouverez plus de détails et des outils pour mesurer le nombre d’attaques sur votre serveur.