Segurança

O Bind vem configurado por padrão para aceitar consultas a outros domínios (recursion yes). Ou seja, o DNS responde não apenas pelos domínios sobre os quais tem autoridade (ou seja, os que você adicionou na configuração), mas trabalha também como um
servidor DNS de cache que pode ser usado por outros micros para acessar a web.

Se você está configurando um servidor DNS para a rede local este é justamente o comportamento desejado, pois permite que você use o endereço IP do servidor DNS na configuração dos clientes, permitindo que eles acessem tanto
os domínios da rede interna, quanto sites da Internet.

Entretanto, ao configurar um servidor disponível para a internet, é importante desativar esse comportamento, fazendo com que ele responda apenas pelos domínios sobre os quais tem autoridade.

Embora não seja por si só uma brecha de segurança, deixar de alterar a configuração padrão faz com que o DNS se transforme em um servidor “público”, que faz a resolução de qualquer domínio solicitado, assim como os
servidores DNS dos provedores de acesso. Isso abre brecha para ataques de “DNS poisoning”, onde um cliente externo insere uma entrada inválida no cache do DNS, fazendo com que ele responda a algumas das consultas com endereços IPs incorretos, além de
abrir uma pequena possibilidade de que o servidor seja usado como auxiliar em ataques DoS contra outros servidores.

Para solucionar o problema, adicione as linhas abaixo no final do arquivo “/etc/bind/named.conf“, ou “/etc/bind/named.conf.local” (de acordo com qual esteja utilizando na configuração):

options {
directory “/var/named”;
recursion no;
};

Depois de salvar o arquivo, reinicie o serviço para que a alteração entre em vigor:

# /etc/bind/named.conf restart

No caso de um servidor DNS interno, que deve ficar disponível apenas para a rede local, basta bloquear as porta 53/UDP e 53/TCP na configuração do firewall, de forma que elas fiquem inacessíveis a partir da Internet. Um
exemplo de regras do IPtables (para uso no servidor) seria:

# Abre para a rede local
iptables -A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT
# Fecha as portas 53/UDP e 53/TCP para os demais:
iptables -A INPUT -p udp –dport 53 -j DROP
iptables -A INPUT -p tcp –dport 53 -j DROP

Entretanto, se você precisa que o mesmo servidor fique acessível tanto para a rede local quanto para a Internet, respondendo por domínios diferentes em cada caso, a configuração é um pouco mais complicada. Nesse caso
precisamos utilizar o recurso de views suportado pelo Bind 9 para criar duas configurações distintas, uma para a rede local e outra para a Internet.

O servidor pode ser configurado então para responder por domínios diferentes para a rede local e para a Internet e também para responder por domínios externos (recursion yes) apenas para a rede local. Veja um exemplo de
configuração no arquivo named.conf”:

acl intranet{
127.0.0.1/8;
192.168.1/24;

};

view “local
{
match-clients { intranet; };
match-destinations { intranet; };
recursion yes;

zone “empresa” {
type master;
file “db.intranet”;
};

zone “minhaempresa.com.br” {
type master;
file “db.empresa”;
};

};

view “internet
{
match-clients { !intranet; };
match-destinations { !intranet; };
recursion no;

zone “minhaempresa.com.br” {
type master;
file “db.empresa”;
};
};

A configuração começa com a definição de uma acl (uma lista de controle de acesso) que contém o endereço da interface de loopback e a faixa de endereços usada pela rede local. Você pode adicionar mais faixas de endereços,
caso necessário (uma por linha, com ponto e vírgula no final). No exemplo, a acl é chamada de “intranet”, mas você pode usar qualquer nome.

Em seguida, é criado um view para a rede local (view “local”), que contém a linha “match-clients { intranet; };”. Isso faz com que a configuração dentro do view seja aplicado apenas aos endereços definidos dentro da acl
“intranet”.

Em seguida temos um view separado para a Internet, que começa com a linha view “internet”, que contém a configuração que será aplicada aos demais endereços. Você pode notar que ele usa a linha “match-clients { !intranet;
};”, onde a exclamação indica que a configuração deve ser usada a todos os endereços que não fizerem parte da acl.

Outras diferenças são que o view para a rede local contém a linha “recursion yes;” (que permite que os clientes usem o DNS para acessarem domínios externos) e contém um domínio “empresa” que, diferente do “empresa.com.br”,
ficará disponível apenas para a rede local.

É importante enfatizar que essa configuração funciona apenas a partir do Bind 9, de forma que se você usa o Bind 8 ou uma versão antiga, é necessário atualizar o sistema. Como comentei no início, nas distribuições derivadas
do Debian o pacote “bind” instala uma versão da série 8, enquanto o pacote “bind9” instala uma versão da série 9.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X