A recursão do DNS é insegura, mas necessária para aplicativos internos?

16

No gerenciamento de um Windows Server 2008, o servidor hospeda o DNS (é um servidor de nomes) para alguns domínios, além de hospedar alguns aplicativos acessíveis ao público.

Uma verificação de segurança indicou que a configuração do DNS é insegura, pois permite consultas recursivas.

A desativação de consultas recursivas foi tentada, mas ocorreram vários problemas (os emails enviados pelos aplicativos locais não foram entregues e um aplicativo em execução local que se conecta a um site de terceiros não conseguiu resolver o nome de domínio da conexão etc.). Portanto, parece que as solicitações de DNS originadas no próprio servidor dependem de consultas recursivas para funcionar.

Existe uma maneira de desativar as consultas recursivas pelo DNS hospedado no servidor e ainda permitir que as consultas DNS originárias no servidor funcionem? Gostaria de saber se podemos desativar as consultas recursivas no servidor DNS local e definir o DNS de saída nas configurações de rede para algo externo (como 8.8.8.8), para que as consultas de DNS sejam enviadas primeiro e o DNS desse servidor só termine sendo consultado pelos domínios que ele realmente hospeda localmente.

Obrigado pelo seu tempo!

ilasno
fonte

Respostas:

11

É uma boa idéia não fornecer funcionalidade de pesquisa recursiva para toda a Internet; portanto, configurar o servidor DNS para responder apenas às consultas autorizadas é uma Good Thing TM .

Na superfície parece que a conclusão você chegou em seu último parágrafo é um bom: Definir as configurações próprio TCP do servidor / IP para usar um servidor DNS que está autorizada a fornecer pesquisas recursivas. O processo do servidor DNS não usa os servidores DNS configurados nas configurações de TCP / IP na NIC do computador servidor para nada em particular. Em vez disso, encaminha solicitações (ou usa dicas de raiz) com base na configuração do servidor DNS.

Quando os aplicativos em execução no servidor tentam consultar domínios, o servidor DNS em execução nessa máquina é autoritativo para a solicitação, em última análise, chega ao processo do servidor DNS em execução nessa máquina e a consulta é respondida.

Evan Anderson
fonte
14

Existe uma maneira de desativar as consultas recursivas pelo DNS hospedado no servidor e ainda permitir que as consultas DNS originárias no servidor funcionem?

Não com o servidor DNS da Microsoft, não existe.

Com o servidor DNS do ISC, BIND, pode-se esquivar as coisas. O servidor DNS da Microsoft não possui esse mecanismo. Portanto, para qualquer instância específica do servidor DNS da Microsoft, é preciso escolher se é um servidor DNS de conteúdo público ou um servidor DNS proxy de site local . Ele não pode atrapalhar as coisas e fingir ser diferentes tipos de servidor para diferentes clientes DNS.

O serviço / ferramenta de teste de segurança está certo. É uma prática recomendada não fornecer serviço de proxy - qualquer tipo de serviço de proxy: seja serviço de proxy HTTP, serviço de proxy DNS ou serviço de envio de SMTP - para o restante da Internet fora do próprio site. Você deve ter servidores separados : um servidor DNS de conteúdo que publique seus dados DNS públicos, sobre os nomes de domínio que você registrou, para todos na Internet; e um servidor DNS proxy local, que realiza o trabalho pesado de resolução de consultas em nome dos computadores da sua LAN / organização, acessível apenas às máquinas da sua organização / na sua LAN. Com o servidor DNS da Microsoft, isso não é particularmente fácil.

Seria especialmente difícil se sua máquina também fosse um controlador de domínio. Você afirma que esta máquina está diretamente acessível a partir de toda a Internet. Se tal máquina um é um controlador de domínio, então você deve repensar a sua organização em rede agora . Você estaria expondo uma enorme quantidade de serviços internos ao público, não apenas o serviço DNS proxy. Então, vamos trabalhar com a suposição de que este não é um controlador de domínio.

