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


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:

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

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

DNS Reverso
DNS atua resolvendo o nome do domínio/subdomínio para um endereço IP correspondente. Já o DNS Reverso, como o próprio nome diz, resolve o endereço IP para 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 (por isso que ele é importante para servidores de e-mail).

Correção dos dados de geolocalização
É muito importante que sua geolocalização estaja correta no maxmind.com, verifique alguns de de seus IPs.
https://www.maxmind.com/en/geoip-demo

Para correção temos dois formulários.
Correct a GeoIP Location
https://support.maxmind.com/geoip-data-correction-request/correct-a-geoip-location/
Correct a GeoIP ISP or Organization
https://support.maxmind.com/geoip-data-correction-request/correct-a-geoip-isp-or-organization/

Instalação do Debian 11

Requesitos:
Debian 11 Bullseye – Instalação Limpa

Leitura obrigatória:
Configurando interface de rede no Debian 11
Como melhorar a produtividade no seu Debian após instalação

Instalação fail2ban e nftables (Master/Slave)

Fail2Ban é uma estrutura de software de prevenção de intrusões que protege os servidores contra ataques de força bruta. Ele opera monitorando arquivos de logs, sendo o mais comum seu uso para bloquear endereços IPs que podem pertencer à hosts que estão tentando violar a segurança do seu servidor.
nftables é um firewall baseado no iptables que agora no Debian 11 já vem instalado por padrão subistituindo o antigo iptables.

Entendo o funcionamento do fail2ban:

Por padrão o filtro de SSH já vem habilitado, então seu SSH (porta 22) já está “protegida”, se alguém errar a senha por 5 vezes terá seu IP bloqueado por 10 minutos.

Para alterar esses padrões de tempo e número de tentativas edite: (este arquivo é muito bem comentado o que cada variável faz!)

Localize as linhas, e ajuste de acordo com suas necessidades

Se desejar desativar o filtro de SSH

Altere para false

Porém como eu sempre altero a porta do SSH de todo o servidor bem como tempo para digitar a senha, é natural que o fail2ban não ira poteger caso você tenha alterado a mesma. Inclusive recomendo você adotar essa boa pratica.

Em Port defina a nova porta, e LoginGraceTime defina o tempo em segundos para digitar a senha, e nunca seja ignorante de permitir o acesso root direto no SSH em PermitRootLogin, a não ser que tenha uma forte motivo para isso (Me conte nos comentários, até hoje não tive motivo para tal!)

Com a porta alterada do SSH (como no exemplo 60002) vamos ajusta no fail2ban para proteger essa nova porta

Localize e adicione 60002:

Por padrão de segurança do fail2ban usa o iptables e faz o bloquei apenas da porta do serviço que esta sofrendo o “ataque”, vamos subistituir o iptables pelo nftables. Em vez de usar o filtro multiport, vou setar allports e modificá-lo para que tentativas de violação crie uma regra de firewall de drop e não reject definitivamente o IP e não apenas fechando a porta do serviço. Para isso edite:

Localize banaction e banaction_allports e altere para nftables-allports:

Para bloquear tudo e não apenas a porta do serviço atacada:

Localize rule_match-allports e remova o meta l4proto \{ \} ficando:

Ainda no altere o blocktype de reject para drop

Habilite o nftblaes para o boot do sistema, em seguida reinicie os serviços

Verifique se mesmo estão rodando sem nenhum erro:

Se tiver acesso a outro servidor externo tente fazer uma conexão SSH, e erre varias vezes a senha para ser bloqueado, assim você pode validar seu fail2ban.

Para visualizar seu firewall nftables use o comando:

Alguns comandos úteis do fail2ban
Visulizar os filtros

Visualizar detalhe de um filtro

Remover um IP de um determinado filtro

Se desejar adicionar algum prefixo a uma lista branca você pode editar:

