Você está na página 1de 22

22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti

Distribuição utilizada: Debian 8 Jessie / Debian 9 Stretch – Instalação Limpa (Tutorial de instalação aqui)

DNS RECURSIVO
O DNS recursivo é responsável por procurar os endereços IPs de servidor que você solicitou acesso. Exemplo o DNS que esta
configurado na sua máquina.

DNS AUTORITIVO
É o que possui autoridade sobre um nome de domínio, assim como ns1.remontti.net.br é o DNS autoritativo de seu domínio
remontti.net.br.
O DNS autoritativo dita qual será o apontamento da tabela de DNS do seu site. Ele vai responder por o domínio que você
configurou nele.

DNS REVERSO
Normalmente o DNS atua resolvendo o nome do domínio de um host para um endereço IP correspondente. Já o DNS Reverso
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.

Para que o DNS Reverso funcione que no registro.br você designa seu bloco apontando para o(os) seu(s) servidor(es) DNS. Se
você for um provedor o correto seria você ter ao menos dois servidores DNS em sua rede, uma Master e outro Slave. Neste
tutoria foi explicar como criar os dois!

Vamos iniciar com a instalação do nosso servidor Master, lembrando que para isso estou usando a Distribuição linux Debian 8,
com uma instalação que eu chamo de limpa, ou seja no processo de instalação foi instalado apenas o sistema básico.

Cenário para nosso exemplo

Domínio: remontti.net.br
Blocos que serei responsável IPv4 250.250.0.0/23 (255.255.254.0) / IPv6 2000:FFF::/32 minha rede ainda conta com alguns
blocos de IPs inválidos bem como 192.168.0.0/16, 172.16.0.0/12 e 10.0.0.0/8 que por ventura também irei autorizar consultas
recursivas.
https://blog.remontti.com.br/1397 1/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti

Tenho ainda meus servidores, quais ficarão configurado com os seguintes IPs IPv4/IPv6:
ROUTER GW -> 250.250.0.1 / 2000:fff:250:250:0::1
SERV DNS MASTER -> 250.250.0.2 / 2000:fff:250:250:0::2 (ns1)
SERV DNS SLAVE -> 250.250.0.3 / 2000:fff:250:250:0::3 (ns2)
SERV WEB + FTP -> 250.250.0.4 / 2000:fff:250:250:0::4 (www,ftp)
SERV ZABBIX -> 250.250.0.5 / 2000:fff:250:250:0::5 (zabbix)
SERV E-MAILS -> 250.250.0.6 / 2000:fff:250:250:0::6 (mail,imap,pop,smtp)
SERV HOSPEDAGEM * -> 250.250.0.7 / 2000:fff:250:250:0::7 (ns3)

* Inclui outros servidor para demonstrar como irei apontar para eles alguns nos domínios que seremos autoritarivo, lá na frente
você vai compreender melhor.

INSTALAÇÃO SERVIDOR DNS MASTER (NS1)


1 # apt install bind9 dnsutils

Pronto! Nosso 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. Vamos resolver isso bem simples.

Antes de mais nada vamos alterar o DNS do nosso servidor fazendo com que ele consulte em si próprio. Essa alteração deve
ser feita no arquivo /etc/resolv.conf, eu irei utilizar o editor vim, mas fique a vontade de usar o seu preferido.
1 # vim /etc/resolv.conf

Altere para:
1 nameserver 127.0.0.1
2 search localhost

Feito isso você pode fazer um ping para um domínio e ver se ele resolveu o host.
Agora “mão na massa”! Vamos começar acessando nosso diretório de instalação do Bind que fica em /etc/bind/
1 # cd /etc/bind

As configurações principal é armazenado nos seguintes arquivos:


named.conf

https://blog.remontti.com.br/1397 2/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti

named.conf.local
named.conf.options

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 vamos fazer um backup antes de modifica-lo.
1 # cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp

Agora vamos as alterações, vou deixar explicado como comentários dentro no nosso arquivo.
1 # vim /etc/bind/named.conf.options

1 //ACLs (Access Control Lists)


2
3 // ACL "permite-recursiva" vão ficar os hosts estão autorizados a fazer
4 // consultas recursivas através deste servidor.
5 acl permite-recursiva {
6 127.0.0.1;
7 ::1;
8 250.250.0.0/23;
9 2000:fff::/32;
10 192.168.0.0/16;
11 172.16.0.0/12;
12 10.0.0.0/8;
13 };
14
15 options {
16 // O diretório de trabalho do servidor
17 // Quaisquer caminho não informado será tomado como padrão este directório
18 directory "/var/cache/bind";
19
20 //Suporte a DNSSEC
21 dnssec-enable yes;
22 dnssec-validation auto;
23
24 // Conforme RFC1035
25 // https://www.ietf.org/rfc/rfc1035.txt
26 auth-nxdomain no;
27
28 // Respondendo para IPv4 e IPv6
29 // Porta 53 estará aberta para ambos v4 e v6
30 listen-on { any; };
31 listen-on-v6 { any; };
32

https://blog.remontti.com.br/1397 3/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
33 // Limitação da taxa de resposta no sistema de nomes de domínio (DNS RRL)
34 rate-limit {
35 responses-per-second 15;
36 window 5;
37 };
38
39 // Melhora o desempenho do servidor, reduzindo os volumes de dados de saída.
40 // O padrão BIND é (no) não.
41 minimal-responses yes;
42
43 // Especifica quais hosts estão autorizados a fazer consultas
44 // recursivas através deste servidor.
45 // Aqui que você vai informar os IPs da sua rede que você irá permitir consu
46 allow-recursion {
47 permite-recursiva;
48 };
49
50 // Endereço estão autorizados a emitir consultas ao cache local,
51 // sem acesso ao cache local as consultas recursivas são inúteis.
52 allow-query-cache {
53 permite-recursiva;
54 };
55
56 // Especifica quais hosts estão autorizados a fazer perguntas DNS comuns.
57 allow-query { any; };
58
59 // Especifica quais hosts estão autorizados a receber transferências de zona
60 // Seu servidor Secundário, no nosso caso vou deixar então o ips dos dois se
61 allow-transfer {
62 250.250.0.3;
63 2000:fff:250:250:0::3;
64 };
65 also-notify {
66 250.250.0.3;
67 2000:fff:250:250:0::3;
68 };
69
70 // Esta opção faz com que o servidor slave ao fazer a transferência de zonas
71 // mastes deste servidor nao compile o arquivo, assim no outro servidor o ar
72 // da zona terá um texto "puro"
73 masterfile-format text;
74
75 // Para evitar que vase a versao do Bind, definimos um nome
76 version "RR DNS Server";
77 };

https://blog.remontti.com.br/1397 4/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti

Pronto nosso servidor Recursivo já está funcionando! Caso você não queria seu servidor sendo recursivo apenas altere allow-
recursion e allow-query-cache para apenas localhost. Esta também será feita no servidor Slave (ns2).

Agora precisamos apenas dar um restart no bind para que as opções tenham efeito.
1 # /etc/init.d/bind9 restart

IP REVERSO (NS1 Master)


Vamos a configuração do nosso reverso. Particularmente gosto de dentro da pasta /etc/bind/ criar alguns diretórios quais separo
as configurações.
1 # mkdir /etc/bind/reverse

Somos “donos” do bloco 250.250.0.0/23 que representam dois blocos /24 (250.250.0.0/24 + 250.250.1.0/24). Para facilitar vou
fazer a configuração em dois arquivos separando cada bloco /24. É possível colocar tudo em um mesmo arquivo? Sim, mais eu
particularmente não gosto
Vamos ter que dar nomes a todos nossos 512 IPs representado pelo nosso /23, no exemplo não vou criar todos, vou por um […]
q representa que você deve completar com os demais ips, também vou usar como parado o nome para os IP o próprio endereço
IP porém com um abreviação “rev-250-250-X-Y” com exceção nossos servidor já conhecido, ns1, ns2, mail … Vale lembrar que
todos esses nomes de hosts serão configurado exatamente posterior na configuração sobre o domínio. Para que quando vc
consulte o nome de um IP ele resolva em um nome e ao você consultar este nome ele resolva em um IP, por isso o nome de
reverso!
Primeiro arquivo 250.250.0.rev
1 # vim /etc/bind/reverse/250.250.0.rev

Preste atenção em 0.250.250.in-addr.arpa. essa linha (são duas no arquivo a baixo) ela deve ser alterada com o inverso do seu
IP, se seu bloco fosse ex.: 100.200.300.0/24 ficaria 300.200.100.in-addr.arpa. fica ligado
Outra coisa importante é o serial (2017010100) 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].
1 $ORIGIN .
2 $TTL 86400 ; 1 day
3 0.250.250.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
4 2017010100 ; serial
5 10800 ; refresh (3 hours)
6 3600 ; retry (1 hour)
7 2419200 ; expire (4 weeks)
https://blog.remontti.com.br/1397 5/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
8 300 ; minimum (5 minutes)
9 )
10 NS ns1.remontti.net.br.
11 NS ns2.remontti.net.br.
12
13 $ORIGIN 0.250.250.in-addr.arpa.
14 0 PTR 250-250-0-000.remontti.net.br.
15 1 PTR router-gw.remontti.net.br.
16 2 PTR ns1.remontti.net.br.
17 3 PTR ns2.remontti.net.br.
18 4 PTR www.remontti.net.br.
19 5 PTR zabbix.remontti.net.br.
20 6 PTR mail.remontti.net.br.
21 7 PTR ns3.remontti.net.br.
22 8 PTR 250-250-0-8.remontti.net.br.
23 9 PTR 250-250-0-9.remontti.net.br.
24 10 PTR 250-250-0-10.remontti.net.br.
25 11 PTR 250-250-0-11.remontti.net.br.
26 ;
27 ; [...] complete com todos os IPs/Nomes
28 ;
29 254 PTR 250-250-0-254.remontti.net.br.
30 255 PTR 250-250-0-255.remontti.net.br.
31 ; fim

Segundo arquivo 250.250.1.rev (observe 1.250.250.in-addr.arpa)


1 # vim /etc/bind/reverse/250.250.1.rev

1 $ORIGIN .
2 $TTL 86400 ; 1 day
3 1.250.250.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
4 2017010100 ; serial
5 10800 ; refresh (3 hours)
6 3600 ; retry (1 hour)
7 2419200 ; expire (4 weeks)
8 300 ; minimum (5 minutes)
9 )
10 NS ns1.remontti.net.br.
11 NS ns2.remontti.net.br.
12
13 $ORIGIN 1.250.250.in-addr.arpa.
14 0 PTR 250-250-1-0.remontti.net.br.
15 1 PTR 250-250-1-1.remontti.net.br.
16 2 PTR 250-250-1-2.remontti.net.br.
17 3 PTR 250-250-1-3.remontti.net.br.

https://blog.remontti.com.br/1397 6/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
18 4 PTR 250-250-1-4.remontti.net.br.
19 5 PTR 250-250-1-5.remontti.net.br.
20 6 PTR 250-250-1-6.remontti.net.br.
21 7 PTR 250-250-1-7.remontti.net.br.
22 8 PTR 250-250-1-8.remontti.net.br.
23 9 PTR 250-250-1-9.remontti.net.br.
24 10 PTR 250-250-1-10.remontti.net.br.
25 ;
26 ; [...] complete com todos os IPs/Nomes
27 ;
28 253 PTR 250-250-1-253.remontti.net.br.
29 254 PTR 250-250-1-254.remontti.net.br.
30 255 PTR 250-250-1-255.remontti.net.br.
31 ; fim

Se possui bloco maiores e diferente, e com um padrão de nomes iguais o modo GENERATE ajuda muito, ficando da seguinte
forma:
1 ;;;;;;;;;;;;;;;;;;;;;;;
2 ;;;; 250.250.0.rev ;;;;
3 ;;;;;;;;;;;;;;;;;;;;;;;
4
5 $ORIGIN .
6 $TTL 86400 ; 1 day
7 0.250.250.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
8 2017010100 ; serial
9 10800 ; refresh (3 hours)
10 3600 ; retry (1 hour)
11 2419200 ; expire (4 weeks)
12 300 ; minimum (5 minutes)
13 )
14 NS ns1.remontti.net.br.
15 NS ns2.remontti.net.br.
16
17 $ORIGIN 0.250.250.in-addr.arpa.
18 0 PTR 250-250-0-000.remontti.net.br.
19 1 PTR router-gw.remontti.net.br.
20 2 PTR ns1.remontti.net.br.
21 3 PTR ns2.remontti.net.br.
22 4 PTR www.remontti.net.br.
23 5 PTR zabbix.remontti.net.br.
24 6 PTR mail.remontti.net.br.
25 7 PTR ns3.remontti.net.br.
26
27 ; Os gerados auto
28 $ORIGIN 0.250.250.in-addr.arpa.

https://blog.remontti.com.br/1397 7/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
29 $GENERATE 8-255 $ PTR 250-250-0-$.remontti.net.br.
30
31 ;;;;;;;;;;;;;;;;;;;;;;;
32 ;;;; 250.250.1.rev ;;;;
33 ;;;;;;;;;;;;;;;;;;;;;;;
34
35 $ORIGIN .
36 $TTL 86400 ; 1 day
37 1.250.250.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
38 2017010100 ; serial
39 10800 ; refresh (3 hours)
40 3600 ; retry (1 hour)
41 2419200 ; expire (4 weeks)
42 300 ; minimum (5 minutes)
43 )
44 NS ns1.remontti.net.br.
45 NS ns2.remontti.net.br.
46
47
48 $ORIGIN 1.250.250.in-addr.arpa.
49 $GENERATE 0-255 $ PTR 250-250-1-$.remontti.net.br.

Barabada não!?

Não podemos esquecer nosso reverso do IPv6!

Terceiro arquivo 2000.fff.rev


1 # vim /etc/bind/reverse/2000.fff.rev

1 $TTL 86400 ; 1 day


2 @ IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. (
3 2017010100 ; serial
4 10800 ; refresh (3 hours)
5 3600 ; retry (1 hour)
6 2419200 ; expire (4 weeks)
7 300 ; minimum (5 minutes)
8 )
9 NS ns1.remontti.net.br.
10 NS ns2.remontti.net.br.
11
12 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR
13 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR
14 3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR
15 4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR
https://blog.remontti.com.br/1397 8/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
16 5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR
17 6.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR
18 7.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa. IN PTR
19
20 ;
21 ; OU Mais compacto.
22 ;
23
24 ;$ORIGIN 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.2.0.0.5.2.0.f.f.f.0.0.0.0.2.ip6.arpa.
25 ;1 PTR router-gw.remontti.net.br.
26 ;2 PTR ns1.remontti.net.br.
27 ;3 PTR ns2.remontti.net.br.
28 ;4 PTR www.remontti.net.br.
29 ;5 PTR zabbix.remontti.net.br.
30 ;6 PTR mail.remontti.net.br.
31 ;7 PTR ns3.remontti.net.br.

Este site http://rdns6.com/hostRecord pode ser bem útil para gerar seus PTRs.
Para finalizar acertando as permissões.
1 # chown bind. -R /etc/bind/reverse

Precisamos informar nossas zones “lincar nossos arquivos” para serem interpretado pelo bind, esse arquivo é o
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
1 # vim /etc/bind/named.conf.local

Adicione nele:
1 // Reverso IPv4
2
3 zone "0.250.250.in-addr.arpa" {
4 type master;
5 file "/etc/bind/reverse/250.250.0.rev";
6 };
7
8 zone "1.250.250.in-addr.arpa" {
9 type master;
10 file "/etc/bind/reverse/250.250.1.rev";
11 };
12
13 // Reverso IPv6
14
https://blog.remontti.com.br/1397 9/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
15 zone "f.f.f.0.0.0.0.2.ip6.arpa" {
16 type master;
17 file "/etc/bind/reverse/2000.fff.rev";
18 };

Restart o serviço.
1 # /etc/init.d/bind9 restart

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


1 # dig -x 250.250.0.2 @localhost
2 # dig -x 2000:fff:250:250:0::2 @localhost

Vamos configurar agora nosso domínio autoritativo remontti.net.br.


Para ficar organizado vou criar a pasta master também.
1 # mkdir /etc/bind/master
2 # chown bind. -R /etc/bind/master

Criamos então nosso arquivo remontti.net.br.hosts na pasta master.


1 # vim /etc/bind/master/remontti.net.br.hosts

1 $ORIGIN .
2 $TTL 86400 ; 1 day
3 remontti.net.br IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br.
4 2017010100 ; serial
5 10800 ; refresh (3 hours)

https://blog.remontti.com.br/1397 10/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
6 3600 ; retry (1 hour)
7 2419200 ; expire (4 weeks)
8 300 ; minimum (5 minutes)
9 )
10
11 NS ns1.remontti.net.br.
12 NS ns2.remontti.net.br.
13
14 A 250.250.0.4
15 AAAA 2000:fff:250:250:0::4
16 MX 20 mail.remontti.net.br.
17
18 TXT "v=spf1 a mx -all"
19 SPF "v=spf1 a mx -all"
20
21 $ORIGIN remontti.net.br.
22 $TTL 10800 ; 3 hours
23
24 rev-250-250-0-000 A 250.250.0.0
25 router-gw A 250.250.0.1
26 AAAA 2000:fff:250:250:0::1
27 ns1 A 250.250.0.2
28 AAAA 2000:fff:250:250:0::2
29 hostmaster A 250.250.0.2
30 AAAA 2000:fff:250:250:0::2
31 ns2 A 250.250.0.3
32 AAAA 2000:fff:250:250:0::3
33 www A 250.250.0.4
34 AAAA 2000:fff:250:250:0::4
35 ipv6 AAAA 2000:fff:250:250:0::4
36 ftp A 250.250.0.4
37 AAAA 2000:fff:250:250:0::4
38 zabbix A 250.250.0.5
39 AAAA 2000:fff:250:250:0::5
40 mail A 250.250.0.6
41 AAAA 2000:fff:250:250:0::6
42 imap A 250.250.0.6
43 AAAA 2000:fff:250:250:0::6
44 pop A 250.250.0.6
45 AAAA 2000:fff:250:250:0::6
46 smtp A 250.250.0.6
47 AAAA 2000:fff:250:250:0::6
48 ns3 A 250.250.0.7
49 AAAA 2000:fff:250:250:0::7
50 250-250-0-8 A 250.250.0.8
51 250-250-0-9 A 250.250.0.9
52 250-250-0-10 A 250.250.0.10

https://blog.remontti.com.br/1397 11/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
53 ;[...]
54 ;[...]
55 ; complete com toda a faixa do seu bloco
56 ; no nosso exemplo 250.250.0.0/23
57 ;[...]
58 ;[...]
59 250-250-0-254 A 250.250.0.254
60 250-250-0-255 A 250.250.0.255
61 250-250-1-0 A 250.250.1.0
62 250-250-1-1 A 250.250.1.1
63 ;[...]
64 ;[...]
65 250-250-1-254 A 250.250.1.254
66 250-250-1-255 A 250.250.1.255
67 ; final

Usando GENERATE:
1 $ORIGIN .
2 $TTL 86400 ; 1 day
3 remontti.net.br IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br.
4 2017010100 ; serial
5 10800 ; refresh (3 hours)
6 3600 ; retry (1 hour)
7 2419200 ; expire (4 weeks)
8 300 ; minimum (5 minutes)
9 )
10
11 NS ns1.remontti.net.br.
12 NS ns2.remontti.net.br.
13
14 A 250.250.0.4
15 AAAA 2000:fff:250:250:0::4
16 MX 20 mail.remontti.net.br.
17
18 TXT "v=spf1 a mx -all"
19 SPF "v=spf1 a mx -all"
20
21 $ORIGIN remontti.net.br.
22 $TTL 10800 ; 3 hours
23
24 250-250-0-0 A 250.250.0.0
25 router-gw A 250.250.0.1
26 AAAA 2000:fff:250:250:0::1
27 ns1 A 250.250.0.2
28 AAAA 2000:fff:250:250:0::2

https://blog.remontti.com.br/1397 12/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
29 hostmaster A 250.250.0.2
30 AAAA 2000:fff:250:250:0::2
31 ns2 A 250.250.0.3
32 AAAA 2000:fff:250:250:0::3
33 www A 250.250.0.4
34 AAAA 2000:fff:250:250:0::4
35 ipv6 AAAA 2000:fff:250:250:0::4
36 ftp A 250.250.0.4
37 AAAA 2000:fff:250:250:0::4
38 zabbix A 250.250.0.5
39 AAAA 2000:fff:250:250:0::5
40 mail A 250.250.0.6
41 AAAA 2000:fff:250:250:0::6
42 imap A 250.250.0.6
43 AAAA 2000:fff:250:250:0::6
44 pop A 250.250.0.6
45 AAAA 2000:fff:250:250:0::6
46 smtp A 250.250.0.6
47 AAAA 2000:fff:250:250:0::6
48 ns3 A 250.250.0.7
49 AAAA 2000:fff:250:250:0::7
50
51 ; Os gerados auto
52 $ORIGIN remontti.net.br.
53 $GENERATE 8-255 250-250-0-$ A 250.250.0.$
54
55 ; Os gerados auto
56 $ORIGIN remontti.net.br.
57 $GENERATE 8-255 250-250-1-$ A 250.250.1.$

Criamos uma zone para nosso dominio remontti.net.br em named.conf.local


1 # vim /etc/bind/named.conf.local

Adicione ao final do arquivo:


1 // Zonas Master
2
3 zone "remontti.net.br" IN {
4 type master;
5 file "/etc/bind/master/remontti.net.br.hosts";
6 };

Restart o serviço.

https://blog.remontti.com.br/1397 13/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
1 # /etc/init.d/bind9 restart

Testamos agora para ver se está resolvendo nosso nomes


1 # dig ANY ns1.remontti.net.br @localhost
2 # host remontti.net.br

Parabéns! Seu servidor master está pronto!

INSTALAÇÃO SERVIDOR DNS SLAVE (NS2)

Praticamente o processo se repete, com algumas alterações.


1 # apt install bind9 dnsutils

Alterar o DNS do servidor:


1 # vim /etc/resolv.conf

Altere para:
1 nameserver 127.0.0.1
2 search localhost

Criamos um backup do named.conf.options


1 # cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp

https://blog.remontti.com.br/1397 14/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti

No named.conf.options unica coisa que vai alterar é em allow-transfer, como esse servidor é slave, ele não não tem a
necessidade de informar o IP de outro(s) servidores que slaves. Como dito antes, se você não quiser que seu servidor seja
recursivo apenas altere allow-recursion e allow-query-cache para localhost.
1 # vim /etc/bind/named.conf.options

1 //ACLs (Access Control Lists)


2
3 // ACL "permite-recursiva" vão ficar os hosts estão autorizados a fazer consulta
4 // recursivas através deste servidor.
5 acl permite-recursiva {
6 127.0.0.1;
7 ::1;
8 250.250.0.0/23;
9 2000:fff::/32;
10 192.168.0.0/16;
11 172.16.0.0/12;
12 10.0.0.0/8;
13 };
14
15 options {
16 // O diretório de trabalho do servidor
17 // Quaisquer caminho não informado será tomado como padrão este directório
18 directory "/var/cache/bind";
19
20 //Suporte a DNSSEC
21 dnssec-enable yes;
22 dnssec-validation auto;
23
24 // Conforme RFC1035
25 // https://www.ietf.org/rfc/rfc1035.txt
26 auth-nxdomain no;
27
28 // Respondendo para IPv4 e IPv6
29 // Porta 53 estará aberta para ambos v4 e v6
30 listen-on { any; };
31 listen-on-v6 { any; };
32
33 // Limitação da taxa de resposta no sistema de nomes de domínio (DNS RRL)
34 rate-limit {
35 responses-per-second 15;
36 window 5;
37 };
38
39 // Melhora o desempenho do servidor, reduzindo os volumes de dados de saída.
40 // O padrão BIND é (no) não.
https://blog.remontti.com.br/1397 15/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
41 minimal-responses yes;
42
43 // Especifica quais hosts estão autorizados a fazer consultas recursivas atr
44 // Aqui que você vai informar os IPs da sua rede que você irá permitir consu
45 allow-recursion {
46 permite-recursiva;
47 };
48
49 // Endereço estão autorizados a emitir consultas ao cache local,
50 // sem acesso ao cache local as consultas recursivas são inúteis.
51 allow-query-cache {
52 permite-recursiva;
53 };
54
55 // Especifica quais hosts estão autorizados a fazer perguntas DNS comuns.
56 allow-query { any; };
57
58 // Especifica quais hosts estão autorizados a receber transferências de zona
59 // Como esse já é o secundário, vamos deixar como none.
60 allow-transfer { none; };
61
62 // Esta opção faz com que o servidor slave ao fazer a transferência de zonas
63 // mastes deste servidor nao compile o arquivo, assim no outro servidor o
64 // arquivo da zona tera um texto "puro"
65 masterfile-format text;
66
67 // Para evitar que vase a versao do Bind, definimos um nome
68 version "RR DNS Server";
69 };

IP REVERSO (SLAVE)

Para organizar criamos duas pastas slave-rev para nossos reveros e slave para nossos dominios slave e alteramos
as permissões para nosso user bind poder escrever nelas.
1 # mkdir /etc/bind/slave-rev
2 # mkdir /etc/bind/slave
3 # chown bind. -R /etc/bind/slave*

Não é mais necessário criar os arquivos pois esses serão transferidos do nosso servidor master. Basta informarmos em nossas
zonas do arquivo named.conf.local, que serão do tipo (slave) e apontaremos o IP do masterpara que nosso servidor slave faça
a transferência do master.
1 # vim /etc/bind/named.conf.local
https://blog.remontti.com.br/1397 16/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti

Adicione nele:
1 // Reverso IPv4
2
3 zone "0.250.250.in-addr.arpa" {
4 type slave;
5 file "/etc/bind/slave-rev/250.250.0.rev";
6 masters { 250.250.0.2; };
7 allow-notify { 250.250.0.2; };
8
9 };
10
11 zone "1.250.250.in-addr.arpa" {
12 type slave;
13 file "/etc/bind/slave-rev/250.250.1.rev";
14 masters { 250.250.0.2; };
15 allow-notify { 250.250.0.2; };
16 };
17
18 // Reverso IPv6
19
20 zone "f.f.f.0.0.0.0.2.ip6.arpa" {
21 type slave;
22 file "/etc/bind/slave-rev/2000.fff.rev";
23 masters { 2000:fff:250:250:0::2; };
24 allow-notify { 2000:fff:250:250:0::2; };
25 };
26
27 // Zonas Slave
28
29 zone "remontti.net.br" IN {
30 type slave;
31 file "/etc/bind/slave/remontti.net.br.hosts";
32 masters { 250.250.0.2; };
33 allow-notify { 250.250.0.2; };
34 };

Restart o serviço e veja se dentro dos diretórios slave e slave-rev os arquivos foram criados.
1 # /etc/init.d/bind9 restart
2 # ls -lh slave*

https://blog.remontti.com.br/1397 17/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti

Vamos aos testes.


1 # dig -x 250.250.0.4 @localhost
2 # dig ANY ns1.remontti.net.br @localhost

No nosso cenário temos um servidor de hospedagem nesse terei dois domínios, então também quero que meu servidor slave
responda por eles. Para isso basta nos adicionar no nosso arquivo named.conf.local:
1 # vim /etc/bind/named.conf.local

1 // Zonas Slave do servidor de Hospedagem


2
3 zone "meudominio1.net.br" {
4 type slave;
5 file "/etc/bind/slave/meudominio1.com.br.hosts";
6 masters { 250.250.0.7; };
7 allow-notify { 250.250.0.7; };
8 };

https://blog.remontti.com.br/1397 18/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
9
10 zone "meudominio2.net.br" {
11 type slave;
12 file "/etc/bind/slave/meudominio2.com.br.hosts";
13 masters { 250.250.0.7; };
14 allow-notify { 250.250.0.7; };
15 };

Restarte o bind e não esqueça que é necessário que seu servidor de hospedagem tenha o IP do seu servidor slave para poder
fazer os allow-transfer.

Não esqueça também de alterar nas configurações da sua placa de rede dos seus servidores (dns-nameservers e dns-search).
1 #
2 # /etc/network/interfaces
3 #
4 auto eth0
5 iface eth0 inet static
6 address 186.250.168.14
7 netmask 255.255.255.224
8 network 186.250.168.0
9 broadcast 186.250.168.31
10 gateway 186.250.168.1
11 # dns-* options are implemented by the resolvconf package, if installed
12 dns-nameservers 127.0.0.1
13 dns-search localhost
14
15 iface eth0 inet6 static
16 pre-up modprobe ipv6
17 address 2000:fff:250:250:0::2
18 netmask 64
19 gateway 2000:fff:250:250:0::1

DICA DE SEGURANÇA:

As consultas recursivas são fechada para outros IPs que não esteja na sua ACL permetidos, porém esses IPs tem resposta com
negação. Para visualizar esses logs faça o seguinte:
1 # vim /etc/bind/named.conf

1 // This is the primary configuration file for the BIND DNS server named.
2 //
3 // Please read /usr/share/doc/bind9/README.Debian.gz for information on the
4 // structure of BIND configuration files in Debian, *BEFORE* you customize
https://blog.remontti.com.br/1397 19/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
5 // this configuration file.
6 //
7 // If you are just adding zones, please do that in /etc/bind/named.conf.local
8
9 logging {
10 channel security_file {
11 file "/var/log/named/security.log" versions 3 size 30m;
12 severity dynamic;
13 print-time yes;
14 };
15 category security {
16 security_file;
17 };
18 };
19
20 include "/etc/bind/named.conf.options";
21 include "/etc/bind/named.conf.local";
22 include "/etc/bind/named.conf.default-zones";

Agora crie o diretório que ficarão os logs e de permissão:


1 # mkdir /var/log/named/
2 # chown bind. /var/log/named/
3 # /etc/init.d/bind9 restart

Agora quando alguem não autorizado tentar usar seu DNS sera gerado um log.

Agora vamos a instalação do fail2ban para coloca ordem na casa.


1 # apt install fail2ban

Vamos habilitar o modulo para começar a proteção, vale lembrar que o modulo SSH já vem ativo por padrão.

Debian 9
1 #vim /etc/fail2ban/jail.d/defaults-debian.conf

1 [sshd]
2 enabled = true
https://blog.remontti.com.br/1397 20/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti
3
4 [named-refused]
5 enabled = true

Para debian 8 altere as linhas no arquivo /etc/fail2ban/jail.conf.

Se você gosta da coisa “violenta” como eu mude o padrão para DROP!


1 # vim /etc/fail2ban/action.d/iptables-multiport.conf

Procure:
1 actionban = <iptables> -I f2b-<name> 1 -s <ip> -j <blocktype>
2 # Altere para:
3 actionban = iptables -A INPUT -s <ip> -j DROP
4
5 actionunban = <iptables> -D f2b-<name> -s <ip> -j <blocktype>
6 # Altere para:
7 actionunban = iptables -D INPUT -s <ip> -j DROP

Agora reinicie o serviço


1 # /etc/init.d/fail2ban restart

Os IPs que tiverem tentando usar seu DNS serão avisado 5x depois irão tomar um DROP
Para ver as regras do iptables use:
1 # iptables -nL

https://blog.remontti.com.br/1397 21/22
22/03/2021 Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6) + Fail2ban (Debian8/9) [Descontinuado] - Remontti

DICA ROOT SERVERS E KEYs ATUALIZADO:


Atualize os root servers ele é a alma do seu servidor. Faça isso tanto nos Master quanto no Slave.
1 # mv /etc/bind/db.root /etc/bind/db.root.`date +%Y%m%d`
2 # wget https://www.internic.net/domain/named.root -O /etc/bind/db.root --no-check
3 # mv /etc/bind/bind.keys /etc/bind/bind.keys.`date +%Y%m%d`
4 # wget https://ftp.isc.org/isc/bind9/keys/9.11/bind.keys.v9_11 -O /etc/bind/bind.
5 # /etc/init.d/bind9 restart

Dica de leitura:
https://pt.wikipedia.org/wiki/Servidor-raiz

NÃO TEM IPv6 CONFIGURADO?:


Se seu servidor não tiver IPv6 configurado recomendo que desative o ipv6 no bind (o que é triste) mas se não tem…
1 # vim /etc/default/bind9

em OPTIONS=”-u bind” adicione um -4 OPTIONS=”-4 -u bind”


1 # vim /etc/bind/named.conf.options

listen-on-v6 { any; };
#para:
listen-on-v6 { none; };

https://blog.remontti.com.br/1397 22/22

Você também pode gostar