djbdns vs bind [fechado]

20

Sou um novato que quer aprender como configurar um servidor de nomes DNS. Devo usar djbdns, BIND ou outra coisa?

Os requisitos de rede atuais incluem suporte a subdomínio, SSL e serviço de e-mail, tudo com tráfego muito leve. Eu gostaria de uma solução que pudesse algum dia ser ampliada para um tráfego mais pesado e, possivelmente, requisitos mais complicados (como o balanceamento de carga). Neste momento eu corria no Linux.

Eu li que o BIND tem problemas de segurança se não configurado corretamente e que sua configuração pode ser complicada. Eu também li que o djbdns é mais fácil de configurar, mais seguro e igual a cargas pesadas. Os argumentos para djbdns parecem plausíveis, mas eu não tenho o conhecimento necessário para avaliá-los corretamente. Se o BIND é melhor, eu apreciaria uma discussão sobre essas afirmações para djbdns.

Obrigado.

    
por chernevik 27.06.2009 / 17:45

11 respostas

14

Eu trabalhei com djbdns no passado e atualmente executo um monte de servidores BIND.

O maior problema com djbdns é melhor colocar a maneira como meu professor da primeira série o colocou no meu boletim: "não joga bem com os outros". Simplesmente não se comporta como qualquer outra coisa em uma caixa unix de todos os tipos de maneiras muito pequenas que podem te morder mais tarde. Ele usa uma sintaxe para arquivos de zona que você não verá em nenhum outro lugar.

A maior vantagem do djbdns é que ele foi projetado desde o início com segurança como objetivo nº 1.

Se você fosse configurar um servidor DNS, expô-lo à Internet e nunca mantê-lo, o djbdns seria o caminho a ser seguido.

No mundo real, a maioria dos administradores é melhor usando os pacotes BIND do fornecedor do sistema operacional e corrigindo-os imediatamente quando houver uma atualização. Mas executá-lo chrooted é uma boa idéia, e manter seus servidores DNS com autoridade separados dos servidores DNS de resolução recursiva é uma boa idéia.

Se você encontrar documentos para algo com DNS, o BIND será incluído e é improvável que o djbdns seja incluído. Se você usar dig, o formato retornado poderá ser colado em um arquivo de zona BIND e funcionar. Ele age como qualquer daemon unix normal em vez de algo de outro planeta.

Usamos alguns balanceadores de carga de hardware e balanceamento de carga de nossos servidores BIND de resolução recursiva; funciona bem. Apenas certifique-se de que os usuários obtenham o mesmo IP de origem ao enviarem suas solicitações e que qualquer configuração de balanceamento de carga compatível com UDP e TCP funcione. Se você está fazendo DNS autoritativo, o balanceamento de carga é tão simples quanto ter mais de um servidor e publicar todos eles nas informações whois; os outros servidores DNS farão o balanceamento de carga de maneira inteligente.

    
por 27.06.2009 / 19:18
9

Para um serviço autorizado, nsd .

Para um recursivo, desvinculado .

Ambos são pequenos (provavelmente têm menos falhas de segurança à espera de serem descobertos), ativamente mantidos e suportam todas as coisas recentes de DNS (DNSSEC, IPv6, etc).

Caso contrário, o BIND é um bom software.

O djbdns é um projeto de um homem, não mantido por um longo tempo, não mais seguro (o autor apenas diz isso), e o site oficial está cheio de erros. (Agora, tenho certeza que vou conseguir muitos votos negativos do djbboys, meu representante foi muito alto para o meu gosto: -)

    
por 02.07.2009 / 14:05
8

Se é para você, e se você quer aprender como o DNS funciona, eu usaria djbdns.

Se você quiser entender como todas as outras pessoas fazem o DNS e como oferecer suporte a implantações corporativas típicas, aprenda a ligação.

Se seu objetivo é o mínimo de esforço e suporte, e você é razoavelmente competente, o djbdns tem uma sobrecarga de suporte muito menor.

Se você for mais do lado do novato, provavelmente terá mais facilidade para fazer o bind and running, mas tenha em mente que é muito mais provável que ele exploda de maneiras estranhas e malucas.

