Bind 9 - permitir consulta-on versus listen-on

2

Eu estava pensando sobre diferenças de comportamento entre as instruções allow-query-on e listen-on do Bind 9. Eles parecem executar funções semelhantes. De acordo com o Capítulo 6 do ARM ("Bind 9 Configuration"):

The interfaces and ports that the server will answer queries from may be specified using the listen-on option.

A sintaxe dada é:

listen-on [ port ip_port ] [ dscp ip_dscp ] { address_match_list } ;

Também no mesmo capítulo:

allow-query-on: Specifies which local addresses can accept ordinary DNS questions.

A sintaxe dada é:

allow-query-on { address_match_list } ;

Na sintaxe, parece que allow-query-on não permite que números de porta sejam especificados. Existem outras diferenças também?

    
por Andrew 19.04.2018 / 20:10

3 respostas

1

Eles não são funções muito semelhantes. A instrução listen-on é necessária para que named seja ligado a um endereço IP e porta específicos. Sem configurá-lo, o padrão é ouvir as consultas do DNS na porta 53 de todas as interfaces do servidor. Se você tiver um servidor com várias interfaces e desejar fornecer apenas serviços DNS em um deles, use listen-on para apenas escutar na única interface. Tentar fazer o contrário com allow-query-on só deixará o BIND ainda escutando em todas as interfaces. A melhor maneira é usar ambos, ou seja, ligar-se apenas à (s) interface (s) necessária (s) e restringir ainda mais o tipo de consultas que você permitir.

    
por 03.09.2018 / 17:35
2

escutar

listen-on é usado para especificar quais combinações endereço / porta que o processo named deve bind(3) .
Ou seja, as combinações de endereço / porta para as quais named informa ao sistema operacional que é o processo que "escuta" e, portanto, deseja receber o que for enviado para lá.

Não há entendimento do DNS no nível da API de soquete, portanto, não há meios de ter qualquer tipo de controle detalhado aqui. Ou você escuta ou não, e, se fizer isso, nada mais pode escutar no mesmo endereço / porta (com implicações sobre o que mais pode ser executado lado a lado no mesmo host).

allow - * - on

allow-*-on (e, com a perspectiva oposta às diretivas comuns allow-* ) são medidas de controle de acesso dentro do BIND para diferentes tipos de mensagens DNS (diferentes categorias de consultas, atualizações, transferências de zona, etc.) que ele recebeu.

Como essa é a funcionalidade dentro do BIND, ela interpretou os dados DNS que recebeu e permite um controle de acesso muito mais refinado (mas deve ter escutado em algum lugar para receber as mensagens em primeiro lugar).

    
por 03.09.2018 / 17:38
1

Atualmente estou estudando o BIND e pensando exatamente a mesma coisa. Acho que a resposta está nas declarações que você não mencionou, ou seja, também existem instruções allow-query-cache-on e allow-recursion-on . Juntos, eles podem ser usados para configurar de maneira mais granular o BIND do que a instrução listen-on pode.

Além disso, em relação a allow-query-on , a documentação continua dizendo:

This makes it possible, for instance, to allow queries on internal-facing interfaces (...) without necessarily knowing the internal network's addresses.

Acredito que esta seja a resposta por que essas declarações existem.

Como exemplo,

options {
  allow-query-on { 203.0.113.17; };
  allow-recursion-on { 10.0.0.17; };
  allow-query-cache-on { 10.0.0.17; };
};

seria semelhante a

acl corpnets {
  10.0.0.0/16;
  172.16.0.0/12;
};

options {
  allow-query { any; };
  allow-recursion { corpnets; };
  allow-query-cache { corpnets; };
};

Mas no segundo exemplo, você precisa manter a ACL atualizada.

E, como uma última observação, acredito que isso seja necessário apenas em alguns casos, como muitas das opções do BIND.

    
por 03.09.2018 / 16:41

Tags