AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 634793
Accepted
Andrew B
Andrew B
Asked: 2014-10-10 08:40:32 +0800 CST2014-10-10 08:40:32 +0800 CST 2014-10-10 08:40:32 +0800 CST

Como configuro um resolvedor aberto "seguro"?

  • 772

Esta é uma pergunta canônica sobre como proteger resolvedores de DNS públicos

Os servidores DNS abertos parecem bastante organizados e convenientes, pois fornecem endereços IP que podemos usar de forma consistente em nossa empresa, independentemente de onde estejam localizados. O Google e o OpenDNS fornecem essa funcionalidade, mas não tenho certeza se desejo que essas empresas tenham acesso às nossas consultas de DNS.

Quero configurar algo assim para ser usado por nossa empresa, mas ouço muito sobre essa prática ser perigosa (principalmente no que diz respeito a ataques de amplificação ) e quero ter certeza de que faremos isso corretamente. O que preciso ter em mente ao construir esse tipo de ambiente?

domain-name-system
  • 2 2 respostas
  • 2783 Views

2 respostas

  • Voted
  1. Best Answer
    Andrew B
    2014-10-10T08:40:32+08:002014-10-10T08:40:32+08:00

    Há algumas coisas que você precisa entender sobre isso:


    Este é um problema de engenharia de rede.

    A maioria das pessoas que desejam configurar esse tipo de ambiente são administradores de sistema. Legal, também sou administrador de sistema! Parte do trabalho é entender onde terminam suas responsabilidades e começam as de outra pessoa e, acredite, esse não é um problema que os administradores de sistema possam resolver sozinhos. Aqui está o porquê:

    • O UDP é um protocolo sem estado. Não há aperto de mão do cliente.
    • As consultas em um servidor DNS são uma transação não autenticada de duas etapas (consulta, resposta). Não há como o servidor saber se o IP de origem foi falsificado antes de responder.
    • No momento em que uma consulta chega ao servidor, já é tarde demais para evitar um pacote UDP falsificado. A falsificação só pode ser evitada por uma prática conhecida como filtragem de entrada , um tópico coberto pelos documentos BCP 38 e BCP 84 . Eles são implementados pelos dispositivos de rede localizados na frente do seu servidor DNS.
    • Não podemos fornecer instruções sobre como configurar seu datacenter de ponta a ponta ou como implementar essas práticas recomendadas. Essas coisas são muito específicas para suas próprias necessidades. O formato de perguntas e respostas simplesmente não funciona para isso, e este site não pretende substituir a contratação de profissionais para realizar trabalhos profissionais.
    • Não presuma que sua empresa bilionária, grande demais para falir, implementa a filtragem de entrada corretamente.

    Esta não é uma prática recomendada. A melhor prática é não fazer isso.

    É muito fácil configurar um resolvedor de DNS voltado para a Internet. É preciso muito menos pesquisa para configurar um do que para entender os riscos envolvidos em fazê-lo. Este é um daqueles casos em que as boas intenções inadvertidamente permitem os erros (e o sofrimento) dos outros.

    • Se o seu servidor DNS responder a qualquer endereço IP de origem que encontrar, você está executando um resolvedor aberto. Estes são constantemente aproveitados em ataques de amplificação contra partes inocentes. Novos administradores de sistema estão abrindo resolvedores todos os dias , tornando lucrativo para indivíduos mal-intencionados procurá-los constantemente. Não há realmente uma dúvida se o seu resolvedor aberto será ou não usado em um ataque: a partir de 2015, é praticamente certo. Pode não ser imediato, mas com certeza vai acontecer.
    • Mesmo se você aplicar uma ACL usando seu software DNS (ou seja, BIND), tudo isso limitará a quais pacotes DNS falsificados seu servidor responderá. É importante entender que sua infraestrutura de DNS pode ser usada não apenas para atacar os dispositivos na ACL, mas também qualquer dispositivo de rede entre seu servidor DNS e os dispositivos pelos quais ele responderá. Se você não possui o datacenter, isso é um problema para mais do que apenas você.

    O Google e o OpenDNS fazem isso, então por que eu não posso?

    Às vezes é necessário pesar o entusiasmo contra a realidade. Aqui estão algumas perguntas difíceis de se fazer:

    • Isso é algo que você deseja configurar por capricho ou é algo em que você tem alguns milhões de dólares para investir e fazer isso certo?

    • Você tem uma equipe de segurança dedicada? Equipe de abuso dedicada? Ambos têm os ciclos para lidar com o abuso de sua nova infraestrutura e reclamações que você receberá de terceiros?

    • Você tem uma equipe jurídica ?

    • Quando tudo isso for dito e feito, todo esse esforço, mesmo que remotamente, começará a se pagar, gerar lucro para a empresa ou exceder o valor monetário de lidar com a inconveniência que o levou a essa direção?


    Para encerrar, sei que este tópico de perguntas e respostas é uma espécie de decepção para a maioria de vocês que estão sendo vinculados a ele. Serverfault está aqui para fornecer respostas, e uma resposta de "esta é uma má ideia, não faça isso" geralmente não é percebida como muito útil. Alguns problemas são muito mais complicados do que parecem à primeira vista, e este é um deles.

    Se você quiser tentar fazer isso funcionar, ainda pode nos pedir ajuda enquanto tenta implementar esse tipo de solução. A principal coisa a perceber é que o problema é muito grande por si só para que a resposta seja fornecida em um formato conveniente de perguntas e respostas. Você precisa ter investido uma quantidade significativa de tempo pesquisando o tópico e nos abordar com problemas de lógica específicos que você encontrou durante sua implementação. O objetivo desta sessão de perguntas e respostas é fornecer a você uma melhor compreensão do quadro geral e ajudá-lo a entender por que não podemos responder a uma pergunta tão ampla como esta.

    Ajude-nos a manter a internet segura! :)

    • 33
  2. kasperd
    2016-01-07T17:37:54+08:002016-01-07T17:37:54+08:00

    Esteja você executando um recursor DNS aberto ou um servidor DNS autoritativo, o problema é o mesmo e a maioria das soluções possíveis também são as mesmas.

    A melhor solução

    Os cookies DNS são um padrão proposto que oferece aos servidores DNS uma maneira de exigir que os clientes enviem um cookie para provar que o endereço IP do cliente não foi falsificado. Isso custará uma ida e volta adicional para a primeira pesquisa, que é a menor sobrecarga que qualquer solução pode oferecer.

    Fallback para clientes mais antigos

    Como os cookies DNS ainda não estão padronizados, é claro que será necessário oferecer suporte a clientes mais antigos agora e nos próximos anos.

    Você pode classificar solicitações de limite de clientes sem suporte a cookies DNS. Mas os limites de taxa tornam mais fácil para um invasor fazer DoS em seu servidor DNS. Esteja ciente de que alguns servidores DNS têm um recurso de limite de taxa projetado apenas para servidores DNS autoritativos. Como você está perguntando sobre um resolvedor recursivo, essas implementações de limitação de taxa podem não ser aplicáveis ​​a você. O limite de taxa por design se tornará o gargalo para o seu servidor e, portanto, um invasor precisará enviar a você menos tráfego para fazer com que as solicitações legítimas sejam descartadas do que ele faria se não houvesse limite de taxa.

    Uma vantagem dos limites de taxa é que, no caso de um invasor inundar seu servidor DNS com solicitações de DNS, é mais provável que você tenha capacidade restante que permitirá que você envie ssh para o servidor e investigue a situação. Além disso, os limites de taxa podem ser projetados para descartar principalmente solicitações de IPs de clientes que enviam muitas solicitações, o que pode ser suficiente para protegê-lo contra DoS de invasores que não têm acesso a IPs de clientes falsificados.

    Por essas razões, um limite de taxa um pouco abaixo de sua capacidade real pode ser uma boa ideia, mesmo que não proteja contra a amplificação.

    Usando TCP

    É possível forçar um cliente a usar TCP enviando um código de erro indicando que a resposta é muito grande para UDP. Isso tem algumas desvantagens. Custa duas viagens de ida e volta adicionais. E alguns clientes defeituosos não o suportam.

    O custo de duas viagens de ida e volta adicionais pode ser limitado apenas à primeira solicitação usando esta abordagem:

    Quando o IP do cliente não foi confirmado, o servidor DNS pode enviar uma resposta truncada para forçar o cliente a mudar para TCP. A resposta truncada pode ser tão curta quanto a solicitação (ou menor se o cliente usar EDNS0 e a resposta não), o que elimina a amplificação.

    Qualquer IP de cliente que conclua um handshake TCP e envie uma solicitação de DNS na conexão pode ser temporariamente colocado na lista de permissões. Uma vez na lista de permissões, esse IP pode enviar consultas UDP e receber respostas UDP de até 512 bytes (4096 bytes se estiver usando EDNS0). Se uma resposta UDP acionar uma mensagem de erro ICMP, o IP será removido da lista de permissões novamente.

    O método também pode ser revertido usando uma lista negra, o que significa apenas que os IPs do cliente podem consultar o UDP por padrão, mas qualquer mensagem de erro ICMP faz com que o IP seja colocado na lista negra, precisando de uma consulta TCP para sair da lista negra.

    Um bitmap cobrindo todos os endereços IPv4 relevantes pode ser armazenado em 444 MB de memória. Endereços IPv6 teriam que ser armazenados de alguma outra forma.

    Não sei se algum servidor DNS implementou essa abordagem.

    Também foi relatado que algumas pilhas TCP podem ser exploradas em ataques de amplificação. No entanto, isso se aplica a qualquer serviço baseado em TCP e não apenas ao DNS. Essas vulnerabilidades devem ser mitigadas com a atualização para uma versão do kernel em que a pilha TCP foi corrigida para não enviar mais de um pacote em resposta a um pacote SYN.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve