Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10 Buster [Descontinuado]

Este tutorial foi atualizado:

Acesse Servidor DNS Bind9 – Recursivo + Autoritativo DNSSEC + Reverso + RPZ + Fail2ban + nftables + Zabbix no Debian 11 Bullseye

Não utilize este tutorial! Não apaguei o mesmo para deixa-lo para fins de estudos em cima do Debian 10.


(Descontinuado)


BIND (Berkeley Internet Name Domain ou, como chamado previamente, Berkeley Internet Name Daemon) é o servidor para o protocolo DNS mais utilizado na Internet, especialmente em sistemas do tipo Unix, onde ele pode ser considerado um padrão de fato.

Ante de iniciar a instalação é preciso saber como funciona um DNS:

Requesitos:
Debian 10 Stretch – Instalação Limpa

DNS RECURSIVO
O DNS recursivo é responsável pela resolução de nomes, começando sempre com consultar recursivas nos servidores raízes. Para melhorar a eficiência e reduzir o tráfego DNS na Internet e aumentar o desempenho em aplicativos de usuário final, fazendo o cache DNS, armazenando resultados de consulta DNS por um período de tempo determinado na configuração (tempo de vida determinado pelo autoritativo do domínio consultado).

DNS AUTORITIVO
É o serviço DNS que possui autoridade sob um domínio. Assim como servidor ns1.remontti.com.br é o DNS autoritativo de meu domínio remontti.com.br, é ele que sempre vai responder qualquer subdomínio “hosts” ex blog.remontti.com.br.
E esse servidor que você vai apontar nas configurações de um domínio, exemplo registrado no registro.br.

DNS REVERSO
DNS atua resolvendo o nome do domínio/subdomínio para um endereço IP correspondente. Já o DNS Reverso ele resolve o endereço IP buscando o nome de domínio associado ao host.
Ou seja, quando temos disponível o endereço IP de um host e não sabemos o endereço do domínio(nome dado à máquina ou outro equipamento que acesse uma rede), tentamos resolver o endereço IP através do DNS reverso que procura qual nome de domínio está associado aquele endereço.
Os servidores que utilizam o DNS Reverso conseguem verificar a autenticidade de endereços, verificando se o endereço IP atual corresponde ao endereço IP informado pelo servidor DNS.
Isto evita que alguém utilize um domínio que não lhe pertence para enviar spam, por exemplo (pois isso que ele é importante para servidores de e-mail).

DICAS
– Para que o DNS Reverso funcione no registro.br é importante que você já tenha configurado o DNS autoritativo, e aguarde sua publicação antes de fazer a designação. (Normalmente demoram 4 horas)
– Se você é um provedor, o correto seria você ter dois servidores DNS em sua rede, uma Master e outro Slave. Neste tutoria foi explicar como criar os dois!

PERGUNTAS FREQUENTES:
Preciso montar dois servidores?
Sim/Não, para a configuração do DNS autoritativo/reverso são necessários apontar dois endereços, no entanto nada impede de configurar dois IPs no mesmo servidor. Em alguns caso vejo as pessoas virtualizar 2 servidores (apenas DNS) na mesma maquina de virtualização, se pensarmos que se o servidor de virtualização para nada adianta ter 2 servidores, neste caso quem sabe seria mais interessante ter alguma outra aplicação rodando com o servido slave (pensando pelo lado aproveitamento de hardware). Então vai da sua realidade.

Preciso separar o recusivo do autoritativo/reverso?
Não! Ao não ser que você seja um grande data center com centenas de domínios autoritativos não vejo o motivo para separa-los. Na maioria das vezes que vi isso acontecer quem fez isso é porque não sabe como fechar as consultas recursivas para o mundo. E é ai que neste tutorial entra o fail2ban como a cereja do bolo.

Vamos iniciar com a instalação do servidor Master, lembrando que para isso estou usando a Distribuição linux Debian 10, com uma instalação que eu chamo de limpa.

Ex.: ASN – CIDR/22

Nesse exemplo vou usar um bloco /22, porém mais a baixo vou deixar um exemplo também para você que é dono destes “/22” e vai delegar um bloco menor que /24 para outra empresa que queira ter seu próprio servidor DNS resolvendo o reverso desse bloco delegado.

Bloco recebido: IPv4 – 45.80.48.0/22 IPv6 – 2804:f123::/32
Domínio autoritativo:: remontti.net.br

Antes de mais nada o mínimo de conhecimento é saber realizar cálculos de sub-redes.

:: ipcalc ::

:: ip6calc ::

Para ilustrar “nossa rede” conto com os seguintes servidore:

45.80.48.0/22 IPv6 – 2804:f123::/32

ROUTER GW -> 45.80.48.1 / 2804:f123:bebe:cafe::1 (cpd)
SERV DNS MASTER -> 45.80.48.2 / 2804:f123:bebe:cafe::2 (ns1)
SERV DNS SLAVE -> 45.80.48.3 / 2804:f123:bebe:cafe::3 (ns2)
SERV WEB + FTP -> 45.80.48.4 / 2804:f123:bebe:cafe::4 (www,ftp)
SERV ZABBIX + phpIPam -> 45.80.48.5 / 2804:f123:bebe:cafe::5 (zabbix,phpipam)
SERV E-MAILS -> 45.80.48.6 / 2804:f123:bebe:cafe::6 (mail,imap,pop,smtp,mx,dkim)

Dentro da rede ainda conto com alguns blocos de IPs inválidos 192.168.0.0/16, 172.16.0.0/12, 100.64.0.0/10 e 10.0.0.0/8 utilizando NAT que por ventura também preciso autoriza-los a fazer consultas recursivas no servidores.

Tenha sua interface de rede configurada corretamente.

MASTER (NS1)

Pronto! O servidor recursivo já está funcionando, porém ele está aberto, e isso não é nada legal!
Você não vai querer “qualquer um” utilizando seu servidor para resolver nomes. Resolveremos isso mais a frente no arquivo named.conf.options.

Alteramos o DNS do servidor fazendo com que ele consulte em si próprio. Essa alteração deve ser feita no arquivo /etc/resolv.conf.

Para descobrir se seu servidor esta resolvendo nomes use o comando dig.

Retornará algo como:

Os arquivos de configuração do bind ficam no diretório /etc/bind/ e agora no Debian 10 Buster também separando os root servers em /usr/share/dns/

Iremos alterar o named.conf.options, o próprio nome já se auto descreve o que vamos encontrar nele.
Sempre gosto de preservar o arquivo original, então fizemos um backup antes de modifica-lo.

Aqui vai uma dica para que usa Windows + Putty, tome cuidado ao colar, principalmente quem usa Windows 10 “ele copia caracteres imaginários que você não vê!”.
Recomento usar o Bitvise SSH Client que é muito superior

Explicação comentada no arquivo.

Legal agora o servidor Recursivo já está funcionando e limitando os IPs que poderão realizar consultas ao mesmo.
Caso você não queria seu servidor sendo recursivo altere na ACL autorizados deixando apenas 127.0.0.1 e ::1.

Se seu servidor não tiver IPv6? (Que triste rsrsrs) Recomendo que desative o ipv6 no bind.

Adicione um -4 em OPTIONS.

Altere listen-on-v6 para none.

Toda alteração feita no bind para ter efeito é necessário restartar o serviço.

Se desejar remover os comentários do named.conf.options execute:

Para verificar se seu arquivo tem algum erro use o comando named-checkconf

Se nada retornar é porque não tem nenhum erro.
Vou deixar proposital mente faltando um “;” depois do 45.80.48.0/22. Veja o que retornou um altera dizendo que falta ponto virgula antes do IPv6, ou seja onde esta o IPv4/22.

Verifique também o status do bind para ver se o mesmo era rodando.

Verifique se está: “active (running)”

Antes configurar o Autoritativo e Reverso precisamos pensar na segurança do Recursivo.
Para isso utilizaremos o Fail2Ban e fazer algumas alterações para deixa-lo bem “nervoso”!

Fail2Ban + nftables

Fail2Ban é uma estrutura de software de prevenção de intrusões que protege os servidores de computadores contra ataques de força bruta, que opera monitorando arquivos de logs. Sendo o mais comum usado para bloquear endereços IPs selecionados que podem pertencer a hosts que estão tentando violar a segurança.

Como o iptables está sendo substituído por nftables começando com o Debian Buster, vamos configurar o Fail2Ban para usar o nftables como padrão.
Mas vou ir além em vez de usar o filtro multiport vou setar allports e modifica-lo para que quando uma tentativa de violação acontecer o Fail2Ban crie uma regra de firewall que dropa definitivamente o IP e não apenas fechando a porta do serviço para “invasor”.

Procure por “banaction = iptables-multiport” e “banaction_allports = iptables-allports” e altere seu valor para “nftables-allports”:

Altere o modo de bloqueio em nftables-allports.conf para fazer que ele de um “drop all”.

Procure por nftables_mode = meta l4proto e altere deixando seu valor vazio:

Em nftables-common.conf alteraremos o padrão de reject para drop

Procure por “blocktype = reject” e altere seu valor para “drop”.

Melhorias feitas, precisamos ativar o filtro para ler os logs do bind, porém ao ativar o filtro named-refused me deparei com seu não funcionamento, e quebrando a cabeça descobri que os logs do bind estão diferente e a expressão regular do filtro está errada. Os desenvolvedores do fail2ban já fizeram a correção, mas acredito que irá levar um tempo para o pessoal do Debian fazer um novo empacotamento.
A correção pode ser feita editando o arquivo /etc/fail2ban/filter.d/named-refused.conf

Porém como eu vou ser mais “bruto” no filtro. Vou criar nosso próprio filtro bind9, vamos lá!

Adicone no arquivo:

Ativamos o filtro que criamos, e definir um tempo de banimento por 24h você pode ajustar para mais se achar necessário. E “maxretry” que é a quantidade de tentativas para 1.

Adicione no arquivo:

Vale lembrar que o filtro de SSH já vem ativo por padrão em “/etc/fail2ban/jail.d/defaults-debian.conf”.

Precisamos fazer o bind gerar os logs com tentativas de consultas negadas (denied), incluído logging {…} no arquivo named.conf.

Crie o diretório onde o bind vai registrar seus logs e de permissão para que possa gravar nesta pasta.

É importante ativar o nftables na inicialização e restartar os serviços para que nossas configurações sejam interpretadas.

Para visualizar seu firewall use o comando:

Note que ja temos alguns IPs sendo dropado por tentativas de consulta no DNS e SSH.

Alguns comandos legais do fail2ban

Veja quais filtros estão ativos

Ex:

Para remover um IP que foi bloqueado basta:

Pronto agora já temos um servidor DNS com um nível de segurança bem elevado!

Autoritativo (ns1)

