Configure o BIND9 como o Firewall do DNS

5

Com o OpenDNS agora precisando de um para estar no pacote pro para ter a filtragem ativada, com um orçamento apertado, precisamos de filtragem gratuita de DNS.

Depois de ler este link sobre como bloquear domínios com bind , coletei Listas negras do SquidGuard e domínios concatenados nas categorias que eu precisava em uma grande lista. Eu então o alimentei para este script python gerando um arquivo contendo cerca de 2 milhões de zonas.

named-checkconf o analisa muito bem, mas recarregar o named leva quase 10 minutos, então ele não resolve nada, e o servidor fica mais lento. Removendo os resultados de inclusão nomeados, funcionando corretamente novamente.

Qual é a maneira correta de configurar o BIND9 para funcionar como um firewall DNS com eficiência? Se é possível também bloquear qualquer domínio que resolva endereços IP específicos que solucionem todo o problema.

Estou executando o bind como não autoritativo, apenas um servidor de armazenamento em cache.

    
por timkofu 05.08.2014 / 16:07

1 resposta

6

Está desatualizado para a tecnologia atual. No mundo do BIND, as Zonas de Política de Resposta (RPZ) são sinônimo de firewalls de DNS atualmente.

Uma zona RPZ é uma zona DNS normal, mas é usada para definir ações de política pelo servidor. A zona "sufixo" não importa, pois este não é um domínio DNS real. É simplesmente um arquivo de zona que contém uma lista de instruções especialmente formatadas.

options {
          ...
          response-policy { zone "whatever.anytld";} };
};

O lado esquerdo do registro define a regra de correspondência, com o tipo de registro e o lado direito definindo a ação a ser executada. Observe a ausência de um ponto à direita no lado esquerdo dos exemplos a seguir.

$ORIGIN whatever.anytld.

; destination IP rewrite
baddomain1.example.com       A     198.51.100.1
*.baddomain1.example.com     A     198.51.100.1

; send them to an existing A record
baddomain2.example.com       CNAME mywebserver.example.org.
*.baddoman2.example.com      CNAME mywebserver.example.org.

; NXDOMAIN it
baddomain3.example.com       CNAME .
*.baddomain3.example.com     CNAME .

; reply with NODATA
baddomain4.example.com       CNAME *.
*.baddomain4.example.com     CNAME *.

E assim por diante. Você pode fazer um pouco com isso, incluindo medidas mais pesadas que podem afetar sites de hospedagem compartilhados inocentes: bloquear servidores de nome por nome, bloquear servidores de nome por IP, executar ações no endereço IP de um registro retornado em vez do nome etc.

Há muito que o RPZ fará, e isso não deve servir como documentação exaustiva. A leitura recomendada inclui o Capítulo 6 do BIND ARM (parte inferior desta resposta) para sua versão do BIND e Capítulo 9 do livro on-line do Zytrax.

Cliff observa minha experiência pessoal para economizar seu tempo:

  • Use as transferências de zona para mover suas zonas de RPZ com IXFR . Ative ixfr-from-differences no seu mestre para facilitar isso. Use transferências de zona baseadas em chaves, se usar BIND 9.9 ou posterior para proteger contra tentativas de DoS baseadas em NOTIFY.
  • Permitir que os IPs administrativos consultem a zona RPZ.
  • Não use mais de um arquivo RPZ, a menos que você esteja executando o BIND 9.10. Houve problemas de desempenho com várias zonas até essa versão.
  • O RPZ não pode ser usado para interromper os ataques baseados em registros NS que se popularizaram em 2014, pois por padrão o RPZ é projetado para tentar pesquisas autoritativas e não "trair" seu seqüestro de registro para uma fonte upstream de servidor de nomes.
    • qname-wait-recurse no foi adicionado no BIND 9.10 e pode permitir que você use o RPZ para essa finalidade. Eu tenho sentido para lab-lo.
    • Mesmo que qname-wait-recurse no funcione, ainda é necessário um tipo de registro que possa ser usado para domínios de ataque off-line sem configuração extra. Eu falei com Paul Vixie sobre isso e podemos vê-lo em uma versão futura da especificação do formato RPZ.
  • As ações NXDOMAIN e NODATA trarão o nome da sua zona RPZ na seção AUTHORITY da resposta. Suponha que as pessoas aprendam seu nome.

Links do Capítulo 6 do BIND ARM:

por 05.08.2014 / 16:45