Views e acl’s no do bind9

Certo dia estava fuçando na internet usando o DIG que é uma ferramenta de lookup para DNS, e encontrei um domínio que tinha muitos registros do tipo A (host) apontando para endereços ip privados.

Bom se você tem os servidores de DNS na sua empresa ou entidade, você pode utilizar acl’s e views do BIND para criar uma zona específica para sua intranet e outra expecífica para uso externo.

Veja só, vamos editar o arquivo named.conf.local, presente no debian ou ubuntu.

Crie uma ACL para seus servidores de DNS slave externos.

acl “external_slaves” {
200.xxx.xxx.xxx;
200.xxx.xxx.xxx;
200.xxx.xxx.xxx;
200.xxx.xxx.xxx;};

Agora vamos criar uma ACL para seus servidores de DNS slave na rede interna.

acl “internal_slaves” {
10.xxx.xxx.xxx;
172.xxx.xxx.xxx;
192.xxx.xxx.xxx;
};

Agora vamos criar uma ACL onde você vai determinar quais são suas redes privadas

acl “lan_nets” {
10.0.0.0/16;
172.16.0.0/16;
192.168.0.0/24;
};

Legal já criamos listas de controles essenciais para configuração de nossas views, agora vamos criar as views.

Primeito a view para sua rede privada.

view “internal” IN {

match-clients { lan_nets; };

allow-recursion { lan_nets; };

allow-transfer { internal_slaves; };

notify yes;

zone “.” {
type hint;
file “/etc/bind/db.root”;
};

zone “localhost” {
type master;
file “/etc/bind/db.local”;
};

zone “127.in-addr.arpa” {
type master;
file “/etc/bind/db.127”;
};

zone “0.in-addr.arpa” {
type master;
file “/etc/bind/db.0”;
};

zone “255.in-addr.arpa” {
type master;
file “/etc/bind/db.255”;
};

zone “dominio.gov.br” {
type master;
file “/var/cache/bind/zones/master/dominio.gov.br.internal”;
notify yes;
allow-transfer { internal_slaves; };
};

Agora vamos configurar a view para rede externa (internet)

view “external” IN {

match-clients { !lan_hosts; any; };

allow-transfer { external_slaves; };

notify yes;

zone “.” {
type hint;
file “/etc/bind/db.root”;
};

zone “localhost” {
type master;
file “/etc/bind/db.local”;
};

zone “127.in-addr.arpa” {
type master;
file “/etc/bind/db.127”;
};

zone “0.in-addr.arpa” {
type master;
file “/etc/bind/db.0”;
};

zone “255.in-addr.arpa” {
type master;
file “/etc/bind/db.255”;
};

zone “dominio.gov.br” {
type master;
file “/var/cache/bind/zones/master/dominio.gov.br.external”;
};

Veja que todos os domínios em que seu serviço de DNS tem a autoridade tem que constar nas duas views, isto caso deseje que ele seja visto tanto internamente quanto externamente. Mesmo que seja um domínio que não tenha nenhum registro A apontando para algum host em sua intranet, se você deseja que sua intranet acesse este domínio ele terá que ser mencionado na internal view e na external view.

O segredo do view é a diretiva match_clients, verifique que no caso da view “internal”, eu digo para eles que os clientes que serão atendidos por ela são os que constam na ACL lan_nets, já na view “external” eu especifico que tudo que for diferente de lan_nets será atendido por aquela view.

Bom sendo assim você vai colocar no seu arquivo de zona dominio.gov.br.internal além dos registros comuns os registros tipo A que apontam para hosts na sua intranet e no arquivo de zona dominio.gov.br.external vai colocar apenas os registros normais com endereços ip públicos.

Através das views e acls você tem mais flexibilidade para elaborar suas configurações e mais segurança para sua rede, pois desta forma você não expõe informações sobre a sua rede privada.

Mais Dicas:

a diretiva match-clients especifica a qual rede ou host esta a view em que ela se encontra vai atender.

a diretiva allow-recursion especifica qual rede ou host pode fazer pesquisas do tipo recursiva utilizando este servidor.

a diretiva allow-transfer especifica para qual rede/host os arquivos de zona podem ser transferidos caso exista um servidor slave por lá.

a diretiva notify yes; especifica que os servidores slave serão avisado caso alguma modificação no serial zona seja detectado.

Rolar para cima