FreeBSD: servidor DNS Unbound

O Unbound é um servidor DNS desenvolvido principalmente pela NLnet Labs, VeriSign Inc, Nominet e Kirei. O software é distribuído gratuitamente sob a licença BSD. Os binários são escritos com foco em alta segurança. São codificados em C tendo com pressuposto que um serviço DNS está sempre sob ataque e que servidores remotos estão sempre tentando passar informações incorretas para ele.

O projeto do Unbound é composto por um conjunto de componentes modulares que incorporam recursos, incluindo como parte de sua arquitetura: validação de segurança reforçada (DNSSEC), IPv6 e uma biblioteca API para a resolução dos clientes. Originalmente escrito para sistemas operacionais “Unix-like” compatíveis com POSIX, atualmente roda em FreeBSD, OpenBSD, NetBSD e Linux, bem como no Microsoft Windows.

A instalação e configuração do Unbound é incrivelmente fácil. A maioria dos sistemas operacionais modernos já possuem pacotes Unbound prontos. O Unbound não é um servidor de autoridade de pleno direito, mas é possível inserir registros do tipo A para e resolução reversa de nomes em uma pequena LAN privada.

No futuro espera-se que muitas distribuições de código aberto, se não todas, deixarão de utilizar o BIND (também conhecido como named).

O FreeBSD 10 já fez a mudança, ou seja, o BIND não está incluído na instalação padrão. Entre as principais razões para abandonar o BIND, podemos citar: código-fonte extremamente “inchado”, lento e muito complexo. Essa complexidade normalmente trazem falhas de segurança. Para se ter uma ideia, recentemente mais de vinte (20) dos últimos setenta (70) bugs críticos do FreeBSD foram relacionados ao BIND. O outro problema do BIND é que ele é utilizado por cerca de 70% dos servidores DNS do mundo, o que leva a um ambiente de monocultura.

O Unbound, em comparação ao BIND, é um servidor de nomes DNS incrivelmente rápido e seguro que, devido ao seu pequeno tamanho, pode ter seu código-fonte facilmente auditado por questões de segurança.

1. Configuração

Todos os procedimentos descritos abaixo foram executados como usuário root, em um sistema FreeBSD 10.2 pré-configurado como descrito no post “FreeBSD: configuração básica inicial

1.1. Instalando ferramentas adicionais

Para se ter maior flexibilidade e facilidade na configuração e teste do servidor Unbound, o ideal é fazermos a instalação de algumas ferramentas adicionais:

1.2. Instalando e configurando o Unbound

A instalação do Unbound no FreeBSD é feita com o seguinte comando:

Agora deve-se acessar o diretório padrão de configuração do Unbound e fazer o download da lista atualizada dos “root servers”:

Deverá ser apresentado algo assim:

Execute o comando baixo para gerar os arquivos de chaves necessárias para o TLS:

A saída do comando será algo parecido como isso:

Altere os privilégios dos arquivos utilizando os comandos:

Antes de iniciar o procedimento de configuração do Unbound, devemos, por segurança, criar uma cópia de backup do arquivo de configuração original:

Agora, devemos configurar o serviço do Unbound propriamente dito, editando o arquivo unbound.conf

O conteúdo do arquivo deve ficar assim:

O parâmetro “num-threads” define quantos “cores” o Unbound pode usar. Este parâmetro deve ser ajustado conforme a quantidade de “cores” da máquina e sua necessidade. Para descobrir a quantidade de “cores” no FreeBSD, utilize um dos comandos abaixo:

ou

O parâmetro “access-control” define quais IPs poderão (allow) ou não (deny) requisitar o serviço de DNS. Este parâmetro deve ser ajustado conforme sua necessidade.

Em “num-queries-per-thread” você define quantas requisições DNS podem ser processadas por cada “core” de seu CPU.

Deve-se também incluir o nameserver com o endereço IP localhost (127.0.0.1) do servidor no arquivo resolv.conf:

O conteúdo do arquivo resolv.conf deve ficar mais ou menos assim:

Após as alterações nos arquivos de configuração (.conf) deve-se verificar se existe algum erro nos ajustes do Unbound, usando o seguinte comando:

Se o teste de verificação do arquivo unbound.conf não apresentar erros, deve-se fazer o reload do Unbound, para que assim sejam aplicadas as novas configurações:

Para verificar se o serviço do Unbound está funcionando, utilize o comando:

Para testar seu DNS, execute o comando “dig” e o endereço do site que deseja, por exemplo:

Verifique o “query time“, agora que já foi pro cache, execute novamente

e veja se o “query time” diminuiu substancialmente.

Agora deve-se substituir o conteúdo original do arquivo root.key executando o comando abaixo:

Altere os privilégios deste arquivo com o comando:

Para testar o DNSSEC, execute o comando:

Procure pela “flagad no início da resposta do comando.

Para configurar o FreeBSD para iniciar o Unbound durante a inicialização do sistema use o comando:

Para iniciar o Unbound manualmente, use o comando:

1.3. Configurando o bloqueio de agências de propaganda

Edite o arquivo unbound.conf

Inclua no final do arquivo as seguintes linhas:

1.4. Configurando o DNS reverso para servidores da rede interna

Edite o arquivo unbound.conf

Inclua no final do arquivo as seguintes linhas:

Deve-se ajustar os parâmetros de domínio e IP conforme sua necessidade.

Como minha rede doméstica não possui endereço IP fixo para a WAN, utilizo o serviço no-IP.com. Assim meu DNS reverso fica da seguinte forma:

2. Teste de segurança

Para testar a segurança do seu servidor Unbound, basta acessar o site: SIDN DNSSEC test

3. Fontes de pesquisa

Este tutorial foi baseado nos seguintes posts:

http://tutoriaisredes.blogspot.com.br/2015/01/tuto-linux-servidor-dns-unbound.html

http://community.foxpanel.com.br/viewtopic.php?t=11

https://calomel.org/unbound_dns.html

Agradeço os autores dos artigos acima por possibilitarem a redação do meu post.

 

Deixe uma resposta