Começando com o Servidor DNS BIND

Servidor de Nomes de Domínio (DNS) é um componente crítico da infraestrutura da internet, e construir seu próprio servidor DNS pode ser desafiador. Bem, não com o BIND, onde você pode criar seu servidor DNS BIND em pouco tempo. O BIND tem uma excelente reputação entre os administradores por sua flexibilidade e suporte de alta disponibilidade.

Neste artigo, você aprenderá como instalar e configurar um servidor DNS BIND seguro e verificar que os subdomínios são resolvidos para o endereço IP correto.

Continue lendo e crie seu servidor DNS sem esforço!

Pré-requisitos

Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de ter o seguinte.

  • A Linux server – This example uses the Ubuntu 20.04 server.
  • A non-root user with root privileges or root/administrator user.
  • A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.

Instalando Pacotes BIND

O repositório padrão do Ubuntu fornece pacotes BIND, mas não vem instalado no seu sistema. Você pode instalar o BIND como o principal servidor DNS ou apenas autoritário. O BIND oferece recursos poderosos, como suporte à instalação mestre-escravo, suporte DNSSEC e Listas de Controle de Acesso (ACL) integradas.

Para começar com o BIND DNS, você primeiro precisará instalar os pacotes BIND em sua máquina com o gerenciador de pacotes apt.

1. Abra seu terminal e faça login no seu servidor.

2. Em seguida, execute o comando apt update abaixo para atualizar e atualizar o índice de pacotes do repositório. Este comando garante que você esteja instalando a versão mais recente dos pacotes.

sudo apt update
Refreshing Package Index

3. Depois de atualizado, execute o comando apt install abaixo para instalar os pacotes BIND para o servidor Ubuntu.

Os pacotes bind9-utils e bind9-dnsutils fornecem ferramentas adicionais de linha de comando para BIND. Esses pacotes são úteis para testar e gerenciar o servidor DNS BIND.

sudo apt install bind9 bind9-utils bind9-dnsutils -y
Installing BIND Packages

4. Por último, execute o comando systemctl abaixo para verificar o serviço BIND.

O pacote BIND vem com o serviço named e é iniciado e habilitado automaticamente durante a instalação do pacote BIND.

# Verificar se o serviço named está habilitado
sudo systemctl is-enabled named

# Verificar o status do serviço named
sudo systemctl status named

Agora você deve ver que o serviço BIND named está habilitado com o status ativo (em execução). Neste ponto, o serviço BIND será executado automaticamente na inicialização do sistema.

Checking BIND named service

Configurando o Servidor DNS BIND

Você instalou os pacotes BIND no servidor Ubuntu, então é hora de configurar a instalação do BIND em seu servidor Ubuntu. Como? Editando as configurações do BIND e do serviço named.

Toda a configuração para o BIND está disponível no diretório /etc/bind/, e as configurações para o serviço named em /etc/default/named.

1. Edite a configuração /etc/default/named usando seu editor preferido e adicione a opção -4 na linha OPTIONS, como mostrado abaixo. Esta opção fará com que o serviço named execute apenas no IPv4.

OPTIONS="-4 -u bind"

Salve as alterações feitas e feche o arquivo.

Configuring BIND to Run on IPv4 Only

2. Em seguida, edite o arquivo /etc/bind/named.conf.options e adicione a seguinte configuração abaixo da linha directory "/var/cache/bind";.

Esta configuração define o serviço BIND para executar na porta UDP padrão 53 no localhost do servidor e no endereço IP público (172.16.1.10). Ao mesmo tempo, permite consultas de qualquer host para o servidor DNS BIND usando o DNS do Cloudflare 1.1.1.1 como encaminhador.

    // listen port and address
    listen-on port 53 { localhost; 172.16.1.10; };

    // for public DNS server - allow from any
    allow-query { any; };

    // define the forwarder for DNS queries
    forwarders { 1.1.1.1; };

    // enable recursion that provides recursive query
    recursion yes;

No final, comente a linha listen-on-v6 { any; }; como mostrado abaixo, para desativar o serviço named de executar no IPv6.

Editing the BIND Configuration Options

3. Por último, execute o seguinte comando para verificar a configuração do BIND.

sudo named-checkconf

Se não houver saída, as configurações do BIND estão corretas, sem nenhum erro.

Verifying BIND Configurations

Configurando Zonas DNS

Neste ponto, você configurou a configuração básica do servidor DNS BIND. Você está pronto para criar um servidor DNS com seu domínio e adicionar outros subdomínios para suas aplicações. Você precisará definir e criar uma nova configuração de zonas DNS para fazer isso.

Neste tutorial, você criará um novo Servidor de Nomes (ns1.atadomain.io) e subdomínios (www.atadomain.io, mail.atadomain.io, vault.atadomain.io).

1. Edite o arquivo /etc/bind/named.conf.local usando seu editor preferido e adicione a seguinte configuração.

Esta configuração define a zona de encaminhamento (/etc/bind/zones/forward.atadomain.io) e a zona reversa (/etc/bind/zones/reverse.atadomain.io) para o nome de domínio atadomain.io.

zone "atadomain.io" {
    type master;
    file "/etc/bind/zones/forward.atadomain.io";
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse.atadomain.io";
};

Salve as alterações e feche o arquivo.

Defining Forward Zone and Reverse Zone BIND

2. Em seguida, execute o comando abaixo para criar um novo diretório (/etc/bind/zones) para configurações de zonas DNS.

mkdir -p /etc/bind/zones/

3. Execute cada comando abaixo para copiar as configurações padrão de zonas de encaminhamento e reversa para o diretório /etc/bind/zones.

# Copiar zona de encaminhamento padrão
sudo cp /etc/bind/db.local /etc/bind/zones/forward.atadomain.io

# Copiar zona reversa padrão
sudo cp /etc/bind/db.127 /etc/bind/zones/reverse.atadomain.io

# Listar conteúdo do diretório /etc/bind/zones/
ls /etc/bind/zones/
Copying Default Zones Configurations

4. Agora, edite a configuração da zona de encaminhamento (/etc/bind/zones/forward.atadomain.io) usando seu editor preferido e preencha a configuração abaixo.

A configuração da zona de encaminhamento é onde você define o nome de domínio e o endereço IP do servidor. Esta configuração irá traduzir o nome de domínio para o endereço IP correto do servidor.

A configuração abaixo cria o seguinte servidor de nomes e subdomínios:

  • ns1.atadomain.io – O servidor de nomes principal para seu domínio com o endereço IP 172.16.1.10.
  • Registro MX para o domínio atadomain.io que é gerenciado pelo mail.atadomain.io. O registro MX é usado para o servidor de email.
  • Subdomínios para aplicações: www.atadomain.io, mail.atadomain.io e vault.atadomain.io.
;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            2         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Define the default name server to ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.

; Resolve ns1 to server IP address
; A record for the main DNS
ns1     IN      A       172.16.1.10


; Define MX record for mail
atadomain.io. IN   MX   10   mail.atadomain.io.


; Other domains for atadomain.io
; Create subdomain www - mail - vault
www     IN      A       172.16.1.10
mail    IN      A       172.16.1.20
vault   IN      A       172.16.1.50

Salve as alterações e feche o arquivo.

Configuring Forward Zone BIND

5. Assim como a zona de encaminhamento, edite o arquivo de configuração da zona reversa (/etc/bind/zones/reverse.atadomain.io) e preencha a seguinte configuração.

A zona reversa traduz o endereço IP do servidor para o nome de domínio. A zona reversa ou registro PTR é essencial para serviços como o servidor de email, que afeta a reputação do servidor de email.

O registro PTR usa o último bloco do endereço IP, como o registro PTR com o número 10 para o endereço IP do servidor 172.16.1.10.

Esta configuração cria a zona reversa ou registro PTR para os seguintes domínios:

  • Servidor de nomes ns1.atadomain.io com a zona reversa ou registro PTR 172.16.1.10.
  • Registro PTR para o domínio mail.atadomain.io para o endereço IP do servidor 172.16.1.20.
;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            1         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Name Server Info for ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.


; Reverse DNS or PTR Record for ns1.atadomain.io
; Using the last number of DNS Server IP address: 172.16.1.10
10      IN      PTR     ns1.atadomain.io.


; Reverse DNS or PTR Record for mail.atadomain.io
; Using the last block IP address: 172.16.1.20
20      IN      PTR     mail.atadomain.io.

Salve as alterações e feche o arquivo.

Configuring Reverse Zone BIND

6. Agora, execute os seguintes comandos para verificar e confirmar as configurações do BIND.

# Verificando a configuração principal para o BIND
sudo named-checkconf

# Verificando a zona forward para forward.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/forward.atadomain.io

# Verificando a zona reversa para reverse.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/reverse.atadomain.io

Quando sua configuração estiver correta, você verá uma saída semelhante à abaixo.

Checking and Verifying BIND configurations

7. Por último, execute o comando systemctl abaixo para reiniciar e verificar o serviço named. Fazendo isso, aplica novas alterações ao serviço named.

# Reinicie o serviço named
sudo systemctl restart named

# Verifique o serviço named
sudo systemctl status named

Abaixo, você pode ver que o status do serviço named está ativo (em execução).

Restarting Named Service and Verifying Named Service Status

Abrindo a Porta DNS com o Firewall UFW

Neste ponto, você concluiu a instalação do Servidor DNS BIND. Mas ainda precisa proteger seu Servidor DNS. Você configurará o firewall UFW e abrirá a porta DNS para quaisquer consultas ao servidor. Fazendo isso permite que os clientes façam uma consulta ao servidor DNS BIND.

Por motivos de segurança, é recomendado executar e habilitar o firewall UFW em seu servidor Ubuntu.

1. Execute o comando ufw abaixo para verificar as aplicações disponíveis no firewall UFW.

sudo ufw app list

Você deve ver o Bind9 na lista de aplicativos do UFW abaixo.

Listing Available Applications on the UFW Firewall

2. Agora execute o comando abaixo para permitir o Bind9 no firewall UFW.

sudo ufw allow Bind9
Adding UW Rule

3. Por último, execute o seguinte comando para verificar as regras habilitadas no firewall UFW.

sudo ufw status

Você deve ver o aplicativo Bind9 na lista, como na captura de tela abaixo.

Verifying List of Rules

Verificando a Instalação do Servidor DNS BIND

Agora você concluiu a instalação do BIND DNS e configurou o firewall UFW. Mas como você verifica a instalação do seu servidor DNS? O comando dig resolverá o problema.

Dig é uma utilidade de linha de comando para solução de problemas de instalação de servidor DNS. O dig realiza uma consulta DNS para o nome de domínio fornecido e exibe respostas detalhadas para o alvo do nome de domínio. No sistema Ubuntu, o dig faz parte do pacote bind9-dnsutil.

Para verificar a instalação do seu servidor DNS BIND:

1. Execute cada comando dig abaixo para verificar os subdomínios www.atadomain.io, mail.atadomain.io e vault.atadomain.io.

Se a instalação do seu servidor DNS for bem-sucedida, cada subdomínio será resolvido para o endereço IP correto com base na configuração forward.atadomain.io.

# Verificando os nomes de domínio
dig @172.16.1.10 www.atadomain.io
dig @172.16.1.10 mail.atadomain.io
dig @172.16.1.10 vault.atadomain.io

Abaixo está a saída do subdomínio www.atadomain.io resolvido para o endereço IP do servidor 172.16.1.10.

Checking sub-domain www.atadomain.io

Abaixo está o subdomínio mail.atadomain.io resolvido para o endereço IP do servidor 172.16.1.20.

Checking sub-domain mail.atadomain.io

E abaixo está o subdomínio vault.atadomain.io resolvido para o endereço IP do servidor 172.16.1.50.

Checking sub-domain vault.atadomain.io

2. Em seguida, execute o comando dig abaixo para verificar o registro MX para o domínio atadomain.io.

dig @172.16.1.10 atadomain.io MX

Você deverá ver que o domínio atadomain.io tem o registro MX mail.atadomain.io.

Checking MX record for atadomain.io

3. Por fim, execute os seguintes comandos para verificar o registro PTR ou a zona reversa para os endereços IP do servidor 172.16.1.10 e 172.16.1.20.

Se a instalação do BIND for bem-sucedida, cada endereço IP será resolvido para o nome de domínio definido na configuração reverse.atadomain.io.

# Verificando o registro PTR ou DNS reverso
dig @172.16.1.10 -x 172.16.1.10
dig @172.16.1.10 -x 172.16.1.20

Você pode ver abaixo que o endereço IP do servidor 172.16.1.10 é resolvido para o nome de domínio ns1.atadomain.io.

Checking PTR record for IP address 172.16.1.10

Como você pode ver abaixo, o endereço IP do servidor 172.16.1.20 é resolvido para o nome de domínio mail.atadomain.io.

Checking PTR record for IP address 172.16.1.20

Conclusão

Ao longo deste tutorial, você aprendeu como criar e configurar um servidor DNS BIND seguro em seu servidor Ubuntu. Você também criou a zona forward e reverse para adicionar seu domínio e verificou os servidores DNS executando comandos dig.

Agora, como você pode implementar um servidor DNS BIND em seu ambiente? Talvez implementar o BIND como um servidor autoritativo? Ou configurar alta disponibilidade com uma instalação BIND master-slave?

Source:
https://adamtheautomator.com/bind-dns-server/