Você está na página 1de 28

DNS Server

DNS ou Domain Name System é o serviço responsável pela


utilização de nomes de domínios na internet. A função do DNS é
muito simples, ele recebe um nome de domínio e retorna o número
IP da máquina que responde por aquele domínio.

Em sua função reversa, o DNS recebe um IP de máquina e retorna o


domínio associado ao IP. Seria impossível utilizar a internet hoje em
dia sem o sistema de DNS.

O sistema de DNS atua como uma base de dados distribuida entre


diversos servidores que propagam globalmente as informações de
domínios associados a números Ips.
DNS Server
O DNS possui defnições de níveis hierárquicos para domínios e
esta resolução não permite confitos de nomes entre hosts, além
disso sua estrutura distribuída permite a total descentralização do
serviço, sendo esta a solução defnitiva para gargalos de
processamento.

A ASF terá um DNS responsável pela zona (dominio) asf.com para


clientes externos (200.50.100.0/24) e servirá como DNS recursivo
para clientes internos (192.168.1.0/24 e 10.0.0.0/24). Para maiores
informações teóricas sobre DNS, acesse:
https://www.isc.org/downloads/bind/
DNS Server
Instale os pacotes abaixo nos nodes Intranet e Datacenter
# apt install bind9 bind9utils dnsutils

O Bind será implementado em CHROOT tendo como servidor


Master o node Intranet e como Slave o node Datacenter, logo todos
os passos descritos adiante devem ser executados nos dois nodes.

Abra o arquivo /etc/default/bind9 e defna o diretório de execução da


jaula chroot para o bind
# vim /etc/default/bind9
OPTIONS="-u bind -t /var/bind9/chroot"
DNS Server
Crie uma nova unidade de inicialização para o serviço no sistema
# vim /etc/systemd/system/bind9.service
[Unit]
Description=BIND Domain Name Server
Documentation=man:named(8)
After=network.target
[Service]
ExecStart=/usr/sbin/named -f -u bind -t /var/bind9/chroot
ExecReload=/usr/sbin/rndc reload
ExecStop=/usr/sbin/rndc stop
DNS Server
[Install]
WantedBy=multi-user.target

Salve, feche o arquivo e atualize o link de inicialização do serviço


# systemctl reenable bind9

Crie a estrutura chroot para o serviço


# mkdir -p /var/bind9/chroot/{etc,dev,var/cache/bind,var/run/named}

Mova todas estrutura do etc/bind para o chroot


# mv /etc/bind /var/bind9/chroot/etc
DNS Server
Crie os dispositivos especiais do serviço e sete suas permissões
# mknod /var/bind9/chroot/dev/null c 1 3
# mknod /var/bind9/chroot/dev/random c 1 8
# chmod 660 /var/bind9/chroot/dev/{null,random}

Crie um link simbólico para o diretório padrão do serviço


# ln -s /var/bind9/chroot/etc/bind /etc/bind

Copie o arquivo de defnição local de timezone para o chroot


# cp /etc/localtime /var/bind9/chroot/etc/
DNS Server
Defna o permissionamento correto dos diretórios da jaula
# chown bind:bind /var/bind9/chroot/etc/bind/rndc.key
# chmod 775 /var/bind9/chroot/var/{cache/bind,run/named}
# chgrp bind /var/bind9/chroot/var/{cache/bind,run/named}

Altere a variável de PID do arquivo /etc/init.d/bind9 conforme abaixo


# vim /etc/init.d/bind9
PIDFILE=/var/bind9/chroot/var/run/named/named.pid
DNS Server
Redefna a escuta do rsyslog para o socket do chroot
# echo "\$AddUnixListenSocket /var/bind9/chroot/dev/log" >
/etc/rsyslog.d/bind-chroot.conf

Reinicie o rsyslog, e inicialize o bind


# /etc/init.d/rsyslog restart
# /etc/init.d/bind9 start

Confgure o arquivo /etc/resolv.conf no node Intranet


# echo 'domain asf.com' > /etc/resolv.conf
# echo 'search asf.com' >> /etc/resolv.conf
DNS Server
# echo 'nameserver 192.168.1.10' >> /etc/resolv.conf
# echo 'nameserver 192.168.1.20' >> /etc/resolv.conf
# chattr +i /etc/resolv.conf

Confgure o arquivo /etc/resolv.conf no node Datacenter


# echo 'domain asf.com' > /etc/resolv.conf
# echo 'search asf.com' >> /etc/resolv.conf
# echo 'nameserver 192.168.1.20' >> /etc/resolv.conf
# echo 'nameserver 192.168.1.10' >> /etc/resolv.conf
# chattr +i /etc/resolv.conf
DNS Server
Comente as linhas de resolução de nomes no arquivo /etc/hosts em
todos os nodes do parque ASF
# vim /etc/hosts
...
# 192.168.1.1 gateway.asf.com gateway
# 192.168.1.10 intranet.asf.com intranet
# 192.168.1.11 express.asf.com express
# 192.168.1.20 datacenter.asf.com datacenter
# 192.168.1.30 storage.asf.com storage
# 192.168.1.40 ad.asf.com ad
DNS Server
Agora gere o TSIG na máquina intranet
# cd /etc/bind
# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST rndc-key

Verifque os arquivos gerados


# ls -l Krndc-key* && cat Krndc-key.+157+64252.private

Envie o secret da chave privada para o arquivo tsig.key


# cat Krndc-key.+157+64252.private | grep Key | awk -F" " '{print
$2}' > tsig.key

Edite o arquivo deixando com esta confguração


DNS Server
# vim tsig.key
key "TRANSFER" {
algorithm hmac-md5;
secret "CHAVE PRIVADA AQUI";
};
# Servidor Slave
Server 192.168.1.20 {
keys { TRANSFER; };
};
DNS Server
Inclua as seguintes linhas no arquivo /etc/bind/named.conf dos
nodes Intranet e Datacenter

# vim named.conf
include "/etc/bind/bind.keys";
Include "/etc/bind/tsig.key";

No node Datacenter crie o arquivo /etc/bind/tsig.key e coloque como


valor da chave a chave privada confgurada no mesmo arquivo do
node Intranet.

# vim /etc/bind/tsig.key
DNS Server
# vim /etc/bind/tsig.key
key "TRANSFER" {
algorithm hmac-md5;
secret "CHAVE PRIVADA AQUI";
};
# Servidor Master
server 192.168.1.10 {
keys { TRANSFER; };
};
DNS Server
No node intranet, confgure o arquivo /etc/bind/named.conf.options
com o seguinte conteúdo
# vim /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
version "not available";
dnssec-enable yes;
dnssec-validation auto;
allow-query { 200.50.100.0/24; 192.168.1.0/24; 10.0.0.0/24;
127.0.0.1; };
allow-recursion { 192.168.1.0/24; 10.0.0.0/24; 127.0.0.1; };
DNS Server
allow-transfer { key TRANSFER; };
notify yes;
also-notify { 192.168.1.20; };
listen-on-v6 { any; };
};
Confgure o arquivo named.conf.default-zones nos nodes Intranet e
datacenter adicionando o bloco abaixo como principal do arquivo
# vim /etc/bind/named.conf.default-zones
view "all" {
match-clients { none; };
DNS Server

}; (feche o bloco ao fm do arquivo)
Confgure no node Intranet o arquivo named.conf.local e os arquivos
das bases de mapeamento DNS que serão alocados em
/var/bind9/chroot/var/cache/bind
# vim /etc/bind/named.conf.local
include "/etc/bind/rndc.key";
controls {
inet 127.0.0.1 port 953 allow { localhost; } keys { "rndc-key"; };
};
DNS Server
acl "asf" {
192.168.1.0/24;
10.0.0.0/24;
};
view "externa" {
match-clients { !asf; any; };
zone "asf.com" {
type master;
fle "db.asf.externa";
};
DNS Server
zone 100.50.200.in-addr.arpa {
type master;
fle "rev.asf.externa";
};
};
view "interna" {
match-clients { asf; any; };
zone "asf.com" {
type master;
fle "db.asf.interna";
};
DNS Server
zone 1.168.192.in-addr.arpa {
type master;
fle "rev.asf.interna";
};
};
DNS Server
Por padrão o DNSSEC já vem implementado nas versões mais
atuais das disttribuições Linux, O DNSSEC adiciona uma camada
fundamental a segurança do serviço de DNS, tanto para o servidor
como para os clientes.

Implementaremos através do DNSSEC a transferência de zonas


criptografada com o recurso TSIG, ao término das confgurações o
serviço de DNS da ASF estará com os recursos DNSVIEW,
DNSSEC, TSIG e versionamento do serviço devidamente
confgurados para disponibilizar o serviço no ambiente de produção.
DNS Server
Crie o arquivo /var/bind9/chroot/var/cache/bind/db.asf.externa
# vim /var/bind9/chroot/var/cache/bind/db.asf.externa
$TTL 7200 ; default para todos registros sem TTL
@ IN SOA ns1.asf.com. analista.asf.com. (
2017122202 ; serial
8h ; refresh
1h ; retry
3d ; expire
3h ; negative caching TTL
);
DNS Server
@ IN NS ns1.asf.com.
@ IN NS ns2.asf.com.
@ IN MX 10 mail.asf.com.
@ IN A 200.50.100.10
@ IN TXT "v=spf1 a mx ip4:200.50.100.20 -all"
ns1 IN A 200.50.100.10
ns2 IN A 200.50.100.20
www IN A 200.50.100.10
ftp IN CNAME www
mail IN A 200.50.100.20
DNS Server
smtp IN CNAME mail
pop IN CNAME mail
imap IN CNAME mail
webmail IN CNAME mail

Salve as alterações, feche o arquivo.

Você também pode gostar