Yop

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - Nom de domaine

Fil des billets - Fil des commentaires

jeudi, 31 mars 2016

Présentation sur le WHOIS

Pour ceux qui s'interressent au WHOIS, voici une petite présentation faite il y a quelques semaines.

Le temps étant limité, je n'ai pas parlé de tout ce que j'avais en tête, mais le principal s'y trouve.

Me remonter par la page de contact (ou par les commentaires) au cas ou un truc faux se serait glissé dans la présentation à l'insu de mon plein gré.

lundi, 20 juillet 2015

Cas debug DNS

Je suis tombé sur un petit problème DNS interressant...
Le voici dans l'ordre...

- Je clic sur un lien et me voila envoyé vers un article du site http://www.leparisien.fr
- Patatra, marche pas.
- Vérification DNS:

$ dig www.leparisien.fr

; <<>> DiG 9.9.5-9+deb8u1-Debian <<>> www.leparisien.fr
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 53534
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.leparisien.fr. IN A

;; Query time: 448 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 15 21:36:55 CEST 2015
;; MSG SIZE rcvd: 46

$

Marche pas, status: SERVFAIL

- Interressant

$ dig cname www.leparisien.fr
www.leparisien.fr. 86400 IN CNAME 2-01-275c-0002.cdx.cedexis.net.

Bon cette 1ère partie fonctionne.

- Essayons de voir ce que donne 2-01-275c-0002.cdx.cedexis.net.

$ dig 2-01-275c-0002.cdx.cedexis.net.

; <<>> DiG 9.9.5-9+deb8u1-Debian <<>> 2-01-275c-0002.cdx.cedexis.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 7708
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;2-01-275c-0002.cdx.cedexis.net. IN A

;; Query time: 25 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 15 21:39:41 CEST 2015
;; MSG SIZE rcvd: 59

Donc c'est lui qui ne résoud pas chez moi... status: SERVFAIL...

- Voyons voir les DNS de cdx.cedexis.net. ou plutôt ceux de cedexis.net.

$ dig ns cedexis.net. +short
flipa.cedexis.net.
flipd.cedexis.net.
flipg.cedexis.net.
$

- Testons les en direct

$ dig 2-01-275c-0002.cdx.cedexis.net. @flipa.cedexis.net. +short
cdn2.lequipe.fr.
$ dig 2-01-275c-0002.cdx.cedexis.net. @flipd.cedexis.net. +short
cdn2.lequipe.fr.
$ dig 2-01-275c-0002.cdx.cedexis.net. @flipg.cedexis.net. +short
cdn2.lequipe.fr.
$

Arf çà répond.
Alors que cela ne répond toujours pas avec mon serveur local:

$ dig 2-01-275c-0002.cdx.cedexis.net.

; <<>> DiG 9.9.5-9+deb8u1-Debian <<>> 2-01-275c-0002.cdx.cedexis.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31061
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;2-01-275c-0002.cdx.cedexis.net. IN A

;; Query time: 44 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 15 21:44:22 CEST 2015
;; MSG SIZE rcvd: 59

- Comme vous l'avez remarqué, j'interroge mon serveur récursif local.

Quand la demande passe par lui, cela ne fonctionne pas, sinon cela semble fonctionner.

$ dig 2-01-275c-0002.cdx.cedexis.net. @8.8.8.8 +short
cdn2.lequipe.fr.
62.210.149.48
$

- Mon serveur DNS local est Unbound, et il semble qu'un truc le dérange (uniquement avec ces serveurs DNS cedexis.net !)...

- Activation des logs verbeux par la ligne

verbosity: 3

- Et on regarde les logs:

1436989983] unbound[12494:1] info: reply from <cedexis.net.> 209.107.211.4#53
1436989983] unbound[12494:1] info: Capsforid fallback: getting different replies, failed
1436989983] unbound[12494:1] debug: return error response SERVFAIL

- Capsforid... Interressant

- Allons voir la doc de la conf d'Unbound

use-caps-for-id: <yes or no> Use 0x20-encoded random bits in the query to foil spoof
attempts. This perturbs the lowercase and uppercase of query
names sent to authority servers and checks if the reply still
has the correct casing. Disabled by default. This feature is
an experimental implementation of draft dns-0x20.

Donc en gros, avec ce paramètre à "yes", unbound envoit le nom à résoudre avec des minuscule/majuscule aléatoires, puis vérifie que la réponse à la question, qui contient la question, à bien les minuscules/majuscules aux bons endroits.

Et ce paramètre est a "yes" dans ma conf Unbound.

- Avant d'aller voir le draft dns-0x20, on lance wireshark

dns-wireshark-1.png


dns-wireshark-2.png

On voit clairement ce qui se passe, la réponse contient la question en minuscule, donc pas exactement comme elle a été posée.

- Vérifions avec un autre domaine.. Au hasard bortzmeyer.org

$ dig www.bortzmeyer.org +short
204.62.14.153
$

Mon unbound résoud parfaitement.

On voit bien que la réponse, contient bien cette fois exactement la question, avec les minuscules/majuscules aux bons endroits.

dns-wireshark-3.png

- Vérifions en mettant à "no" le use-caps-for-id (ce qui, il est vrai, est la valeur par défaut)

Bingo, çà fonctionne cette fois

$ dig 2-01-275c-0002.cdx.cedexis.net. +short
cdn2.lequipe.fr.
62.210.149.48
$

Unbound considère maintenant comme valide la réponse des serveurs de cedexis.net
Victoire, je peux lire mon article sur www.leparisien.fr

- C'est quoi cedexis.net, ils auraient leur propre serveur DNS maison ?

"We’re dedicated to building a faster web for everyone in the world. Cedexis optimizes web performance across data centers, content delivery networks (CDNs) and clouds..."

Ah oui, çà colle, ils seraient bien capable d'avoir leur implémentation DNS maison.

- Maintenant allons voir ce fameux draft dns-0x20.

Déjà on peut noter que c'est rédigé par Paul Vixie de l'ISC, c'est du sérieux.

Je vais vous résumer en gros:

Le protocole DNS est tel, qu'il y a parfois moyen de réussir à forger des réponses et donc de poluer les caches DNS.
Il est donc ensuite possible de rediriger les users vers des faux site web.. bref pas cool.. mais rien de nouveau pour l'instant.
Mais tout moyen permettant d'améliorer la sécurité, en rendant plus difficile de forger des fausses réponses, sans tout casser au protocole existant, est donc la bienvenue.
Ce draft expose un moyen d'y parvenir.

Comme vous l'avez compris (pour les 3 personnes qui sont arrivées jusqu'ici, chapeau bas), il s'agit de mettre des majuscules/minuscules aléatoires dans la question envoyée au serveur DNS, puis considérer comme invalides, les réponses qui ne reprendaient pas la question en respectant la casse.

Pour forger une fausse réponse DNS et donc polluer le cache, il faudrait donc non seulement trouver le bon ID (Kaminsky, Paradoxe des anniversaires etc..) mais donc en plus avoir les bonnes majuscules/minuscules aux bons endroits. (Pas con le Paul Vixie ! )

Mais pour que l'idée soit exploitable, il faut donc voir ce que dit la RFC 1035 et voir comment réagissent les principales implémentations de serveurs DNS authoritatives.

Pour ce qui est de la RFC1035 on peut lire en 7.3

that the question section corresponds to the information currently desired

Mmmm...Ce n'est pas super précis ... Est-ce que cela inclu le respect de la casse... ?

Voyons voir les différentes implémentations:

On peut lire en 6.1

Several popular authoritative DNS implementations including ISC BIND (versions 4, 8, and 9), Nominum ANS, Akamai AKADNS, Neustar UltraDNS, Verisign Atlas, NLNetLabs NSD, PowerDNS, and DJBDNS were tested. All copied the question name exactly, bit for bit, from the request into the response.