Se eu ainda não conhecia o djbdns (e o bind), eu também procuraria powerdns e maradns, mas duvido que, para instalações minúsculas, seja melhor do que o pacote djbdns.

Independentemente disso, mesmo se você usar bind para anunciar seu DNS para a internet, você ainda deve executar o dnscache (parte da suíte djbdns) rodando em localhost para o resolvedor do seu sistema.

    
por 27.06.2009 / 23:54
6

Ignore djbdns. Embora djb seja um herói, ele carrega a arrogância de um matemático para o software. O fato de que ele não se comporta como outro software em relação a iniciar / parar pode ser uma boa demonstração de uma técnica inteligente de gerenciamento de daemons. Mas você terá que retirar a documentação se não a usar regularmente, porque tudo é muito diferente. Se você configurá-lo em sistemas que os outros mantêm também, você precisará escrevê-los documentação clara - que eles precisam ler em sua totalidade para fazer operações simples. Executar coisas fora do init é fofo, até inteligente. Mas também é desagradável, surpreendente e fora do padrão.

Além disso, tive problemas com djbdns causando sérios problemas devido a uma insistência em apenas respeitar os padrões e não na interoperabilidade de software. A solução desses problemas foi uma grande perda de tempo, porque dependia de pequenas diferenças nos pacotes DNS.

Além disso, o djbdns tem um comportamento estranho em certos casos que fará com que as pessoas que solucionem problemas em seu servidor DNS com ferramentas diferentes de djb (por exemplo, com nslookup) obtenham resultados surpreendentes. Você perderá seu tempo explicando "na verdade, eu uso esse servidor DNS obscuro chamado djbdns. O problema é que suas ferramentas de diagnóstico estão lhe dando uma mensagem estranha, mas está funcionando bem. Se você olhar para essa captura de pacotes, Isso não está relacionado ao problema que tivemos há alguns meses, onde o djbdns não estava interoperando corretamente com o seu servidor DNS, nem está relacionado ao problema que tivemos algumas semanas atrás, quando eu estava fora do escritório e isso me levou colegas de equipe uma hora para reiniciar o servidor DNS. "

Problemas semelhantes com o qmail ao redor.

Existe algum valor educacional na configuração do djbdns, se você estiver fazendo a pergunta e tiver tempo para matar. Você também pode aprender bastante apenas lendo o site do djb.

Existem dois conjuntos de problemas de segurança. Falhas de segurança que permitem que um invasor acesse o sistema - o djbdns quase definitivamente não possui nenhuma delas. Alguns anos atrás o bind tinha alguns poucos embaraçosos descobertos em pouco tempo, expondo também um design ruim. Eu esperaria que, ao longo de muitos anos, ele tenha sido completamente reescrito. Se você realmente quiser estar seguro a esse respeito, execute-o em uma máquina virtual (por exemplo, Xen). Considere também, se você estiver rodando em um sistema Linux com o SELinux no modo direcionado, você terá uma configuração para bind e provavelmente não se importará com um para djbdns. O sistema bind + SELinux é potencialmente mais seguro.

O outro problema é a segurança contra o envenenamento de cache. Meu palpite é que djbdns foi melhor quando foi lançado, e bind é provavelmente melhor agora devido a uma maior atenção. Esta é provavelmente a causa da sua audição que o bind é inseguro a menos que seja "configurado corretamente". Você deve pelo menos pesquisar e entender esse problema. No processo, você provavelmente descobrirá quais riscos de configuração existem para os dois servidores DNS.

Comportamento sob carga pesada é um critério sem sentido para a maioria dos usuários. Cuidado com o desempenho usado como um critério para avaliar software que raramente é um gargalo de desempenho. Você não está hospedando um servidor DNS de armazenamento em cache para uma grande base de usuários, onde você pode receber solicitações a uma taxa significativa. Você está executando o DNS autoritativo para fornecer serviços que provavelmente estão sendo executados no mesmo sistema. Esses serviços são milhares de vezes mais caros que o DNS. Seu link de Internet pode nem ser suficiente para carregar seu servidor DNS, mas se você estivesse recebendo uma carga tão pesada nos serviços que você fornece, o DNS não seria um provável gargalo.

    
por 28.06.2009 / 21:23
5

