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.
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 SERVFAIL. Esse 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
- Navegue para http://dnsviz.net/
- Digite um nome de domínio no campo de texto que aparecer.
- Se o DNSViz nunca analisou o site antes, clique no botão Analisar que aparecer.
- 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:
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:
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:
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.