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 ::
root@remontti:~# apt install ipcalc root@remontti:~# ipcalc 45.80.48.0/22 Address: 45.80.48.0 00101101.01010000.001100 00.00000000 Netmask: 255.255.252.0 = 22 11111111.11111111.111111 00.00000000 Wildcard: 0.0.3.255 00000000.00000000.000000 11.11111111 => Network: 45.80.48.0/22 00101101.01010000.001100 00.00000000 HostMin: 45.80.48.1 00101101.01010000.001100 00.00000001 HostMax: 45.80.51.254 00101101.01010000.001100 11.11111110 Broadcast: 45.80.51.255 00101101.01010000.001100 11.11111111 Hosts/Net: 1022 Class A
:: ip6calc ::
root@remontti:~# apt install python-ipaddr wget root@remontti:~# wget https://blog.remontti.com.br/arquivos/Home/ip6calc -O /bin/ip6calc root@remontti:~# chmod +x /bin/ip6calc root@remontti:~# ip6calc 2804:f123::/32 Address: (Compressed) 2804:f123::/32 (Exploded) 2804:f123:0000:0000:0000:0000:0000:0000/32 (Binary) 0010100000000100:1111000100100011:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000/32 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ /1 /12 /29 /32 /48 /56 /64 /112 /128 Address type is: global unicast Netmask: (Compressed) ffff:ffff:: (Exploded) ffff:ffff:0000:0000:0000:0000:0000:0000 (Binary) 1111111111111111:1111111111111111:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000 First address assignable: (Compressed) 2804:f123:: (Exploded) 2804:f123:0000:0000:0000:0000:0000:0000 (Binary) 0010100000000100:1111000100100011:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000 Last address assignable: (Compressed) 2804:f123:ffff:ffff:ffff:ffff:ffff:ffff (Exploded) 2804:f123:ffff:ffff:ffff:ffff:ffff:ffff (Binary) 0010100000000100:1111000100100011:1111111111111111:1111111111111111:1111111111111111:1111111111111111:1111111111111111:1111111111111111 Total number of addresses: 79228162514264337593543950336 (2^96 or 7.9e+28) First address assignable (excluding "subnet-router anycast" of RFC 2526): (Compressed) 2804:f123::1 (Exploded) 2804:f123:0000:0000:0000:0000:0000:0001 (Binary) 0010100000000100:1111000100100011:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000001 Total number of addresses (Excluding "reserved" addresses): 79228162514264337593543950335 (7.9e+28) This prefix can contain one of the following: * 4294967296 (2^32 or 4.3e+09) subnets /64 * 16777216 (2^24 or 1.7e+07) subnets /56 * 65536 (2^16 or 6.6e+04) subnets /48
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.
# vim /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug enp0s3 iface enp0s3 inet static address 45.80.48.2/28 gateway 45.80.48.1 dns-nameservers 127.0.0.1 dns-search localhost iface enp0s3 inet6 static pre-up modprobe ipv6 address 2804:f123:bebe:cafe::2 netmask 64 gateway 2804:f123:bebe:cafe::1
MASTER (NS1)
# su - # apt install bind9 dnsutils
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.
# echo "nameserver 127.0.0.1" > /etc/resolv.conf
Para descobrir se seu servidor esta resolvendo nomes use o comando dig.
# dig google.com @localhost
Retornará algo como:
[...] ;; ANSWER SECTION: google.com. 300 IN A 172.217.162.110 [...]
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/
# cd /etc/bind
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.
# cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp # echo > named.conf.options
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.
# vim /etc/bind/named.conf.options
// ACL "autorizados" vão ficar os ips que são autorizados a fazer // consultas recursivas neste servidor. // Neste caso vou incluir os ips que foram nos delegados bem como de localhost e IPs privados acl autorizados { 127.0.0.1; ::1; 45.80.48.0/22; 2804:f123::/32; 192.168.0.0/16; 172.16.0.0/12; 100.64.0.0/10; 10.0.0.0/8; }; options { // O diretório de trabalho do servidor // Quaisquer caminho não informado será tomado como padrão este diretório directory "/var/cache/bind"; //Suporte a DNSSEC dnssec-enable yes; dnssec-validation auto; // Conforme RFC1035 // https://www.ietf.org/rfc/rfc1035.txt auth-nxdomain no; // Respondendo para IPv4 e IPv6 // Porta 53 estará aberta para ambos v4 e v6 listen-on { any; }; listen-on-v6 { any; }; // Limitação da taxa de resposta no sistema de nomes de domínio (https://kb.isc.org/docs/aa-00994) // Se você esta montando um servido apenas para autoritativo descomente as linhas a baixo. //rate-limit { // responses-per-second 15; // window 5; //}; // Melhora o desempenho do servidor, reduzindo os volumes de dados de saída. // O padrão BIND é (no) não. minimal-responses yes; // Especifica quais hosts estão autorizados a fazer consultas // recursivas através deste servidor. // Aqui que você vai informar os IPs da sua rede que você irá permitir consultar os DNS. allow-recursion { autorizados; }; // Endereço estão autorizados a emitir consultas ao cache local, // sem acesso ao cache local as consultas recursivas são inúteis. allow-query-cache { autorizados; }; // Especifica quais hosts estão autorizados a fazer perguntas DNS comuns. allow-query { any; }; // Especifica quais hosts estão autorizados a receber transferências de zona a partir do servidor. // Seu servidor Secundário, no nosso ex vou deixar então o ips dos dois servidores v4 e v6. allow-transfer { 45.80.48.3; 2804:f123:bebe:cafe::3; }; also-notify { 45.80.48.3; 2804:f123:bebe:cafe::3; }; // Esta opção faz com que o servidor slave ao fazer a transferência de zonas // mastes deste servidor não compile o arquivo, assim no outro servidor o arquivo // da zona terá um texto "puro" masterfile-format text; // Para evitar que vase a versao do Bind, definimos um nome // Reza a lenda que deixar RR DNS Server seu servidor nunca sofrerá ataques. version "RR DNS Server"; };
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.
# vim /etc/default/bind9
Adicione um -4 em OPTIONS.
OPTIONS="-u bind" #para OPTIONS="-4 -u bind"
# vim /etc/bind/named.conf.options
Altere listen-on-v6 para none.
listen-on-v6 { any; }; #para: listen-on-v6 { none; };
Toda alteração feita no bind para ter efeito é necessário restartar o serviço.
# systemctl restart bind9
Se desejar remover os comentários do named.conf.options execute:
# cat /etc/bind/named.conf.options |grep -v "//" > /tmp/named.conf.options ; mv /tmp/named.conf.options /etc/bind/
Para verificar se seu arquivo tem algum erro use o comando named-checkconf
# named-checkconf /etc/bind/named.conf.options
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.
/etc/bind/named.conf.options:5: missing ';' before '2804:f123::'
Verifique também o status do bind para ver se o mesmo era rodando.
# systemctl restart bind9 # systemctl status bind9
Verifique se está: “active (running)”
● bind9.service - BIND Domain Name Server Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-07-19 14:17:09 -03; 4s ago Docs: man:named(8) Process: 706 ExecStart=/usr/sbin/named $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 707 (named) Tasks: 4 (limit: 2359) Memory: 11.9M CGroup: /system.slice/bind9.service └─707 /usr/sbin/named -u bind
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.
# apt install nftables fail2ban
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”.
# vim /etc/fail2ban/jail.conf
Procure por “banaction = iptables-multiport” e “banaction_allports = iptables-allports” e altere seu valor para “nftables-allports”:
#banaction = iptables-multiport #banaction_allports = iptables-allports banaction = nftables-allports banaction_allports = nftables-allports
Altere o modo de bloqueio em nftables-allports.conf para fazer que ele de um “drop all”.
# vim /etc/fail2ban/action.d/nftables-allports.conf
Procure por nftables_mode = meta l4proto
#nftables_mode = meta l4proto <protocol> nftables_mode =
Em nftables-common.conf alteraremos o padrão de reject para drop
# vim /etc/fail2ban/action.d/nftables-common.conf
Procure por “blocktype = reject” e altere seu valor para “drop”.
#blocktype = reject blocktype = 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
- prefregex = ^%(__line_prefix)s( error:)?\s*client <HOST>#\S+( \([\S.]+\))?: <F-CONTENT>.+</F-CONTENT>$ + prefregex = ^%(__line_prefix)s( error:)?\s*client( @[0-9a-z]+)? <HOST>#\S+( \([\S.]+\))?: <F-CONTENT>.+</F-CONTENT>$
Porém como eu vou ser mais “bruto” no filtro. Vou criar nosso próprio filtro bind9, vamos lá!
# vim /etc/fail2ban/filter.d/bind9.conf
Adicone no arquivo:
# Fail2Ban filter file for named (bind9.11). # [Definition] # Daemon name _daemon=named # Shortcuts for easier comprehension of the failregex __pid_re=(?:\[\d+\]) __daemon_re=\(?%(_daemon)s(?:\(\S+\))?\)?:? __daemon_combs_re=(?:%(__pid_re)s?:\s+%(__daemon_re)s|%(__daemon_re)s%(__pid_re)s?:) # hostname daemon_id spaces # this can be optional (for instance if we match named native log files) __line_prefix=(?:\s\S+ %(__daemon_combs_re)s\s+)? prefregex = ^%(__line_prefix)s( error:)?\s*client( @[0-9a-z]+)? <HOST>#\S+( \([\S.]+\))?: <F-CONTENT>.+</F-CONTENT>$ failregex = ^(view (internal|external): )?query(?: \(cache\))? '.*' denied\s*$ ^zone transfer '\S+/AXFR/\w+' denied\s*$ ^bad zone transfer request: '\S+/IN': non-authoritative zone \(NOTAUTH\)\s*$ ignoreregex = # DEV Notes: # Author: Rudimar Remontti
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.
# vim /etc/fail2ban/jail.d/bind9.conf
Adicione no arquivo:
[bind9] enabled = true port = domain,953 protocol = tcp logpath = /var/log/named/security.log bantime = 24h maxretry = 1
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.
# vim /etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local logging { channel security_file { file "/var/log/named/security.log" versions 3 size 30m; severity dynamic; print-time yes; }; channel file_log { file "/var/log/named/named.log" versions 2 size 50k; severity info; print-time yes; print-severity yes; print-category yes; }; channel errors_syslog { syslog daemon; severity warning; }; category security { security_file; }; category dnssec { errors_syslog; }; category default { file_log; }; category lame-servers { null; }; category edns-disabled { null; }; category resolver { null; }; category unmatched { null; }; }; include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones";
Crie o diretório onde o bind vai registrar seus logs e de permissão para que possa gravar nesta pasta.
# mkdir /var/log/named/ # chown bind. /var/log/named/
É importante ativar o nftables na inicialização e restartar os serviços para que nossas configurações sejam interpretadas.
# systemctl enable nftables # systemctl restart bind9 # systemctl restart nftables # systemctl restart fail2ban
Para visualizar seu firewall use o comando:
# nft list ruleset
Note que ja temos alguns IPs sendo dropado por tentativas de consulta no DNS e SSH.
table inet filter { set f2b-sshd { type ipv4_addr elements = { 92.63.194.90, 142.44.130.186, 191.54.227.13 } } set f2b-bind9 { type ipv4_addr elements = { 71.6.199.23, 185.94.111.1 } } chain input { type filter hook input priority 0; policy accept; ip saddr @f2b-bind9 drop ip saddr @f2b-sshd drop } chain forward { type filter hook forward priority 0; policy accept; } chain output { type filter hook output priority 0; policy accept; } }
Alguns comandos legais do fail2ban
# fail2ban-client status
Veja quais filtros estão ativos
Status |- Number of jail: 2 `- Jail list: bind9, sshd
fail2ban-client status NOME_FILTRO
Ex:
# fail2ban-client status bind9 Status for the jail: bind9 |- Filter | |- Currently failed: 0 | |- Total failed: 2 | `- File list: /var/log/named/security.log `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 71.6.199.23 185.94.111.1 # fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 3 |- Total banned: 3 `- Banned IP list: 142.44.130.186 191.54.227.13 92.63.194.90
Para remover um IP que foi bloqueado basta:
# fail2ban-client set bind9 unbanip IPADDRESS
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.
No meu exemplo vai ficar assim: - 45.80.48.0/27 - Servidores - 45.80.48.32/27 - Roteamento - 45.80.48.64/26 - Clientes com IP Fixo - 45.80.48.128/25 - CGNAT - 45.80.49.0/26 - NOC (Gerência) - 45.80.49.64/26 - Clientes Delegação - 45.80.49.128/25 - Clientes dinâmico - 45.80.50.0/24 - Clientes dinâmico - 45.80.51.0/24 - Clientes dinâmico # Quebrei meu ex de forma q não fique simples para que possamos dar nomes sugestivos aos IPs, adapte a sua realidade
Para ficar organizado vou criar a pasta master-aut onde ficará os arquivos de hosts dos domínios autoritativos.
# mkdir /var/cache/bind/master-aut
Crie o arquivo remontti.net.br.hosts na pasta master-rev. Ajuste remontti.net.br para seu domínio.
# vim /var/cache/bind/master-aut/remontti.net.br.hosts
$ORIGIN . $TTL 86400 ; 1 day remontti.net.br IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. ( 2020062300 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 2419200 ; expire (4 weeks) 300 ; minimum (5 minutes) ) NS ns1.remontti.net.br. NS ns2.remontti.net.br. A 45.80.48.4 AAAA 2804:f123:bebe:cafe::4 MX 10 mail.remontti.net.br. TXT "v=spf1 a mx -all" SPF "v=spf1 a mx -all" $ORIGIN remontti.net.br. $TTL 10800 ; 3 hours 45-80-48-0 A 45.80.48.0 45-80-48-1 A 45.80.48.1 AAAA 2804:f123:bebe:cafe::1 ns1 A 45.80.48.2 AAAA 2804:f123:bebe:cafe::2 hostmaster A 45.80.48.2 AAAA 2804:f123:bebe:cafe::2 ns2 A 45.80.48.3 AAAA 2804:f123:bebe:cafe::3 www A 45.80.48.4 AAAA 2804:f123:bebe:cafe::4 ftp A 45.80.48.4 AAAA 2804:f123:bebe:cafe::4 zabbix A 45.80.48.5 AAAA 2804:f123:bebe:cafe::5 phpipam A 45.80.48.5 AAAA 2804:f123:bebe:cafe::5 mail A 45.80.48.6 AAAA 2804:f123:bebe:cafe::6 imap A 45.80.48.6 AAAA 2804:f123:bebe:cafe::6 pop A 45.80.48.6 AAAA 2804:f123:bebe:cafe::6 smtp A 45.80.48.6 AAAA 2804:f123:bebe:cafe::6 $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.$
Chamaremos a zone remontti.net.br em named.conf.local
# vim /etc/bind/named.conf.local
Adicione ao final do arquivo:
// Zonas Master zone "remontti.net.br" { type master; file "/var/cache/bind/master-aut/remontti.net.br.hosts"; };
De permissões ao diretório/arquivo criados
# chown bind. /var/cache/bind/master-aut -R
Restart o serviço.
# systemctl restart bind9
Testamos agora para ver se está resolvendo nosso domínio.
# dig ANY remontti.net.br @localhost
; <<>> DiG 9.11.5-P4-5.1-Debian <<>> ANY remontti.net.br @localhost ;; global options: +cmd ;; Got answer: ;; ->HEADER<- opcode: QUERY, status: NOERROR, id: 52255 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 3148faada350a11c7aeaf3835d32238e495995289566b021 (good) ;; QUESTION SECTION: ;remontti.net.br. IN ANY ;; ANSWER SECTION: remontti.net.br. 86400 IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. 2020062300 10800 3600 2419200 300 remontti.net.br. 86400 IN NS ns2.remontti.net.br. remontti.net.br. 86400 IN NS ns1.remontti.net.br. remontti.net.br. 86400 IN A 45.80.48.4 remontti.net.br. 86400 IN AAAA 2804:f123:bebe:cafe::4 remontti.net.br. 86400 IN MX 10 mail.remontti.net.br. remontti.net.br. 86400 IN TXT "v=spf1 a mx -all" ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: sex jul 19 17:09:50 -03 2019 ;; MSG SIZE rcvd: 263
Testes:
# host remontti.net.br remontti.net.br has address 45.80.48.4 remontti.net.br has IPv6 address 2804:f123:bebe:cafe::4 remontti.net.br mail is handled by 20 mail.remontti.net.br. # host ns1.remontti.net.br ns1.remontti.net.br has address 45.80.48.2 ns1.remontti.net.br has IPv6 address 2804:f123:bebe:cafe::2 # host ns2.remontti.net.br ns2.remontti.net.br has address 45.80.48.3 ns2.remontti.net.br has IPv6 address 2804:f123:bebe:cafe::3 # host mail.remontti.net.br mail.remontti.net.br has address 45.80.48.6 mail.remontti.net.br has IPv6 address 2804:f123:bebe:cafe::6 # host zabbix.remontti.net.br zabbix.remontti.net.br has address 45.80.48.5 zabbix.remontti.net.br has IPv6 address 2804:f123:bebe:cafe::5
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:
# vim /etc/fail2ban/jail.conf
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)
# "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban # will not ban a host which matches an address in this list. Several addresses # can be defined using space (and/or comma) separator. ignoreip = 127.0.0.1/8 ::1 200.160.0.0/20 200.219.148.0/24 2001:12ff::/32 2001:12f8:6::/47 45.80.48.3 2804:f123:bebe:cafe::3
Reinicie o fail2ban
# systemctl restart 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.
# mkdir /var/cache/bind/master-rev
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
# vim /var/cache/bind/master-rev/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.
$ORIGIN . $TTL 86400 ; 1 day 48.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. ( 2020062300 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 2419200 ; expire (4 weeks) 300 ; minimum (5 minutes) ) NS ns1.remontti.net.br. NS ns2.remontti.net.br. $ORIGIN 48.80.45.in-addr.arpa. 0 PTR 45.80.48.0.remontti.net.br. 1 PTR cpd.remontti.net.br. 2 PTR ns1.remontti.net.br. 3 PTR ns2.remontti.net.br. 4 PTR www.remontti.net.br. 5 PTR zabbix.remontti.net.br. 6 PTR mail.remontti.net.br. ; Servidores não utilizados $ORIGIN 48.80.45.in-addr.arpa. $GENERATE 7-31 $ PTR ns-$.remontti.net.br. $ORIGIN 48.80.45.in-addr.arpa. $GENERATE 32-255 $ PTR 45-80-48-$.remontti.net.br.
# vim /var/cache/bind/master-rev/45.80.49.rev
$ORIGIN . $TTL 86400 ; 1 day 49.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. ( 2020062300 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 2419200 ; expire (4 weeks) 300 ; minimum (5 minutes) ) NS ns1.remontti.net.br. NS ns2.remontti.net.br. $ORIGIN 49.80.45.in-addr.arpa. $GENERATE 0-255 $ PTR 45-80-49-$.remontti.net.br.
# vim /var/cache/bind/master-rev/45.80.50.rev
$ORIGIN . $TTL 86400 ; 1 day 50.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. ( 2020062300 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 2419200 ; expire (4 weeks) 300 ; minimum (5 minutes) ) NS ns1.remontti.net.br. NS ns2.remontti.net.br. ; Clientes dinâmicos $ORIGIN 50.80.45.in-addr.arpa. $GENERATE 0-255 $ PTR 45-80-50-$.remontti.net.br.
# vim /var/cache/bind/master-rev/45.80.51.rev
$ORIGIN . $TTL 86400 ; 1 day 51.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. ( 2020062300 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 2419200 ; expire (4 weeks) 300 ; minimum (5 minutes) ) NS ns1.remontti.net.br. NS ns2.remontti.net.br. ; Clientes dinâmicos $ORIGIN 51.80.45.in-addr.arpa. $GENERATE 0-255 $ PTR 45-80-51-$.remontti.net.br.
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.
# vim /var/cache/bind/master-rev/2000.f123.rev
$ORIGIN . $TTL 3600 ; 1 hour 3.2.1.f.4.0.8.2.ip6.arpa IN SOA ns1.remontti.net.br.3.2.1.f.4.0.8.2.ip6.arpa. hostmaster.remontti.net.br.3.2.1.f.4.0.8.2.ip6.arpa. ( 2020062300 ; serial 3600 ; refresh (1 hour) 900 ; retry (15 minutes) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) NS ns1.remontti.net.br. NS ns2.remontti.net.br. 1.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. IN PTR cpd.remontti.net.br. 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. IN 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. IN PTR ns2.remontti.net.br. 4.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. IN PTR www.remontti.net.br. 5.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. IN PTR zabbix.remontti.net.br. 6.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. IN PTR mail.remontti.net.br.
Este site http://rdns6.com/hostRecord pode ser bem útil para gerar seus PTRs.
Para finalizar acertando as permissões.
# chown bind. /var/cache/bind/master-rev -R
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
# vim /etc/bind/named.conf.local
Adicione ao final do arquivo:
// Reverso IPv4 zone "48.80.45.in-addr.arpa" { type master; file "/var/cache/bind/master-rev/45.80.48.rev"; }; zone "49.80.45.in-addr.arpa" { type master; file "/var/cache/bind/master-rev/45.80.49.rev"; }; zone "50.80.45.in-addr.arpa" { type master; file "/var/cache/bind/master-rev/45.80.50.rev"; }; zone "51.80.45.in-addr.arpa" { type master; file "/var/cache/bind/master-rev/45.80.51.rev"; }; // Reverso IPv6 zone "3.2.1.f.4.0.8.2.ip6.arpa" { type master; file "/var/cache/bind/master-rev/2804.f123.rev"; };
Para ficar fácil acesso criamos uma atalhos das nossas pastas master-* dentro de /etc/bind
# ln -s /var/cache/bind/master-aut /etc/bind/master-aut # ln -s /var/cache/bind/master-rev /etc/bind/master-rev
Restart o serviço e veja se esta rodando sem erros.
# systemctl restart bind9 # systemctl status bind9
Vamos ver se ele já está resolvendo nosso IP então?
# dig -x 45.80.48.2 @localhost ; <<>> DiG 9.11.5-P4-5.1-Debian <<>> -x 45.80.48.2 @localhost ;; global options: +cmd ;; Got answer: ;; ->HEADER<- opcode: QUERY, status: NOERROR, id: 59398 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: cc1f5b76ca8135b2f442ab295d35a916dcb3bf8066886af9 (good) ;; QUESTION SECTION: ;2.48.80.45.in-addr.arpa. IN PTR ;; ANSWER SECTION: 2.48.80.45.in-addr.arpa. 86400 IN PTR ns1.remontti.net.br. ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: seg jul 22 09:16:22 -03 2019 ;; MSG SIZE rcvd: 113 # dig -x 2804:f123:bebe:cafe::2 @localhost <<>> DiG 9.11.5-P4-5.1-Debian <<>> -x 2804:f123:bebe:cafe::2 @localhost ;; global options: +cmd ;; Got answer: ;; ->HEADER<- opcode: QUERY, status: NOERROR, id: 5580 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: ec8e4c0bfbec98025b39d4965d35a90be152e9b837af0575 (good) ;; QUESTION SECTION: ;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. IN PTR ;; ANSWER SECTION: 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. 3600 IN PTR ns1.remontti.net.br. ;; Query time: 0 msec ;; SERVER: ::1#53(::1) ;; WHEN: seg jul 22 09:16:11 -03 2019 ;; MSG SIZE rcvd: 162 # host 45.80.48.2 2.48.80.45.in-addr.arpa domain name pointer ns1.remontti.net.br. # host 2804:f123:bebe:cafe::2 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 domain name pointer ns1.remontti.net.br. # host 2804:f123:bebe:cafe::1 1.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 domain name pointer cpd.remontti.net.br. # host 45.80.48.3 3.48.80.45.in-addr.arpa domain name pointer ns2.remontti.net.br. # host 45.80.48.10 10.48.80.45.in-addr.arpa domain name pointer serv-10.remontti.net.br. # host 45.80.48.100 100.48.80.45.in-addr.arpa domain name pointer fixo-100.remontti.net.br. # host 45.80.48.200 200.48.80.45.in-addr.arpa domain name pointer cgnat-200.remontti.net.br. # host 45.80.49.0 0.49.80.45.in-addr.arpa domain name pointer noc-0.remontti.net.br. # host 45.80.49.2 2.49.80.45.in-addr.arpa domain name pointer noc-2.remontti.net.br. # host 45.80.49.20 20.49.80.45.in-addr.arpa domain name pointer noc-20.remontti.net.br. # host 45.80.49.64 64.49.80.45.in-addr.arpa domain name pointer dd-64.remontti.net.br. # host 45.80.49.128 128.49.80.45.in-addr.arpa domain name pointer 45-80-49-128.remontti.net.br. # host 45.80.49.129 129.49.80.45.in-addr.arpa domain name pointer 45-80-49-129.remontti.net.br. # host 45.80.50.50 50.50.80.45.in-addr.arpa domain name pointer 45-80-50-50.remontti.net.br. # host 45.80.51.50 50.51.80.45.in-addr.arpa domain name pointer 45-80-51-50.remontti.net.br.
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.
mv /usr/share/dns/root.hints /usr/share/dns/root.hints.`date +%Y%m%d` wget https://www.internic.net/domain/named.root -O /usr/share/dns/root.hints --no-check-certificate
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.
systemctl restart bind9 systemctl status bind9
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)
# apt install bind9 dnsutils
Alterar o DNS do servidor:
# # echo "nameserver 127.0.0.1" > /etc/resolv.conf
# cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bkp
No named.conf.options unica coisa em relação ao master é que vai alterar allow-transfer para none e remover o also-notify.
# vim /etc/bind/named.conf.options
acl autorizados { 127.0.0.1; ::1; 45.80.48.0/23; 2804:f123::/32; 192.168.0.0/16; 172.16.0.0/12; 100.64.0.0/10; 10.0.0.0/8; }; options { directory "/var/cache/bind"; dnssec-enable yes; dnssec-validation auto; auth-nxdomain no; listen-on { any; }; listen-on-v6 { any; }; minimal-responses yes; allow-recursion { autorizados; }; allow-query-cache { autorizados; }; allow-query { any; }; allow-transfer { none; }; masterfile-format text; version "RR DNS Server"; };
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.
# mkdir /var/cache/bind/slave-aut # mkdir /var/cache/bind/slave-rev # chown bind. -R /var/cache/bind/slave-*
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.
# vim /etc/bind/named.conf.local
// Reverso IPv4 zone "48.80.45.in-addr.arpa" { type slave; file "/var/cache/bind/slave-rev/45.80.48.rev"; masters { 45.80.48.2; }; allow-notify { 45.80.48.2; }; }; zone "49.80.45.in-addr.arpa" { type slave; file "/var/cache/bind/slave-rev/45.80.49.rev"; masters { 45.80.48.2; }; allow-notify { 45.80.48.2; }; }; zone "50.80.45.in-addr.arpa" { type slave; file "/var/cache/bind/slave-rev/45.80.50.rev"; masters { 45.80.48.2; }; allow-notify { 45.80.48.2; }; }; zone "51.80.45.in-addr.arpa" { type slave; file "/var/cache/bind/slave-rev/45.80.51.rev"; masters { 45.80.48.2; }; allow-notify { 45.80.48.2; }; }; // Reverso IPv6 zone "3.2.1.f.4.0.8.2.ip6.arpa" { type slave; file "/var/cache/bind/slave-rev/2804.f123.rev"; masters { 45.80.48.2; }; allow-notify { 45.80.48.2; }; }; // Zonas Slave zone "remontti.net.br" IN { type slave; file "/var/cache/bind/slave-aut/remontti.net.br.hosts"; masters { 45.80.48.2; }; allow-notify { 45.80.48.2; }; };
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.
# systemctl restart bind9 # systemctl status bind9 # ls -lh /var/cache/bind/slave-*
Para ficar fácil acesso criamos uma atalhos das nossas pastas slave-* dentro de /etc/bind
# ln -s /var/cache/bind/slave-aut /etc/bind/slave-aut # ln -s /var/cache/bind/slave-rev /etc/bind/slave-rev
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é".
$ ipcalc 45.80.49.64/28 Address: 45.80.49.64 00101101.01010000.00110011.0100 0000 Netmask: 255.255.255.240 = 28 11111111.11111111.11111111.1111 0000 Wildcard: 0.0.0.15 00000000.00000000.00000000.0000 1111 => Network: 45.80.49.64/28 00101101.01010000.00110011.0100 0000 HostMin: 45.80.49.65 00101101.01010000.00110011.0100 0001 HostMax: 45.80.49.78 00101101.01010000.00110011.0100 1110 Broadcast: 45.80.49.79 00101101.01010000.00110011.0100 1111 Hosts/Net: 14 Class A
vim /var/cache/bind/master-rev/45.80.49.rev
$ORIGIN . $TTL 86400 ; 1 day 49.80.45.in-addr.arpa IN SOA ns1.remontti.net.br. hostmaster.remontti.net.br. ( 2020062300 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 2419200 ; expire (4 weeks) 300 ; minimum (5 minutes) ) NS ns1.remontti.net.br. NS ns2.remontti.net.br. ; NOC (Gerência) $ORIGIN 49.80.45.in-addr.arpa. $GENERATE 0-63 $ PTR noc-$.remontti.net.br. ; Clientes delegação ; <<64-79>> /28 ; Aponte para os DNS do Servidor 64/28 NS ns1.provedordojose.com.br 64/28 NS ns2.provedordojose.com.br ; 64 CNAME 64.45/28.49.80.45.in-addr.arpa. 65 CNAME 65.45/28.49.80.45.in-addr.arpa. 66 CNAME 66.45/28.49.80.45.in-addr.arpa. 67 CNAME 67.45/28.49.80.45.in-addr.arpa. 68 CNAME 68.45/28.49.80.45.in-addr.arpa. 69 CNAME 69.45/28.49.80.45.in-addr.arpa. 70 CNAME 70.45/28.49.80.45.in-addr.arpa. 71 CNAME 71.45/28.49.80.45.in-addr.arpa. 72 CNAME 72.45/28.49.80.45.in-addr.arpa. 73 CNAME 73.45/28.49.80.45.in-addr.arpa. 74 CNAME 74.45/28.49.80.45.in-addr.arpa. 75 CNAME 75.45/28.49.80.45.in-addr.arpa. 76 CNAME 76.45/28.49.80.45.in-addr.arpa. 77 CNAME 77.45/28.49.80.45.in-addr.arpa. 78 CNAME 78.45/28.49.80.45.in-addr.arpa. 79 CNAME 79.45/28.49.80.45.in-addr.arpa. ; Clientes delegação (reservado) $ORIGIN 49.80.45.in-addr.arpa. $GENERATE 80-127 $ PTR dd-$.remontti.net.br. ; Clientes dinâmicos $ORIGIN 49.80.45.in-addr.arpa. $GENERATE 128-255 $ PTR 45-80-49-$.remontti.net.br.
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.
# mkdir /var/cache/bind/master-aut # mkdir /var/cache/bind/master-rev
:: Autoritativo ::
vim /var/cache/bind/master-aut/provedordojose.com.br.hosts
$ORIGIN . $TTL 86400 ; 1 day provedordojose.com.br IN SOA ns1.provedordojose.com.br. root.provedordojose.com.br. ( 2020062300 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 2419200 ; expire (4 weeks) 300 ; minimum (5 minutes) ) NS ns1.provedordojose.com.br. NS ns2.provedordojose.com.br. A 45.80.49.68 MX 10 mail.provedordojose.com.br. TXT "v=spf1 a mx ip4:45.80.49.68?all" $ORIGIN provedordojose.com.br. $TTL 10800 ; 3 hours 45-80-49-64 A 45.80.49.64 cpd A 45.80.49.65 ns1 A 45.80.49.66 ns2 A 45.80.49.67 mail A 45.80.49.68 zabbix A 45.80.49.69 45-80-49-70 A 45.80.49.70 45-80-49-71 A 45.80.49.71 45-80-49-72 A 45.80.49.72 45-80-49-73 A 45.80.49.73 45-80-49-74 A 45.80.49.74 45-80-49-75 A 45.80.49.75 45-80-49-76 A 45.80.49.76 45-80-49-77 A 45.80.49.77 45-80-49-78 A 45.80.49.78 45-80-49-79 A 45.80.49.79
:: Reverso ::
vim /var/cache/bind/master-rev/45.80.49.64-79.rev
; 45.80.49.64/28 $TTL 1h @ IN SOA ns1.provedordojose.com.br. root.provedordojose.com.br. ( 2020062300 ; serial 2h ; refresh 15m ; update retry 2w ; expiry 3h ; nx = nxdomain ttl ) IN NS ns1.provedordojose.com.br. IN NS ns2.provedordojose.com.br. $ORIGIN 64/28.49.80.45.in-addr.arpa. 64 IN PTR 45-80-49-64.provedordojose.com.br. 65 IN PTR cpd.provedordojose.com.br. 66 IN PTR ns1.provedordojose.com.br. 67 IN PTR ns2.provedordojose.com.br. 68 IN PTR mail.provedordojose.com.br. 69 IN PTR zabbix.provedordojose.com.br. 70 IN PTR 45-80-49-70.provedordojose.com.br. 71 IN PTR 45-80-49-71.provedordojose.com.br. 72 IN PTR 45-80-49-72.provedordojose.com.br. 73 IN PTR 45-80-49-73.provedordojose.com.br. 74 IN PTR 45-80-49-74.provedordojose.com.br. 75 IN PTR 45-80-49-75.provedordojose.com.br. 76 IN PTR 45-80-49-76.provedordojose.com.br. 77 IN PTR 45-80-49-77.provedordojose.com.br. 78 IN PTR 45-80-49-78.provedordojose.com.br. 79 IN PTR 45-80-49-79.provedordojose.com.br.
:: Zonas ::
# vim /etc/bind/named.conf.local
zone "provedordojose.com.br" { type master; file "/var/cache/bind/master-aut/provedordojose.com.br.hosts"; }; zone "64/28.49.80.45.in-addr.arpa" { type master; file "/var/cache/bind/master-rev/45.80.49.64-79.rev"; };
# systemctl restart bind9 # systemctl status bind9
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?
# vim /etc/bind/named.conf.options
acl autorizados { 127.0.0.1; ::1; 45.80.48.0/23; 2804:f123::/32; 192.168.0.0/16; 172.16.0.0/12; 100.64.0.0/10; 10.0.0.0/8; }; options { directory "/var/cache/bind"; dnssec-enable yes; dnssec-validation auto; auth-nxdomain no; listen-on { any; }; listen-on-v6 { any; }; // DNS PROXY // Em vez de ir pedir aos roots servers irá buscar de outros DNS. recursion yes; forwarders { 8.8.8.8; 1.1.1.1; 1.0.0.1; 8.8.4.4; }; forward only; minimal-responses yes; allow-recursion { autorizados; }; allow-query-cache { autorizados; }; allow-query { any; }; allow-transfer { none; }; masterfile-format text; version "RR DNS Server"; };
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!
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?
Meus parabens pelo excelente material.
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.
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.
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
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.
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.
Você ta fazendo NAT!
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
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.
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..
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.
Respondido la no grupo https://t.me/remontticombr
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.$
Gerar diversos nomes sem precisar add um a um.
https://www.zytrax.com/books/dns/ch8/generate.html
ótimo tutorial
muito obrigado
só faltou o dnssec.
Esse?
https://blog.remontti.com.br/4672
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.
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”;
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.
precisa virar root da forma correta que é
Se virar apenas som su varias coisas não irão funcionar.
Show de bola Remontti, era isso mesmo.
Virei o “su -” deu certo aqui.
Funcionando.
Conclusão! Meu DNS Recursivo, Autoritativo e Reverso deu certo, e tudo está funcionando através deste excelente tutorial.
Melhor conteúdo de DNS que existe….se seguirem conforme ele ensina, é sucesso!
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 ?
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?
Parabéns
Ótimo material.
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 ?
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!
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.
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)
Boa tarde, era isso mesmo. o Fail2ban estava bloqueando o IP do registro.br. Agora está funcionando normal. Obrigado pela ajuda.
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
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.
Basta vc criar um zona nova para o outro domínio, e criar o arquivo de configuração. Lhe convido a participar do curso: https://blog.remontti.com.br/curso-bind9
Como monitorar o bind9 com o zabbix?
Em um futuro farei um tutorial de um template q estou criando. 🙂
Como ver os log de consultas
existe o dntop q da para ver “um tempo real os nomes” mas é algo q vc não vai usar….
O que é útil são as coletas de informações do bind para o zabbix:
https://github.com/remontti/Zabbix-Bind9-Statistics-Collection
Rudimar, adicionei o host no zabbix mas está dando o seguinte erro no host: “Get value from agent failed: ZBX_TCP_READ() timed out”. As estatisticas pelo browser estão funcionando. Onde posso estar errando?
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
Excelente, fiz praticamente um copy and paste, alterando só o ip, funcionou perfeito de primeira. Usei o debian 10.
Boa tarde, muito bom conteúdo assim que poder estarei contribuindo.
Muito bom sua participação
Muito bom, parabéns.
Excelente material Rudimar.
Você possui algo relacionado a DNS Anycast?
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?
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.
Pode usar vm, segue print de um servidor com 5 mil clientes consultando.
Participa la do grupo https://t.me/remontticombr comentamos disso lá já.
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???
Esse é um tutorial voltado para AS (autonomous system) que receberam seus blocos de IPs VALIDOS.
Recomendo vc aprender mais para entender a diferença entre autoritativo,reverso e recursivo. Sua pergunta fica ate sem muito sentido rsrsrs (Desculpa ai)
Com certeza a idéia é explorar mais sobre o assunto. Estarei verificando melhor. Agradeço de verdade por ter me respondido. Clareou.
Muito bom, o que eu mais gostei é que não é só uma passo a passo explica muito bem!
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
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.
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 ?
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?
aqui tive o mesmo problema. não sera que estão bloqueando os ips dos sites que tentam consultar o reverso?
Parabéns ótimo tutorial… Segui a risca todos os teste como mencionado no tutorial passou… registrei o dominio mudei os dns no entrando.
IPOK Servidores DNS Reportados INFO Os seguintes servidores DNS foram reportados como responsáveis pelo seu domínio:
ns1.smtpepace.ml. [] [SEM GLUE]
ns2.smtpepace.ml. [] [SEM GLUE]
Sabe o que pode ser?
encontrou a solução para isso?
Eu fiz o meu ontem tbm estou com o mesmo problema nenhum site diz meu reverso, alguém jé encontrou a solução
Boa noite, eu tambem estou com o mesmo problema nenhum site fala meu revorso, conseguil resolver amigo?
Hardware adequado para fazer esse servidor?
Depende o numero de consultas, mas o bind usa quase nada de recursos se bem configurado
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?
Verifica se o serviço esta rodando, e analise os logs.
Boa noite Rudimar,
Quando eu testo com a ferramenta do registrobr ele aparece “Autoridade sobre o domínio” porém não nos 2 servidores (ns1 e ns2) meio que alterna ou um ou outro.
E dessa forma não consigo inserir o dns no meu dominio pois um dos servidores sempre fica com “tempo esgotado”.
Se eu testar no https://ipok.com.br ambos possui autoridade…
O que devo estar errando?
Conseguiu resolver ? estou com o mesmo problema.
Mestre,
Quando eu testo substituindo o “localhost” por “127.0.0.1” o teste passa…
Desde já gostaria de agradecer pelo ótimo trabalho e parabenizar pelo conhecimento.
Segundamente gostaria de saber se consigo visualizar os logs de requisição pra saber se esta batendo certinho as requisições os ips q batem e se tem algum erro de requisição, algo do tipo.
obrigado
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);
É so vc apontar os mx, www, mail, http://ftp... para o ip de onde esta hospedado, mas se eles mudarem já eras! Recomendo vc ter seu próprio servidor para isso, pesquise por vestacp, é um sisteminha bem bacana e simples de hospedagem q vc mesmo pode montar.
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?
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.
…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
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? 😛
Tem como fazer reverso apenas com um maquina?
Sim, comento sobre isso no início do tutorial.
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.
Na acl autorizados provavelmente não esteja o seu bloco de ips do servidor slave.
Excelente tutorial. Uma dúvida, você que o bind como recursivo tem desempenho melhor que o unbound.
Pergunta difícil hehehe, eu particularmente gosto do bind, acredito a a diferença de performance seja imperceptível que a grande diferença está na sua forma de configurar e no seu hardware. Como o unbound é apenas recursivo e simples de instalar para algumas pessoal ele pode ser o melhor… https://tinydns.org/compare-different-dns-servers/
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.
Obrigado, vc precisa apontar para os ips externos.
ex. www A 200.200.200.200
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 ???
Não é necessário, pode remover o MX.
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.