Como solucionar problemas de DNSSEC

O DNSSEC protege o DNS.  Este artigo discute como detectar problemas de DNSSEC que afetam a resolução de DNS. 


Como testar o DNSSEC com o Dig

O Dig é uma ferramenta de comando para consultar registros DNS em um nameserver. Por exemplo, o dig pode perguntar a um resolvedor de DNS o endereço IP do domínio www.cloudflare.com (a opção +short produz somente o resultado ):

$ dig www.cloudflare.com +short198.41.215.162198.41.214.162

Use o dig para verificar os registros DNSSEC.  No exemplo abaixo, a última linha do resultado é o registro RRSIG. RRSIG é a assinatura do DNSSEC anexada ao registro. Com o RRSIG, um resolvedor de DNS consegue determinar se uma resposta de DNS é confiável.

$ dig www.cloudflare.com +dnssec +short198.41.214.162198.41.215.162A 13 3 300 20180927180434 20180925160434 35273 cloudflare.com. DYYZ/bhHSAIlpvu/HEUsxlzkC9NsswbCQ7dcfcuiNBrbhYV7k3AI8t46 QMnOlfhwT6jqsfN7ePV6Fwpym3B0pg==

O Dig também recupera a chave pública utilizada para verificar o registro DNS.  Os registros DNS de um domínio são todos assinados com a mesma chave pública.  Portanto, uma consulta da chave pública do domínio raiz, não da chave pública do subdomínio, ficaria da seguinte forma: 

$ dig DNSKEY cloudflare.com +short257 3 13 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+ KkxLbxILfDLUT0rAK9iUzy1L53eKGQ==256 3 13 koPbw9wmYZ7ggcjnQ6ayHyhHaDNMYELKTqT+qRGrZpWSccr/lBcrm10Z 1PuQHB3Azhii+sb0PYFkH1ruxLhe5g==

A resposta de DNS inclui dois registros:

  • O registro DNSKEY256 é a chave pública chamada Zone-signing-key, usada para verificar as assinaturas do registro DNS para registros A, MX, CNAME, SRV etc.
  • O registro de DNSKEY257 é chamado de Key-Signing Key, uma chave utilizada para verificar as assinaturas dos registros de DNSKEY, CDs e CDNSKEY.
Mais detalhes sobre como verificar as assinaturas com a chave pública estão além do escopo deste artigo.

Quando a opção +short não estiver sendo usada com o dig, uma resposta de DNS será autenticada com o DNSSEC se o sinalizador do anúncio aparecer no cabeçalho da resposta:

$ dig www.cloudflare.com[...];; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65326
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 [...] ;; QUESTION SECTION: ;www.cloudflare.com.        IN  A [...] ;; ANSWER SECTION: www.cloudflare.com. 15  IN  A   198.41.215.162 www.cloudflare.com. 15  IN  A   198.41.214.162

Como visualizar a cadeia de confiança do DNSSEC com o Dig

A verificação completa das assinaturas de domínio (por exemplo: cloudflare.com) envolve a verificação da Key-Signing Key no domínio de nível superior (por exemplo: .com).  Uma verificação semelhante é executada a seguir por meio da verificação da Key-Signing Key no .com ao nível do servidor-raiz. As chaves raiz do DNSSEC são distribuídas para os clientes de DNS para concluir a cadeia de confiança.

Quando o DNSSEC está habilitado, é necessário um registro DS no DNS do registrar. O registro DS contém uma hash da Key-Signing Key pública, além dos metadados da chave.

Use o dig para encontrar um registro DS:

$ dig +short DS cloudflare.com2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9

Quando a opção +trace estiver sendo utilizada, o dig confirma se uma resposta foi retornada pelo nameserver para cloudflare.comou pelo nameserver para .com.  Nesse exemplo, o registro DS do cloudflare.com é retornado pelo e.gtld-servers.net:

$ dig DS cloudflare.com +trace[...]cloudflare.com.     86400   IN  DS  2371 13 2 32996839A6D808AFE3EB4A795A0E6A7A39A76FC52FF228B22B76F6D6 3826F2B9[...]com.            172800  IN  NS  e.gtld-servers.net.[...];; Received 1213 bytes from 2001:502:1ca1::30#53(e.gtld-servers.net) in 37 ms

Uma alternativa mais fácil à execução manual de todas as etapas acima é o uso da ferramenta on-line DNSViz. Veja mais detalhes sobre como solucionar problemas de validação de DNSSEC usando o DNSViz ou um exemplo de resultados de DNSSEC do cloudflare.com por meio do DNSViz.


Como solucionar problemas de validação do DNSSEC com o Dig

Os problemas ocorrem se os provedores de DNS autoritativos forem alterados sem atualizar ou remover os registros DNSSEC antigos no registrar:

$ dig A brokendnssec.net @1.0.0.1;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 10663

Confirme se uma resposta SERVFAIL está relacionada ao DNSSEC executando o dig com a opção +cd. A opção +cd fornece resultados de DNS sem nenhuma validação de DNSSEC implementada.  

$ dig A brokendnssec.net @1.0.0.1 +dnssec +cd +short104.20.49.61104.20.48.61

No exemplo acima, o DNSSEC estará configurado incorretamente se uma resposta de DNS adequada for recebida quando a opção +cd estiver sendo usada, mas as consultas usando DNSSEC retornarem uma resposta SERVFAILEsse problema geralmente ocorre quando nameservers autoritativos são alterados, mas os registros DS não são atualizados.  O problema também pode ocorrer se um invasor tentar forjar uma resposta a uma consulta. 


Como solucionar problemas de validação do DNSSEC usando o DNSViz

  1. Navegue para http://dnsviz.net/

  2. Digite um nome de domínio no campo de texto que aparecer.

  3. Se o DNSViz nunca analisou o site antes, clique no botão Analisar que aparecer.

  4. Se o site tiver sido analisado pelo DNSViz antes, clique no botão Atualizar Agora que aparecer.

Exemplo sem DNSSEC

Abaixo um exemplo de um domínio funcional sem DNSSEC conforme diagramado pelo dnsviz.net:

Screen_Shot_2018-09-18_at_10.31.54_AM.png

Exemplo com o DNSSEC correto

Abaixo está um exemplo de um domínio com registros DNSSEC funcionais entre os nameservers de TLD e os nameservers autoritativos para o cloudflare.com:

Screen_Shot_2018-10-16_at_2.png

Exemplo com um registro RRSIG faltante ou incorreto no nameserver autoritativo

Abaixo um exemplo de como o dnsviz.net mostrará uma delegação incorreta quando nenhum registro DNSKEY válido que corresponda ao registro DS publicado pelo nameserver do TLD for fornecido pelo nameserver autoritativo: 

Screen_Shot_2018-09-18_at_10.25.49_AM.png


Próximas etapas 

Se for descoberto um problema com a implantação do DNSSEC, entre em contato com o registrar e confirme se o registro DS corresponde ao que o provedor de DNS autoritativo especificou. Se a Cloudflare for o provedor de DNS autoritativo, siga as instruções para configurar o DNSSEC com a Cloudflare.


Recursos relacionados

Não encontra o que precisa?

95% das perguntas podem ser respondidas usando a ferramenta de pesquisa. Essa é a maneira mais rápida de obter uma resposta.