Agora é aquela hora que precisamos ter planejado o que iríamos fazer com nosso IPs recebidos.

Para ficar organizado vou criar a pasta master-aut onde ficará os arquivos de hosts dos domínios autoritativos.

Crie o arquivo remontti.net.br.hosts na pasta master-rev. Ajuste remontti.net.br para seu domínio.

Chamaremos a zone remontti.net.br em named.conf.local

Adicione ao final do arquivo:

De permissões ao diretório/arquivo criados

Restart o serviço.

Testamos agora para ver se está resolvendo nosso domínio.

Testes:

Seu autoritativo já está funcionado, você já é possível registrar seu domínio (claro ainda falta o slave).

Neste momento você pode verificar no registro.br se seu servidor já tem autoridade sobre o domínio que configurou.
Mas antes vamos ajustar o fail2ban para ignorar os ips do Registro.br pois muitas pessoas acabam configurando errado seu DNS e na hora de verificar acabam bloqueando o registro.br (Isso acontece porque quando você for validar se o seu DNS não estiver certo, ele vai achar que o registro.br esta tentando resolver o “dominio qualquer” que você não é autoritativo), para isso faça:

Localize “ignoreip =” e adicione os blocos do registro.br (200.160.0.0/20 200.219.148.0/24 2001:12ff::/32 2001:12f8:6::/47) se desajar pode incluir seu bloco de ips dos servidores, principalmente o ip do servidor Slave para evitar que ele também seja bloqueado (no meu ex. os 45.80.48.3 e 2804:f123:bebe:cafe::3)

Reinicie o fail2ban

Acessando: Ferramentas Registro BR

Se o STATUS for “Autoridade sobre o domínio” parabéns suas configurações estão respondendo corretamente.

Reverso (ns1)

Obs: Para fazer a Delegações de DNS reverso do seu bloco, é importante que você já tenha configurado no registro.br seu DNS autoritativo.

O bloco 45.80.48.0/22 será necessário quebrar em 4 blocos /24 tendo uma configuração para cada /24 Como já planejado no autoritativo vamos ter que dar nomes a todos os IPs. Vale lembrar que todos esses nomes de hosts é permitido apenas um nome por IP, e cada nome desses deve ser configurado no autoritativo.

Primeiro arquivo/24 45.80.48.rev

Preste atenção em 48.80.45.in-addr.arpa. essa linha ela deve ser alterada com o inverso do seu IP.
Outra coisa importante é o serial (2020062300) ele esta presente em todos os arquivos e deve ser alterado toda vez que for alterado. Ele segue o padrão [ano-mes-dia-sequencial]. É fundamental altera-lo para que o servidor slave copie sempre que tiver uma alteração.

Não podemos esquecer nosso reverso do IPv6! Antes que alguém pergunte (novamente) posso configurar o reverso de todos os IPv6? Bom você precisa saber que precisa resolver 79.228.162.514.264.337.593.543.950.336 (2^96) endereços IPv6, e isso é algo quase impossível! Informaremos apenas os nomes a ipv6 fixos.

Este site http://rdns6.com/hostRecord pode ser bem útil para gerar seus PTRs.
Para finalizar acertando as permissões.

Precisamos informar nossas zonas reversas no named.conf.local, como estamos configurando nosso servidor master essas zonas serão do tipo (type) master e para informar o arquivo onde está a configuração da zone usamos o parâmetro file /caminho-completo/arquivo

Adicione ao final do arquivo:

Para ficar fácil acesso criamos uma atalhos das nossas pastas master-* dentro de /etc/bind

Restart o serviço e veja se esta rodando sem erros.

Vamos ver se ele já está resolvendo nosso IP então?

Como pode ver todos os endereços estão resolvendo seus nomes.

Reverso pronto!

Atualizando ROOT SERVERS

Para finalizar o master vamos fazer uma atualização no root server que na versão do debian 10 buster passou a ser /usr/share/dns/root.hints. A vesão instalada é de 13/03/2019 “last update: March 13, 2019”

Para obter uma versão mais recente, iremos mover nosso arquivo root.hints e baixar um novo.

Pode editar o arquivo /usr/share/dns/root.hints e verificar qual é a ultima atualização, (hoje 19/07/2019) ele esta: “last update: July 03, 2019”. Reinicie o serviço para ter efeito.

Parabéns! Seu servidor master está pronto!

SLAVE (ns2)

Praticamente o processo se repete, com algumas alterações sendo necessário apenas configurar:
named.conf (Gerar log)
named.conf.local (Incluir as zonas)
named.conf.options (Setar nossas opções)

Alterar o DNS do servidor:

No named.conf.options unica coisa em relação ao master é que vai alterar allow-transfer para none e remover o also-notify.

Para organizar criamos duas pastas slave-rev e slave-aut é importante dar permissões para o usuário bind, pois ele precisa importar as configurações do master e vai escrever nelas.

Não é mais necessário criar os arquivos, esses serão transferidos do servidor master. Basta informarmos em nossas zonas do arquivo named.conf.local, que serão do tipo (slave) e apontaremos o IP do master para que nosso servidor slave faça a transferência do master.

Restart o serviço verifique se não teve nenhum erro e verifique dentro dos diretórios slave-aut/slave-rev se os arquivos foram criados.

Para ficar fácil acesso criamos uma atalhos das nossas pastas slave-* dentro de /etc/bind

Se os mesmo foram criados seu DNS já está praticamente pronto!

Volte o tutorial e refaça a parte:
Fail2Ban + nftables
Atualizando ROOT SERVERS
Isso é primordial para segurança do servidor!

