19 min de leitura · Guia técnico
DNS Registro.br com DNSSEC no FreeBSD 14.3 significa operar um servidor autoritativo BIND 9.18+ ou 9.20 no FreeBSD 14.3, assinar criptograficamente a zona do seu domínio .br e publicar a chave DS no painel do Registro.br. Para executar esse checklist completo, siga os passos abaixo:
- Instalar o BIND 9.18 ou 9.20 via pkg no FreeBSD 14.3
- Configurar o named.conf com zona autoritativa e KASP (Key and Signing Policy)
- Gerar as chaves KSK e ZSK com dnssec-keygen ou deixar o KASP gerenciar automaticamente
- Assinar a zona com rndc sign ou inline signing habilitado
- Extrair a chave DS e publicar no painel do Registro.br
- Validar a cadeia de confiança com dig, delv e DNSViz
Pré-requisitos para configurar DNS Registro.br com DNSSEC no FreeBSD 14.3
- FreeBSD 14.3 instalado com acesso root via SSH
- Domínio .br registrado no Registro.br com acesso ao painel de gerenciamento
- Pelo menos dois servidores NS (primário e secundário) com IP fixo e PTR configurado
- Portas UDP/TCP 53 abertas no firewall (pf ou ipfw) para tráfego DNS externo
- BIND 9.18 ou 9.20 disponível no repositório pkg do FreeBSD 14.3
- Conhecimento básico de zona DNS: registros A, NS, MX, SOA e CNAME
- Acesso ao painel do Registro.br para registrar glue records e publicar a chave DS
Instalação do BIND 9.18 no FreeBSD 14.3
O primeiro passo do checklist de DNS autoritativo com DNSSEC é instalar o servidor BIND. No FreeBSD 14.3, o gerenciador de pacotes pkg oferece as versões 9.18 (série ESV) e 9.20, ambas com suporte completo a DNSSEC, inline signing e KASP automático.
Atualize o índice de pacotes antes de instalar:
pkg update
pkg install bind918
Caso prefira a versão mais recente:
pkg install bind920
Habilite o named no rc.conf para que inicie automaticamente com o sistema:
sysrc named_enable="YES"
sysrc named_conf="/usr/local/etc/namedb/named.conf"
Verifique a versão instalada:
named -V
BIND 9.18.x (Extended Support Version) <id:...>
compiled by GCC 13.x on FreeBSD 14.3-RELEASE
...
DNSSEC: yes
A linha DNSSEC: yes confirma que o binário foi compilado com suporte ao protocolo. Sem ela, nenhuma assinatura de zona será possível. Se você já tem o BIND instalado sem essa flag, reinstale usando o port com opções corretas via make config em /usr/ports/dns/bind918.
Crie os diretórios necessários para chaves e zonas:
mkdir -p /usr/local/etc/namedb/keys
mkdir -p /usr/local/etc/namedb/zones
chown -R bind:bind /usr/local/etc/namedb/keys
chmod 750 /usr/local/etc/namedb/keys
Configuração do named.conf com zona autoritativa e KASP
A automação de zona com DNSSEC depende de uma configuração correta do named.conf. O KASP (Key and Signing Policy) introduzido no BIND 9.16 elimina a necessidade de scripts manuais para rotação de chaves ZSK e KSK — basta declarar a política e o daemon cuida do ciclo de vida completo.
Edite o arquivo principal de configuração:
vi /usr/local/etc/namedb/named.conf
Estrutura mínima funcional para um servidor primário autoritativo:
options {
directory "/usr/local/etc/namedb";
pid-file "/var/run/named/pid";
listen-on { any; };
listen-on-v6 { any; };
recursion no;
allow-query { any; };
dnssec-validation yes;
managed-keys-directory "/usr/local/etc/namedb/keys";
};
dnssec-policy "registrobr-policy" {
keys {
ksk lifetime unlimited algorithm ecdsa256;
zsk lifetime P30D algorithm ecdsa256;
};
dnskey-ttl 3600;
publish-safety PT1H;
retire-safety PT1H;
signatures-validity P14D;
signatures-validity-dnskey P14D;
signatures-refresh P7D;
nsec3param iterations 0 optout no salt-length 0;
};
zone "seudominio.com.br" {
type primary;
file "/usr/local/etc/namedb/zones/seudominio.com.br.zone";
dnssec-policy "registrobr-policy";
inline-signing yes;
auto-dnssec maintain;
allow-transfer { 203.0.113.2; };
};
Atenção: substitua seudominio.com.br pelo seu domínio real e 203.0.113.2 pelo IP do seu servidor DNS secundário. A política ecdsa256 (ECDSA P-256 SHA-256) é o algoritmo recomendado pelo Registro.br em substituição ao RSA-1024 depreciado.
Crie o arquivo de zona inicial sem assinatura. O inline signing adicionará os registros RRSIG, NSEC3 e DNSKEY automaticamente:
cat > /usr/local/etc/namedb/zones/seudominio.com.br.zone << 'EOF'
$TTL 3600
@ IN SOA ns1.seudominio.com.br. admin.seudominio.com.br. (
2026010101 ; Serial YYYYMMDDNN
3600 ; Refresh
900 ; Retry
604800 ; Expire
300 ) ; Negative TTL
IN NS ns1.seudominio.com.br.
IN NS ns2.seudominio.com.br.
ns1 IN A 203.0.113.1
ns2 IN A 203.0.113.2
@ IN A 203.0.113.1
www IN A 203.0.113.1
EOF
Valide a sintaxe antes de iniciar o serviço:
named-checkconf /usr/local/etc/namedb/named.conf
named-checkzone seudominio.com.br /usr/local/etc/namedb/zones/seudominio.com.br.zone
zone seudominio.com.br/IN: loaded serial 2026010101
OK
Inicie o named:
service named start
Geração de chaves DNSSEC e publicação no Registro.br
Com o KASP habilitado no named.conf, o próprio BIND gerencia a geração das chaves KSK e ZSK. Ao iniciar o named com a política definida, ele cria automaticamente as chaves em /usr/local/etc/namedb/keys/. Para extrair a chave DS necessária para o Registro.br, aguarde alguns segundos após a inicialização e execute:
rndc dnssec -status seudominio.com.br
dnssec-policy: registrobr-policy
Current KSK: 20260101xxxxxx (published, active)
Current ZSK: 20260101yyyyyy (published, active)
Next ZSK rollover: 2026-01-31
Extraia a chave DS a partir da chave KSK gerada:
dnssec-dsfromkey /usr/local/etc/namedb/keys/Kseudominio.com.br.+013+XXXXX.key
seudominio.com.br. IN DS 12345 13 2 A1B2C3D4E5F6...
Este output contém o registro DS que deve ser inserido no painel do Registro.br. Os campos são: tag da chave (12345), algoritmo (13 = ECDSA P-256), tipo de digest (2 = SHA-256) e o hash hexadecimal.
Acesse o painel do Registro.br, selecione o domínio, clique em DNSSEC e insira os valores extraídos. O campo Algoritmo deve ser "13 - ECDSA Curve P-256 with SHA-256". Após salvar, aguarde a propagação (normalmente entre 10 minutos e 1 hora dependendo do TTL configurado).
Se preferir não usar KASP e gerar as chaves manualmente:
cd /usr/local/etc/namedb/keys
dnssec-keygen -a ECDSAP256SHA256 -f KSK -n ZONE seudominio.com.br
dnssec-keygen -a ECDSAP256SHA256 -n ZONE seudominio.com.br
Inclua as chaves no arquivo de zona e assine manualmente:
dnssec-signzone -A -3 $(head -c 16 /dev/random | xxd -p) \
-N INCREMENT -o seudominio.com.br \
-t /usr/local/etc/namedb/zones/seudominio.com.br.zone \
/usr/local/etc/namedb/keys/Kseudominio.com.br.+013+*.key
Atenção: ao usar assinatura manual, você é responsável por re-assinar a zona antes da expiração das assinaturas RRSIG (validade padrão de 30 dias). Prefira sempre o KASP com inline signing para eliminar esse risco operacional.
Para gerenciar domínios com boas práticas de DNS, consulte também o artigo Como gerenciar um domínio na base de conhecimento da AviraHost.
Validação da cadeia de confiança DNSSEC
Após publicar a chave DS no Registro.br, é imprescindível validar que toda a cadeia de confiança está funcional — desde a raiz (.) até a zona folha do seu domínio .br. Esta etapa evita falhas silenciosas que podem travar a resolução DNS para usuários que utilizam resolvers com validação DNSSEC habilitada.
Verifique se os registros DNSKEY estão sendo servidos corretamente:
dig +dnssec +short DNSKEY seudominio.com.br @ns1.seudominio.com.br
256 3 13 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+
...
257 3 13 mdsswUyr3DPW132mOi8V9xESWE8jTo0dxCjjnopKl+GqJxpVXckHAeF+
...
O código 256 indica ZSK e 257 indica KSK. Ambos devem aparecer com o algoritmo 13 (ECDSA P-256).
Valide a cadeia completa com o comando delv (BIND's DNS lookup and validation tool):
delv @8.8.8.8 seudominio.com.br A +rtrace +multiline
; fully validated
seudominio.com.br. 3600 IN A 203.0.113.1
seudominio.com.br. 3600 IN RRSIG A 13 3 3600 (
20260215000000 20260101000000 12345 seudominio.com.br.
... )
A linha ; fully validated confirma que a cadeia KSK → DS → zona está íntegra. Se aparecer ; unsigned answer ou ; bad signature, há problema na publicação da chave DS ou na assinatura da zona.
Verifique também os registros NSEC3 para confirmar que o DNSSEC está protegendo os tipos inexistentes (NXDOMAIN autenticado):
dig +dnssec NSEC3PARAM seudominio.com.br @ns1.seudominio.com.br
seudominio.com.br. 3600 IN NSEC3PARAM 1 0 0 -
O parâmetro 0 0 - (iterações zero, sem salt) está alinhado com a recomendação da RFC 9276, que desencoraja iterações altas por razões de performance e resistência a ataques de dicionário off-line.
Para validação gráfica completa da cadeia, acesse dnsviz.net e insira seu domínio. A ferramenta exibe visualmente cada nó da delegação, identificando erros de algoritmo, expiração de RRSIG e ausência de DS.
Após confirmar a validação, reforce a segurança do servidor configurando firewall e autenticação adequados. Veja dicas adicionais no artigo Dicas de Otimização de Servidores Linux.
Configuração do servidor DNS secundário (slave) no FreeBSD 14.3
O Registro.br exige no mínimo dois servidores NS para registrar um domínio .br. O servidor secundário recebe a zona assinada por transferência AXFR/IXFR do primário, incluindo todos os registros DNSSEC (RRSIG, NSEC3, DNSKEY). Configure o named.conf no servidor secundário:
zone "seudominio.com.br" {
type secondary;
file "/usr/local/etc/namedb/zones/seudominio.com.br.zone.signed";
primaries { 203.0.113.1; };
dnssec-validation yes;
};
No servidor primário, certifique-se de que a diretiva allow-transfer inclui o IP do secundário. Após reiniciar o named no secundário, force a transferência:
rndc retransfer seudominio.com.br
Verifique se a transferência ocorreu:
rndc zonestatus seudominio.com.br
name: seudominio.com.br
type: secondary
files: seudominio.com.br.zone.signed
serial: 2026010101
nodes: 12
last loaded: Thu, 01 Jan 2026 10:00:00 GMT
secure: yes
inline signing: no
Com secure: yes, o secundário está servindo a zona com DNSSEC corretamente. Registre os glue records no painel do Registro.br: vá em Servidores DNS, adicione ns1.seudominio.com.br com o IP do primário e ns2.seudominio.com.br com o IP do secundário.
Automação de zona DNS: renovação de chaves e re-assinatura com cron
Com KASP habilitado, o BIND executa automaticamente o rollover de ZSK (a cada 30 dias na política definida) e mantém as assinaturas RRSIG renovadas. Porém, é boa prática monitorar o status de expiração via cron para detectar falhas antes que impactem usuários:
vi /usr/local/etc/namedb/scripts/check-dnssec.sh
#!/bin/sh
DOMAIN="seudominio.com.br"
EXPIRY=$(dig +dnssec +short RRSIG SOA @127.0.0.1 "$DOMAIN" | awk '{print $9}')
TODAY=$(date +%Y%m%d%H%M%S)
if [ "$EXPIRY" -lt "$TODAY" ]; then
echo "ALERTA: RRSIG expirado para $DOMAIN em $EXPIRY" | \
mail -s "[DNS] RRSIG Expirado" [email protected]
fi
chmod +x /usr/local/etc/namedb/scripts/check-dnssec.sh
Adicione ao cron do root para verificação diária:
crontab -e
0 6 * * * /usr/local/etc/namedb/scripts/check-dnssec.sh
Para zonas sem KASP (assinatura manual), crie um script de re-assinatura periódica com rndc sign:
0 2 * * 0 /usr/local/bin/rndc sign seudominio.com.br && \
/usr/local/bin/rndc reload seudominio.com.br
Atenção: para domínios sem KASP, a nova chave DS deve ser publicada no Registro.br antes da expiração da chave atual. Recomenda-se iniciar o rollover com 30 dias de antecedência para garantir propagação completa na hierarquia DNS.
Problemas comuns e como resolver
Sintoma: named não inicia após configurar DNSSEC no FreeBSD 14.3
Causa: erro de sintaxe no named.conf, permissões incorretas no diretório de chaves ou caminho inválido para o arquivo de zona.
Solução: execute named-checkconf -p /usr/local/etc/namedb/named.conf para ver o arquivo expandido e identificar o erro. Verifique as permissões: ls -la /usr/local/etc/namedb/keys/ — o dono deve ser bind:bind com permissão 750. Consulte o log em /var/log/messages ou via journalctl -u named para a mensagem exata de erro.
Sintoma: chave DS publicada no Registro.br mas dig retorna "bad signature"
Causa: o algoritmo ou digest da chave DS publicada não corresponde à KSK ativa no servidor, ou a zona ainda não foi re-assinada após a geração de novas chaves.
Solução: compare o hash DS publicado no Registro.br com o gerado localmente via dnssec-dsfromkey. Se diferentes, delete a entrada no painel do Registro.br e republique. Após qualquer mudança de chave, execute rndc loadkeys seudominio.com.br seguido de rndc sign seudominio.com.br para forçar a re-assinatura imediata.
Sintoma: transferência de zona AXFR falha entre primário e secundário
Causa: restrição de firewall bloqueando TCP/53, IP do secundário ausente na diretiva allow-transfer do primário, ou TSIG (Transaction Signature) configurado em apenas um dos servidores.
Solução: verifique no primário se a porta TCP 53 está aberta no pf: pfctl -sr | grep 53. Confirme que o IP do secundário está em allow-transfer no named.conf do primário. Se usar TSIG, ambos os servidores devem ter a mesma chave configurada. Teste a transferência manualmente: dig AXFR seudominio.com.br @203.0.113.1.
Sintoma: NSEC3PARAM ausente ou formato incorreto na zona assinada
Causa: a configuração KASP não especificou o parâmetro nsec3param ou a zona foi assinada previamente com NSEC (não NSEC3) e o inline signing manteve o formato antigo.
Solução: adicione explicitamente nsec3param iterations 0 optout no salt-length 0; dentro do bloco dnssec-policy. Depois force a re-assinatura completa: rndc signing -nsec3param 1 0 0 - seudominio.com.br. Aguarde alguns segundos e verifique: dig +short NSEC3PARAM seudominio.com.br.
Perguntas frequentes sobre DNS Registro.br com DNSSEC no FreeBSD 14.3
O DNSSEC é obrigatório para domínios .br no Registro.br?
O DNSSEC não é obrigatório, mas é fortemente recomendado pelo Registro.br para domínios .br. Ele protege contra ataques de envenenamento de cache DNS (DNS cache poisoning) ao assinar criptograficamente os registros da zona. A ativação é feita publicando a chave DS no painel do Registro.br após gerar as chaves KSK e ZSK no servidor autoritativo. Domínios sem DNSSEC ficam vulneráveis a ataques man-in-the-middle que redirecionam usuários para servidores maliciosos sem qualquer aviso visível.
Qual versão do BIND devo usar no FreeBSD 14.3 para suporte a DNSSEC?
No FreeBSD 14.3, o BIND disponível via ports e pkg é o BIND 9.18 (série ESV) ou BIND 9.20, ambos com suporte completo a DNSSEC, inline signing e KASP. Evite versões anteriores ao 9.16, pois não possuem suporte a KASP automático. Instale com pkg install bind918 ou bind920 conforme disponibilidade no repositório. O BIND 9.18 é a escolha mais conservadora para produção por ser a versão de suporte estendido (ESV) com patches de segurança garantidos por mais tempo.
Como automatizar a renovação de chaves DNSSEC no FreeBSD 14.3?
Com BIND 9.18+ e KASP habilitado, a renovação de chaves ZSK e KSK é automática via política definida no named.conf. O daemon named gerencia o ciclo de vida das chaves sem intervenção manual. Para zonas sem KASP, use um script cron que chama dnssec-keygen e rndc sign periodicamente, garantindo que a nova chave DS seja publicada no Registro.br antes da expiração da chave atual. O KASP com inline signing é a abordagem recomendada pois elimina o risco de expiração silenciosa de assinaturas.
Como verificar se o DNSSEC está funcionando corretamente para um domínio .br?
Execute dig +dnssec +short DNSKEY seudominio.com.br para verificar se as chaves estão publicadas. Use delv @8.8.8.8 seudominio.com.br A +rtrace para validação completa da cadeia de confiança — o output deve exibir ; fully validated. Ferramentas online como DNSViz (dnsviz.net) e Verisign DNSSEC Debugger também permitem visualizar graficamente a cadeia de assinatura e identificar erros de configuração sem precisar de acesso ao servidor.
Posso usar o FreeBSD 14.3 como servidor DNS autoritativo para domínios registrados no Registro.br?
Sim. O FreeBSD 14.3 com BIND 9.18+ funciona perfeitamente como servidor DNS autoritativo para domínios .br. Você precisa configurar pelo menos dois servidores NS (primário e secundário), registrar os glue records no Registro.br e publicar a chave DS para ativar o DNSSEC. O FreeBSD oferece suporte nativo a BIND via ports/pkg e o rc.d integra o named ao sistema de inicialização com sysrc named_enable="YES", garantindo disponibilidade após reinicializações.
Conclusão
- Instale o BIND 9.18 ou 9.20 no FreeBSD 14.3 via
pkg install bind918, configure o named.conf com KASP e inline signing para automatizar completamente o ciclo de vida das chaves DNSSEC sem scripts manuais. - Publique a chave DS no Registro.br imediatamente após gerar a KSK — use
dnssec-dsfromkeypara extrair o hash e insira no painel do Registro.br com algoritmo 13 (ECDSA P-256 SHA-256) para compatibilidade máxima. - Valide a cadeia de confiança com
delv @8.8.8.8 seudominio.com.br A +rtracee monitore diariamente via cron a expiração de RRSIG para evitar falhas silenciosas que impedem a resolução DNS para usuários com validação DNSSEC ativa.
Leia também
- Checklist de DNS: o que todo sysadmin precisa verificar
- Solucionar problemas de resolução de nomes DNS em VPS Linux e servidor dedicado
- Solucionar problemas de DNS no VPS Linux gratuito vs pago: vale a pena investir em 2025?
Precisa de ajuda com DNS e DNSSEC no seu servidor?
Configurar um servidor DNS autoritativo com DNSSEC requer precisão em cada etapa — da geração das chaves à propagação do registro DS. Um erro na publicação da chave pode tornar seu domínio .br irresolvível para milhões de usuários com resolvers validadores. Na AviraHost, os planos de VPS oferecem IP fixo, suporte técnico especializado e infraestrutura adequada para operar servidores BIND em produção.
Conheça os planos de VPS da AviraHost para hospedar seu servidor DNS autoritativo