Localize ignoreip, desomente a linha (remova o # da frete) e adicione os prefixo que deseja ignorar, para não cair bloqueio.

Reinicie o serviço

Instalação do Bind9 (Master/Slave)

Instalação dos pacotes

Arquitetura de arquivos e diretórios do bind9 no Debian 11:

Configuração do Recursivo

Alteramos o DNS do servidor fazendo com que ele consulte em si próprio, através dos IPs de loopback. Essa alteração deve ser feita no arquivo /etc/resolv.conf.

Para validar se seu servidor conseguer resolver nomes nele próprio, use o comando dig e host. Alguns comandos de Ex:

Como identificar o problema com resoluções de nomes, famoso: “Meu DNS não está resolvendo nomes!”. Use o atributo +trace, assim o mesmo mostrará todo o caminho feito para a resolução, assim você ira identificar onde “parou” e não obteve a informação necessária. Ex:

Observe as linhas em destaque.

Primeiramente consultamos os root servers, que estão em nosso servidor essa info, logo perceba que ele fez a consulta dos root servers em localhost, em seguida um dos root servers falou para ele que é são os DNS responsáveis do .br e no exemplo ele escolheu o a.root-servers.net, que falou para ele quem são os DNS fo google, e o DNS do google, neste cado o c.dns.br falou qual é o IPv4 (A) do google.com.br = 42.250.219.195, o valor 300 é o tempo que seu servidor irá armazenar essa resposta em cache. Eu levaria muito tempo para explicar aqui, então quando tiver um curso meu de DNS não fique de fora 🙂

Configurando Recursivo no DNS Master

Nesse cenário vou usar os prefixos 45.80.48.0/22 e 2804:f123::/32 (desculpe caso seja de alguém)

Edite:

A explicação de todos os campos e variáveis estão nos comentários do arquivo:

Leitura recomendada:
https://bind9.readthedocs.io/en/latest/reference.html
https://downloads.isc.org/isc/bind9/9.11.24/doc/arm/Bv9ARM.ch06.html

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

Imprime todas as configurações

Bem útil para você mandar suas conf quando esta com algum problema lá no grupo do telegram 🙂

Reinicie o bind9 para que as novas configurações sejam carregadas, e verifique se o serviço subiu sem erros.

Configurando Recursivo (Slave)

Não esqueça da parte do fail2ban e nftables.

Já explicado no master, a diferença aqui aqui não temos os campos allow-transfer e also-notify, já que ele é o servidor secundário.

Reinicie o bind9 para que as novas configurações sejam lidas, e verifique se o serviço subiu sem erros.

Colocando o fail2ban para protege seu DNS (Master/Slave)

Ele irá ler os logs do bind com tentativas de consultas negadas (denied), para isso precisamos configurar nosso bind para gerar tal logs.Faça isso no Mastere Slave.

Adicione logging { … }:

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

Reinicie o serviço

Iremos criar um filtro para ler os logs do bind

Adicione:

Ativamos o filtro que criamos, e definimos o tempo de banimento para 12h, se você desejar pode ajustar para mais ou menos se achar necessário. E “maxretry” que é a quantidade de tentativas usaremos 1, limitando a 1 tentativa (não recomendo alterar) apenas para já ser bloqueado.

Em seguida ativamos reinciamos os serviços.

Consulte se o filtro bind9 foi carregado

Para validar realize um teste de um servidor externo não autorizado à resolver nomes em seu servidor com o comando dig, ex:

Deixe rodando o comando para visualizar os logs.

Log como ira aparecer, onde 192.168.254.198 é o IP que tentou resolver nomes e google.com.br foi o dóminio.

Verificando agora o fail2ban vamos encontrar o IP 192.168.254.198 em Banned IP list.

Verificando as regras do firewall nftables também iremos encontra-lo.

Para remover o IP basta:

Atualização dos Roots servers

Não é comum os Roots Servers terem alguma alteração, mas é algo que ao logo desses anos vi acontecer já, então caso um dia precise atualiza-los. Primeiramente renomei o arquivo atual root.hints

Agora vamos baixar a versão mais recente.

Para visualizar se tem alguma diferença entre os arquivos execute o comando:

Perceba que o que mudou apenas foi a data em last update. Resto do arquivo continua igual.

Desativar IPv6 do bind 🙁

Se por algum motivo precisar desabilitar faça:

Para

Para

Reinicie o serviço

Configurando um proxy do DNS recursivo

Está confiuração deixará de usar os Root Serves e irá fazer as consultar em outros servidores DNS, e armazenar no seu cache local.

Adicione dentro de options { ….. }

Comando dig

Algumas coisas que você precisa saber, ex:

O resultado retornará algumas seções, porém como configuramos no named.conf.options minimal-responses yes, iremos ter apenas 3. Isso deixa seu DNS mais otimizado, além do mais yes é o padrão agora na versão 9.16 do bind, caso queira testar experimente setar em: no.

HEADER: Ela contém diversas informações a respeito da consulta.

status indica o tratamento de erro nas consultas, sendo eles:
NOERROR: Nenhum erro encontrado, ou seja, sucesso.
SERVFAIL: Houve algum problema com o servidor, que não conseguiu processar a query.
NXDOMAIN: Significa que o domínio pesquisado não existe.
REFUSED: O servidor rejeitou a solicitação.
flags: indicador das opções de recursividade e de autoridade, em resumo este conjunto de “letrinhas” (aa, rd, ra, etc), indica o estado ligado/desligado RFC1035
qr: se a mensagem é uma query (0) ou uma resposta (1). Como estamos avaliando somente as respostas, este bit sempre estará ligado (consequentemente, sempre veremos a string “qr” no campo “flags“).
aa: que o servidor que respondeu à solicitação é autoritativo do domínio.
rd: que a query é recursiva, que as requisições devem ser encaminhadas a outros servidores até que o servidor autoritativo seja encontrado.
ra: que o servidor que respondeu à requisição suporta consultas recursivas.
tc: que a mensagem de resposta está truncada.
z: reservado para uso futuro.
contadores: na mesma linha das flags, econtramos quantos resultados vieram nas sessões.

QUESTION
Replica a query que foi enviada para consulta, por padão quando não passa A = IPv4

Outros exemplos:

ANSWER
Contém a resposta para a consulta que foi enviada.

AUTHORITY
Servidores que respondem com “autoridade” pelo domínio (os NS)

ADDITIONAL
Informações auxiliares ou adicionais à pesquisa, no exemplo IPs dos servidores DNS

E na ultima sessão entrosamos podemos dizer mais 4 sub sessões:

QUERY TIME: vai informar o tempo que levou para realizar a consulta solicitada, quando esse tempo retora 0 é porque a consulta ele pegou do cache.
SERVER: Qual servidor ele realizou a consulta
WHEN: dara e hora da consulta + UTC
MSG SIZE: tamanho do pacote

😉 Um pouquinho de dig para vocês!

Seu DNS recursivo já está pronto, se seu intuito é apenas um DNS recursivo pode pular a parte do autoritativo/reverso, e eu recomendo que você crie uma regra extra no seu nftables (firewall) para fechar a porta 53 externamente, então vou deixar um modelo dessa configuração:
ISSO SÓ DEVER SER FEITO SE SEU DNS FOR APENAS RECURSIVO!

Em elements, altere para os seus IPs que terão permissão, o arquivo é quase que auto explicativo. Eu vou aproveitar e criar uma proteção para o SSH e o Zabbix agent

Reinicie os serviços

Autoritativo

Valorize os domínios.br registrados no https://registro.br/ o memos financia todo o projeto NIC.BR, que na internet brasileira tem uma papel fundament

Configuração do Autoritativo (Master)

Para ficar organizado criaremos alguns diretórios em /var/cache/bind/. Primeiramente a pasta master-aut que se é referencia onde vai ficar nossa configuração do DNS Master autoritativo, e dentro desta pasta uma com o nome do nosso domínio no exemplo remontti.net.br, assim se você tiver vários dominios criamos uma pasta para cada ficando bem organizado.

Agora vamos criar um em /var/cache/bind/master-aut/remontti.net.br/ para que conter toda a configuração do mesmo, e para ficar objetivo adotei em usar o nome do próprio domínio.hosts ex: remontti.net.br.hosts

É importante que o serial (2021102601) seja alterado toda vez que for o aruquivo sofrer qualquer alteração, assim o servidor slave saberá que precisa importar novamente as configurações. Ele segue o padrão [ano-mes-dia-sequencial] não que seja uma regra.

No exemplo estou confiurando apenas alguns subdomínos básicos, como ns1, ns2, www e apontando ele para seus respectivos endereços IPv4 e IPv6, os ipos mais comuns de registros:
A: Associa um nome a um endereço IPv4.
AAAA: Associa um nome a um endereço IPv6.
NS: Name Server. Define quais servidores são os servidores autoritativos do domínio
SOA: Start-Of-Authority. Detalhes da autoridade do domínio. Descreve o servidor que tem autoridade sobre a zona, além do contato técnico, número serial e outros campos.
MX: Mail eXchanger. Define os servidores de e-mail.
PTR: Pointer. Retorna o nome associado a um endereço IP. (reverso)
CNAME: Canonical NAME. Usados para criar apelidos para o domínio.
TXT: TeXT. Usados para descrições, comentários, observações de um domínio. Também usado para definir configurações de SPF.

Vamos criar um diretório para gerar nossas keys do DNSSEC.

Entre no diretório:

Agora vamos a criação das chaves:

Os comandos acima irão gerar 4 arquivos com extensões .key e .private

Altere as permissões de diretórios/arquivos para que o bind consiga criar as assinaturas de forma automaticamente.

Em /etc/bind/named.conf.local “chamaremos” a zona remontti.net.br

Adicione ao final do arquivo:

Para facilitar farei um atalho da pasta /var/cache/bind/master-aut em /etc/bind/master-aut.

Reinicie o serviço.

Certifique-se que o bind esta rodando sem erros

Novos arquivos são gerados em /var/cache/bind/master-aut/remontti.net.br/ .jbk .signed .signed.jnl

Precisaremos descobri nossa keytag e o digest que serão informados no registro.br, para isso rode o comando:

Sendo, keytag:26883 e o digest: F8C2518674B22DB06B1EF38E030F9A238E4FA25D0E2FB80357496E92617FF841

Possíveis bloqueios do fail2ban em caso de configuração errada, ao verificação de um domínios que seu servidor não é autoritativo, ou por um erro na configuração, a consulta será interpretada como recursiva, logo o IP de origem será bloqueado pelo fail2ban, e registrado no arquivo de logs /var/log/named/security.log.

Para evitar fail2ban bloquei seus IPs e pricnipalmente do registro.br, pois muitas pessoas acabam configurando errado seu DNS e na hora de verificar acabam sendo bloqueando. Para evitarmos isso vamos incluir seus IPs bem como os do registrobr na variável ignoreip do fail2ban:

Localize #ignoreip =, remova o comentário (#) e inclua os prefixo do registrobr 200.160.0.0/20 200.219.148.0/24 2001:12f8:6::/47 2001:12ff::/32 bem como altere 45.80.48.0/22 2804:f123::/32 para IPs do seu AS

Reinicie o fail2ban

Configuração do Autoritativo (Slave)

A configuração do slave é bem simples, pois ele irá importar do master todas as configurações.
Para organização vamos seguir o mesmo padrão de diretórios do master

Informamos nossa zona do tipo slave e o IP do nosso servidor master.

Alteramos a permissão do diretório para que o bind consiga criar os arquivos.

Mais uma vez farei uma atalho dentro de /etc/bind para facilitar.

E reiniciamos o serviço

Agora ao verificar o diretório /var/cache/bind/slave-aut/remontti.net.br/ encontraremos nosso arquivo criado automaticamente importado do servidor master.

Validando seu autoritativo no registro.br

Vamos verificar se o servidor responde pelo nosso domínio, acesse: https://registro.br/tecnologia/ferramentas/verificacao-de-dns/ e preecha o formulário com o seu domínio “remontti.net.br” e o IP do seu servidor e clique em pesquisar.
RESULTADO

Se seu servidor DNS estiver respondedo pelo domínio solicitado uma resposta de sucesso ira apacer: Autoridade sobre o domínio. Repita o mesmo no seu servidor Slave
Agora vamos fazer o mesmo para validade nosso DNSSEC, acesse: https://registro.br/tecnologia/ferramentas/verificacao-de-ds/ e preecha o formulário com o seu domínio “remontti.net.br” e o IP do seu servidor e clique em pesquisar.
RECORDS DS DAS CHAVES ENCONTRADAS

Se tudo estiver OK, ira receber o resultado da sua KEYTAG e DISGEST bem como encontrado anteriormente.

Seu domínio já está pronto para ser configurado no registro.br, para isso acesse sua conta clique sobre seu domínio e clique em: ALTERAR SERVIDORES DNS, e preecha o formulário, exemplo:

Posso ter mais de um autoritativo no mesmo servidor?

Sim, inclusive o reverso é um autoritavio, vamos falar dele em seguida. Não existe um limite, o limite é seu hardware.
Veja mais um exemplo para um segundo domínio:

Adicione:

Vamos criar um diretório para gerar nossas keys do DNSSEC.

Entre no diretório:

Agora vamos a criação das chaves:

Altere as permissões de diretórios/arquivos para que o bind consiga criar as assinaturas de forma automaticamente.

Adicione a zona cursodns.com.br em named.conf.local

Adicione ao final do arquivo:

Se desejar validar seu arquivo antes de reiniciar o serviço:

Tudo ok, altere as permissões para não ter erro, e reinicie o bind:

Para o Slave

Posso ter domínios “fakes”?
Sim, basta criar uma zona. Mas juridicamente você pode ter dor de cabeça. Recomendo a leitura do DNS Response Policy Zone (RPZ) para que retornem resultados modificados em grande escala de uma foma mais eficaz. Alguns administradores podem usar o DNS RPZ para impedir acessos indesejados, normalmente é usado em empresas para bloquear por exemplo hosts infectados por malwares, sites pornográficos, entre outros casos, bloqueando a resolução de nomes. Segue um modelo simples e rápido para montar seu RPZ.

Adicione mais uma entrada em para um novo subdominio “umbrella” apontando para um servidor, esse pode está rodando um serviço web qual pode ter uma tela com um aviso.

Adicione uma nova zona chamada rpz.zone

Dentro de options { … } adcione:

};
Criaremos o diretório rpz, bem como o arquivos de hosts

