¿Cómo puedo identificar y solucionar los problemas de configuración de DNSSEC en Route 53?

6 minutos de lectura
0

La resolución de DNS para los solucionadores que admiten DNSSEC (por ejemplo, 8.8.8.8 o 1.1.1.1) devuelve las respuestas SERVFAIL en Amazon Route 53 debido a una configuración incorrecta de DNSSEC.

Resolución

Paso 1: Confirme que la configuración de DNSSEC está causando el error de resolución de DNS

1.    Ejecute el comando dig para forzar la consulta a través del solucionador de DNS de Google, 8.8.8.8. El solucionador de DNS de Google admite DNSSEC y devuelve una respuesta SERVFAIL si DNSSEC está mal configurado. En el siguiente comando de ejemplo, reemplace dnssec.example.live por su dominio.

$ dig dnssec.example.live @8.8.8.8

El resultado de los comandos anteriores muestra una respuesta 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.    Vuelva a ejecutar el comando dig y configure el indicador cd. El indicador cd resuelve la consulta sin comprobar si hay DNSSEC. En el siguiente comando de ejemplo, reemplace dnssec.example.live por su dominio.

$ dig dnssec.example.live @8.8.8.8 +cd

El siguiente ejemplo de salida confirma que la respuesta SERVFAIL se debió a una mala configuración de DNSSEC:

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

Paso 2: Identifique el registro DS creado en la zona principal

Nota: El registrador añade el registro DS del TLD. Por lo tanto, la zona principal del dominio «example.com» es la zona «.com». En este ejemplo, la zona principal de «dnssec.example.live» es «example.live».

1.    Ejecute el comando dig+trace para ver todos los servidores de delegación y nombres de la 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 comprobar el registro DS en la zona principal, ejecute la siguiente consulta en los servidores de nombres de la zona principal (en este ejemplo, example.live):

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

Configure el registro DS en la zona principal. A continuación, compruebe el registro DS con el valor cifrado del KSK público de la zona secundaria para confirmar que el registro DS es correcto.

Paso 3: Confirme que la firma de DNSSEC esté activada en la zona alojada

Ejecute el siguiente comando para confirmar que la firma de DNSSEC está activada en la zona alojada:

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

El siguiente resultado confirma que la firma de DNSSEC está activada y muestra las claves públicas presentes en la 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`

Si el comando no produce ninguna respuesta, la firma de DNSSEC no está activada en la zona alojada. Si DNSSEC no está activado, elimine el registro DS del registrador.

Paso 4: Identifique cuál es el registro DS correcto creado en la zona principal

1.    Ejecute el siguiente comando para instalar bind y bind-ultis:

$ sudo yum install bind bind-utils -y

2.    Ejecute el siguiente comando para obtener el registro DS correcto que se creó en la 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

Paso 5: Haga coincidir el registro DS obtenido en el paso 4 con el registro DS obtenido en el paso 2

Asegúrese de que el registro DS creado en la zona principal coincida con el registro DS que obtuvo en el paso 4.

Desde el paso 2:

41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2F A1893581 << Incorrect string

Desde el paso 4:

41670 13 2 DE085966266F92FA81BBE2829AD9CD8C2C7FC8109D748F49B5A99D2FA1893580

En el ejemplo anterior, el valor de hash del registro DS que está configurado en la zona principal (del paso 2) es incorrecto. Esta discrepancia provoca problemas de resolución de DNS.

Para resolver el problema, cree el valor de registro DS correcto en el extremo del registrador (zona principal). En el caso de los dominios registrados en Route 53, utilice el comando get-dnssec para obtener la información correcta a fin de añadir claves públicas para su dominio.

Nota: Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

$ aws --region us-east-1 route53 get-dnssec --hosted-zone-id $hostedzone_id
OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año