Zusammenfassung der Ressource
DNS
Anmerkungen:
- https://thetechreader.com/files/2016/12/how-the-dns-system-works.png
- BIND
- centos
Anmerkungen:
- Distribuições baseadas em RedHat seguem o padrão do BIND
- bind-utils
- /etc/named.conf
Anmerkungen:
- Principal arquivo de configuração
/etc/named.conf
- Configuração de zonas
- /var/named/
Anmerkungen:
- [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
Anmerkungen:
- Arquivo que contêm os names severs. Root Severs
- logging
Anmerkungen:
- logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
channel luiz {
file "data/curso.log";
severity dynamic;
};
category queries{
luiz;
};
- severity
Anmerkungen:
- http://www.zytrax.com/books/dns/ch7/logging.html
- channel
Anmerkungen:
- Define o local em que o log será registrado e qual nível/severidade será adotado
- category
Anmerkungen:
- Define o que será logado, indicando-se também o canal (channel) que será
utilizado.
- null
Anmerkungen:
- To turn off logging certain types of data, send it to the null channel.
logging {
category lame-servers { null; };
category cname { null; };
};
- systemctl status
named
- debian
Anmerkungen:
- Distribuições baseadas em Debian armazenam os arquivos de configuração no diretório /etc/bind.
- bind9
- /etc/bind/
Anmerkungen:
- Principal arquivo de configuração
/etc/named.conf.
- Configuração de zonas
- /etc/bind/
Anmerkungen:
- 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
Anmerkungen:
- Arquivo que contêm os names severs. Root Severs
- /etc/bind/named.conf
- systemctl status bind9
- Principais comandos
- host
Anmerkungen:
- Faz consultas DNS. Formas de uso:
- #host -t NS
- # host -l zonetransfer.me ns16.zoneedit.com
- dig
Anmerkungen:
- 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
Anmerkungen:
- The rndc (Remote name daemon control) program can be used to control the named name server daemon, locally as well as remotely.
- rndc reload
Anmerkungen:
- Reload configuration file and zones.
- rndc flush
Anmerkungen:
- Flushes all of the server's caches.
- rndc refresh zone
Anmerkungen:
- [class [view]] Schedule immediate maintenance for a zone.
- rndc reconfig
Anmerkungen:
- reconfig Reload configuration file and new zones only.
- rndc-confgen
Anmerkungen:
- 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
Anmerkungen:
- Display status of the server.
- #named
- named-checkconf
Anmerkungen:
- 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
- dnswalk
- #dnswalk globo.com.br.
- 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
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- The forward works when forwarders are specified.
- forward only;
Anmerkungen:
- The queries are limited only to the specified name-server IP address.
- forward first;
Anmerkungen:
- The query is sent first to the specified name-server IP address and if this fails it should perform lookups elsewhere.
- Comments
Anmerkungen:
- options
Anmerkungen:
- include
Anmerkungen:
- logging
Anmerkungen:
- caching
server
Anmerkungen:
- zone "." IN {
type hint;
file "named.ca";
};
- Conceitos e Termos Importantes
- NS (Name Server)
Anmerkungen:
- 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)
Anmerkungen:
- 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)
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- 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; };
};
- Root Domain
Anmerkungen:
- 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
Anmerkungen:
- Domínios imediatamente abaixo da raiz (.), por
exemplo .com, .br, .net , .org e etc
- Programas
- DNS Resolver
Anmerkungen:
- ◦ 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
Anmerkungen:
- (Berkeley Internet Domain Server)
◦ Open Source DNS Server
◦ Implementa o protocolo DNS
◦ Implementação de DNS Server mais utilizada
- Alternativas ao BIND
Anmerkungen:
- ◦ 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
Anmerkungen:
- 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
- Bundy
Anmerkungen:
- BUNDY - authoritative DNS Server. the BUNDY project is currently in hibernation status. BUNDY provides an authoritative DNS server
- Combinations
minimum two
servers
- Primary and secondary
- Primary and forwarding
- Primary and caching
- Criar e Manter Zonas de DNS
- Domínio do Tipo Master
Anmerkungen:
- No /etc/named.conf:
zone "dominioexemplo.com.br" IN {
type master;
file "dominioexemplo.zone";
};
- /var/named/dominioexemplo.zone)
Anmerkungen:
- $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
Anmerkungen:
- $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.
Anmerkungen:
- Número utilizado para indicar mudanças na zona
- refresh.
Anmerkungen:
- Após quanto tempo o NS slave deve verificar novamente por
atualizações
- retry.
Anmerkungen:
- Em caso de falha no refresh, após quanto tempo deve haver uma
retentativa
- expire.
Anmerkungen:
- Validade das informações. Após quanto tempo as informações não
atualizadas do slave deixarão de ser válidas
- negative caching.
Anmerkungen:
- Por quanto tempo uma resposta negativa fica em cache
- @
Anmerkungen:
- 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
Anmerkungen:
- Tempo de vida dos dados no cache de quem obter as informações
- TXT
Anmerkungen:
- SOA
Anmerkungen:
- 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
Anmerkungen:
- MX
Anmerkungen:
- 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
Anmerkungen:
- A
Anmerkungen:
- The A record is address record.It connects an ip address to a hostname. IPV4
- AAAA
Anmerkungen:
- CNAME
- CLASS value
- IN
Anmerkungen:
- CH
Anmerkungen:
- HS
Anmerkungen:
- CS
Anmerkungen:
- the CSNET class (Obsolete - used only for examples in
some obsolete RFCs)
- Principais Tipos de Registros:
Anmerkungen:
- 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
Anmerkungen:
- 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:
Anmerkungen:
- 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
Anmerkungen:
- $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
Anmerkungen:
- • named-checkzone : Verifica a sintaxe do arquivo de zona
- named-compilezone
Anmerkungen:
- • named-compilezone : Converte um arquivo de zona slave em formato texto legível
- # dig @192.168.1.220 axfr dominioexemplo.com.br
- CENTOS
- Debian
- /etc/bind/1.168.192.in-addr.arpa.zone
- Best describe
Anmerkungen:
- A special zone that provides a mapping from an IP address to an FQDN
- Segurança no Servidor DNS
Anmerkungen:
- 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
Anmerkungen:
- 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”;
Anmerkungen:
- Esconder a versão do software
- backhole
Anmerkungen:
- IPs/Redes que não serão respondidos pelo servidor
- allow-query
Anmerkungen:
- IPs/Redes que podem fazer consultas no servidor
- On master server
Anmerkungen:
- acl "myhosts" {
224.123.40.0/24;
};
zone "exemple.com" IN {
allow-queries {
myhosts;
};
};
- allow-recursion
Anmerkungen:
- IPs/Redes que podem fazer consultas recursivas no servidor
- allow-transfer
Anmerkungen:
- IPs/Redes que podem realizar operações de transferência de zonas
- acl
Anmerkungen:
- definir grupos de IPs/Redes. Limit access to nameserver data.
acl "truted" {
localhost;
192.168.1.0/24;
}
- On master server
Anmerkungen:
- acl "my_slave_servers" {
224.123.240.3;
};
zone "exemple.com" IN{
type master;
allow-transfer{
my_slave_servers;
};
};
- On slave server
Anmerkungen:
- zone "exemple.com" IN{
type slave;
allow-transfer{none;};};
- view
Anmerkungen:
- Definir grupos de regras e declarações
- TSIG – Transaction Signature
Anmerkungen:
- 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
Anmerkungen:
- key exemplo {
algorithm HMAC-MD5;
secret “xxxxxxxxxxxxx”;
};
allow-transfer { key exemplo; };
- Exemplo de configuração no slave
Anmerkungen:
- key exemplo {
algorithm HMAC-MD5;
secret “xxxxxxxxxxxxx”;
};
server IP {
keys { exemplo; };
};
- DNSSEC
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- kexemple.com.+003+54444.private
Anmerkungen:
- Usando a chave
Anmerkungen:
- key key.exemplo.com. {
algorithm "hmac-md5';
secret "5HUcmGO7Vz...."
};
To allow client use the key:
server 224.123.400.1 {
keys key.exemplo.com;
};
- -n option| zone, host, entity,
user, other
- #dnssec-keygen -a DSA
-b 1024 -r /dev/urandom -n ZONE
dominioexemplo.com.br
Anmerkungen:
- 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
Anmerkungen:
- O comando dnssec-signzone gerará um arquivo de zona assinado (exemplo.zone.signed), que deve
ser configurado no /etc/named.conf
- DANE
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- 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
Anmerkungen:
- The secondary server's bind daemon has started up
- the rndc was used on the secondary server
Anmerkungen:
- 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
Anmerkungen:
- the secondary server's zone data's refresh time has expired