Gostou?

Se você tiver interesse no Curso de DNS clique aqui, quem sabe você de sorte de ter uma turma aberta.

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Ahhh não terminei, ainda falta a configuração do nosso /28.

Reverso de blocos menores que /24 – Ex.: CIDR/28

Antes de mais nada você deve ler ao menos como foi configurado o /22, pois será necessários que você compreenda e faça também o procedimentos:
Fail2Ban + nftables
Atualizando ROOT SERVERS

Vamos supor que você recebeu um /28 e queira ter seu reverso respondendo sobre esses bloco.
A primeira coisa que você precisa saber que isso só será possivel se o dono do ASN fizer a configurações em seu servidor DNS (rfc2317), não basta ele simplismente ir la no registro.br e delegar esse /28 para você, e é claro que ele também precisa fazer isso!
Se ficar em dúvidas recomendo ver que assista: DNS e DNS Reverso (~20min fala sobre isso)

Então se você é o responsável pelo ASN você deve fazer o seguinte na configuração no seu arquivo reverso. No exemplo anterior deixamos já o 45.80.49.64/26 para esses casos, e no exemplo vamos delegar um /28 para o “Provedor do José”.

Configuração feita pelo o dono do ASN, vamos as configurações do José que recebeu o bloco /28, e quer seus DNS respondendo por eles. Vamos supor que 45.80.49.66 e 45.80.49.67 sejam seu servidores DNS Master/Slave.

:: Autoritativo ::

:: Reverso ::

:: Zonas ::

Dica extra – Ativando um proxy DNS

Vamos supor que você deseja fazer as consultar DNS em um DNS como o 8.8.8.8 entre outros em vezes de ir direto aos roots como seria?

Gostou?

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Abraço!

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

