Comment cerner et résoudre les problèmes de configuration DNSSEC dans Route 53 ?

Lecture de 6 minute(s)
0

La résolution DNS pour les résolveurs qui prennent en charge le protocole DNSSEC (par exemple, 8.8.8.8 ou 1.1.1.1) renvoie des réponses SERVFAIL dans Amazon Route 53 en raison d’une mauvaise configuration du protocole DNSSEC.

Résolution

Étape 1 : Déterminez si la configuration DNSSEC est à l’origine de l’échec de la résolution DNS

1.Exécutez la commande dig pour forcer la requête à passer par le résolveur DNS de Google, 8.8.8.8. Le résolveur DNS de Google prend en charge le protocole DNSSEC et renvoie une réponse SERVFAIL si le protocole DNSSEC est mal configuré. Dans l’exemple de commande suivant, remplacez dnssec.example.live par votre domaine.

$ dig dnssec.example.live @8.8.8.8

La sortie issue des commandes précédentes affiche une réponse SERVFAIL :

;  <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2  <<>> dnssec.example.live @8.8.8.8
;; global options: +cmd
;; Got answer:
;; -->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 30778
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;dnssec.example.live.    IN    A

;; Query time: 24 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Apr 21 18:13:57 UTC 2022
;; MSG SIZE  rcvd: 52

2.Exécutez à nouveau la commande dig et définissez l’indicateur cd. L’indicateur cd résout la requête sans vérifier la présence de DNSSEC. Dans l’exemple de commande suivant, remplacez dnssec.example.live par votre domaine.

$ dig dnssec.example.live @8.8.8.8 +cd

L’exemple de sortie suivant confirme qu’une mauvaise configuration de DNSSEC a provoqué la réponse SERVFAIL :

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> dnssec.example.live @8.8.8.8 +cd

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30235
;; flags: qr rd ra cd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;dnssec.example.live.    IN    A

;; ANSWER SECTION:
dnssec.example.live. 300    IN    A    10.10.10.10

;; Query time: 28 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Apr 21 18:15:51 UTC 2022
;; MSG SIZE  rcvd: 68

Étape 2 : Identifiez l’enregistrement DS créé sur la zone parent

Remarque : Le bureau d’enregistrement ajoute l’enregistrement DS pour le TLD. Ainsi, la zone parent du domaine « exemple.com » est la partie « .com ». Dans cet exemple, la zone parent de « dnssec.exemple.live » est « exemple.live ».

1.Exécutez la commande dig +trace pour afficher la délégation complète et les serveurs de noms de la zone parent :

dig +trace dnssec.example.live

>>truncated for convenience

example.live.    3600    IN    NS    ns-xxx.awsdns-xx.net.
example.live.    3600    IN    NS    ns-xxxx.awsdns-xx.org.
example.live.    3600    IN    NS    ns-xxxx.awsdns-xx.co.uk.
example.live.    3600    IN    NS    ns-xxx.awsdns-xx.com.
example.live.    3600    IN    DS    28927 13 2 133329D78FFCD003D39BAB9386FC18A49807584CD42042B3F53E1293 8F63C5A7
example.live.    3600    IN    RRSIG    DS 8 2 3600 20220508154435 20220417144435 32325 live. HzdzyWb8+8G1vbzMWR/7usqN5GihWpuToRKnWv3NSXPnzzYaAFrkuYlU pX8izzvnXk/uyiCOcMShQPKfybgviNkm+yfyTwm3rOso8amJDz0Jz8ml lz7jhgH0k04gLbbT7i8Ez8k8qPLB9MVb1jtVz7rjl6k4Y4m38aHUMy0D lxk=
;; Received 404 bytes from 65.22.22.1#53(v0n2.nic.live) in 1 ms

dnssec.example.live. 10    IN    NS    ns-xxxx.awsdns-xx.org.
dnssec.example.live. 10    IN    NS    ns-xxx.awsdns-xx.com.
dnssec.example.live. 10    IN    NS    ns-xxxx.awsdns-xx.co.uk.
dnssec.example.live. 10    IN    NS    ns-xxx.awsdns-xx.net.
dnssec.example.live. 300    IN    DS    41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2F A1893581
dnssec.example.live. 300    IN    RRSIG    DS 13 3 300 20220421192820 20220421172320 53547 example.live. xdwGnGasWO2sbZQoAfYdZK2bAMcpYOjMR+mg2ilt00XDIwrPc/Qac1k2 Lc2NpAcFpgb3KbhzFxpd3Z7qXjPsvw==
;; Received 352 bytes from 205.251.197.102#53(ns-xxxx.awsdns-xx.org) in 6 ms

