Suprimir a seção de autoridade BIND no servidor autoritativo com recursão desativada

4

Estou executando um servidor autoritativo com a recursão desativada para hosts não em minha rede no BIND 9.11.3. Ao consultar domínios não sob a autoridade do servidor de um host fora da minha rede, não obtenho resposta e uma lista de servidores raiz na seção de autoridade. Eu entendo porque isso acontece, e eu estou querendo saber se é possível desabilitar completamente a seção de autoridade. Existe uma opção semelhante a mínimo-respostas que não retornará nenhum dado de autoridade quando a recursão não estiver disponível?

Exemplo de digitação:

; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> @NS google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6847
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 5ed7760df1d65f05baba487c5b75a318b3065456b81ca133 (good)
;; QUESTION SECTION:
;google.com.                        IN      A

;; AUTHORITY SECTION:
.                   518400  IN      NS      D.ROOT-SERVERS.NET.
.                   518400  IN      NS      F.ROOT-SERVERS.NET.
.                   518400  IN      NS      B.ROOT-SERVERS.NET.
.                   518400  IN      NS      L.ROOT-SERVERS.NET.
.                   518400  IN      NS      I.ROOT-SERVERS.NET.
.                   518400  IN      NS      A.ROOT-SERVERS.NET.
.                   518400  IN      NS      E.ROOT-SERVERS.NET.
.                   518400  IN      NS      C.ROOT-SERVERS.NET.
.                   518400  IN      NS      M.ROOT-SERVERS.NET.
.                   518400  IN      NS      H.ROOT-SERVERS.NET.
.                   518400  IN      NS      K.ROOT-SERVERS.NET.
.                   518400  IN      NS      G.ROOT-SERVERS.NET.
.                   518400  IN      NS      J.ROOT-SERVERS.NET.

;; Query time: 36 msec

Minhas opções são assim:

options {
        listen-on { any; };
        directory "/var/cache/bind";
        allow-recursion { acls; };

        rate-limit {
                responses-per-second 10;
                exempt-clients { acls; };
                window 5;
        };

        allow-query-cache { any; };
        allow-query { any; };
        allow-update { none; };
        dnssec-enable no;
        dnssec-validation no;
        minimal-responses yes;
        forwarders {
                208.67.222.222;
                208.67.220.220;
        };
};
    
por asmth00 16.08.2018 / 18:55

2 respostas

7

Eu fiz alguns testes rápidos e acredito que seu problema está relacionado à seguinte linha:

    allow-query-cache { any; };

Sua configuração não está permitindo recursão ao público, mas ainda permitindo acesso ao cache. Normalmente, um cliente remoto receberia um rcode de REFUSED quando a recursão não estiver ativada, mas como o acesso ao cache foi explicitamente permitido, o cliente está recebendo a resposta mais específica possível de um cache que não contém essa resposta.

O profissional de DNS em mim recomendaria desativar a recursão + o armazenamento em cache em um servidor autoritativo em todas as circunstâncias em que não haja uma necessidade explícita. Se você estiver convencido de que precisa manter essa funcionalidade, seria melhor aplicar a mesma ACL a ambas. (ou simplesmente remova allow-query-cache por completo, já que o valor padrão é allow-recursion )

    
por 16.08.2018 / 19:43
6

Eu não considero o que você descreve como comportamento normal para o BIND9 (certamente não se comporta assim com a configuração padrão), mas tenho certeza que entendo o que o causa.

Seu servidor autoritativo também tem a recursão ativada (não necessariamente uma boa ideia), mas bloqueada (melhor), mas você está permitindo especificamente que todos acessem os resultados em cache .

Se você remover allow-query-cache { any; }; , ele deverá responder REFUSED (conforme esperado).

    
por 16.08.2018 / 19:44