Come faccio a identificare e risolvere i problemi di configurazione DNSSEC in Route 53?

5 minuti di lettura
0

La risoluzione DNS per i resolver che supportano DNSSEC (ad esempio 8.8.8.8 o 1.1.1.1) restituisce le risposte SERVFAIL in Amazon Route 53 a causa di una configurazione errata del DNSSEC.

Risoluzione

Fase 1: Verifica che la configurazione DNSSEC stia causando l'errore di risoluzione DNS

1.    Esegui il comando dig per forzare la query tramite il resolver DNS di Google, 8.8.8.8. Il resolver DNS di Google supporta DNSSEC e restituisce una risposta SERVFAIL se DNSSEC è configurato in modo errato. Nel seguente comando di esempio, sostituisci dnssec.example.live con il tuo dominio.

$ dig dnssec.example.live @8.8.8.8

L'output dei comandi precedenti mostra una risposta 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.    Esegui nuovamente il comando dig e imposta il flag cd. Il flag cd risolve la richiesta senza controllare il DNSSEC. Nel seguente comando di esempio, sostituisci dnssec.example.live con il tuo dominio.

$ dig dnssec.example.live @8.8.8.8 +cd

L'esempio di output seguente conferma che l'errata configurazione DNSSEC ha causato la risposta 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

Fase 2: Identifica il record DS creato nella zona principale

Nota: Il registrar aggiunge il record DS per il TLD. Quindi, la zona principale per il dominio 'example.com' è la zona '.com '. In questo esempio, la zona principale per 'dnssec.example.live' è 'example.live'.

1.    Esegui il comando dig +trace per visualizzare la delega completa e i name server per la zona principale:

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.    Per controllare il record DS nella zona principale, esegui la seguente query tramite i name server della zona padre (in questo esempio, example.live):

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

Configura il record DS nella zona principale. Quindi, controlla il record DS con il valore hash del KSK pubblico della zona bambino per confermare che il record DS sia accurato.

Fase 3: Conferma che la firma DNSSEC sia attivata per la zona ospitata

Esegui il comando seguente per confermare che la firma DNSSEC sia attivata per la zona ospitata:

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

L'output seguente conferma che la firma DNSSEC è attivata ed elenca le chiavi pubbliche presenti nella zona. 

`; <<>> 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`

Se il comando non fornisce una risposta, la firma DNSSEC non è attivata nella zona ospitata. Se il DNSSEC non è attivato, rimuovi il record DS dal registrar.

Fase 4: Identifica il record DS corretto creato nella zona principale

1.    Esegui il seguente comando per installare bind e bind-ultis:

$ sudo yum install bind bind-utils -y

2.    Esegui il comando seguente per ottenere il record DS corretto creato nella zona principale:

$ 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

Fase 5: Abbina il record DS ottenuto nella fase 4 con il record DS ottenuto nella fase 2

Assicurati che il record DS creato nella zona principale corrisponda al record DS ottenuto nel passaggio 4.

Dalla fase 2:

41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2F A1893581 << Incorrect string

Dalla fase 4:

41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2FA1893580

Nell'esempio precedente, il valore hash del record DS configurato nella zona padre (dal passaggio 2) non è corretto. Questa mancata corrispondenza causa problemi di risoluzione DNS.

Per risolvere il problema, crea il valore del record DS corretto all'estremità del registrar (zona padre). Per i domini registrati con Route 53, usa il comando get-dnssec per ottenere le informazioni corrette per aggiungere chiavi pubbliche per il tuo dominio.

Nota: Se ricevi errori durante l'esecuzione dei comandi AWS Command Line Interface (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS.

$ aws --region us-east-1 route53 get-dnssec --hosted-zone-id $hostedzone_id
AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa