Pular para o conteúdo
Início » Aprendendo Linux Parte 18 – Configuração de Servidores DNS no Linux

Aprendendo Linux Parte 18 – Configuração de Servidores DNS no Linux

O DNS (Domain Name System) é um serviço essencial que traduz nomes de domínio em endereços IP. Nesta aula, vamos explorar como configurar e gerenciar servidores DNS no Linux, usando o BIND (Berkeley Internet Name Domain), que é um dos servidores DNS mais populares. Vamos cobrir a instalação, configuração básica, segurança e práticas recomendadas.

O que é DNS?

DNS é um sistema hierárquico de nomes que facilita a tradução de nomes de domínio (como www.exemplo.com) em endereços IP que os computadores usam para se comunicar. Ele permite a localização de serviços e dispositivos em redes TCP/IP.

Vantagens de um Servidor DNS

  • Resolução de nomes: Tradução de nomes de domínio amigáveis em endereços IP.
  • Gestão centralizada: Permite a gestão centralizada de registros de nomes de domínio.
  • Eficiência: Melhora a eficiência da rede ao reduzir a carga em servidores raiz e outros servidores DNS.

Instalação do BIND

No Servidor

Para instalar o BIND em distribuições baseadas em Debian (como Ubuntu):

$ sudo apt update
$ sudo apt install bind9 bind9utils bind9-doc

Para distribuições baseadas em Red Hat (como CentOS):

$ sudo yum install bind bind-utils

Configuração do Servidor DNS

Arquivos de Configuração

Os principais arquivos de configuração do BIND estão localizados em /etc/bind (Debian) ou /etc/named (Red Hat).

Editando o Arquivo named.conf

O arquivo de configuração principal é named.conf. Edite este arquivo para configurar a zona DNS.

$ sudo nano /etc/bind/named.conf.local  # Debian
$ sudo nano /etc/named/named.conf.local  # Red Hat

Adicione a seguinte configuração para a zona de domínio meusite.com:

zone "meusite.com" {
    type master;
    file "/etc/bind/db.meusite.com";  # Debian
    file "/etc/named/db.meusite.com";  # Red Hat
};
Criando o Arquivo de Zona

Crie o arquivo de zona para meusite.com:

$ sudo nano /etc/bind/db.meusite.com  # Debian
$ sudo nano /etc/named/db.meusite.com  # Red Hat

Adicione o seguinte conteúdo:

$TTL    604800
@       IN      SOA     ns1.meusite.com. admin.meusite.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.meusite.com.
@       IN      A       192.168.1.10
ns1     IN      A       192.168.1.10
www     IN      A       192.168.1.10
  • SOA: Start of Authority, contém informações sobre a zona e o servidor DNS principal.
  • NS: Name Server, define os servidores de nomes autorizados para a zona.
  • A: Address record, mapeia um nome de domínio para um endereço IP.
Verificando a Configuração

Verifique a configuração do BIND:

$ sudo named-checkconf
$ sudo named-checkzone meusite.com /etc/bind/db.meusite.com  # Debian
$ sudo named-checkzone meusite.com /etc/named/db.meusite.com  # Red Hat
Iniciando e Parando o Servidor DNS

Para iniciar o serviço BIND:

$ sudo systemctl start bind9  # Debian
$ sudo systemctl start named  # Red Hat

Para parar o serviço:

$ sudo systemctl stop bind9  # Debian
$ sudo systemctl stop named  # Red Hat

Para verificar o status do serviço:

$ sudo systemctl status bind9  # Debian
$ sudo systemctl status named  # Red Hat

Para habilitar o serviço DNS para iniciar automaticamente na inicialização:

$ sudo systemctl enable bind9  # Debian
$ sudo systemctl enable named  # Red Hat

Configuração de Segurança

Configuração de Firewall

Certifique-se de que seu firewall permite tráfego DNS (porta 53):

Para ufw (firewall do Ubuntu):

$ sudo ufw allow 53/tcp
$ sudo ufw allow 53/udp

