Les sections précédentes sur les types de requêtes fournissent déjà quelques éléments sur la validation ou le dépannage du service DNS.
-
Le temps de réponse à une requête (Query time:) renseigne sur l'utilisation ou non du cache mémoire.
-
En cas de panne, une requête itérative permet d'identifier le point de rupture dans la chaîne de résolution des noms.
Il reste deux options particulièrement utiles à la mise au point d'une configuration correcte.
Il est possible de désigner explicitement le serveur DNS qui doit prendre en charge la requête à l'aide de son adresse IP. Cette opération est très utile pour vérifier qu'un serveur primaire répond correctement aux demandes sur les enregistrements qu'il détient. Dans le contexte de la sécurisation du service, cette même opération sert à contrôler qu'un serveur ne répond qu'au requêtes qu'il est sensé traiter. Voici deux exemples utilisant respectivement la désignation du serveur interrogé par son adresse IP et la requête directe de transfert de zone.
Pour vérifier que le service DNS de la zone nic.fr
fournit l'adresse du serveur Web ayant le
nom www.nic.fr
, on peut procéder comme
suit.
-
On identifie un serveur de nom pour la zone.
$
dig ns nic.fr ; <<>> DiG 9.8.1-P1 <<>> ns nic.fr ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23937 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 11 ;; QUESTION SECTION: ;nic.fr. IN NS ;; ANSWER SECTION: nic.fr. 176789 IN NS ns1.ext.nic.fr. nic.fr. 176789 IN NS ns3.nic.fr. nic.fr. 176789 IN NS ns1.nic.fr. nic.fr. 176789 IN NS ns4.ext.nic.fr. nic.fr. 176789 IN NS ns2.nic.fr. nic.fr. 176789 IN NS ns6.ext.nic.fr. ;; ADDITIONAL SECTION: ns1.ext.nic.fr. 176789 IN A 193.51.208.13 ns1.nic.fr. 176789 IN A 192.134.4.1 ns1.nic.fr. 176789 IN AAAA 2001:660:3003:2::4:1 ns2.nic.fr. 176789 IN A 192.93.0.4 ns2.nic.fr. 176789 IN AAAA 2001:660:3005:1::1:2 ns3.nic.fr. 176789 IN A 192.134.0.49 ns3.nic.fr. 176789 IN AAAA 2001:660:3006:1::1:1 ns4.ext.nic.fr. 176789 IN A 193.0.9.4 ns4.ext.nic.fr. 176789 IN AAAA 2001:67c:e0::4 ns6.ext.nic.fr. 176789 IN A 130.59.138.49 ns6.ext.nic.fr. 176789 IN AAAA 2001:620:0:1b:5054:ff:fe74:8780 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Oct 7 23:09:40 2012 ;; MSG SIZE rcvd: 372 -
On interroge directement le serveur primaire de la zone.
$
dig @ns1.nic.fr www.nic.fr ; <<>> DiG 9.8.1-P1 <<>> @ns1.nic.fr www.nic.fr ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33946 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 6, ADDITIONAL: 11 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;www.nic.fr. IN A ;; ANSWER SECTION: www.nic.fr. 172800 IN CNAME web.nic.fr. web.nic.fr. 172800 IN A 192.134.4.20 ;; AUTHORITY SECTION: nic.fr. 172800 IN NS ns3.nic.fr. nic.fr. 172800 IN NS ns6.ext.nic.fr. nic.fr. 172800 IN NS ns4.ext.nic.fr. nic.fr. 172800 IN NS ns1.nic.fr. nic.fr. 172800 IN NS ns1.ext.nic.fr. nic.fr. 172800 IN NS ns2.nic.fr. ;; ADDITIONAL SECTION: ns1.ext.nic.fr. 172800 IN A 193.51.208.13 ns1.nic.fr. 172800 IN A 192.134.4.1 ns1.nic.fr. 172800 IN AAAA 2001:660:3003:2::4:1 ns2.nic.fr. 172800 IN A 192.93.0.4 ns2.nic.fr. 172800 IN AAAA 2001:660:3005:1::1:2 ns3.nic.fr. 172800 IN A 192.134.0.49 ns3.nic.fr. 172800 IN AAAA 2001:660:3006:1::1:1 ns4.ext.nic.fr. 172800 IN A 193.0.9.4 ns4.ext.nic.fr. 172800 IN AAAA 2001:67c:e0::4 ns6.ext.nic.fr. 172800 IN A 130.59.138.49 ns6.ext.nic.fr. 172800 IN AAAA 2001:620:0:1b:5054:ff:fe74:8780 ;; Query time: 40 msec ;; SERVER: 2001:660:3003:2::4:1#53(2001:660:3003:2::4:1) ;; WHEN: Sun Oct 7 23:11:33 2012 ;; MSG SIZE rcvd: 410On voit apparaître une indication selon laquelle le serveur interrogé ne prendra pas en charge les requêtes récursives pour le client utilisé. C'est tout à fait normal dans la mesure où ces tests de requêtes ne sont pas effectués depuis un poste client appartenant au domaine
nic.fr
.Pour autant, on obtient bien la réponse à la requête posée puisque l'enregistrement demandé appartient bien à la zone sur laquelle le serveur a autorité.
-
On interroge directement le même serveur avec une requête portant sur une autre zone.
$
dig @ns1.nic.fr www.phrack.org ; <<>> DiG 9.8.1-P1 <<>> @ns1.nic.fr www.phrack.org ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 16990 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;www.phrack.org. IN A ;; Query time: 39 msec ;; SERVER: 2001:660:3003:2::4:1#53(2001:660:3003:2::4:1) ;; WHEN: Sun Oct 7 23:14:58 2012 ;; MSG SIZE rcvd: 32Cette fois-ci la requête est refusée. Le serveur primaire ne veut pas prendre en charge la requête posée. C'est encore tout à fait normal dans la mesure le client n'appartient pas aux réseaux de la zone
nic.fr
. -
Certains services sont très «ouverts» et acceptent de prendre en charge les requêtes de n'importe quel client. La même requête posée à un de ces services est traitée normalement.
$
dig @dns1.gaoland.net www.phrack.org ; <<>> DiG 9.8.1-P1 <<>> @dns1.gaoland.net www.phrack.org ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19478 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.phrack.org. IN A ;; ANSWER SECTION: www.phrack.org. 86400 IN A 120.138.19.103 ;; AUTHORITY SECTION: phrack.org. 86400 IN NS ns1.register-it.net. phrack.org. 86400 IN NS ns2.register-it.net. ;; ADDITIONAL SECTION: ns1.register-it.net. 86395 IN A 83.246.76.254 ns2.register-it.net. 86395 IN A 83.246.77.10 ;; Query time: 48 msec ;; SERVER: 212.94.162.1#53(212.94.162.1) ;; WHEN: Sun Oct 7 23:17:38 2012 ;; MSG SIZE rcvd: 145Sous toute réserve, il semble bien que le fait de répondre aux requêtes de n'importe quel client ne corresponde pas aux bonnes pratiques sur la configuration du service DNS de nos jours.
Dans le cadre de ces travaux pratiques, on veillera donc à n'autoriser les requêtes récursives qu'aux clients appartenant aux réseaux définis dans le plan d'adressage IP de l'énoncé.
La requête directe de transfert de zone permet de valider les autorisations d'échanges entre le serveur primaire et les autres serveurs ayant autorité sur la même zone.
Dans l'exemple de requête ci-dessous on interroge le serveur primaire à partir du serveur secondaire.
$
dig @172.16.80.1 axfr lan-213.stri
; <<>> DiG 9.8.1-P1 <<>> @172.16.80.1 axfr lan-213.stri
; (1 server found)
;; global options: +cmd
lan-213.stri. 86400 IN SOA casper.infra.stri. root.casper.infra.stri. 2012090701 28800 7200 604800 86400
lan-213.stri. 86400 IN MX 0 mail.stri.
lan-213.stri. 86400 IN NS casper.infra.stri.
lan-213.stri. 86400 IN NS cooper.lan-213.stri.
alderaan.lan-213.stri. 86400 IN A 172.16.80.10
amethyste.lan-213.stri. 86400 IN A 172.16.80.5
anison.lan-213.stri. 86400 IN A 172.16.80.23
bespin.lan-213.stri. 86400 IN A 172.16.80.11
casper.lan-213.stri. 86400 IN A 172.16.80.2
centares.lan-213.stri. 86400 IN A 172.16.80.12
cooper.lan-213.stri. 86400 IN A 172.16.80.1
coruscant.lan-213.stri. 86400 IN A 172.16.80.13
dagobah.lan-213.stri. 86400 IN A 172.16.80.14
endor.lan-213.stri. 86400 IN A 172.16.80.15
felucia.lan-213.stri. 86400 IN A 172.16.80.16
geonosis.lan-213.stri. 86400 IN A 172.16.80.17
hoth.lan-213.stri. 86400 IN A 172.16.80.18
kamino.lan-213.stri. 86400 IN A 172.16.80.19
mustafar.lan-213.stri. 86400 IN A 172.16.80.20
naboo.lan-213.stri. 86400 IN A 172.16.80.21
perle.lan-213.stri. 86400 IN A 172.16.80.6
tatooine.lan-213.stri. 86400 IN A 172.16.80.22
topaze.lan-213.stri. 86400 IN A 172.16.80.4
lan-213.stri. 86400 IN SOA casper.infra.stri. root.casper.infra.stri. 2012090701 28800 7200 604800 86400
;; Query time: 1 msec
;; SERVER: 172.16.80.1#53(172.16.80.1)
;; WHEN: Sun Oct 7 23:24:57 2012
;; XFR size: 24 records (messages 1, bytes 619)
Pour éviter une «recensement trop facile» de l'identité des hôtes d'une zone, il est essentiel de n'autoriser ces requêtes de transfert qu'entre serveurs DNS. Cette configuration du contrôle d'accès est présentée dans la Section 9, « Sécurisation de premier niveau ».