O que é um resolvedor de DNS aberto e como posso proteger meu servidor contra uso indevido por hackers?

15

Não tenho o histórico mais forte em segurança de computadores, mas ontem um dos servidores da minha empresa foi desligado por nosso host.

É um servidor com um IP público no qual hospedo vários aplicativos de serviço da web, incluindo sites e APIs. Foi-me dito que meu servidor "está executando um resolvedor de DNS aberto que está sendo usado para retransmitir o ataque de negação de serviço a uma entidade externa".

O que isto significa? Como esse ataque funciona? E como posso proteger meu sistema contra abusos assim?

No meu caso específico, o servidor em questão está no Windows Server 2012 e está servindo DNS para um domínio do Active Directory.

JSideris
fonte
Se você nos informar qual servidor DNS você usa, provavelmente alguém poderá lhe dizer com precisão qual configuração você precisa definir e de que maneira. Sem essas informações, simplesmente adivinhei o BIND e todos os espaços de endereços IP privados, porque o BIND é o servidor DNS mais comum e os espaços de endereços privados são seguros. Você provavelmente também desejaria permitir solicitações recursivas do (s) bloco (s) de endereço externo (s), se aplicável.
HopelessN00b
@ HopelessN00b Obrigado, sua resposta foi bastante útil. Não estou usando o BIND (meu host também assumiu que eu estava e me forneceu alguns comandos para executar); Eu tenho um servidor DNS configurado como uma função no IIS. É interessante, eu não configurei manualmente um servidor DNS e não tenho certeza se entendo por que preciso disso. O que quebra se for desativado?
JSideris 05/02
Não desative o DNS em um ambiente Windows. É provável que você quebre o Active Directory. Deixe-me saber qual versão do Windows Server e eu (provavelmente) posso editar em algumas capturas de tela para mostrar como proteger uma caixa DNS do Windows.
HopelessN00b
Bem. Na verdade, acabei de configurar o Active Directory neste fim de semana. É o Windows Server 2012 padrão.
JSideris

Respostas:

28

Um "resolvedor de DNS aberto" é um servidor DNS disposto a resolver pesquisas de DNS recursivas para qualquer pessoa na Internet. É muito parecido com uma retransmissão SMTP aberta, pois a simples falta de autenticação permite que terceiros mal-intencionados propaguem suas cargas usando seu equipamento não seguro. Com retransmissões SMTP abertas, o problema é que eles encaminham spam. Com os resolvedores de DNS abertos, o problema é que eles permitem um ataque de negação de serviço conhecido como Ataque de Amplificação de DNS.

A maneira como esse ataque funciona é bastante simples - porque seu servidor resolverá consultas DNS recursivas de qualquer pessoa, um invasor poderá fazer com que ele participe de um DDoS enviando ao servidor uma consulta DNS recursiva que retornará uma grande quantidade de dados, muito maior que o pacote de solicitação DNS original. Ao falsificar (falsificar) o endereço IP, eles direcionam esse tráfego extra para os computadores das vítimas, e não para os próprios, e, é claro, eles fazem o máximo de solicitações o mais rápido possível para o servidor e qualquer outro DNS aberto resolvedores que eles podem encontrar. Dessa maneira, alguém com um canal relativamente pequeno pode "amplificar" um ataque de negação de serviço usando toda a largura de banda do canal para direcionar um volume muito maior de tráfego para suas vítimas.

A ArsTechnica fez um artigo decente sobre o recente ataque de DDoS de amplificação de DNS contra o Spamhaus , e vale uma leitura rápida para obter o básico (e um bom visual da amplificação).

A maneira mais simples de proteger seu sistema contra abuso dessa maneira é limitar os endereços pelos quais o servidor executará pesquisas recursivas nas sub-redes locais. (As especificidades dependem de qual servidor DNS você está usando, é claro).


Por exemplo, se eu estivesse usando o BIND 9 e quisesse simplesmente impedir a recursão do DNS de endereços externos, usaria o seguinte código na minha configuração:

options {
    directory "/var/named/master";
    allow-recursion { 127.0.0.1; 10.0.0.0/8; 192.168.0.0/16; 172.16.0.0/12; };

Essa linha de código diz ao meu servidor BIND para processar apenas solicitações DNS recursivas para o endereço de loopback local (que eu acho que eu poderia / deveria definir para o bloco de loopback local, o todo / 8) e os 3 espaços de endereço IPv4 privados.


Para o Windows Server 2012, que você diz estar usando, você tem as opções abaixo.

1. Separe o servidor DNS do servidor IIS.

  • Pelo menos em um mundo perfeito, não há motivo para você estar executando o DNS na mesma caixa que o IIS.
    • Coloque o DNS em uma caixa interna que não seja NAT, para que o mundo exterior não consiga entender e deixe o IIS residir na caixa externa em que o resto do mundo pode acessar. Você pode usar regras de homing dupla ou firewall para permitir seletivamente o acesso ao servidor DNS a partir do servidor IIS.

2. Bloqueie solicitações DNS externas com um firewall, como o firewall do Windows incorporado.

  • Para minha surpresa, o DNS do Windows não permite que você restrinja os endereços aos quais as solicitações DNS recursivas são atendidas; portanto, esse é realmente o método recomendado pela Microsoft.
  • insira a descrição da imagem aqui
    • Selecione as regras DNS (TCP e UDP), vá para a Remote IP addressseção e adicione as sub-redes em uso na sua LAN, bem como quaisquer endereços IP de servidores públicos que precisam acessar o Active Directory. Como no exemplo BIND, os espaços de endereços privados IPv4 são 127.0.0.0/8 10.0.0.0/8 192.168.0.0/16e 172.16.0.0/12.

3. Desative a recursão .

  • Sinceramente, não tenho certeza de que efeito isso terá no seu ambiente, pois você não declarou realmente como o DNS e o AD estão configurados no seu ambiente e, portanto, é a última opção.
  • insira a descrição da imagem aqui
    1. Abra o Gerenciador DNS.
    2. Na árvore do console, clique com o botão direito do mouse no servidor DNS aplicável e clique em Propriedades.
    3. Onde?
    4. DNS / servidor DNS aplicável
    5. Clique na guia Avançado.
    6. Nas opções do servidor, marque a caixa de seleção Desativar recursão e clique em OK.
      • Como temos um ambiente de várias florestas e usamos encaminhadores condicionais para que isso funcione, não vou marcar essa caixa. Pode ser algo para você considerar também.
HopelessN00b
fonte
Excelente resposta!
Fred, o cão mágico das maravilhas
Solução perfeita e bem documentada :).
JSideris
2
Então, como 8.8.8.8 ou 1.1.1.1 impedem que sejam resolvedores abertos?
LinuxBabe