Para firewalld (firewall do CentOS):

$ sudo firewall-cmd --permanent --add-port=53/tcp
$ sudo firewall-cmd --permanent --add-port=53/udp
$ sudo firewall-cmd --reload
Configuração de Restrições

Para aumentar a segurança, restrinja quais clientes podem consultar seu servidor DNS. Edite o arquivo de configuração:

acl "trusted" {
    192.168.1.0/24;  # Rede de clientes confiáveis
};

options {
    ...
    allow-query { trusted; };
    ...
};
Configuração de DNSSEC

DNSSEC (DNS Security Extensions) adiciona segurança às zonas DNS, protegendo contra ataques como spoofing.

  1. Gere chaves DNSSEC:
$ sudo dnssec-keygen -a RSASHA256 -b 2048 -n ZONE meusite.com
$ sudo dnssec-keygen -f KSK -a RSASHA256 -b 2048 -n ZONE meusite.com
  1. Assine a zona DNS:
$ sudo dnssec-signzone -A -3 $(head -c 1000 /dev/urandom | sha1sum | cut -b 1-16) -N increment -o meusite.com -t /etc/bind/db.meusite.com
  1. Adicione as chaves ao arquivo de zona.

Monitoramento e Logs

Os logs do BIND são armazenados em /var/log/syslog (Debian) ou /var/log/messages (Red Hat). Para monitorar os logs em tempo real:

$ sudo tail -f /var/log/syslog  # Debian
$ sudo tail -f /var/log/messages  # Red Hat

Exemplos Práticos

Exemplo 1: Configurando um Servidor DNS Básico
  1. Instale o BIND:
$ sudo apt install bind9  # Debian
$ sudo yum install bind  # Red Hat
  1. Configure a zona DNS:
$ sudo nano /etc/bind/named.conf.local  # Debian
$ sudo nano /etc/named/named.conf.local  # Red Hat

# Adicione a seguinte configuração:
zone "meusite.com" {
    type master;
    file "/etc/bind/db.meusite.com";  # Debian
    file "/etc/named/db.meusite.com";  # Red Hat
};
  1. Crie o arquivo de zona:
$ sudo nano /etc/bind/db.meusite.com  # Debian
$ sudo nano /etc/named/db.meusite.com  # Red Hat

# Adicione o seguinte conteúdo:
$TTL    604800
@       IN      SOA     ns1.meusite.com. admin.meusite.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.meusite.com.
@       IN      A       192.168.1.10
ns1     IN      A       192.168.1.10
www     IN      A       192.168.1.10
  1. Verifique a configuração:
$ sudo named-checkconf
$ sudo named-checkzone meusite.com /etc/bind/db.meusite.com  # Debian
$ sudo named-checkzone meusite.com /etc/named/db.meusite.com  # Red Hat
  1. Inicie e habilite o servidor DNS:
$ sudo systemctl start bind9  # Debian
$ sudo systemctl enable bind9  # Debian

$ sudo systemctl start named  # Red Hat
$ sudo systemctl enable named  # Red Hat
  1. Configure o firewall para permitir tráfego DNS:

Para ufw:

$ sudo ufw allow 53/tcp
$ sudo ufw allow 53/udp

Para firewalld:

$ sudo firewall-cmd --permanent --add-port=53/tcp
$ sudo firewall-cmd --permanent --add-port=53/udp
$ sudo firewall-cmd --reload

Configurar e gerenciar servidores DNS no Linux é uma habilidade essencial para administradores de sistemas, permitindo a resolução de nomes de domínio e a gestão centralizada de registros DNS. Nesta aula, exploramos como configurar um servidor DNS com BIND, adicionar registros de zona e aplicar práticas de segurança. Pratique essas técnicas para ganhar confiança na administração de servidores DNS no Linux.

Se tiver dúvidas ou sugestões, deixe um comentário no blog NerdExpert.com.br. Na próxima aula, exploraremos a configuração de servidores LDAP no Linux.