Você pode dar uma olhada no MaraDNS , um servidor DNS com reconhecimento de segurança.

  • Seguro. O MaraDNS tem um histórico de segurança tão bom ou melhor do que qualquer outro servidor DNS. Por exemplo, o MaraDNS sempre randomizou, usando um gerador seguro de números aleatórios, a ID da consulta e a porta de origem das consultas DNS; e nunca foi vulnerável ao "novo" ataque de envenenamento de cache.

  • Suportado. O MaraDNS tem uma longa história de manutenção e atualização. O MaraDNS foi originalmente criado em 2001. O MaraDNS 1.0 foi lançado em 2002 e o MaraDNS 1.2 foi lançado em dezembro de 2005. O MaraDNS foi amplamente testado, ambos com um processo de SQA e com mais de quatro anos de uso no mundo real. O MaraDNS continua sendo totalmente suportado: o lançamento mais recente foi feito em 13 de fevereiro de 2009. O Deadwood, o código que se tornará parte do MaraDNS 2.0, está sendo desenvolvido ativamente.

  • Fácil de usar. Uma configuração recursiva básica precisa apenas um único arquivo de configuração de três linhas. Uma configuração autoritativa básica precisa apenas de um arquivo de configuração de quatro linhas e um arquivo de zona de uma linha. O MaraDNS é totalmente documentado, com tutoriais fáceis de seguir e um manual de referência completo e atualizado.

  • Pequeno. O MaraDNS é adequado para aplicativos incorporados e outros ambientes em que o servidor deve usar o número mínimo absoluto de recursos possíveis. O binário do MaraDNS é menor que o de qualquer outro servidor DNS recursivo atualmente atualizado.

  • Código aberto. O MaraDNS é totalmente open-source, a licença é uma licença BSD de duas cláusulas que é quase idêntica à licença do FreeBSD.

Veja a página de defesa do maraDNS , onde há uma comparação de vários softwares de servidores DNS que podem ajudá-lo a escolher.

    
por 27.06.2009 / 23:12
4

Se você estiver executando o DNS apenas para si mesmo, o djbdns é o melhor pacote de software. Foi um dos poucos pacotes de software que identificaram o principal problema de segurança do DNS no ano passado e foi construído / corrigido para consertá-lo anos antes. Para caching DNS eu instalo o dnscache (parte do djbdns) em todos os servidores que não são executados como servidores DNS autoritativos. Ele realmente funciona melhor que o BIND para a maioria dos itens, mas dado o hardware de hoje, o peso extra e a velocidade mais lenta do BIND não são problemas.

Por experiência, eu aprenderia o básico do BIND, independentemente do pacote que você escolher para executar.

O Djbdns está pronto para ser realmente fácil de administrar a partir da linha de comando. Todas as alterações nos dados do DNS são feitas como comandos. No BIND, você edita uma série de arquivos de texto.

Você pode obter pacotes para ambos. Eu vejo a diferença como IE vs. outros navegadores. IE vem embutido e funciona para muitas coisas e não que você mude do padrão. Djbdns é diferente e requer um conjunto diferente de trade-offs. Para um ISP, mover do BIND para o djbdns pode ser um pouco complicado, porque o BIND, por padrão, faz o cache e o serviço de nomes, enquanto o djbdns divide isso em duas partes. Esta solução de segurança preferida, mas é mais difícil de configurar, muitas instalações do BIND não incomodam.

    
por 27.06.2009 / 21:36
3

Pessoalmente, eu diria que você precisa aprender o básico do BIND por causa de referência, mas que mudar para outra coisa fará de você um administrador de sistema mais feliz para o futuro:)

A maioria dos lugares em que trabalhei no setor de ISP parece usar djbdns, ele fornece excelentes blocos de construção e fundamentos para camada de serviços 'gerenciados' no topo - escrever scripts para gerar arquivos de zona é bastante trivial, significando que você pode armazenar todos seus dados DNS no SQL de qualquer maneira. Ele lida com uma quantidade ridícula de consultas por segundo e é seguro para inicializar.