dnssec.example.live. 300    IN    A    1.1.1.1
dnssec.example.live. 300    IN    RRSIG    A 13 3 300 20220421192821 20220421172321 51615 dnssec.example.live. sMzXesnw+7pSHK2Mlkossyjml8sK7RhgKyu50J/P3/TEeChPzia8EfDb nbv3fFDxXQcbqPH+M+6KlQ7JrAmBig==
;; Received 187 bytes from 205.251.192.150#53(ns-xxx.awsdns-xx.com) in 14 ms

2.Pour vérifier l’enregistrement DS dans la zone parent, exécutez la requête suivante via les serveurs de noms de la zone parent (dans le cas présent, exemple.live) :

`$ dig DS dnssec.example.live @ns-xxx.awsdns-xx.net. +short `
41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2F A1893581

Configurez l’enregistrement DS dans la zone parent. Vérifiez ensuite l’enregistrement DS par rapport à la valeur hachée du KSK public de la zone enfant pour confirmer que l’enregistrement DS est exact.

Étape 3 : Vérifiez que la signature DNSSEC est activée pour la zone hébergée

Exécutez la commande suivante pour vérifier que la signature DNSSEC est activée pour la zone hébergée :

$ dig DNSKEY dnssec.example.live @ns-xxxx.awsdns-xx.org +noall +answer +multiline

Le résultat suivant confirme que la signature DNSSEC est activée et répertorie les clés publiques présentes dans la zone. 

`; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> DNSKEY dnssec.example.live @ns-xxxx.awsdns-xx.org +noall +answer +multiline`  
`;; global options: +cmd`  
`dnssec.example.live. 3600 IN DNSKEY    256 3 13 (`  
`                4xMqBH+v21Ria6T00Oq08fY8S3FxA9XFp34uDQm0dBpk`  
`                l6MwBNLZxpwpzS35yunxEYKwHkoPnMtu1bckRFauJg==`  
`                ) ; ZSK; alg = ECDSAP256SHA256 ; key id = 51615`  
`dnssec.example.live. 3600 IN DNSKEY    257 3 13 (`  
`                pvoQ+Q2TvJKRuxdv8yuJhLkJhdrYUf/ZA2REWUTAXsfS`  
`                laK0MFDzCurSXXjlQxQoVGauDe5CwGufXl40fVzt/w==`  
`                ) ; KSK; alg = ECDSAP256SHA256 ; key id = 41670`

Si la commande ne donne pas de réponse, cela signifie que la signature DNSSEC n’est pas activée dans la zone hébergée. Si la signature DNSSEC n’est pas activée, supprimez l’enregistrement DS du bureau d’enregistrement.

Étape 4 : Identifiez l’enregistrement DS correct créé sur la zone parent

1.Exécutez la commande suivante pour installer bind et bind-ultis:

$ sudo yum install bind bind-utils -y

2.Exécutez la commande suivante pour obtenir le DS correct créé sur la zone parent :

$ dig DNSKEY dnssec.example.live @ns-xxxx.awsdns-xx.org. | dnssec-dsfromkey -2 -f - dnssec.example.live

dnssec.example.live. IN DS 41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2FA1893580

Étape 5 : Faites correspondre l’enregistrement DS obtenu à l’étape 4 avec l’enregistrement DS obtenu à l’étape 2

Assurez-vous que l’enregistrement DS créé dans la zone parent correspond à l’enregistrement DS que vous avez obtenu à l’étape 4.

À partir de l’étape 2 :

41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2F A1893581 << Incorrect string

À partir de l’étape 4 :

41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2FA1893580

Dans l’exemple précédent, la valeur de hachage de l’enregistrement DS configuré dans la zone parent (à partir de l’étape 2) est incorrecte. Cette incohérence entraîne des problèmes de résolution DNS.

Pour résoudre le problème, créez la valeur d’enregistrement DS correcte dans le bureau d’enregistrement (zone parent). Pour les domaines enregistrés avec Route 53, utilisez la commande get-dnssec afin d’obtenir les informations correctes pour ajouter des clés publiques à votre domaine.

Remarque : Si vous recevez des erreurs lors de l’exécution des commandes de l’interface de la ligne de commande AWS (AWS CLI), assurez-vous que vous utilisez la version AWS CLI la plus récente.

$ aws --region us-east-1 route53 get-dnssec --hosted-zone-id $hostedzone_id
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an