Quando se trata de DNS, Cricket Liu escreveu literalmente o livro. Ele foi co-autor das cinco edições do livro “DNS and BIND” da O’Reilly, que é geralmente considerado como o guia definitivo sobre todas as coisas relacionadas ao Sistema de Nomes de Domínio. Cricket é atualmente o chefe de infra-estrutura no Infoblox.
DNS é claramente um componente crítico da rede de computadores, mas há momentos em que essas ferramentas podem ser usadas para malfeitorias. No New Tech Forum desta semana, o Cricket dá uma olhada no crescente problema dos ataques DDoS baseados em DNS e como lidar com eles. — Paul Venezia
Ataques DDoS baseados em DNS: Como eles funcionam e como pará-los
O DDoS baseado em DNS (ataque distribuído de negação de serviço) tornou-se um dos ataques destrutivos mais comuns na Internet. Mas como eles funcionam? E o que podemos fazer para nos defender contra eles?
Neste artigo, vou descrever como o DDoS ataca tanto a infraestrutura de exploração quanto a de ataque DNS. Também vou mostrar o que você pode fazer para se proteger e aos outros.
A grande falsificação
Gerar um ataque DDoS usando a infraestrutura DNS é notavelmente simples: Os atacantes enviam consultas a servidores de nomes através da Internet, e esses servidores de nomes retornam respostas. Ao invés de enviar as consultas a partir de seus próprios endereços IP, porém, os atacantes falsificam o endereço de seu alvo — que poderia ser um servidor Web, um roteador, outro servidor de nomes ou praticamente qualquer nó na Internet.
Spoofing DNS queries é particularmente fácil, pois elas são geralmente transportadas através do UDP (o Protocolo de Datagramas de Usuário sem conexão). Enviar uma consulta DNS a partir de um endereço IP arbitrário é tão simples e tem aproximadamente o mesmo efeito que escrever o endereço de retorno de outra pessoa em um cartão postal.
Spoofing queries não é suficiente para incapacitar um alvo, no entanto. Se as respostas a essas consultas não fossem maiores do que as próprias consultas, um atacante faria o mesmo para inundar o alvo com consultas falsificadas. Não, para maximizar os danos ao alvo, cada consulta deve retornar uma resposta muito grande. Acontece que isso é muito fácil de instigar.
Desde o advento do EDNS0, um conjunto de extensões ao DNS introduzido em 1999, as mensagens DNS baseadas em UDP têm sido capazes de carregar muitos dados. Uma resposta pode ser tão grande quanto 4.096 bytes. A maioria das consultas, por outro lado, tem menos de 100 bytes de comprimento.
Após um tempo, era relativamente difícil encontrar uma resposta tão grande no namespace da Internet. Mas agora que as organizações começaram a implantar DNSSEC, as Extensões de Segurança DNS, é muito mais fácil. O DNSSEC armazena chaves criptográficas e assinaturas digitais em registros no namespace. Estes são positivamente enormes.
Você pode ver um exemplo de uma resposta da zona isc.org que contém registros DNSSEC no meu blog. O tamanho da resposta é de 4.077 bytes, comparado com uma consulta de apenas 44 bytes.
Agora, atacantes de imagem de toda a Internet enviando aquela consulta falsificada do endereço IP do seu servidor Web para os servidores de nomes isc.org. Para cada consulta de 44 bytes, seu servidor Web recebe uma resposta de 4.077 bytes, para um fator de amplificação de quase 93 vezes.
Vamos fazer um cálculo rápido para descobrir o quão ruim isso pode ficar. Digamos que cada atacante tem uma conexão relativamente modesta de 1Mbps com a Internet. Ele pode enviar cerca de 2.840 consultas de 44 bytes através desse link por segundo. Este fluxo de consultas resultaria em quase 93Mbps de respostas chegando ao seu servidor Web. Cada 11 atacantes representam 1Gbps.
Onde os atacantes anti-sociais encontrariam 10 amigos para ajudá-los a realizar um ataque? Na verdade, eles não precisam de nenhum. Eles vão usar um botnet de milhares de computadores.
O efeito final é devastador. Em seu relatório trimestral global de ataque DDoS, Prolexic (uma empresa de mitigação DDoS) relatou um ataque recente baseado em DNS contra um cliente que ultrapassou 167Gbps. A Prolexic relatou ainda que a largura de banda média de ataque DDoS subiu 718% para 48Gbps em um único trimestre.
Mas espere! Os servidores de nomes isc.org não poderiam ser modificados para reconhecer que estão sendo consultados repetidamente para os mesmos dados, a partir do mesmo endereço IP? Não poderiam eles esmagar o ataque?
Eles certamente podem. Mas os servidores de nomes isc.org não são os únicos que um atacante pode usar para amplificar o seu tráfego. Claro, existem outros servidores de nomes confiáveis que o atacante poderia usar, mas pior ainda são servidores de nomes recursivos abertos.
Um servidor de nomes recursivo aberto é simplesmente um servidor de nomes que processará consultas recursivas a partir de qualquer endereço IP. Eu posso enviar essa consulta para dados isc.org e ela me responderá, e você pode fazer o mesmo.
Não deve haver muitos servidores de nomes recursivos abertos na Internet. A função de um servidor de nomes recursivo é procurar dados no namespace da Internet em nome de clientes DNS, como os que estão no seu laptop ou smartphone. Os administradores de rede que configuram servidores de nomes recursivos (como o seu departamento de TI) geralmente os pretendem para uso por uma determinada comunidade (por exemplo, você e seus colegas de trabalho). A menos que estejam a executar serviços como o OpenDNS ou o DNS Público do Google, não pretendem que sejam utilizados pelos cidadãos da Moldávia. Por isso, os administradores, de espírito público, de segurança e especialmente competentes, configuram controles de acesso em seus servidores de nomes recursivos para limitar seu uso a sistemas autorizados.
Dado isso, quão grande poderia ser o problema de abrir servidores de nomes recursivos? Bastante grande. O Open Resolver Project reuniu uma lista de 33 milhões de servidores de nomes recursivos abertos. Hackers podem disparar consultas falsificadas em tantos desses quantos quiserem para enviar dados isc.org ao seu servidor Web, servidor de nomes ou roteador de borda até que ele se engasgue.
É assim que os ataques DDoS baseados em DNS funcionam. Felizmente, temos algumas maneiras de combatê-los.
Como resistir à tempestade
A primeira ordem de negócios é instrumentar sua infraestrutura DNS, assim você saberá quando estiver sob ataque. Muitas organizações não têm idéia de qual é a sua carga de consultas, então elas nunca saberiam se estavam sendo atacadas em primeiro lugar.
Determinar a sua carga de consultas pode ser tão simples quanto usar o suporte estatístico embutido do BIND. O servidor de nomes BIND irá despejar dados para seu arquivo de estatísticas quando você executar estatísticas rndc, por exemplo, ou em um intervalo de estatísticas configurável. Você pode examinar as estatísticas para taxa de consulta, erros de socket, e outras indicações de um ataque. Não se preocupe se você ainda não tem certeza de como será um ataque — parte do objetivo do monitoramento do DNS é estabelecer uma linha de base, para que você possa identificar o que é anormal.
Next, dê uma olhada na sua infra-estrutura voltada para a Internet. Não se limite aos seus servidores de nomes externos autorizados; examine sua infra-estrutura de switch e roteador, suas firewalls e suas conexões com a Internet. Identifique quaisquer pontos únicos de falha. Determine se você pode eliminá-los facilmente (e com bom custo-benefício).
Se possível, considere uma ampla distribuição geográfica dos seus servidores de nomes externos confiáveis. Isto ajuda a evitar pontos únicos de falha, claro, mas também ajuda quando você não está sob ataque. Um servidor de nomes recursivo resolvendo um nome de domínio em uma de suas zonas tentará consultar o servidor de nomes autorizado mais próximo a ele, assim a distribuição geográfica tenderá a fornecer um melhor desempenho aos seus clientes e correspondentes. Se seus clientes estiverem agrupados em determinadas zonas geográficas, tente colocar um servidor de nomes autorizado perto deles para fornecer as respostas mais rápidas.
Talvez a maneira mais básica de combater ataques DoS é fornecer em excesso sua infra-estrutura. A boa notícia é que o superprovisionamento de seus servidores de nomes não é necessariamente caro; um servidor de nomes capaz pode lidar com dezenas ou até centenas de milhares de consultas por segundo. Não tem certeza de qual é a capacidade dos seus servidores de nomes? Você pode usar ferramentas de consulta como o dnsperf para testar o desempenho dos seus servidores de nomes — de preferência usando uma plataforma de teste semelhante aos seus servidores de nomes de produção em um laboratório em vez dos próprios servidores de produção.
Decidir quanto é subjetivo fornecer em excesso os seus servidores de nomes: Quanto vale a sua presença online? Existem outros componentes da sua infra-estrutura voltada para a Internet que falharão antes dos servidores de nomes? Obviamente, é imprudente gastar dinheiro para construir uma infra-estrutura DNS de primeira classe atrás de um roteador de fronteira ou firewall que irá falhar bem antes mesmo de seus servidores de nomes quebrarem um sweat.
Se o dinheiro não for objeto, pode ser útil saber que ataques DDoS de última geração contra a infra-estrutura DNS podem exceder 100Gbps.
Usar Anycast também pode ajudar a resistir a um ataque DDoS. Anycast é uma técnica que permite que vários servidores compartilhem um único endereço IP, e funciona particularmente bem com DNS. Na verdade, os servidores de nomes raiz da Internet têm usado Anycast por anos para fornecer dados de zona raiz em todo o mundo, enquanto ainda permite que a lista de raízes se encaixe em uma única mensagem DNS baseada em UDP.
Para implantar Anycast, os hosts que suportam seus servidores de nomes precisarão executar um protocolo de roteamento dinâmico, como OSPF ou BGP. O processo de roteamento anunciará aos seus roteadores vizinhos uma rota para um novo endereço IP virtual no qual o seu servidor de nomes ouve. O processo de roteamento também precisa ser inteligente o suficiente para parar de anunciar essa rota se o servidor de nomes local parar de responder. Você pode colar seu daemon de roteamento à saúde do seu servidor de nomes usando código de sua própria construção — ou você pode comprar um produto que cuide disso para você. O NIOS do Infoblox, não por coincidência, inclui suporte Anycast.
Como Anycast se defende contra ataques DDoS? Bem, digamos que você tenha seis servidores de nomes externos em dois grupos Anycast (ou seja, três compartilhando um endereço IP Anycast e três compartilhando outro). Cada grupo contém um membro nos Estados Unidos, um na Europa, e um na Ásia. Um host montando um ataque DDoS contra você só pode enviar tráfego para — e portanto só atacar — um membro de qualquer um dos grupos a partir de qualquer ponto da Internet de cada vez. A menos que os atacantes possam obter tráfego suficiente da América do Norte, Europa e Ásia simultaneamente para inundar sua infra-estrutura, eles não terão sucesso.
Finalmente, há uma maneira de você poder aproveitar a ampla distribuição geográfica e Anycast ao mesmo tempo, sem desembolso de capital significativo: Use um provedor de DNS baseado em nuvem. Empresas como Dyn e Neustar executam os seus próprios servidores de nomes Anycast em centros de dados ao redor do mundo. Você os paga para hospedar suas zonas e responder a consultas por seus dados. E você pode continuar a manter controle direto sobre os dados de sua zona, pedindo a um provedor que configure seus servidores de nomes como secundários para suas zonas, carregando os dados de um servidor de nomes mestre que você designar e gerenciando internamente. Apenas certifique-se de executar o master hidden (ou seja, sem que nenhum registro NS aponte para ele), ou você corre o risco de que um atacante o mire como um único ponto de falha.
Uma palavra de cuidado ao usar provedores DNS baseados em nuvem: A maioria cobra-lhe pelo menos parcialmente com base no número de consultas que os seus servidores de nomes recebem pelos dados nas suas zonas. Em um ataque DDoS, essas consultas podem aumentar drasticamente (completamente fora do seu controle e não em seu benefício), então certifique-se de que elas tenham uma provisão para lidar com ataques DDoS sem passar o custo do tráfego para você.
Como evitar se tornar um cúmplice em ataques DDoS
Agora você sabe como configurar sua infra-estrutura DNS para resistir a um ataque DDoS. É quase tão importante, no entanto, garantir que você não seja cúmplice de um ataque DDoS contra outra pessoa.
Lembrar a descrição de como servidores DNS podem amplificar o tráfego? Atacantes podem usar tanto servidores de nomes recursivos abertos quanto servidores de nomes confiáveis como amplificadores, enviando consultas falsificadas que fazem com que os servidores de nomes enviem respostas mais de 100 vezes maiores que a consulta para alvos arbitrários na Internet. Agora, é claro que você não quer ser o alvo de tal ataque, mas também não quer ser um cúmplice. O ataque usa os recursos dos seus servidores de nomes, bem como a sua largura de banda. Se o alvo tomar medidas para bloquear o tráfego do seu servidor de nomes para a sua rede, então após o fim do ataque, o alvo pode não ser capaz de resolver nomes de domínio nas suas zonas.
Se você executar um servidor de nomes recursivo aberto, a solução é simples: Não o faça. Há muito poucas organizações que têm qualquer justificação para executar um servidor de nomes aberto para consultas recursivas. Google Public DNS e OpenDNS são dois que me vêm à mente, mas se você está lendo isso, eu suponho que você provavelmente não seja eles. O resto de nós deve aplicar controles de acesso aos nossos servidores de nomes recursivos para ter certeza de que apenas os consultantes autorizados os usam. Isso provavelmente significa limitar as consultas DNS aos endereços IP em nossas redes internas, o que é fácil de fazer em qualquer implementação de servidor de nomes que valha a pena (o servidor DNS da Microsoft não suporta controles de acesso baseados em endereços IP nas consultas. Leia o que você quer fazer com isso.)
Mas e se você executar um servidor de nomes com autoridade? Obviamente, você não pode limitar os endereços IP dos quais você aceitará consultas — ou não muito, de qualquer forma (você pode negar consultas de endereços IP obviamente falsos, como os endereços RFC 1918). Mas você pode limitar respostas.
Dois “chapéus brancos” da Internet de longa data, Paul Vixie e Vernon Schryver, perceberam que ataques DDoS que usam servidores de nomes confiáveis para amplificação exibem certos padrões de consulta. Em particular, os atacantes enviam a mesma consulta a partir do mesmo endereço IP falsificado (ou bloco de endereços) repetidamente, buscando a amplificação máxima. Nenhum servidor de nomes recursivo e bem comportado faria isso. Ele teria colocado a resposta em cache e não perguntado novamente até que o tempo de vida dos registros na resposta passasse.
Vixie e Schryver criaram um mecanismo inteligente, chamado de Limitação da Taxa de Resposta (RRL), que permite a um servidor de nomes autorizado rastrear com que freqüência ele enviou a mesma resposta para o mesmo questionador. Se essa taxa exceder algum limite configurável, o servidor de nomes deixará de enviar essa resposta para o questionador por um período definido. Se o questionador parar de apimentar o servidor de nomes autoritativo com a mesma pergunta, o servidor de nomes autoritativo parará de esmagar essa resposta. O resultado é que o servidor de nomes autoritativo nunca enviará qualquer resposta a um questionador a uma taxa superior ao limite, o que o torna inútil em um ataque DDoS.
RRL foi incorporado aos servidores de nomes BIND na versão 9.9.4, e algumas outras implementações de servidores de nomes agora o suportam, incluindo NSD e Knot. Conforme as pessoas atualizam seus servidores de nomes para versões mais recentes ou novas implementações que suportam RRL, isso deve gradualmente tornar mais difícil para os atacantes usar a infra-estrutura DNS como amplificadores.
Espero que esta discussão o tenha ajudado a compreender como a infra-estrutura DNS é alvo e explorada nos ataques DDoS, e como você pode resistir melhor aos ataques DDoS e garantir que seus servidores de nome não participem, desconhecidos para você, em um.
New Tech Forum fornece um meio de explorar e discutir a tecnologia empresarial emergente com profundidade e amplitude sem precedentes. A seleção é subjetiva, baseada na nossa escolha das tecnologias que acreditamos ser importantes e de maior interesse para os leitores da InfoWorld. InfoWorld não aceita garantias de marketing para publicação e se reserva o direito de editar todos os conteúdos contribuídos. Envie todas as consultas para [email protected].
Este artigo, “The ultimate guide to prevent DNS-based DDoS attacks”, foi originalmente publicado em InfoWorld.com. Para as últimas notícias sobre tecnologia de negócios, siga InfoWorld.com no Twitter.