Sendo que para cada dominio que você deseja apontar para resolver o mesmo IP do nosso umbrella.cursodns.com.br siga este padrão:

Assim qualquer subidominio (*).domino.com seja traduzido sempre para o mesmo IP.

Altere as permissões e reinicie o serviço

Agora faça um teste para ver o que seu servidor ira traduzir:

Uma boa list de hosts você pode encontrar aqui.
🙂 Não esquece de mandar meu presente de natal!

Reverso DNS Master – Para prefixos maiores ou igual a /24.

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

Para ficar organizado criaremos a pasta master-rev para salvar todos nossos arquivos

Para nosso cenários vou usar os prefixos 45.80.48.0/22 e 2804:f123::/32. O bloco 45.80.48.0/22 será necessário quebrar em 4 arquivos uma para cada prefixo /24 qual teremos nossos 1024 nome de hosts (IPs).

Lembra que anteriormente comentei que o reverso não passa de um domínio autoritativo? Então é isso mesmo, a forma de configuração é a mesma, porem já temos o nosso domínios para IPv4 x.x.x.in-addr.arpa e x.x.x.x.x.x.x.x.ip6.arpa para IPv6.

Primeiro arquivo /24 farei com o nome de 45.80.48.rev, poderia ser qualquer nome, mas assim fica bem sugestivo.

Preste atenção em 48.80.45.in-addr.arpa. essa linha ela deve ser alterada com o inverso do seu IP, de trás para frente.
Outra coisa importante é o serial (2021102601) ele está 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.

Neste arquivo darei nomes personalizados apenas para o ns1 e ns2 o resto usarei o GENERATE para gerar de forma automatica todos os mais de mil nomes, sengindo o padrão 45-80-50-x.remontti.net.br.

Proximo /24

Antenção no 3.2.1.f.4.0.8.2.ip6.arpa o site http://rdns6.com/hostRecord pode ser bem útil para gerar seus PTRs.

Ajustamos as permissões:

Criamos uma atalho para facilitar:

Agora nós precisamos informar nossas zonas reversas no named.conf.local, como estamos configurando nosso servidor master essas zonas serão do tipo (type) master.

Adicione ao final do arquivo:

Reinicie o serviço e verifique se o mesmo subiu sem erros.

Checando se nosso IP reverso está resolvendo os nomes setados, com o comando dig -x IP @localhost +short

Como criamos nomes aos 1024 hosts/IPs (x-x-x-x.remontti.net.br) será necessário apontar cada nome desses no arquivo de autoritativo do domínio remontti.net.br para cada nome um IP. Para isso vamos voltar as configurações do domínio autoritativo que já configurado. Lembre-se de alterar o serial!

Host 45-80-50-0.remontti.net.br. not found: 3(NXDOMAIN)
Só para relembrar: NXDOMAIN: Significa que o domínio pesquisado não existe.

Para resolver isso então vamos criar todos nosso nomes.
vamos adicionar ao final do arquivo /var/cache/bind/master-aut/remontti.net.br/remontti.net.br.hosts

Ficando:

Autoritativo ajustado, reinicie o serviço e verifique se o mesmo subiu sem erros.

Agora ao consultar nosso nomes temos uma resposta dizendo qual nosso endereço ip

Para o servidor Slave

Crie o diretório onde irão ficar os arquivos e dê permissão

Em seguiga crie as zonas no arquivo named.conf.local, que serão do tipo (slave) e apontaremos o IP do DNS Master para que o servidor slave faça a transferência.

Adicione ao final:

Crio o atalho, reinico o serviço e verifico se o mesmo subiu sem erros, em seguida olho se os arquivos foram criando nas pasta.

Validando seu reverso no registro.br https://registro.br/tecnologia/ferramentas/verificacao-de-dns/
Vamos verificar pelos domínos .arpa

RESULTADOS

Se tudo estiver certo você terá Autoridade sobre o domínio, repita o mesmo no seu para o IP do servidor Slave.

Seu reverso está pronto para ser configurado no registro.br, acesse sua conta clique em NUMERAÇÃO em seguira sobre seu prefixo exemplo 45.80.48.0/22, clique no “quadro azul” e clique em Configurar DNS, preencha o formulário Delegação DNS – 45.80.48.0/22 informado o Servidor 1: ns1.remontti.net.br e Servidor 2: ns2.remontti.net.br. Lembrando que o DNS do autoritativo “remontti.net.br” deve estar com os subdominios ns1 e ns2 apontando para o IP do seu servidor DNS, e o mesmo já deve ter propagado, se você tem acabou de alterar os DNS do remontti.net.br aguarde um tempo (até 24h) para fazer a configuração do reverso.

Dúvida frequente: Posso ter reversos de diferentes blocos usando o mesmo domínio autoritativo?
Sim, como também pode para outros domínios, inclusive mesclados.

Como configurar o reverso para prefixos menores que /24

Vamos supor que você dono de um /22 e vai repassar um prefixo /28 para um provedor sem AS ou uma empresa que é seu cliente, e o mesmo deseja ter seu reverso respondendo em seus servidores DNS (RFC2317).

Primeiramente faça a delegação no registro.br do /28 para o CNPJ/Domínios do de seu cliente, acesse sua conta clique em NUMERAÇÃO em seguira sobre seu prefixo exemplo 45.80.48.0/22, clique no “quadro azul” e clique em Expandir até chegar no prefixo /28, clieque sobre o quadro do prefixo desejado e em seguida em Configurar designação e preecha o formulário com o CNPJ/Domínios do seu cliente, se o mesmo não possuir solicite que faça seu cadastro.

Se ficar em dúvidas recomendo que assista: https://www.youtube.com/watch?v=VIa1dHtmQ4U DNS Reverso (~20min fala sobre isso)
No exemplo vamos supor que o bloco seja o 45.80.49.64/28, como o mesmo fica no arquivo 45.80.49.rev vamos edita-lo.

Iremos quebrar nosso GENERETE para pular os IPs finais 64 a 79, e vamos apontar ele para os DNS do cliente, logo é claro que ele precisa ter um domínio já configurado, e nesse DNS ele apontar exemplo ns1 e ns2 para o IP do servidor que ele estará fazendo a configuração. Explico já já como faz o lado dele.

Reinicie o serviço e verifique o mesmo

Lado do “provedor do Jose”

Como estamos falando de um outro provedor, é quase certo que ele fará seu DNS: Recursivo, autoritativo e reverso. Então faça a instalação do bind e todos os procedimentos das configurações de recursivo e autoritativo sobre o domínio “provedordojose.com.br”, porém a configuração do reverso irá mudar um pouco, ficando:

Autoritativo

Reverso

Reinicie o serviço

Situação de reverso para cliente final sem ele ter servidor de DNS

Meu cliente quer que eu aponto os nomes dos IPs reverso para o seu domínio, posso?
Sim, pode! Em muitos casos de clientes corporativos que tem seu próprio servidor de e-mail é possível que o mesmo peça para fazer isso. Ex:

Reinicie os serviços

Mais um pouco de DNS!

Posso configurar DNS reverso de IPs privados?
Sim pode, ajustes no named.conf.default-zones e zones.rfc1918
Remova as linhas dos IPs privados que deseja configurar.

Posso configurar DNS reverso de outro AS?
Sim. Basta configurar! (Conheço provedores pequenos que ambos tem 1 servidor DNS cada e um é o backup do outro)

Estatísticas do DNS

Estatística web/http (statistics-channels)
Para ativar edite o /etc/bind/named.conf

Adicione antes dos include, sendo que 45.80.48.2 é o IP público do DNS e 45.80.48.100 e 45.80.48.101 (Só aceita /32) são os IPs que poderão acessar no navegaro a porta 58053 para visualizar as informações. Porém perceba que também deixou um inet só para o IP de loopback (127.0.0.1 ) a ideiá aqui é que só o zabbix-agente acesse, eu particularmente não deixou o outro inet sendo ouvido, se deseja comente ele com //

Para surtir efeito reinicie o serviço

Agora acesse http://IP_DNS:58053/

Usaremos a seguir este método para coletar informações para o zabbix.

Outra forma é as estatística em arquivo (statistics-file)

Adicione dentro de options { … }

Como sempre, em toda alteração reiniciamos o serviço

Porém para gere o arquivo de estatísticas é necessário o comando, e toda vez que deseja atualizar precisa executar o comando.

Exibe os dados do arquivo

Criando Backup

Basta salvar os diretórios /etc/bind/* /var/cache/bind/* /usr/share/dns/* Gerar um arquivo de backup

Extrair arquivo de backup

Recomendo a leitura do tutorial: Criando backups de forma simples e enviando para o Telegram ou servidor via SSH

Coletando dados dos bind e fail2ban para Zabbix 5 LTS

Se você ainda não tem um zabbix server aqui tem um belo tutorial: Instalação do Zabbix 5 LTS + Grafana 8 + NGINX + PostgreSQL + Notificação Telegram com Debian 11

No nosso servidor DNS vamos precisar apenas do zabbix-agent, vamos adiciona o repositório do zabbix LTS para Debian 11 e em seguina intala-lo.

Em seguida vamos precisar informar o IP do zabbix server:

Localize e altere:

Reinicie o serviço do zabbix agent

Não esqueça de ajustar statistics-channels named.conf:

Vou usar o projeto Zabbix-Bind9-Statistics-Collection compartilhado no meu gituhub

Copie o userparameter_rr_bind.conf no diretório (/etc/zabbix/zabbix_agentd.conf.d) de inclusão dos agentes do Zabbix.

Copie o script bind-stats-rr.py para dentro de /etc/zabbix/script/ e ajustaremos os poderes e permissões.

Você pode receber estatísticas por zona (que serão descobertas automaticamente) adicionando a seguinte cláusula a cada definição de zona no seu named.conf.local: zone-statistics yes; Ex.:

Não esqueça de restartar o serviço se editar o named.local.conf systemctl restart zabbix-agent

Baixe o arquivo RR Bind9.xml para seu computador e importe o mesmo para o seu Zabbix Server.
Vamos ter 3 novos templates:

Coletando dados das prisões do Fail2ban

Projeto zabbix-fail2ban-discovery

Faça o download do arquivo userparameter_fail2ban.conf para o diretório /etc/zabbix/zabbix_agentd.conf.d/

O Fail2ban funciona apenas com root por padrão. Precisaremos conceder permissão ao Zabbix para acessar o Fail2ban. Não é uma boa ideia conceder permissão de root ao Zabbix em termos de segurança. Em vez disso, permitiremos que o usuário do Zabbix use esse soquete. O agente Zabbix é executado sob o usuário zabbix. Primeiro, precisamos criar um novo grupo chamado fail2ban. Todos os usuários pertencentes a este grupo poderão acessar o Fail2ban.

Criar um grupo:

Adicionar o usuário zabbix existente ao grupo fail2ban:

Em seguida, devemos alterar o proprietário do grupo do soquete de root para fail2ban:

Por fim, ajuste as permissões no soquete para que os membros do grupo possam acessá-lo:

Agora podemos testar que o agente Zabbix pode chamar Fail2ban:

As instruções de instalação abrangem a alteração das permissões do soquete fail2ban para acesso como um usuário não root; no entanto, essas alterações são perdidas na próxima vez que o soquete é criado.

Para tornar as alterações permanentes em um sistema em que o fail2ban é gerenciado pelo systemd, adicione o seguinte ao arquivo de substituição de serviço fail2ban

Adicione:

Reinicie os serviços

Consulte se o grupo é o fail2ban

Faça download do template RR Servico Fail2ban – Monitor Filtros e importe para o Zabbix Server.

Por hoje é “só” pessoal!
Espero ter colaborado com uma pequena parcela em seu conhecimento.
Esse tutorial levei dois dias escrevendo então conto com sua ajuda para poder manter o blog!

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.

Recomendado:
https://www.isc.org/download/
https://downloads.isc.org/isc/bind9/9.16.15/doc/arm/Bv9ARM.pdf
Extensão para navegador:
https://chrome.google.com/webstore/detail/ipvfoo/ecanpcehffngcegjmadlcijfolapggal
https://addons.mozilla.org/en-US/firefox/addon/ipvfoo-pmarks/

Rudimar Remontti

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

Você pode gostar...

11 Resultados

  1. Hebio disse:

    Boa noite vc tem um curso para bgp com FrRouting para 2 operadora full route estou tentando montar um aqui fiz a parte do ospf deu certo mais o bgp nao achei muito exemplo que me ajudace.

  2. Nielson Padilha disse:

    Como fariamos para gerar dnssec para o /22 e /32 para cadastrar no registro.br ? Obrigado pelos tutoriais, são muito bons mesmo.

  3. Nielson Padilha disse:

    Fiquei na duvida do rev ipv6 na conf tem 2 faixas com inicio 2 e 3. Gerei o meu no site tenho que por inicio 2 e 3 também ?

    2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.e.f.a.c.e.b.e.b.3.2.1.f.4.0.8.2.ip6.arpa. PTR ns1.remontti.net.br.
    3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.e.f.a.c.e.b.e.b.3.2.1.f.4.0.8.2.ip6.arpa. PTR ns2.remontti.net.br.
    No site rDNS coloquei o IP finalizando com :: sem /32

  4. Quando terá curso de DNS novamente?

  5. Fabbyo disse:

    Referência pra comunidade, sempre trazendo artigos excelentes com uma boa didática aos menos entendidos mas sem ser superficial as explicações, parabéns Remontti! Contribuição garantida!!! Gostaria de saber como adicionar um IP como exceção no firewall do DNS, pois o mesmo esta bloqueando até o IP do zabbix para as coletas!

  6. Arthur Bernardes disse:

    Excelente artigo, Remontti. Muito obrigado por mais uma maravilhosa contribuição.

  1. 9 de novembro de 2021

    […] teste.remontti.com.br, logo é necessário configurar seu subdomínio “teste” em seu DNS Server, NÃO USE subdomínio chamado speedtest pois você terá possivelmente seu pedido negado. Exemplo […]

Deixe um comentário

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