Et en 6.2

Operational testing has revealed a small set of rare and/or private label authoritative DNS implementations who modify the 0x20 bits in question names while copying the question section from the request to the response. Usually this modification is to set the 0x20 bit, thus converting a domain name to be all-lower-case (0x61..0x7A, e.g., a-z).

- Conclusion:

Toutes les implémentations de serveur DNS authoritative majeures répondent en respectant la casse de la question.
Si les serveurs récursifs pouvaient implémenter cette vérification, ceci pourrrait améliorer la sécurité du DNS.
Et c'est d'ailleurs la 1ère fois que j'ai ce problème avec un serveur DNS, je vais donc garder mon paramêtre, et tant pis pour le site web du Parisien ;)

Les serveurs DNS de cedexis.net ne semblent pas tourner sous une "popular authoritative DNS implementations" :)
Je les ai contacté pour les informer.... si çà les interresse...


EDIT 31 Août 2015:

Antoine de Cedexis est tombé sur le billet et a remonté l'information aux bonnes personnes chez eux.
Je contaste que les modifications nécessaires (indiquées dans la roadmap dans son commentaire ci-dessous) semblent avoir été implémentées en production sur leurs serveurs DNS, et les résolutions ce font donc désormais correctement en respectant le draft dns-0x20.
Merci Antoine ;)

vendredi, 10 août 2007

Vérifier si des noms de domaines arrivent bientôt à expiration

Suite au billet sur le script permettant de vérifier si les certificats SSL arrivent bientôt à expiration, voici un script permettant de faire la même chose pour les noms de domaines.
Très utile quand on a pas mal de noms de domaines sous le coude...

domain-check ne me correspondait pas tout à fait donc j'ai refais quelquechose à ma sauce...

$ ./verifExpirDomain.sh

Domaine........ Date d expiration........ Jours restant ...... Validite
======= ....... ============ ....... ========== ..... ======

domain1.org .............. 04-may-2008 .......... 267 .......... VALID
domaine2.fr ................ ======= .............. == ...... No WHOIS Data
domaine3.net ............. 27-jan-2008 ........... 169 .......... VALID
...
...
$

Le script est dispo ici:
http://scripts.uggy.org/verifExpirDomain.sh

Le script à mettre en cron pour envoyer un mail si un des domaines de la liste expire dans les prochains jours:
http://scripts.uggy.org/verifExpirDomainMail.sh

Commentaires bienvenus...
http://scripts.uggy.org/

jeudi, 12 mai 2005

L'exemple est réservé

Les domaines "example" en .com .net et .org sont réservés par l'IANA.

yannick@yop:~$ whois example.com

Whois Server Version 1.3

Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
-snip-
Domain Name: EXAMPLE.COM
Registrar: RESERVED-INTERNET ASSIGNED NUMBERS AUTHORITY
Whois Server: whois.iana.org
Referral URL: http://res-dom.iana.org
Name Server: A.IANA-SERVERS.NET
Name Server: B.IANA-SERVERS.NET
Status: REGISTRAR-LOCK
Updated Date: 26-mar-2004
Creation Date: 14-aug-1995
Expiration Date: 13-aug-2011
-snip-
Registrant:
Name: Internet Assigned Numbers Authority (IANA)
Organization: Internet Assigned Numbers Authority (IANA)
Address1: 4676 Admiralty Way, Suite 330
Address2:
Address3:
City: Marina del Rey
State/Province: CA
Country: US
Postal Code: 92092
Phone: 310-823-9358
Fax: 310-823-8649
Email: res-dom@iana.org
Registration Date: 11/01/2001
Last Updated Date: 11/01/2001
-snip-


Ceci est décris dans la RFC 2606

[...] To safely satisfy these needs, four domain names are reserved as listed and described below.

.test
.example
.invalid
.localhost

".example" is recommended for use in documentation or as examples.

Les sites web en question renvoient justement vers la RFC.