Como posso identificar e solucionar problemas de configuração de DNSSEC no Route 53?

5 minuto de leitura
0

A resolução de DNS para resolvedores que suportam DNSSEC (por exemplo, 8.8.8.8 ou 1.1.1.1) retorna respostas SERVFAIL no Amazon Route 53 devido à configuração incorreta do DNSSEC.

Resolução

Etapa 1: Confirme se a configuração do DNSSEC está causando a falha na resolução do DNS

1.    Execute o comando dig para forçar a consulta por meio do resolvedor de DNS do Google, 8.8.8.8. O resolvedor de DNS do Google é compatível com DNSSEC e retorna uma resposta SERVFAIL se o DNSSEC estiver configurado incorretamente. No comando de exemplo a seguir, substitua **dnssec.example.live ** pelo seu domínio.

$ dig dnssec.example.live @8.8.8.8

A saída dos comandos anteriores mostra uma resposta 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.    Execute o comando dig novamente e defina o sinalizador cd. O cd resolve a consulta sem verificar o DNSSEC. No comando de exemplo a seguir, substitua dnssec.example.live pelo seu domínio.

$ dig dnssec.example.live @8.8.8.8 +cd

O exemplo de saída a seguir confirma que a configuração incorreta do DNSSEC causou a resposta 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

Etapa 2: Identifique o registro DS criado na zona principal

Observação: O registrador adiciona o registro DS ao TLD. Portanto, a zona principal do domínio ‘example.com’ é a zona ‘.com’. Neste exemplo, a zona principal de ‘dnssec.example.live’ é ‘example.live’.

1.    Execute o comando dig +trace para ver a delegação completa e os servidores de nomes da zona principal:

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.    Para verificar o registro DS na zona principal, execute a seguinte consulta nos servidores de nomes da zona principal (neste exemplo, example.live):

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

Configure o registro DS na zona principal. Em seguida, compare o registro DS com o valor em hash da KSK pública da zona secundária para confirmar se o registro DS está correto.

Etapa 3: Confirme se a assinatura DNSSEC está ativada para a zona hospedada

Execute o comando a seguir para confirmar se a assinatura DNSSEC está ativada para a zona hospedada:

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

A saída a seguir confirma que a assinatura DNSSEC está ativada e lista as chaves públicas presentes na 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 o comando não gerar uma resposta, a assinatura DNSSEC não será ativada na zona hospedada. Se o DNSSEC não estiver ativado, remova o registro DS do registrador.

Etapa 4: Identifique qual é o registro DS correto criado na zona principal

1.    Execute o comando a seguir para instalar bind e bind-ultis:

$ sudo yum install bind bind-utils -y

2.    Execute o comando a seguir para obter o registro DS correto criado na zona principal:

$ 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

Etapa 5: Combine o registro DS obtido na etapa 4 com o registro DS obtido na etapa 2

Certifique-se de que o registro DS criado na zona principal corresponda ao registro DS obtido na etapa 4.

A partir da etapa 2:

41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2F A1893581 << Incorrect string

A partir da etapa 4:

41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2FA1893580

No exemplo anterior, o valor de hash do registro DS configurado na zona principal (da etapa 2) está incorreto. Essa incompatibilidade causa problemas de resolução de DNS.

Para resolver o problema, crie o valor correto do registro DS na extremidade do registrador (zona principal). Para domínios registrados com o Route 53, use o comando get-dnssec para obter as informações corretas para adicionar chaves públicas ao seu domínio.

Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

$ aws --region us-east-1 route53 get-dnssec --hosted-zone-id $hostedzone_id
AWS OFICIAL
AWS OFICIALAtualizada há um ano