DNS – Criando Views no Bind

Continuando nossa série de artigos sobre o Bind, hoje vamos criar views em nosso DNS, views são seções onde podemos controlar quem pode ver qual parte de nosso DNS, assim podemos ter uma seção interna e outra externa respondendo no mesmo servidor DNS.

Lembrando o artigo da semana passada, tínhamos o seguinte conteúdo no nosso arquivo named :

zone "empresa.net" {
     type master;
     file "db.empresa.net";
     allow-transfer { 172.16.1.11; };
};

zone "exemplo.net" {
    type master;
    file "db.exemplo.net";
    allow-transfer { 172.16.1.11; };
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "db.172.16.1";
    allow-transfer { 172.16.1.11; };
};

Não tínhamos uma zona de máquinas locais e nem separação de quem podia ver cada zona. Vamos criar agora nossas views, lembrando que todas as seções existentes nos arquivos named devem estar em uma view.

Vamos criar nossa zona local acrescentando uma entrada no final do arquivo:

zone "empresa.local" {
    type master;
    file "db.empresa.local";
    allow-transfer { none; };
};

Criaremos o conteúdo de nossa zona no arquivo db.empresa.local no diretório correto e com o seguinte conteúdo:

$TTL 28800 ; tempo de vida das respostas fornecidas pelo DNS
@ IN SOA ns1.empresa.local. dns-admin.empresa.local. (
      2011102701 ; serial para controle de atualizações entre master e slave
       3600 ; tempo de atualizações entre master e slave (refresh)
       1800 ; tempo de atualizações caso o refresh falhe
      604800 ; tempo de expiração do slave caso não se contate com o master
      3600 ) ; tempo de vida das repostas negativas do servidor
@    IN NS ns1.empresa.local.
@    IN MX 10 mail.empresa.local.
ns1  IN A  192.168.1.10
mail IN A  192.168.1.12
ftp  IN A  192.168.1.13
www  IN A  192.168.1.20

Assim vamos criar as nossas views com o seguinte conteúdo:

view "externa" {
match-clients { any; };
recursion no;
zone "empresa.net" {
     type master;
     file "db.empresa.net";
     allow-transfer { 172.16.1.11; };
};

zone "exemplo.net" {
    type master;
    file "db.exemplo.net";
    allow-transfer { 172.16.1.11; };
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "db.172.16.1";
    allow-transfer { 172.16.1.11; };
};
};

view "interna" {
match-clients { 192.168.1.0/24; };
recursion yes;
zone "empresa.local" {
    type master;
    file "db.empresa.local";
    allow-transfer { none; };
};
};

Assim teremos uma view chamada “externa” que será de acesso a todos (any) e não permitirá consultas recursivas (recursion no), ou seja qualquer um pode consultar sobre os domínios que estão dentro dessa view, mas não podem consultar sobre nenhum outro domínio.

Já a view “interna” é de acesso apenas para clientes da rede 192.168.1.0/24 e permite que clientes dessa rede consultem sobre outros domínios mesmo que não estejam hospedados nesse servidor.

Espero que esse artigo torne seu DNS mais seguro e eficiente, no próximo artigo estaremos melhorando a segurança do DNS.

Não esqueça de votar no TopBlog e continuar a recomendar nosso Portal.




Sobre Vagner Fonseca

Consultor de TI, Formando em Gestão com muitos anos de experiência na área de Tecnologia, sempre de bem com a vida e procurando novos desafios. Uso de tecnologias Open Source e voltado para segurança e confiabilidade nas empresas . Sempre disposto a aprender e desenvolver equipes para melhoria nos processos nas empresas.
Esta entrada foi publicada em Dica, Linux, Segurança, Servidor e marcada com a tag , , , , . Adicione o link permanente aos seus favoritos.

7 respostas a DNS – Criando Views no Bind

  1. Rodrigo Ramos disse:

    Adoro essas dicas de Linux…. principalmente sobre o BIND…

    Bernardes que me desculpe… mas estou gostando muito mais de linux do que windows e se não fosse o Cooperati eu estaria bem atras ainda…

  2. Junior disse:

    Vagner, excelente post, como sempre, eu estou atualizando meu dns seguindo suas orientações, agora uma dúvida, aqui na empresa eu possuo dois links com ips fixos e de empresas diferentes (mundivox e gvt) e consequentemente gateways diferentes, isso implica alguma coisa nessa configuração do DNS ?, estou pretendendo fazer loadbalance mas não sei como ficaria os meus serviços de e-mail caso alguma das redes caia, poderia me ajudar ?
    Obrigado
    Junior


    • Junior,

      Além de configurar o servidor de Email para responder pelos IP dos links, eu faria um NAT das porta usadas pelo servidor de Email nos links externos para o IP interno do servidor e além disso colocaria dois RR MX dentro da configuração do DNS, para que os dois IP externos apontem para o recurso de Mail eXchange.

  3. Junior disse:

    Vagner, mais uma ajuda, ao seguir o passo a passo aparece este erro no log,
    Nov 11 14:35:32 ns1 named[3119]: loading configuration from ‘/etc/bind/named.conf’
    Nov 11 14:35:32 ns1 named[3119]: /etc/bind/named.conf.default-zones:2: when
    using ‘view’ statements, all zones must be in views
    Nov 11 14:35:32 ns1 named[3119]: loading configuration: failure
    Nov 11 14:35:32 ns1 named[3119]: exiting (due to fatal error)

    pelo que entendi, todas as zonas que estão em default-zones devem estar entre as views, mas qual, a interna ou a externa ?
    Obrigado

  4. Max disse:

    Essa dica eu recomendo, já tive aula com esse cara ai.

Deixe uma resposta