Se você precisar escalá-lo, basta dar uma olhada no link e colocar alguns servidores autorizados por trás disso! Eu também recomendo dividir os resolvedores de servidores autoritativos em qualquer configuração que você queira implantar.

Outras coisas que merecem ser lidas são MaraDNS e PowerDNS.

    
por 28.06.2009 / 11:17
2

Eu uso principalmente o FreeBSD para esse tipo de coisa e, como se trata de pacotes com o BIND, eu nunca me esforcei para aprender qualquer outra coisa. Mas acho muito fácil configurar o BIND e como ele é mantido em uma perspectiva de segurança pelo FreeBSD, eu só tenho que rastrear esse canal para qualquer problema de segurança.

Então eu acho que a melhor aposta para você é tentar os dois e ver qual deles você mais combina, ou seja, a menos que você use um sistema operacional que vem junto com um deles.

    
por 27.06.2009 / 18:02
2

Se você deseja saber mais sobre DNS, uma cópia do livro da O'Reilly " DNS e BIND " e a versão mais recente do bind instalada é provavelmente o melhor caminho a seguir.

É verdade que o BIND teve mais problemas de segurança durante a sua vida. O dnjdns não tinha nenhum até o ano passado, mas tem uma arquitetura muito diferente do BIND e você pode achar mais difícil de aprender se não estiver familiarizado com o funcionamento do sistema de nomeação.

Se você está apenas procurando aprender sobre como executar um servidor DNS (em vez de aprender sobre os protocolos e tal), seria melhor escolher um e mergulhar. Espero que você encontre pacotes binários para qualquer uma das distribuições * nix que você escolher. Dito isto, existem algumas vantagens em compilar a partir da fonte com o software que você pode precisar reconstruir se houver uma vulnerabilidade de segurança anunciada.

Como acontece com qualquer serviço voltado para a Internet, algum senso comum e pensamento pragmático é o melhor caminho a seguir, independentemente do software que você usa. Se você precisar ativar atualizações dinâmicas, verifique se elas estão assinadas. Se você permitir transferências de zona, restrinja quem pode executá-las a partir do seu servidor, etc.

    
por 27.06.2009 / 18:46
2

BIND.

Se você aprender como configurá-lo (durante a leitura de um monte de RFCs relacionados a DNS um pouco cansativo), então você pode facilmente mudar para outro servidor DNS no futuro (para quaisquer fins). Estou usando o BIND como servidores primários e secundários em todos os lugares no FreeBSD, Linux e até mesmo no laptop do Vista (para hosts com VMware NAT).

Btw, é meio divertido ler a origem do BIND e descobrir como, por exemplo, funções clássicas como gethostbyname () ou gethostbyaddr () funcionam.

    
por 27.06.2009 / 23:28
2

Após anos de uso do bind, finalmente percebi que a maioria dos meus servidores não precisa executar seu próprio daemon de DNS. Isso pode não se aplicar a você, mas pense nisso: praticamente todos os registradores de domínios nos dias de hoje oferecem ao servidor seus registros de DNS para você (geralmente dando a você alguma forma baseada na Web para editar seus registros de DNS). Eles lidam com as informações, gerenciando os secundários, etc. Se você remover a necessidade de o seu servidor responder às consultas DNS, tudo o que resta é fazer com que o servidor faça pesquisas de DNS. Para isso, eu aponto meu /etc/resolv.conf para 4.2.2.1 e 4.2.2.2, que são os servidores DNS "anycast" do Level3 e parecem ser bem rápidos e confiáveis.

Um bônus adicional é que a configuração do firewall do seu servidor não precisa mais deixar entrar o DNS. Você só precisa da regra "estabelecida, relacionada" para permitir que as consultas DNS do seu servidor funcionem.

Ok, você não perguntou se precisava executar um daemon de DNS, mas essa é a pergunta que eu respondi. Apenas para ser completo, se você acha que deve executar um, eu recomendo ficar com o bind porque ele é tão comumente usado, você encontrará muita documentação e ajudará a fazer o que você quer.

    
por 28.06.2009 / 01:07