102 Resultados

  1. Igor disse:

    Um dúvida, me perdoem a ignorância, comecei agora com linux e tenho um servidor parado em casa.
    Gostaria de usar como DNS seguindo esses passos.
    Eu preciso de um IP dedicado?
    Posso apenas usar meus IPV4 local?
    Ou devo usar o IPV4 do meu provedor?
    Meu provedor também tem um DNS caso seja possivel usar o deve posso vir a ter problemas?

  2. iManjate disse:

    Meus parabens pelo excelente material.

  3. Francisco César disse:

    Rudimar bom dia,
    Seu eu configurar o proxy DNS ele vai sempre encaminhar para os encaminhadores tipo 8.8.8.8 ou 1.1.1.1 ? Ou não ele tenta resolver com o que está em cache e nos root-servers e caso negativo ele manda para os encaminhadores.
    Obrigado desde já e parabéns.

  4. felipe disse:

    bom dia amigo! poderia min fala o porque das seguintes msg no comando (systemctl status bind9).

    jul 30 10:40:19 server named[16554]: REFUSED unexpected RCODE resolving ‘cl4.g.a
    aplimg.com/TYPE65/IN’: 208.67.222.222#53
    jul 30 10:42:28 server named[16554]: REFUSED unexpected RCODE resolving ‘p45-con
    tent.icloud.com/TYPE65/IN’: 208.67.220.220#53
    jul 30 10:42:29 server named[16554]: REFUSED unexpected RCODE resolving ‘content
    .fe.apple-dns.net/TYPE65/IN’: 208.67.220.220#53
    jul 30 10:42:29 server named[16554]: REFUSED unexpected RCODE resolving ‘pancake
    .cdn-apple.com.akadns.net/TYPE65/IN’: 208.67.220.220#53
    jul 30 10:42:29 server named[16554]: REFUSED unexpected RCODE resolving ‘pancake
    .g.aaplimg.com/TYPE65/IN’: 208.67.220.220#53
    jul 30 10:47:26 server named[16554]: validating service2.br.incognia.com/A: no v
    alid signature found
    jul 30 10:47:32 server named[16554]: REFUSED unexpected RCODE resolving ‘r5—sn
    -pmcg-bg0l.googlevideo.com.meuintelbras.local/A/IN’: 1.0.0.1#53
    jul 30 10:47:33 server named[16554]: REFUSED unexpected RCODE resolving ‘i.insta
    gram.com.meuintelbras.local/A/IN’: 1.0.0.1#53
    jul 30 10:47:35 server named[16554]: REFUSED unexpected RCODE resolving ‘www.mya
    ppswizard.com.br.meuintelbras.local/A/IN’: 1.0.0.1#53
    jul 30 10:50:18 server named[16554]: validating h8j6j53.x.incapdns.net/A: no val
    id signature found

    sao erros, ou seria normau isso?
    grato amigo, fica na paz.

  5. ppcarvalhof disse:

    Tutorial 100% “felomenal”!!! Parabéns!

    Estou com uma (única) dificuldade no meu DNS. Consigo respostas PTR para endereços de hosts em IPv6 normalmente (quando indico os 128 bits) mas, não consigo gerar uma entrada para responder PTR para um prefixo inteiro (por exemplo 2001:db0:cafe::/64). É possível? No v4 eu segui a sugestão do ‘$GENERATE’ e funciona a contento. No v6… rs

  6. 0penS0urc3 disse:

    Tópico show de bola so tem 1 problema que não foi mencionado

    mesmo usando o nftables e todo o aparato de seguranca o seu servidor recursivo ainda fica exposto a ataques de amplificacão de DNS vindo de fora da sua rede, com algum IP seu autorizado nas ACLs em spoof, ou algum IP seu autorizado efetuando ataque de DNS amplificado..

    O correto é usar 2 servidores distindos, um servidor Autoritário em máquina fisica ou virtual OS Separado onde você desabilita a funcão recursion.. setado como NO.

    e depois criar o dns recursivo separado com as ACls autorizando somente os seus IPs , e depois vai trabalhar com o modelo de VIEWS..
    VIEWS interna e externa.. o modeo externo em options configurar como recursion-allow { no };

    e nas view interna setar como recursion-allow { yes };

    no geral o restante está tudo correto.

    • Faz um tutorial e compartilha com a comunidade tchê! Abraço.

      • 0p3nS0urc3 disse:

        Buenas.. apenas fiz um adicional ao seu tópico que está completo..

        outra coisa que notei foi que os IPs internos privados não são filtrados no queries.logs e clients.logs.. pelos ips privados internos, mas sim pelo IP publico gateway então a partida não tem como filtrar allow-recursion { autorizados;} ; porque não funciona todos os outros IPs externos que chegam de fora da sua rede.. 44.xx.xx.xx 65.xx.x.x.xx eles entram como requisisão pelo 45.80.48.1 gateway…

        fiz os testes aqui montei o setup e segui os seus passos no tutorial umpor um só mudei os ips publicos por nossos ips do ASN.. o restante fiz igual.. e quando vejo nos logs as requesicões externas que não deveriam ter autorizacão das allow-recursion estava passando pelo IP do gateway… como o IP do gateway está habilitado na lista bloco autorizados e também no firewal nftables.. e fail2ban com o bloco autorizado pra comunicacão logo a partida todo o restante ficou inviabilizado.. sem contar que os ips internos locais sequer aparecem no log apenas o IP do gateway.. enquanto que todos os outros clientes com IPs publicos do bloco autorizado aparece a requesicão como IP publico separado.. e não o gateway.. como aparece nos ips externos e nos ips internos privados..

        Mas como falei show de bola o seu tutorial.. elucida muita coisa.

  7. jhonatan disse:

    Bom dia.
    O servidor Master esta ok ! mais não consigo subir o Slave.
    ja tentei de varias formas, me retorna esta mensagem na tela.

    /etc/bind/named.conf.local:208: writeable file ‘/var/cache/bind/slave-rev/131.0.187.rev’: already in use: /etc/bind/named.conf.local:140

  8. Arthur disse:

    Já refiz esse tutorial 10x, e nunca consegui autoridade no registro.br, é como se faltasse alguma coisa sempre. :/

    • Qual erro? Chaga lá no grupo do telegram e manda print q a galera ajuda.

    • 0p3ns0urc3 disse:

      Sim falta.. você tem que retirar os DNS servidores do registro.br.. lá no dominio em editar e apontar ele para os seus DNS servidores que terminou de configurar, aguardar umas horas e esperar até ser atualizado.. depois efetue os testes novamente que volta a funcionar.

      caso de outro tipo de resposta como desconhecido , verifique os passos 1 por 1..

  9. Isaac disse:

    Olá Rudimar, muito bom seu material, está de parabéns.

    Segui seu tutorial com o objetivo de anunciar os reversos no registro.br. Mas não funcionou.

    Quando vou registrar volta a seguinte mensagem:

    O Servidor 1 contém erros:
    1xx.x7.191.in-addr.arpa – DNS desconhecido

    Nos testes na maquina local:

    root@srv3:/var/cache/bind/master-rev# dig -x 191.x7.1xx @localhost

    ; <> DiG 9.11.5-P4-5.1+deb10u2-Debian <> -x 191.x7.1xx @localhost
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16379
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; COOKIE: 5ff367704856f53c686bc738602e707e6fb5288ca1999f81 (good)
    ;; QUESTION SECTION:
    ;1xx.x7.191.in-addr.arpa. IN PTR

    ;; AUTHORITY SECTION:
    1xx.x7.191.in-addr.arpa. 300 IN SOA ns1.meudominio.com.br. hostmaster.meudominio.com.br. 2021021702 10800 3600 2419200 300

    ;; Query time: 20 msec
    ;; SERVER: ::1#53(::1)
    ;; WHEN: qui fev 18 10:49:50 -03 2021
    ;; MSG SIZE rcvd: 153

    Poderia ajudar com alguma dica do que pode estar acontecendo?

    Grato.

  10. MS Santos disse:

    Opa rudimar

    Estou lendo e estudando mais sobre o assunto, mais fiquei com uma dúvida o que exatamente essa instrução faz no arquivo remontti.net.br.host

    $ORIGIN remontti.net.br.
    $GENERATE 7-31 ns-$ A 45.80.48.$

    $ORIGIN remontti.net.br.
    $GENERATE 32-255 45-80-48-$ A 45.80.48.$

    $ORIGIN remontti.net.br.
    $GENERATE 0-255 45-80-49-$ A 45.80.49.$

    $ORIGIN remontti.net.br.
    $GENERATE 0-255 45-80-50-$ A 45.80.50.$

    $ORIGIN remontti.net.br.
    $GENERATE 0-255 45-80-51-$ A 45.80.51.$

  11. Alexandre de Moraes disse:

    ótimo tutorial
    muito obrigado
    só faltou o dnssec.

  12. Fabio disse:

    Boa tarde, quero lhe agradecer por disponibilizar um conteúdo de qualidade, seguindo seu tutorial, consegui implementar o servidor corretamente.

    Gostaria de saber se é possível configurar zonas reversas e hyperlocal ao mesmo tempo.

    • Fabio disse:

      Consegui configurar o hyperlocal alterando o para dentro do view no named.conf a configuração do reverso e comentando a linha # include “/etc/bind/named.conf.local”;

  13. Maycon disse:

    Quando executo o comando named-checkzone ele exibe a msg “bash: named-checkzone: comando não encontrado”
    Já reinstalei o Debian conforme o tutorial https://blog.remontti.com.br/2966 já reinstalei o bind9 e o dnsutils.

    Tentei o Debian 10.5 e o 10.6 e o meu repositório é o deb.debian.org.

  14. Bom dia! excelente tutorial, eu estou com um pequeno problema, o que acontece quando faço a pesquisa no registro.BR está dando erro de DNS. O que eu posso fazer para resolver ?
    Outro item eu uso uma hospedagem e o domínio do uolhost daria algum problema, tenho que fazer alguma modificação na minha linha de código ?

  15. Miguel disse:

    Parabéns pelo excelente post! estou com um problema no reverso, quando testo no site exemplo meuip nunca diz o meu reverso, pode ser o Fail2ban ou nftables?

  16. Fernando Hermann disse:

    Parabéns
    Ótimo material.

  17. Excelente material.
    Preciso adicionar um host no dns recursivo, pois este host só existe dentro da minha rede
    nao gostaria de adiciona-lo no autoritativo pois ele informa o mesmo para todos os raiz e é um ip privado e “secreto”.
    Tentei adicionar no /etc/hosts e nao deu.
    Onde seria o local mais correto e principalmente funcional ?

  18. Arthur Bernardes disse:

    Somente agradecer pelo seu blog que muito agrega em nossa comunidade e também pelo curso de DNS, participei dele e aprendi muita coisa nova! Parabéns!

  19. Olá Rudimar, tudo bom?

    Por favor, estou iniciando um Data Center para Hospedagem e Web Service. Para isso, preciso montar um DNS server.

    É tranquilo deixar os 3 serviços DNS rodando na mesma máquina?
    Se sim, tem ideia do hardware que preciso? O que é mais necessário, Processador e/ou Memória RAM?

    Desde já, agradeço a resposta.

  20. Danilo Favacho disse:

    Olá Rudimar, criei o arquivo de zona do dominio.com.br e fiz o apontamento no named.conf.local (master e slave), mas quando vou mudar os servidores de DNS no registro.br ele dá tempo esgotado no servidor Slave. Você sabe o que pode ser? Obrigado.

    • Verifica se o fail2ban não dropou o ip do registro.br por algum erro de digitação. (vou atualizar o tutorial incluindo os ips do registro para o fail2ban ignorar)

    • Atualização no tutorial:
      Para ignorar os ips do Registro.br pois muitas pessoas acabam configurando errado seu DNS e na hora de verificar acabam bloqueando o registro.br (Isso acontece porque quando você for validar se o seu DNS não estiver certo, ele vai achar que o registro.br esta tentando resolver o “dominio qualquer” que você não é autoritativo), para isso faça:

      Localize “ignoreip =” e adicione os blocos do registro.br (200.160.0.0/20 e 2001:12ff::/32) se desajar pode incluir seu bloco de ips dos servidores, principalmente o ip do servidor Slave para evitar que ele também seja bloqueado (no meu ex. os 45.80.48.3 e 2804:f123:bebe:cafe::3)

      Reinicie o fail2ban

  21. Danilo Favacho disse:

    Bom dia. Gostaria de agradecer pelo excelente tutorial e ótima didática. Fiz tudo e funcionou perfeitamente. Só estou em dúvida agora como faço para adicionar outros domínios nesse servidor DNS para que ele controle sobre os mesmos. Desde já agradeço o espaço.

  22. Leonardo disse:

    Como monitorar o bind9 com o zabbix?

  23. Pedro disse:

    Boa noite consigo rodar 2 instancias do bind9 na mesma máquina, meu poweredge é uma versão mais antiga que não suporta vm

    porém tenho 4 placas intel giga onde gostaria de adicionar o slave ns2, já tenho ns1 configurado e funcionando

  24. Analberto Rodrigues disse:

    Excelente, fiz praticamente um copy and paste, alterando só o ip, funcionou perfeito de primeira. Usei o debian 10.

  25. Ismael Melo disse:

    Boa tarde, muito bom conteúdo assim que poder estarei contribuindo.

  26. Rafael disse:

    Muito bom, parabéns.

  27. Excelente material Rudimar.
    Você possui algo relacionado a DNS Anycast?

  28. Lucas disse:

    olá, me chamo lucas e gosto muito do conteúdo no seu site, porém tiver problemas para configurar o dns server e não estou conseguindo identificar o que é, poderia me ajudar? eu até consegui delegar meu bloco ip no registro para os dois servidores porem não está resolvendo o reverso e parece que meu master deu algum problema quando subi o secundário. eu faço o teste pelo ipok.com.br meu domínio é connectt.net.br poderia me dar uma luz pra eu tentar resolver?

  29. wedson R. disse:

    Primeiro parabéns pelo excelente artigo irei seguir ao pé da letra. Minha pergunta é a seguinte: em um ambiente virtualizado quanto de memoria dedico ou não seria viavel usar uma vm ? pergunto isso pois temos um bom hardware parado e desejamos subir um vmware.

  30. Boa noite Rudimar! SImplesmente, me deixou confuso um ponto que não consigo discernir por conta.
    Sou recém formado em gestão de Redes de Computadores, mas o nosso maior foco foi ITIL e Governança. Peguei esse post para treinar.
    Primeira dúvida…. todos esses IPs que você relacionou…. são IPs públicos???
    Segunda dúvida… Caso os IPs sejam IPs internos, tirando a parte de desbloqueio de portas junto ao provedor, o que tenho em mãos é um domínio na GoDaddy. Dentro desse tutorial maravilhoso, onde eu ajusto para que as coisas funcionem???

  31. Madson disse:

    Muito bom, o que eu mais gostei é que não é só uma passo a passo explica muito bem!

  32. diego disse:

    não consigo prosseguir, esta dando esse erro quando reinicio o dns, eu removi a parte do IPv6 porque não uso;
    e pulei a parte do fail2ban + nftables

    zone xxx.xxx.45.in-addr.arpa/IN: loading from master file /var/cache/bind/master-rev/45.xx.xx.rev failed: unexpected end of input

  33. Junior disse:

    O fail2ban sempre fica bloqueando meu próprio bloco de ip, revo os bloqueados e retorna bloquear depois de algum tempo, teria como setar todo o bloco /22 para não ter esse bloqueio pelo fail2ban.
    No mais excelente tutorial, como todos os outros de seu Blog. Parabéns.

    • Sim, em /etc/fail2ban/jail.conf opção ignoreip, mas se ele ta bloqueando é pq vc não autorizou o bind a resolver para seu bloco, não vai solucionar o problema. certifique-se que na sua acl autorizados tenha todos seus prefixos.

      • Giorgio Lago disse:

        Revi o tutorial inteiro, estou com o mesmo problema só usando o ignoreip que parou de bloquear meu bloco, no mais ta muito perfeito o tutorial ! vc sabe o que pode ser ?

  34. Vinicius Cunha disse:

    Excelente o conteúdo.
    Estou encontrando um probleminha no meu Reverso. Em todos os sites que testo(IP-OK dentre outros) acusa que meu reverso está errado (Erro ao consultar reverso para o IP xx.xxx.xxx.xx Valor solicitado não existe. (NXDOMAIN)”
    Porém, todos os testes sugeridos( dig-x e host) logo acima responderam corretamente, inclusive no Slave.
    Os endereços já estão setados no registro.br e possuo autoridade no domínio. O que será que deixei passar?

  35. Ferreira disse:

    Hardware adequado para fazer esse servidor?

  36. Allan disse:

    Bom dia Rudimar,

    Desde já muito obrigado pelo excelente material.

    Me deparei com um problema e ainda não consegui resolver ao testar o dominio com “# dig ANY ns1.remontti.net.br @localhost” (alterei para o meu dominio) ele não conseguiu resolver, me retornou o erro abaixo:

    root@dns-1:/home/allan# dig ANY ns1.sejalev.com.br @localhost
    ;; Connection to ::1#53(::1) for ns1.sejalev.com.br failed: connection refused.

    ; <> DiG 9.11.5-P4-5.1-Debian <> ANY ns1.sejalev.com.br @localhost
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 30770
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ; COOKIE: 7551395d84b22fa0a2a3a0ba5d988b00f73afb8f2059641b (good)
    ;; QUESTION SECTION:
    ;ns1.sejalev.com.br. IN ANY

    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: sáb out 05 09:22:24 -03 2019
    ;; MSG SIZE rcvd: 75

    root@dns-1:/home/allan#

    Alguma luz?

  37. Jucimar Banowski disse:

    Parabéns pelo tutorial… Consigo deixar o autoritativo em um serviço de hospedagem por exemplo e o Reverso e Recursivo no meu servidor? Sendo que é um domínio apenas… (empresa.com.br);

  38. Daniel Gattai disse:

    Boa noite, Rudimar, muito bom material ficou otimo, te perguntar estou tentando colocar o DNSSEC, na serviço criado encima do tutorial mais quando vou rodar o dnssec-keygen, ele informa comando não encontrado, ja teve esse problama antes?

  39. Thiago Pinheiro disse:

    Parabéns pelo material !!….Amigo só duas duvidas, que tive lendo o conteúdo, que seria quando configurado DNS de forma Recursiva ele não procura primeiro nas Zonas (Autoritativo local) para só depois consultar os servidores Rais/ externo?….Eu consigo configurar (colocando o “*”) no CNAME para que todas as consultas recursivas apontem para um IP qualquer (A/ hostname) interno a rede /LAN ou IP na MAN/externo ?…muito obrigado e forte abraço!!…parabéns mais uma vez !!

    • Obrigado! De uma pesquisada sobre response-policy acredito que ele vai ser sua solução. Pensando aqui daria até um bom tutorial, aqui uso um dns onde “todos” os domínios (shallalist) impróprios são resolvidos por um servidor que mostra q conteúdo é inadequado.

      • Thiago Pinheiro disse:

        …muito obrigado Rudimar !!…irei olhar sim e uso facebook para salvar seu site 🙂 hehe …!!….Parabéns e perdão na demora na minha resposta , eu penso em fazer 2 Gateway na LAN e jogar todas consultas recursivas DNS interna e externa (engaiolado com OpenSUSE) a minha rede para um servidor CGI Proxy e, dele fazer as consultas nos servidores Rais….Muito obrigado mais uma vez , Rudimar !! irei acompanha-lo voce é Fera !!…

      • Por exemplo a Função desse “*” ?..ele é um coringa digamos assim para “www” ou “http” ou ainda “https://” ? ou qualquer coisa a frente dele ?……Ex: se coloco (sem aspas e parênteses) : o (“*.*.com.*” ) ,então, quer dizer que qualquer entrada que contiver pelo menos o (“.com” ) o bind resolve ?…..Grato, rudimar !!.. 🙂
        ______________________________________________________________
        $ TTL 2h; TTL padrão
        @ SOA nons.blocked.com. noemail.blocked.com. 2018031404 12h 15m 3w 2h
        @ NS nons.blocked.com

        CNAME badsite1.com.
        CNAME badsite2.com.
        * .badsite2.com CNAME.
        ______________________________________________________________
        https://cleanbrowsing.org/articles/rpz-response-policy-zones.php

        Trecho do material acima , achei na web …

        • http e https sao serviçoes (porta 80 e 443) nao tem nada haver. seria para qlqr subdomínos ex *.remontti.com.br

          • Thiago Pinheiro disse:

            Entendi, Rudimar….Acredita ser possivel uma configuração no Bind onde eu consiga apontar todas as entradas de solicitações de consultas no DNS recursivo ouvindo interno e externo a rede LAN, para resolução de nomes ? estou estudando Responde-Policy conforme me orientou , porém, eu precisaria que alguma coisa do tipo fosse configurável no Bind sem uso de ferramentas como DNSChef (ele alterar todas as entradas DNS na porta 53 apontando elas para um IP que voce quiser )……Muito obrigado, Rudimar !!..suas elucidações são de muita ajuda !!…..vou sempre acompanhar seu Blog !!…voce é Fera !!…Forte abraço !! 🙂

          • Que diabos vc ta tentando faze? É um hacker querendo direcionar tudo para algo seu? 😛

  40. JARDIEL disse:

    Tem como fazer reverso apenas com um maquina?

  41. Junior disse:

    Excelente material!!! Parabéns..
    Rudimar, na parte em que o slave tenta copiar as zonas do máster não vai.
    O fail2ban acaba bloqueando o ip do slave. Eu libero o slave no firewall, mas ele acaba voltando.
    Outro ponto é que a ferramenta do registro não confirma meu dns, esta dando tempo esgotado ou desconhecido.

  42. Excelente tutorial. Uma dúvida, você que o bind como recursivo tem desempenho melhor que o unbound.

  43. Wando Santos disse:

    Caro Rudimar Remontti, primeiramente quero parabeniza-lo pelo tutorial e pelo blog, pessoas como você que propaga conhecimento faz do mundo um lugar melhor. Também gostaria de saber qual o procedimento para que uma página web hospedada em servidores de terceiros funcione após a configuração dos servidores DNS como descrito neste tutorial. Pois, após configurar-lo e cadastrar no registro.br os ns, o site parou de funcionar.

  44. Paulo Jr Andrade disse:

    Bom dia Rudimar, primeiro parabéns pelo tutorial. Admiro muito seu trabalho e auxilio a nós pobres ignorantes rsrsrs
    Rudimar, para eu ter um autoritativo, vejo q vc setou um servidor de email… é necessário? Se sim você tem um tutorial para criar um básico, mas funcional.
    Pois já montei um autoritativo usando o metodo anterior que você postou, porem em alguns casos estou tendo retorno de erro

    ** server can’t find dns1.xxxx.com.br: NXDOMAIN

    seria falta de servidor de email ???

  45. Paulo Morais disse:

    Excelente material, muito didático parabéns pelo conteúdo, seu blog ajuda muito com tantos detalhes, espero que atualize todos os posts, gostei demais desse update para o Buster.

  1. 10 de dezembro de 2019

    […] – Saber que esse procedimento exige conhecimento 🙂 1 – Ter configurado DNS Autoritativo e Reverso sobre seus IPS. 2 – Debian 10 Buster instalação limpa 3 – Não ter seu endereço IP listado em […]

  2. 12 de março de 2020

    […] Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10… […]

  3. 8 de abril de 2020

    […] No exemplo vou configurar o apache para librespeed.remontti.com.br, logo é necessário configurar seu subdomínio “librespeed” (ou nome da sua escolha) em seu DNS Server. […]

  4. 30 de junho de 2020

    […] System SECurity extensions) em seus domínios autoritativos. Usarei um exemplo de configuração seguindo a topologia adotada já em tutoriais do bind9 publicados aqui no blog. Então neste exemplo usarei de modelo o domínios cursodns.com.br (Aproveitando fazer um […]

  5. 25 de julho de 2020

    […] Pressupõe que você tenha um servidor DNS em funcionamento (eu uso o bind9). […]

  6. 25 de agosto de 2020

    […] Instalação do servidor DNS será com base no tutorial: Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10… […]

  7. 25 de agosto de 2020

    […] WEB. logo nossos requezitos são: – Instalação Debian 10 Buster LIMPA Passo-a-passo – Servidor DNS seguro com Bind9 (Recursivo, Autoritativo e Reverso) + Fail2ban + nftables no Debian 10… – Passo-a-passo como criar um servidor WEB Apache + PHP + MariaDB + phpMyAdmin no Debian 10 […]

  8. 11 de agosto de 2021

    […] Como ter diversos sub/domínios no mesmo servidor? Passo-a-passo como criar um servidor WEB Servidor DNS seguro com Bind9 Crie um subdomínio em exemplo toctoc em seu servidor DNS apontando para algum servidor web que […]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *