Mind map
DNS

Map content
DNS
- https://thetechreader.com/files/2016/12/how-the-dns-system-works.png
BIND
- centos
- Distribuições baseadas em RedHat seguem o padrão do BIND
- bind-utils
- /etc/named.conf
- Principal arquivo de configuração /etc/named.conf
- Configuração de zonas
- /var/named/
- [root@instance-rh named]# ll total 16 drwxrwx---. 2 named named 6 Jan 3 11:57 data drwxrwx---. 2 named named 6 Jan 3 11:57 dynamic -rw-r-----. 1 root named 2281 May 22 2017 named.ca -rw-r-----. 1 root named 152 Dec 15 2009 named.empty -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost -rw-r-----. 1 root named 168 Dec 15 2009 named.loopback drwxrwx---. 2 named named 6 Jan 3 11:57 slaves
- Diretório que armazena os arquivos de zona e outros registros
- named.ca
- Arquivo que contêm os names severs. Root Severs
- logging
- logging { channel default_debug { file "data/named.run"; severity dynamic; }; channel luiz { file "data/curso.log"; severity dynamic; }; category queries{ luiz; };
- severity
- http://www.zytrax.com/books/dns/ch7/logging.html
- channel
- Define o local em que o log será registrado e qual nível/severidade será adotado
- category
- Define o que será logado, indicando-se também o canal (channel) que será utilizado.
- null
- To turn off logging certain types of data, send it to the null channel. logging { category lame-servers { null; }; category cname { null; }; };
- /var/named/
- systemctl status named
- /etc/named.conf
- debian
- Distribuições baseadas em Debian armazenam os arquivos de configuração no diretório /etc/bind.
- bind9
- /etc/bind/
- Principal arquivo de configuração /etc/named.conf.
- Configuração de zonas
- /etc/bind/
- root@instance-debian:/etc/bind# ls -la total 60 drwxr-sr-x 2 root bind 4096 Apr 23 21:42 . drwxr-xr-x 90 root root 4096 Apr 23 22:19 .. -rw-r--r-- 1 root root 3923 Jan 15 2018 bind.keys -rw-r--r-- 1 root root 237 Jan 15 2018 db.0 -rw-r--r-- 1 root root 271 Jan 15 2018 db.127 -rw-r--r-- 1 root root 237 Jan 15 2018 db.255 -rw-r--r-- 1 root root 353 Jan 15 2018 db.empty -rw-r--r-- 1 root root 270 Jan 15 2018 db.local -rw-r--r-- 1 root root 3171 Jan 15 2018 db.root -rw-r--r-- 1 root bind 463 Jan 15 2018 named.conf -rw-r--r-- 1 root bind 490 Jan 15 2018 named.conf.default-zones -rw-r--r-- 1 root bind 165 Jan 15 2018 named.conf.local -rw-r--r-- 1 root bind 890 Apr 23 21:42 named.conf.options -rw-r----- 1 bind bind 77 Apr 23 21:42 rndc.key -rw-r--r-- 1 root root 1317 Jan 15 2018 zones.rfc1918
- /etc/bind/db.root
- Arquivo que contêm os names severs. Root Severs
- /etc/bind/named.conf
- /etc/bind/
- systemctl status bind9
- /etc/bind/
- Principais comandos
- host
- Faz consultas DNS. Formas de uso:
- #host -t NS
- # host -l zonetransfer.me ns16.zoneedit.com
- dig
- Faz consultas DNS mais elaboradas. Formas de uso: dig - DNS lookup utility
- # dig -t NS globo.com.br
- # dig -t MX globo.com.br
- #dig bird.exemple.com A
- # dig @cat.exemple.com bird.exemple.com A
- #dig 4.240.123.224.in-addr.arpa PTR
- # rndc
- The rndc (Remote name daemon control) program can be used to control the named name server daemon, locally as well as remotely.
- rndc reload
- Reload configuration file and zones.
- rndc flush
- Flushes all of the server's caches.
- rndc refresh zone
- [class [view]] Schedule immediate maintenance for a zone.
- rndc reconfig
- reconfig Reload configuration file and new zones only.
- rndc-confgen
- The command create a key for rndc.key case none is available on the system # Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "bg7aN2dE7J4rrrDde3f5rw=="; }; options { default-key "rndc-key"; default-server 127.0.0.1; default-port 953; }; # End of rndc.conf # Use with the following in named.conf, adjusting the allow list as needed: # key "rndc-key" { # algorithm hmac-md5; # secret "bg7aN2dE7J4rrrDde3f5rw=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf
- rndc status
- Display status of the server.
- #named
- named-checkconf
- Valida a sintaxe das configurações do /etc/named.conf #named-checkconf /etc/bind/named.conf
- named-checkzone [dominio] [arquivo ]
- # named-checkzone test.com /var/named/test.com.zone
- systemctl <start|stop|restart|reload|force-reload> named
- named-compilezone
- named-journalprint journal
- named-checkconf
- dnswalk
- #dnswalk globo.com.br.
- host
- Componentes
- /usr/sbin/named
- /usr/sbin/rndc
- /usr/sbin/named-checkconf
- named.conf
- /var/named
- Finalizar o serviço
- systemctl stop bind9
- rndc stop
- kill -SIGHUP PID
- kill -1 PID
- /etc/init.d/named <stop|start|status>
- service bind9 <start|stop|reload>
- kill -9|15<SIGKILL| SIGTERM>
- named.conf
- directory
- specifies the working directory for the name daemon. A common value is /var/named. also, zone files without a directory part are looked up in this directory.
- forwarders
- The forwarders statement contains one or more IP address of name servers to query. How these IP addresses are used is specified by the forwarders.
- forward
- The forward works when forwarders are specified.
- forward only;
- The queries are limited only to the specified name-server IP address.
- forward first;
- The query is sent first to the specified name-server IP address and if this fails it should perform lookups elsewhere.
- Comments
- Legitimate clauses
- options
- Legitimate clauses
- include
- Legitimate clauses
- logging
- Legitimate clauses
- directory
- centos
caching server
- zone "." IN { type hint; file "named.ca"; };
Conceitos e Termos Importantes
- NS (Name Server)
- Armazena informações sobre uma parte do Domain Name Space, também chamado de zona. https://upload.wikimedia.org/wikipedia/commons/f/f2/Structure_DNS.jpg
- Tipos de NS
- Primary (Master)
- Servidor que possui autoridade sobre o domínio, definindo todas as informações sobre esta zona de DNS. No registro de um domínio, sempre deve haver ao menos um dos NS como master
- Secondary (Slave)
- O NS Slave transfere para si as informações definidas para um domínio a partir de um NS Master. Dessa forma as informações também ficam armazenadas no servidor e assim também possui autoridade sobre o domínio.
- db.exemple.com
- the db.exemple.com is created by the slave name server itself. The slave has no data for exemple.com. Instead, a slave receive its data from a master name server and store it in the specified file.
- Caching
- O Servidor do tipo caching é capaz de fazer pesquisas recursivas para fazer a resolução DNS e armazena esse resultado em cache. zone "." IN { type hint; file "named.ca";};
- Forwarding
- Nesse caso o NS encaminha (delega) as pesquisas para outo servidor. Após receber a resposta o resultado também é armazenado em cache.
- No /etc/named.conf: Para redirecionar para outro servidor DNS todas as consultas recursivas, deve ser incluída a seguinte configuração na seção “options”: • forwarders { IP1; IP2; }; Para que o servidor encaminhe tanto as pesquisas recursivas quanto as pesquisas internas a outro servidor, deve ser incluída a configuração: • forward only;
- zone “dominioexemplo.com.br” IN { type forward; forwarders { IP1; IP2; }; };
- Primary (Master)
- Root Domain
- Referente ao domínio/zona raiz do DNS, representando pelo . (ponto). Os NSs responsáveis pelo Root Domain são chamados de Root Servers.
- TLD – Top Level Domains
- Domínios imediatamente abaixo da raiz (.), por exemplo .com, .br, .net , .org e etc
- Programas
- DNS Resolver
- ◦ Software ou biblioteca responsável por fazer a consulta de DNS ◦ Utilizado no sistema local (DNS Client) e também é parte do DNS Server ◦ Pode armazenar os resultados em cache
- BIND
- (Berkeley Internet Domain Server) ◦ Open Source DNS Server ◦ Implementa o protocolo DNS ◦ Implementação de DNS Server mais utilizada
- Alternativas ao BIND
- ◦ djbdns - Implementação DNS criada por Daniel J. Bernstein ◦ dnsmasq – Combinação leve de um DNS Caching com DHCP ◦ PowerDNS – Implementação DNS de grande porte. “Concorrente” do BIND
- djbdns
- dnsmasq
- dnsmasq is booth a lightweitgh dns forwarder and dhcp server. Dnsmasq supports static and dynamic DHCP leases and supports BOOT/TFTP/PXE network boot protocols.
- PowerDNS
- pacote
- pdns
- powerdns-server
- pdns-server
- pacote
- Bundy
- BUNDY - authoritative DNS Server. the BUNDY project is currently in hibernation status. BUNDY provides an authoritative DNS server
- DNS Resolver
- Combinations minimum two servers
- Primary and secondary
- Primary and forwarding
- Primary and caching
- NS (Name Server)
Criar e Manter Zonas de DNS
- Domínio do Tipo Master
- No /etc/named.conf: zone "dominioexemplo.com.br" IN { type master; file "dominioexemplo.zone"; };
- /var/named/dominioexemplo.zone)
- $TTL 3h @ IN SOA servidor.dominioexemplo.com.br. admin.dominioexemplo.com.br. ( 2018032801 ; serial. Número utilizado para indicar mudanças na zona 28800 ; refresh. Após quanto tempo o NS slave deve verificar novamente por atualizações 7200 ; retry. Em caso de falha no refresh, após quanto tempo deve haver uma retentativa 2419200 ; expire. Validade das informações. Após quanto tempo as informações não atualizadas do slave deixarão de ser válidas 150 ; negative caching. Por quanto tempo uma resposta negativa fica em cache ) NS servidor ; name server MX 5 mailserver ; mail exchange servidor A 192.168.1.5 ; glue record mailserver A 192.168.1.10 www CNAME servidor mail CNAME mailserver
- Concetos
- $TTL – Tempo de vida dos dados no cache de quem obter as informações • @ indica o nome do domínio indicado no named.conf • No registro SOA (Start of Authority), o primeiro endereço refere-se ao NS e o segundo ao email do administrador • O . sempre deve ser utilizado no final da referência ao FQDN (Fully Qualified Domain Name, ou endereço completo). Na falta do . , o BIND inclui o domínio automaticamente • Os números indicam tempos em segundos, mas também podem ser utilizados h (horas), d (dias) ou w (semanas). • Glue Record é um registro do tipo A que relaciona o nome do NS do domínio ao seu endereço IP
- serial.
- Número utilizado para indicar mudanças na zona
- refresh.
- Após quanto tempo o NS slave deve verificar novamente por atualizações
- retry.
- Em caso de falha no refresh, após quanto tempo deve haver uma retentativa
- expire.
- Validade das informações. Após quanto tempo as informações não atualizadas do slave deixarão de ser válidas
- negative caching.
- Por quanto tempo uma resposta negativa fica em cache
- @
- indica o nome do domínio indicado no named.conf No registro SOA (Start of Authority), o primeiro endereço refere-se ao NS e o segundo ao e- mail do administrador
- $TTL
- Tempo de vida dos dados no cache de quem obter as informações
- TXT
- Texto
- SOA
- Start of Authority A zone database has resource records of various types. One such record identifies the authority zone's start and includes zone's authoritative data.
- NS
- Name Server
- MX
- Mail Exchange (Servidor de E-mail). É acompanhado de um número em que quanto menor o valor, maior a prioridade entre os servidores de e-mail.
- PTR
- DNS Reverso
- A
- The A record is address record.It connects an ip address to a hostname. IPV4
- AAAA
- IPV6
- CNAME
- CLASS value
- IN
- the Internet
- CH
- the CHAOS class
- HS
- Hesiod [Dyer 87]
- CS
- the CSNET class (Obsolete - used only for examples in some obsolete RFCs)
- IN
- Principais Tipos de Registros:
- A : Endereço IPv4 • AAAA : Endereço IPv6 • CNAME : Canonical Name (apelido) • TXT : Texto • SOA : Start of Authority • NS : Name Server • MX : Mail Exchange (Servidor de E-mail). É acompanhado de um número em que quanto menor o valor, maior a prioridade entre os servidores de e-mail. • PTR : DNS Reverso
- DNS Reverso
- Possibilita a descoberta de um nome de DNS a partir de um endereço IP. Each IP has a reverse zone, that consist of part of the IP numbers in reverse order, plus in-addr.arpa. This system is among other things used to check whether a host name belongs to a specific address.
- Configuração no /etc/named.conf:
- zone "1.168.192.in-addr.arpa" IN { type master; file "1.168.192.in-addr.arpa.zone"; };
- /var/named/1.168.192.in-addr.arpa.zone
- $TTL 3h @ IN SOA servidor.dominioexemplo.com.br. admin.dominioexemplo.com.br. ( 2018032801 ; serial 28800 ; refresh 7200 ; retry 2419200 ; expire 150 ; minium ) NS servidor.dominioexemplo.com.br. 5 PTR servidor.dominioexemplo.com.br. 10 IN PTR mailserver.dominioexemplo.com.br.
- host 192.168.1.5
- named-checkzone
- • named-checkzone : Verifica a sintaxe do arquivo de zona
- named-compilezone
- • named-compilezone : Converte um arquivo de zona slave em formato texto legível
- # dig @192.168.1.220 axfr dominioexemplo.com.br
- named-checkzone
- CENTOS
- Debian
- /etc/bind/1.168.192.in-addr.arpa.zone
- Best describe
- A special zone that provides a mapping from an IP address to an FQDN
- Domínio do Tipo Master
Segurança no Servidor DNS
- O serviço BIND deve estar sempre atualizado O processo do BIND (named) não pode ser executado pelo usuário root Em ambientes críticos o servidor DNS não deve compartilhar o servidor com outros serviços Considerar a separação (split) do serviço de DNS de acordo com o cenário. Ter servidores (ou views) diferentes para tipos de requests diferentes, por exemplo Internet e Intranet.
- Configurações do named.conf para Segurança
- version “hidden” : Esconder a versão do software backhole : IPs/Redes que não serão respondidos pelo servidor allow-query : IPs/Redes que podem fazer consultas no servidor allow-recursion : IPs/Redes que podem fazer consultas recursivas no servidor allow-transfer : IPs/Redes que podem realizar operações de transferência de zonas acl : definir grupos de IPs/Redes view : Definir grupos de regras e declarações
- version “hidden”;
- Esconder a versão do software
- backhole
- IPs/Redes que não serão respondidos pelo servidor
- allow-query
- IPs/Redes que podem fazer consultas no servidor
- On master server
- acl "myhosts" { 224.123.40.0/24; }; zone "exemple.com" IN { allow-queries { myhosts; }; };
- allow-recursion
- IPs/Redes que podem fazer consultas recursivas no servidor
- allow-transfer
- IPs/Redes que podem realizar operações de transferência de zonas
- acl
- definir grupos de IPs/Redes. Limit access to nameserver data. acl "truted" { localhost; 192.168.1.0/24; }
- On master server
- acl "my_slave_servers" { 224.123.240.3; }; zone "exemple.com" IN{ type master; allow-transfer{ my_slave_servers; }; };
- On slave server
- zone "exemple.com" IN{ type slave; allow-transfer{none;};};
- view
- Definir grupos de regras e declarações
- TSIG – Transaction Signature
- Utiliza uma chave simétrica compartilhada para aumentar a segurança na comunicação entre servidores DNS. Essa chave é utilizada para se autorizar o acesso às informações de um servidor. Muito utilizado para proteger a comunicação entre servidores master e slave.
- O comando dnssec-keygen é utilizado para gerar as chaves. Exemplo: # dnssec-keygen -a HMAC-MD5 -b 256 -r /dev/urandom -n HOST chaves
- Exemplo de configuração no master
- key exemplo { algorithm HMAC-MD5; secret “xxxxxxxxxxxxx”; }; allow-transfer { key exemplo; };
- Exemplo de configuração no slave
- key exemplo { algorithm HMAC-MD5; secret “xxxxxxxxxxxxx”; }; server IP { keys { exemplo; }; };
- DNSSEC
- DNSSEC (BIND DNS Security Extensions) https://www.youtube.com/watch?v=_8M_vuFcdZU Utiliza chaves assimétricas (públicas e privadas) para assegurar a autenticidade e integridade das respostas enviadas pelos servidores DNS.Através da chave privada uma zona de DNS é assinada e a chave pública possibilita garantir aautenticidade da resposta.As chaves são geradas pelo comando dnssec-keygen. Por exemplo:# dnssec-keygen -a DSA -b 1024 -r /dev/urandom -n ZONE exemploO arquivo Kexemplo.+999.+99999.key conterá a chave pública, que deve ser inserida como umregistro na zona de DNS.O arquivo da zona de DNS deve ser assinado com o comando dnssec-signzone, utilizando oarquivo de chave privada Kexemplo.+999.+99999.private. Exemplo:# dnssec-signzone -P -r /dev/urandom -o exemplo.com.br exemplo.zone Kexemplo.+999.+99999.private.O comando dnssec-signzone gerará um arquivo de zona assinado (exemplo.zone.signed), que deve ser configurado no /etc/named.conf.
- MASTER - #dnssec-keygen
- dnssec-keygen is a part of the dnssec security extension for DNS. Is used to create either TSIG or DNSSEC keys!!!!May be used to generate public/private and symmetric keys.
- -a option | Algorithm
- RSAMD5: [512...4096] RSASHA1:[512...4096] DH:[128...4096] DSA:[512...1024]and multiple of 64 HMAC-MD5:[1...512]
- -b option | key size
- #dnssec-keygen -a DSA -b 768 -n zone exemple.com
- kexemple.com.+003+54444.key
- chave pública
- kexemple.com.+003+54444.private
- chave privada
- Usando a chave
- key key.exemplo.com. { algorithm "hmac-md5'; secret "5HUcmGO7Vz...." }; To allow client use the key: server 224.123.400.1 { keys key.exemplo.com; };
- kexemple.com.+003+54444.key
- -n option| zone, host, entity, user, other
- #dnssec-keygen -a DSA -b 1024 -r /dev/urandom -n ZONE dominioexemplo.com.br
- As chaves são geradas pelo comando dnssec-keygen. Por exemplo:
- # dnssec-sigzone -P -r /dev/urandom -o dominioexemplo.com.br dominioexemplo.zone Kdominioexemplo.com.br.+003+10370.private
- #dnssec-sigzone
- O comando dnssec-signzone gerará um arquivo de zona assinado (exemplo.zone.signed), que deve ser configurado no /etc/named.conf
- DANE
- DANE (DNS -Based Authentication of Named Entities) Solução criada para resolver o problema dos CAs (Certification Authorities), criando uma forma de associar um domínio a um CA específico através de um registro do tipo TLSA inserido dentro do arquivo de zona.
- TLSA
- CA
- chroot jail
- Forma de executar o serviço de DNS em um ambiente isolado do resto do servidor, impedindo que brechas no serviço impactem a segurança do servidor como um todo. Na prática, é criado um novo / exclusivo para o BIND, por isso chroot. Nessa nova raiz são instalados, criados e copiados todos os arquivos e diretórios utilizados pelo BIND, incluindo arquivos do /etc/, /lib, /sbin, /var/run e etc, em uma nova estrutura completa. Na execução do processo bind, deve ser utilizada a opção -t para definir o diretório chroot, por exemplo: # named -u bind -t /chroot/
- /etc/, /lib, /sbin, /var/run e etc,
- # named -u bind -t /chroot/
- Transferência de zona
- #dig axfr @ns12.zoneedit.com zonetransfer.me
- #host -l zonetransfer.me ns12.zoneedit.com
- allow-query statement can be used insine a zone statement or an options statement as well. It can contain either an acl label (truted), none, or one or more IP or ip ranges.
- alow-transfer { none; };
- allow-queries {myhosts; };
- DNSSEC VS TSIG
- DNSSEC: Utilia chaves públicas e privadas assícronas TSIG: Utiliza chaves compartilhadas para permitir a comunicação entre servidores dns
- DNSSEC
- chaves públicas e privadas assícronas
- TSIG
- chaves compartilhadas
- Executar o bind com menos privilégio
- Running bind in a chroot jail
- start...... --exec /usr/sbin/named -t /var/cache/bind
- /usr/sbin -u named -c /etc/named.conf -t /var/named/chroot
Portas
- O DNS utiliza a porta 53 e em geral o protocolo UDP, o protocolo TCP é usado apenas para transferências de zona.
- UDP - 53
- TCP para transferências
Zone information be copied from de primary
- Why might authoritative zone information be copied from the primary name server's zone databases over to the secondary name server (Called a zone transfer)
- the secondary daemon start
- The secondary server's bind daemon has started up
- the rndc was used on the secondary server
- the rndc utility was used on the secondary server, and a manual zone data refresh was requested.
- Secondary zone data's refresh time has expired
- the secondary server's zone data's refresh time has expired
Images and files in the map
Information
- Description
- Mind Map on DNS, created by Luiz Eduardo on 23/04/2019.
- Created by
- Luiz Eduardo
- Views
- 101
- Rating