Como não é um controlador de domínio e é apenas um servidor membro , não é necessário que o cliente DNS na máquina use o servidor DNS da própria máquina (ou, inicialmente, o servidor DNS de outro controlador de domínio) para proxy Serviço DNS, esse é o caso de controladores de domínio. Se você tivesse, não conseguiria desativar o serviço DNS proxy no servidor DNS da máquina. Felizmente, não é um controlador de domínio e seu cliente DNS pode usar outra máquina para o serviço DNS proxy, não ele próprio.

O cliente DNS na máquina do servidor membro ainda precisa usar um servidor DNS proxy interno . Você não pode simplesmente apontar para algum servidor DNS externo, como os fornecidos pelo seu ISP, Google ou qualquer outra parte que não conheça todos os dados DNS que o Active Directory está usando na sua LAN . Você pode apontar o cliente DNS da máquina no servidor DNS em um ou mais dos seus controladores de domínio. Isso é bastante simples e é o que você está fazendo, afinal de contas, em todas as suas estações de trabalho na sua LAN. O cliente DNS em seu servidor membro basta ser configurado como os clientes DNS em todas as suas estações de trabalho são .

Como o cliente DNS da sua máquina não está usando o servidor DNS em execução na máquina para o serviço DNS proxy, você simplesmente configura o servidor DNS da Microsoft para não fornecer serviço DNS proxy de qualquer forma a ninguém.

Leitura adicional

JdeBP
fonte
Excelente redação.
Nic
Agradeço a informação, obrigado! Como estou trabalhando com uma infraestrutura menor aqui, a solução apresentada é um exagero para esse cenário.
ilasno
Apenas uma observação rápida de que isso não é mais verdade a partir do Server 2016 - o Windows agora suporta DNS com cérebro dividido , incluindo uma opção para restringir a pesquisa recursiva, dependendo do endereço do cliente. No entanto, a configuração de um servidor independente para solicitações públicas ainda é a opção mais direta.
Bob
5

Como Evan afirmou em sua resposta, seus aplicativos precisam usar o componente do cliente DNS no servidor, que é totalmente independente do componente do servidor DNS. O componente do servidor DNS pode ser configurado para não executar recursão, permitindo responder a consultas enviadas somente para as zonas DNS para as quais é autoritário.

Os aplicativos podem usar os servidores DNS configurados nas propriedades TCP / IP da NIC relevante, que podem ser configurados para usar qualquer servidor DNS que execute recursão (como os servidores DNS do Google). Os servidores DNS configurados nas propriedades TCP / IP da NIC relevante não precisam apontar para o servidor DNS em execução no mesmo servidor.

joeqwerty
fonte
0

Recentemente, tive o mesmo problema e nosso servidor DNS estava sendo usado para ataques de amplificação. Mas preciso manter a recursão para nossos outros servidores internos.

Se você possui um roteador Cisco, aqui está uma possível correção. Mudei nosso DNS externo para um roteador Cisco 7200VXR e o configurei para responder apenas a zonas DNS específicas. Ele consultará os servidores DNS internos para que você não precise digitar tudo em dois lugares.

Aqui está um trecho da configuração da Cisco que eu usei:

ip dns view default
 dns forwarder 192.168.0.xx (internal DNS server)
 domain round-robin

ip dns view-list default
 view default 1
  restrict name-group 1

ip dns name-list 1 permit abc.com
ip dns name-list 1 permit def.com
ip dns name-list 1 permit anyotherdomainthatyouhost.com
ip dns name-list 1 permit 3.2.1.in-addr.arpa (needed for reverse PTR lookups)

interface fastethernet0/0 (the interface where the IP address is that will host DNS)
 ip dns view-group default
 ip address 1.2.3.4 secondary (use the public facing IP you will use to host DNS)

ip dns server

Além disso, não esqueça de permitir pacotes DNS no roteador com uma lista de acesso, como:

permit udp any host 1.2.3.4 eq domain
Brain2000
fonte